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

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

|
Здравствуйте Пользователи. У меня стоит задача выдать с ПЛИС меандр с частотой 100МГц. На вход ПЛИС (xc6slx100) приходит меандр 50 МГц с кварца. Как показано на приложенном рисунке, я пропускаю сигнал через DCM -> PLL -> ODDR2, чтобы умножить сигнал в два раза. ODDR2 был прикручен, так как при компиляции проекта, шли ошибки о невозможности вывести данный сигнал через обычный IO. Проблема закралась в том, что при выводе сигнала, я получаю вместо меандра с частотой 100МГц получаю синус 100МГц. Прошу дать совета по направлению поиска ошибок. Всю недостающую информацию предоставлю позднее, так как не знаю, что потребуется для решения.
|
|
|
|
|
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
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|