Naixrim 0 9 июля, 2018 Опубликовано 9 июля, 2018 · Жалоба Здравствуйте Пользователи. У меня стоит задача выдать с ПЛИС меандр с частотой 100МГц. На вход ПЛИС (xc6slx100) приходит меандр 50 МГц с кварца. Как показано на приложенном рисунке, я пропускаю сигнал через DCM -> PLL -> ODDR2, чтобы умножить сигнал в два раза. ODDR2 был прикручен, так как при компиляции проекта, шли ошибки о невозможности вывести данный сигнал через обычный IO. Проблема закралась в том, что при выводе сигнала, я получаю вместо меандра с частотой 100МГц получаю синус 100МГц. Прошу дать совета по направлению поиска ошибок. Всю недостающую информацию предоставлю позднее, так как не знаю, что потребуется для решения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 9 июля, 2018 Опубликовано 9 июля, 2018 · Жалоба получаю вместо меандра с частотой 100МГц получаю синус 100МГц. Прошу дать совета по направлению поиска ошибок. Всю недостающую информацию предоставлю позднее, так как не знаю, что потребуется для решения. Начнем с того, что и у кого "стоит" -> "У меня стоит задача". И расскажите нам, как она именно "стоит". Как определен стандарт вывода? Какая взята скорость наростания сигнала? Какой максимальный ток вывода? А самое главное, зачем выводить "меандр с частотой 100МГц"? Для кого? Какого качества он требуется? С какими фронтами? На какую емкость линии? И способен ли данный вывод у данной ПЛИС вообще выводить такой меандр? Ну и на сладкое. Если взять отличный меандр и смотреть его щупом осцилла, у которого полоса 100МГц, то что покажет осцилл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 9 июля, 2018 Опубликовано 9 июля, 2018 (изменено) · Жалоба Начнем с того, что и у кого "стоит" -> "У меня стоит задача". И расскажите нам, как она именно "стоит". Как определен стандарт вывода? Какая взята скорость наростания сигнала? Какой максимальный ток вывода? А самое главное, зачем выводить "меандр с частотой 100МГц"? Для кого? Какого качества он требуется? С какими фронтами? На какую емкость линии? И способен ли данный вывод у данной ПЛИС вообще выводить такой меандр? Ну и на сладкое. Если взять отличный меандр и смотреть его щупом осцилла, у которого полоса 100МГц, то что покажет осцилл? Задача - Необходимо сформировать меандр 100 МГц и вывести его на несколько шинных формирователей, для дальнейшего усиления до TTL и выдачей наружу, далее не уведомлен. (т.е. сформировать несколько таких сигналов.) За основу взять кварцевый генератор, который выдает меандр с частотой 50МГц. Стандарт вывода - LVCMOS2.5 Скорость наростания - Честно признаюсь, что не осведомлен о возможности ее регулировать, я считал, что она определяется непосредственно возможностями выходных пинов ПЛИС. Максимальный ток вывода - Если правильно понимаю 12мА. Зачем выводить - так определено задание ничего более сказать не могу. Также считал, что выводы единозначно выводят сигнал, то есть все одинаково, в плане фронтов и частоты. Видимо я был не прав, раз вы задаете такой вопрос. Согласно даташиту, ПЛИС может выдавать такую частоту. Фронты - хотелось бы конечно 2ns. Опять же согласно даташиту максимальный фронт для данной ПЛИС - 144ps. Видимо в идеальном случае. Сладкое оставлю на завтра. Изменено 9 июля, 2018 пользователем Naixrim Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба UPD! Ранее я смотрел сигнал неосредственно в точке, между выводом ПЛИС и входом шинного формирователя, где и видел свой синус. Но ответ iosifk натолкнул на мысль посмотреть чисто вывод ПЛИС и вуаля, я получил свой меандр, вполне красивый, что говорит, что природа синуса кроется непосредственно в соединении ПЛИС и шинника. Данную проблему буду решать самостоятельно, но от вероятных советов или мыслей не откажусь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Стандарт вывода - LVCMOS2.5 Скорость наростания - Честно признаюсь, что не осведомлен о возможности ее регулировать, я считал, что она определяется непосредственно возможностями выходных пинов ПЛИС. Максимальный ток вывода - Если правильно понимаю 12мА. Я не знаю, какую Вы применяете ПЛИС. Но на всякий случай напишу. Я помню, что у Виртексов максимальный ток был 24 мА, а минимальный по умолчанию - 2мА. И это надо было специально указывать для каждого вывода. Скорость наростания задаются: fast или slow... Проверьте что достаточно конденсаторов по питанию для этого банка. И еще есть SSO - ограничение на число одновременно переключаемых выводов, в зависимости от тока выводов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 10 июля, 2018 Опубликовано 10 июля, 2018 (изменено) · Жалоба Я не знаю, какую Вы применяете ПЛИС. Но на всякий случай напишу. Я помню, что у Виртексов максимальный ток был 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 мкФ Изменено 10 июля, 2018 пользователем Naixrim Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Это к вашим 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, задается вывод, стандарт, расположение в выходном буфере, скорости наростания, и сила тока... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Вот фрагмент файла 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Зачем одновременно NET и INST? NET "I_FORCE_CONTROL13" LOC = "B4"; NET "I_FORCE_CONTROL13" IOSTANDARD = LVCMOS33 | SLOW | DRIVE = 4; Да просто дело в том, что тогда я написал на Си программку, которая все это автоматически и генерила из списка уж не помню какого файла. Потому как выводов было 425 и писать вручную для меня - это наделать много ошибок. А так действительно, если делать вручную, то через "|" запись получится короче. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Вот фрагмент файла 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; ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба А также что значит - INST "I_FORCE_CONTROL13" IOB = FALSE; ? Это значит, что инстанс может распологаться не только в выходном буфере, но и внутри кристалла. А вот про параметры fast или slow для этой серии надо искать в даташите. Ну или написать в Инлайн или в Макро в техподдержку, они точно дадут ссылку на документ.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Ранее я смотрел сигнал неосредственно в точке, между выводом ПЛИС и входом шинного формирователя, где и видел свой синус.А какой у вас шинный формирователь? 100MHz не всякий шинник потянет (в том числе может и вход посадить) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба А какой у вас шинный формирователь? 100MHz не всякий шинник потянет (в том числе может и вход посадить) 74lvt125 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Inanity 1 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Naixrim, я думаю, что у вас просто линия не согласована. Таким образом возникают отражения, которые портят ваш меандр. Для Spartan-6 попробуйте включить последовательный терминатор на буфере через OUT_TERM. Начните с 25 ом, мне кажется это поможет. NET <NET NAME> OUT_TERM = <NONE/ UNTUNED_25 / UNTUNED_50 / UNTUNED_75>; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Naixrim, я думаю, что у вас просто линия не согласована. Таким образом возникают отражения, которые портят ваш меандр. Если говорить об отражениях, то это колебательности на фронтах. Я в одной англоязычной книге нашел термин - "эффект окурка". Потом представил смятый окурок в пепельнице и все стало понятно. А у ТС - синусоида, а это значит, что сигнал интегрируется, т.е фронты завалены из-за большой емкости линии. И источнику сигнала просто не хватает мощности для зарядки емкости линии. Хотя, согласен, что согласование линии - это хорошо. И еще. Для распределения импульсов по плате применяют специальные микросхемы, а не насилуют ПЛИсы сигналами LVCMOS. Как альтернативу, может быть есть смысл поискать шинники, преобразующие LVDS в LVCMOS. И передачу импульсов по плате гнать как LVDS... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться