|
Проблемы с выводом сигнала с ПЛИС |
|
|
|
Jul 9 2018, 12:44
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 3-06-15
Пользователь №: 86 991

|
Здравствуйте Пользователи. У меня стоит задача выдать с ПЛИС меандр с частотой 100МГц. На вход ПЛИС (xc6slx100) приходит меандр 50 МГц с кварца. Как показано на приложенном рисунке, я пропускаю сигнал через DCM -> PLL -> ODDR2, чтобы умножить сигнал в два раза. ODDR2 был прикручен, так как при компиляции проекта, шли ошибки о невозможности вывести данный сигнал через обычный IO. Проблема закралась в том, что при выводе сигнала, я получаю вместо меандра с частотой 100МГц получаю синус 100МГц. Прошу дать совета по направлению поиска ошибок. Всю недостающую информацию предоставлю позднее, так как не знаю, что потребуется для решения.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 23)
|
Jul 9 2018, 12:54
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Naixrim @ Jul 9 2018, 15:44)  получаю вместо меандра с частотой 100МГц получаю синус 100МГц. Прошу дать совета по направлению поиска ошибок. Всю недостающую информацию предоставлю позднее, так как не знаю, что потребуется для решения. Начнем с того, что и у кого "стоит" -> "У меня стоит задача". И расскажите нам, как она именно "стоит". Как определен стандарт вывода? Какая взята скорость наростания сигнала? Какой максимальный ток вывода? А самое главное, зачем выводить "меандр с частотой 100МГц"? Для кого? Какого качества он требуется? С какими фронтами? На какую емкость линии? И способен ли данный вывод у данной ПЛИС вообще выводить такой меандр? Ну и на сладкое. Если взять отличный меандр и смотреть его щупом осцилла, у которого полоса 100МГц, то что покажет осцилл?
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jul 9 2018, 13:36
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 3-06-15
Пользователь №: 86 991

|
Цитата(iosifk @ Jul 9 2018, 15:54)  Начнем с того, что и у кого "стоит" -> "У меня стоит задача". И расскажите нам, как она именно "стоит". Как определен стандарт вывода? Какая взята скорость наростания сигнала? Какой максимальный ток вывода? А самое главное, зачем выводить "меандр с частотой 100МГц"? Для кого? Какого качества он требуется? С какими фронтами? На какую емкость линии? И способен ли данный вывод у данной ПЛИС вообще выводить такой меандр? Ну и на сладкое. Если взять отличный меандр и смотреть его щупом осцилла, у которого полоса 100МГц, то что покажет осцилл? Задача - Необходимо сформировать меандр 100 МГц и вывести его на несколько шинных формирователей, для дальнейшего усиления до TTL и выдачей наружу, далее не уведомлен. (т.е. сформировать несколько таких сигналов.) За основу взять кварцевый генератор, который выдает меандр с частотой 50МГц. Стандарт вывода - LVCMOS2.5 Скорость наростания - Честно признаюсь, что не осведомлен о возможности ее регулировать, я считал, что она определяется непосредственно возможностями выходных пинов ПЛИС. Максимальный ток вывода - Если правильно понимаю 12мА. Зачем выводить - так определено задание ничего более сказать не могу. Также считал, что выводы единозначно выводят сигнал, то есть все одинаково, в плане фронтов и частоты. Видимо я был не прав, раз вы задаете такой вопрос. Согласно даташиту, ПЛИС может выдавать такую частоту. Фронты - хотелось бы конечно 2ns. Опять же согласно даташиту максимальный фронт для данной ПЛИС - 144ps. Видимо в идеальном случае. Сладкое оставлю на завтра.
Сообщение отредактировал Naixrim - Jul 9 2018, 13:54
|
|
|
|
|
Jul 10 2018, 07:23
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 3-06-15
Пользователь №: 86 991

|
UPD!
Ранее я смотрел сигнал неосредственно в точке, между выводом ПЛИС и входом шинного формирователя, где и видел свой синус. Но ответ iosifk натолкнул на мысль посмотреть чисто вывод ПЛИС и вуаля, я получил свой меандр, вполне красивый, что говорит, что природа синуса кроется непосредственно в соединении ПЛИС и шинника. Данную проблему буду решать самостоятельно, но от вероятных советов или мыслей не откажусь.
|
|
|
|
|
Jul 10 2018, 07:32
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Naixrim @ Jul 9 2018, 16:36)  Стандарт вывода - LVCMOS2.5 Скорость наростания - Честно признаюсь, что не осведомлен о возможности ее регулировать, я считал, что она определяется непосредственно возможностями выходных пинов ПЛИС. Максимальный ток вывода - Если правильно понимаю 12мА. Я не знаю, какую Вы применяете ПЛИС. Но на всякий случай напишу. Я помню, что у Виртексов максимальный ток был 24 мА, а минимальный по умолчанию - 2мА. И это надо было специально указывать для каждого вывода. Скорость наростания задаются: fast или slow... Проверьте что достаточно конденсаторов по питанию для этого банка. И еще есть SSO - ограничение на число одновременно переключаемых выводов, в зависимости от тока выводов.
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jul 10 2018, 07:43
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 3-06-15
Пользователь №: 86 991

|
Цитата(iosifk @ Jul 10 2018, 10:32)  Я не знаю, какую Вы применяете ПЛИС. Но на всякий случай напишу. Я помню, что у Виртексов максимальный ток был 24 мА, а минимальный по умолчанию - 2мА. И это надо было специально указывать для каждого вывода. Скорость наростания задаются: fast или slow... Проверьте что достаточно конденсаторов по питанию для этого банка. И еще есть SSO - ограничение на число одновременно переключаемых выводов, в зависимости от тока выводов. Применяемую ПЛИС назвал еще начальном сообщении, но продублирую - xc6slx100 (SPARTAN 6 LX100) Максимальный ток выдает вроде 24мА. Почитав на досуге Constrain Guide, нашел интересную конструкцию вида NET ”net_name” MAXSKEW=allowable_skew [units]; Это к вашим fast или slow, попробовал, действительно фронты становятся короче, но не приближаются к заданным значениям, т.е. задавал 2ns и 1ns, 2ns он выдает, при 1ns, фронт короче, но скорее 1,8ns. UPD - Посчитал, для каждого из банков необходимое количество конденсаторов по питанию, возможно надо поменять их емкость, в данный момент стоит - 0,1 мкФ
Сообщение отредактировал Naixrim - Jul 10 2018, 07:46
|
|
|
|
|
Jul 10 2018, 08:33
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Naixrim @ Jul 10 2018, 10:43)  Это к вашим fast или slow, попробовал, действительно фронты становятся короче, Вот фрагмент файла ucf: # VCCO33 NET "I_FORCE_CONTROL13" LOC = "B4"; INST "Buf_I_FORCE_CONTROL13" IOSTANDARD = LVCMOS33; INST "I_FORCE_CONTROL13" IOB = FALSE; INST "I_FORCE_CONTROL13" SLEW = SLOW; NET "I_FORCE_CONTROL13" SLEW = SLOW; INST "I_FORCE_CONTROL13" DRIVE = 4; Здесь цепь I_FORCE_CONTROL13, задается вывод, стандарт, расположение в выходном буфере, скорости наростания, и сила тока...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jul 10 2018, 09:11
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(iosifk @ Jul 10 2018, 11:33)  Вот фрагмент файла ucf: # VCCO33
NET "I_FORCE_CONTROL13" LOC = "B4"; INST "Buf_I_FORCE_CONTROL13" IOSTANDARD = LVCMOS33; INST "I_FORCE_CONTROL13" IOB = FALSE; INST "I_FORCE_CONTROL13" SLEW = SLOW; NET "I_FORCE_CONTROL13" SLEW = SLOW; INST "I_FORCE_CONTROL13" DRIVE = 4; Зачем одновременно NET и INST? Код NET "I_FORCE_CONTROL13" LOC = "B4"; NET "I_FORCE_CONTROL13" IOSTANDARD = LVCMOS33 | SLOW | DRIVE = 4;
|
|
|
|
|
Jul 10 2018, 09:28
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(andrew_b @ Jul 10 2018, 12:11)  Зачем одновременно NET и INST? Код NET "I_FORCE_CONTROL13" LOC = "B4"; NET "I_FORCE_CONTROL13" IOSTANDARD = LVCMOS33 | SLOW | DRIVE = 4; Да просто дело в том, что тогда я написал на Си программку, которая все это автоматически и генерила из списка уж не помню какого файла. Потому как выводов было 425 и писать вручную для меня - это наделать много ошибок. А так действительно, если делать вручную, то через "|" запись получится короче.
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jul 10 2018, 09:40
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 3-06-15
Пользователь №: 86 991

|
Цитата(iosifk @ Jul 10 2018, 11:33)  Вот фрагмент файла ucf: # VCCO33
NET "I_FORCE_CONTROL13" LOC = "B4"; INST "Buf_I_FORCE_CONTROL13" IOSTANDARD = LVCMOS33; INST "I_FORCE_CONTROL13" IOB = FALSE; INST "I_FORCE_CONTROL13" SLEW = SLOW; NET "I_FORCE_CONTROL13" SLEW = SLOW; INST "I_FORCE_CONTROL13" DRIVE = 4;
Здесь цепь I_FORCE_CONTROL13, задается вывод, стандарт, расположение в выходном буфере, скорости наростания, и сила тока... Благодарю за обьяснение. Где-нибудь прописано как и на сколько отличаются FAST и SLOW? И как зависят от выходных параметров? А также что значит - INST "I_FORCE_CONTROL13" IOB = FALSE; ?
|
|
|
|
|
Jul 10 2018, 10:52
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 3-06-15
Пользователь №: 86 991

|
Цитата(XVR @ Jul 10 2018, 13:42)  А какой у вас шинный формирователь? 100MHz не всякий шинник потянет (в том числе может и вход посадить) 74lvt125
|
|
|
|
|
Jul 10 2018, 13:27
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Inanity @ Jul 10 2018, 16:09)  Naixrim, я думаю, что у вас просто линия не согласована. Таким образом возникают отражения, которые портят ваш меандр. Если говорить об отражениях, то это колебательности на фронтах. Я в одной англоязычной книге нашел термин - "эффект окурка". Потом представил смятый окурок в пепельнице и все стало понятно. А у ТС - синусоида, а это значит, что сигнал интегрируется, т.е фронты завалены из-за большой емкости линии. И источнику сигнала просто не хватает мощности для зарядки емкости линии. Хотя, согласен, что согласование линии - это хорошо. И еще. Для распределения импульсов по плате применяют специальные микросхемы, а не насилуют ПЛИсы сигналами LVCMOS. Как альтернативу, может быть есть смысл поискать шинники, преобразующие LVDS в LVCMOS. И передачу импульсов по плате гнать как LVDS...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jul 10 2018, 15:33
|
Местный
  
Группа: Участник
Сообщений: 221
Регистрация: 6-07-12
Пользователь №: 72 653

|
Цитата(iosifk @ Jul 10 2018, 16:27)  А у ТС - синусоида, а это значит, что сигнал интегрируется, т.е фронты завалены из-за большой емкости линии. И источнику сигнала просто не хватает мощности для зарядки емкости линии. Согласен, невнимательно прочитал.
|
|
|
|
|
Jul 10 2018, 17:48
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 3-06-15
Пользователь №: 86 991

|
По сути, я могу попробовать дальше насиловать плату кмопом и запитать ее сильнее, так как запитан банк сейчас от 2.5, и выдает она соответственно LVCMOS25 при 12мА, но можно запитать от 3.3, также можно поднять DRIVE, правда придется поменять банк, я сейчас вывожу со 2 банка, а он выше 16мА не поддерживает. Грубо говоря увеличить мощность, выяснить хватает ли ее для покрытия паразитной емкости линии. Насчет шинников, хм... мне нужны будут шинники, чтобы протянуть сигналы до шинников, что выдают сигнал во вне. Это не лишено смысла, но пока не хочется так кардинально менять все, но если вопрос будет стоять именно таким ребром надо будет думать в эту сторону. Насчте эффекта окурка, как он в оригинале называется, я бы глянул?
|
|
|
|
|
Jul 10 2018, 18:26
|
Местный
  
Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695

|
Цитата(iosifk @ Jul 10 2018, 21:02)  Найдите лучше книгу, точно названия не помню, но есть слова "черная магия" и "высокоскоростная передача сигналов". И гонять по плате 100 Мгц но не LVDS - это не айс... оно ? https://electronix.ru/forum/index.php?showtopic=73295
|
|
|
|
|
Jul 10 2018, 21:10
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 3-06-15
Пользователь №: 86 991

|
У меня есть эта книга в печатном варианте, но такого я там не помню, буду внимательней читать =)
|
|
|
|
|
Jul 11 2018, 18:37
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 3-06-15
Пользователь №: 86 991

|
Цитата(XVR @ Jul 11 2018, 14:40)  Во первых у неё есть так называемый 'bus hold' (по входу). Это значит, что она будет пытаться изнасиловать перетянуть выход FPGA, слава богу что хоть ток не очень большой (порядка 150мка), но на 100MHz это последствия могут быть плачевными. Во вторых у неё воемя распространения сигнала 4ns (в худшем случае). Умножаем на 2 (т.к. фронта 2) - получаем 8ns, а 100MHz - это 10ns. Так что на выходе точно будет нечто напоминающее синусоиду  Насчет качества пропускаемого сигнала я посмотрю отдельным экспериментом, подав на нее сигнал с генератора и посмотрев, что собственно будет на выходе, там думаю можно будет думать, но я этот парамтер tPHL воспринимал лишь как время задержки от входа до выхода, но после вашего комментария пересмотрел графики и вы правы насчет 100 МГц.
|
|
|
|
|
Jul 12 2018, 12:58
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 3-06-15
Пользователь №: 86 991

|
Цитата(Inanity @ Jul 10 2018, 16:09)  Naixrim, я думаю, что у вас просто линия не согласована. Таким образом возникают отражения, которые портят ваш меандр. Для Spartan-6 попробуйте включить последовательный терминатор на буфере через OUT_TERM. Начните с 25 ом, мне кажется это поможет.
NET <NET NAME> OUT_TERM = <NONE/ UNTUNED_25 / UNTUNED_50 / UNTUNED_75>; При генерации меандра, у меня были огромные выбросы по фронтам, вверх и вниз, ваш совет помог от них избавится. Спасибо всем в тем, кто оказался в теме и своим участием помог, помогаете развиваться, благодарю!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|