Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: генератор импульсов
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
alkinoy
Всем привет.
Есть такая задача. Необходимо формировать два синхронизированных импульса (две линии). Первый длиной 8 - 16 нс, период повторения - 64 нс. Второй - длиной 6-10 нс, период повторения 32 нс. Второй сигнал должен быть синхронизирован с первым и иметь управляемый сдвиг фазы относительно первого с шагом 1-2 нс.
Остановился на идее использования LVDS интерфейса. Записываю нужную последовательность параллельно и в цикле выдаю эту последовательность через LVDS. Записал новую - получил сдвиг. На скорость 500МБит/с получу свой шаг в 2 нс в регулировании как ширины импульса, так и сдвига одного сигнала относительно другого.
Сначала смотрел в сторону отдельных передатчиков (сериализаторов). Есть несколько интересных решений, например 32-х разрядный (http://www.national.com/pf/DS/DS92LV3221.html). Великолепно подошел бы к моей задаче, если бы не старт-стоп биты, которые он вставляет в передачу. Так же большинство сериализаторов имеют в своей структуре DC балансир, который тоже вставляет лишние импульсы.
Таким вот образом плавно подошел к необходимости использования ПЛИС с LVDS интерфейсом (к тому же сдвиг надо будет циклически менять в процессе работы, схема хорошо решается логическими элементами). И вот тут завис. Имею опыт работы с контроллерами, не имею с плисами (кажется, часто встречающийся случай, да? wink.gif ).
Посему суть вопроса: какую ПЛИС лучше всего использовать в данном случае? Интересуют минимальные размеры (мне не нужны сотни ног), минимальную стоимость и простоту разработки. Кто что может посоветовать? Я правильно понимаю, что могу использовать LVDS ПЛИСа для решения этой задачи?

Спасибо!
Maverick
Цитата(alkinoy @ May 24 2011, 14:09) *
Всем привет.
Есть такая задача. Необходимо формировать два синхронизированных импульса (две линии). Первый длиной 8 - 16 нс, период повторения - 64 нс. Второй - длиной 6-10 нс, период повторения 32 нс. Второй сигнал должен быть синхронизирован с первым и иметь управляемый сдвиг фазы относительно первого с шагом 1-2 нс.

Спасибо!

не уверен, что в ПЛИС можно сделать изменяемый сдвиг фазы с 1 нс шагом, а шаг 2 нс - возможен.
zombi
А почему нет?
Выбираете плиску с допустимой тактовой 500MHz, организуете в ней два 32-х битных паралельно загружаемых сдвиговых регистра, грузите их с помощью внешнего мк.
сможете менять любой из сигналов с шагом 2нс
alkinoy
Цитата(zombi @ May 24 2011, 15:26) *
А почему нет?
Выбираете плиску с допустимой тактовой 500MHz, организуете в ней два 32-х битных паралельно загружаемых сдвиговых регистра, грузите их с помощью внешнего мк.
сможете менять любой из сигналов с шагом 2нс

Такое реализуемо? Подскажите - каким кристаллом?

У меня идея была в том, что в качестве сдвигового регистра выступает LVDS. То есть я в него гружу необходимую мне последовательность - и получаю на выходе импульсы нужной мне длительности. при 500 МБит/с длительность одного бита как раз будет 2 нс.
одним каналом LVDS вывожу что то типа
1111110000000000000000000000000
а вторым -
0001111000000000000111100000000
вот и получил, на первом канале один импульс с длительностью 12 нс и периодом 64, а на втором - 8 нс, период 32 нс, сдвиг относительно первого - 6 нс.
Или это мои розовые девичьи мечты?
Maverick
Цитата(alkinoy @ May 24 2011, 15:34) *
Такое реализуемо? Подскажите - каким кристаллом?

У меня идея была в том, что в качестве сдвигового регистра выступает LVDS. То есть я в него гружу необходимую мне последовательность - и получаю на выходе импульсы нужной мне длительности. при 500 МБит/с длительность одного бита как раз будет 2 нс.
одним каналом LVDS вывожу что то типа
1111110000000000000000000000000
а вторым -
0001111000000000000111100000000
вот и получил, на первом канале один импульс с длительностью 12 нс и периодом 64, а на втором - 8 нс, период 32 нс, сдвиг относительно первого - 6 нс.
Или это мои розовые девичьи мечты?

нет... осталось только сделать схему управления sm.gif

Например ПЛИС фирмы Xilinx Spartan 6; Virtex 5; Virtex 6 и конечно ПЛИС 7 серии
bogaev_roman
Или стратикс4 и выше, только сначала на цену обратите внимание. Ищите лучше какой-нибудь другой способ.
Цитата
У меня идея была в том, что в качестве сдвигового регистра выступает LVDS. То есть я в него гружу необходимую мне последовательность - и получаю на выходе импульсы нужной мне длительности

DDR регистры физически реализованы, загрузка в них все будет идти из регистров. У них максимальная частота будет немногим более 500МГц, т.е. DDR будут щелкать на 1000МГц. Ну да, схему управления, только нужно написать.
alkinoy
Цитата(Maverick @ May 24 2011, 15:43) *
нет... осталось только сделать схему управления sm.gif

Например ПЛИС фирмы Xilinx Spartan 6; Virtex 5; Virtex 6 и конечно ПЛИС 7 серии

Не затруднит помочь сделать выбор?
Посмотрел на спартан6 - корпус TQG144 мне подходит по габаритам. Все спартаны6 имеют LDVS интерфейсы? Два выхода можно заставить стабильно синхронно работать? Какая максимальная тактовая частота работы (если вообще есть такое понятие)?

Цитата(bogaev_roman @ May 24 2011, 15:55) *
Или стратикс4 и выше, только сначала на цену обратите внимание. Ищите лучше какой-нибудь другой способ.

эээ, а что с ценой? какие порядки цен - не сложно назвать?
Kuzmi4
Как вариант:
DDR на 250MHz

bogaev_roman
Цитата(alkinoy @ May 24 2011, 17:01) *
эээ, а что с ценой? какие порядки цен - не сложно назвать?

Тысячи у.е., если очень надо, то смотрите, действительно, в сторону xilinx и spartan6
А Вам обязательно две линии брать или может как-то большим кол-вом на приеме можно обойтись, тут все в максимальную тактовую упирается для одного канала.
Maverick
Цитата(alkinoy @ May 24 2011, 16:01) *
Не затруднит помочь сделать выбор?
Посмотрел на спартан6 - корпус TQG144 мне подходит по габаритам. Все спартаны6 имеют LDVS интерфейсы? Два выхода можно заставить стабильно синхронно работать? Какая максимальная тактовая частота работы (если вообще есть такое понятие)?

Ответ на первые два вопроса - да (ответ на второй вопрос зависит еще как Вы сделаете схему управления - синхронную или асинхронную)
На третий вопрос - ответ здесь, а просто цифра приведена ниже:

Цитата
Data rates up to 800 Mb/s (12.8 Gb/s peak bandwidth)
bogaev_roman
Извиняюсь, тупость написал выше. Kuzmi4 правду сказал. Можно взять к примеру сериализатор на 4 и использовать DDR регистры. При этом частота загрузки в DDR - 250МГц, частота на выходе - 1000МГц. Получается что Вам нужно будет определить по документации максимальную триггерную частоту в 250МГц, максимальную частоту на выходах DDR - 1000МГц.
alkinoy
Цитата(bogaev_roman @ May 24 2011, 16:06) *
Тысячи у.е., если очень надо, то смотрите, действительно, в сторону xilinx и spartan6
А Вам обязательно две линии брать или может как-то большим кол-вом на приеме можно обойтись, тут все в максимальную тактовую упирается для одного канала.

wacko.gif
ничего себе. но вот вроде нашел спартан6 за 13 баксов (XC6SLX4-3TQG144I - $12.42)
мне не нужен прием. мне нужен генератор импульсов. По этому приемного устройства не будет...

Цитата(Maverick @ May 24 2011, 16:11) *
Ответ на первые два вопроса - да (ответ на второй вопрос зависит еще как Вы сделаете схему управления - синхронную или асинхронную)
На третий вопрос - ответ здесь, а просто цифра приведена ниже:

великолепно! пошел читать мануалы.
Если у кого есть примеры реализации передачи данных по LVDS - буду благодарен за ссылки. или почту. (tam.78@mail.ru)

Kuzmi4
2 alkinoy
в таком случае как вариант UG381, раздел про OSERDES2

Только сначала сверьтесь с даташитом на счёт времянок laughing.gif
alkinoy
Цитата(Kuzmi4 @ May 24 2011, 16:50) *
2 alkinoy
в таком случае как вариант UG381, раздел про OSERDES2

Только сначала сверьтесь с даташитом на счёт времянок laughing.gif

Да, спасибо.
По указанному документу возник вопрос. Фигурирует I/O Clock - частота, с которой будут выводится последовательные данные. Она подается извне или ее можно синтезировать внутри? Если да - то как?
Я правильно понимаю, что внутри плис можно реализовать подобие ПЗУ для хранения данных?
Я правильно понимаю, что спартану нужно снаружи вешать ПЗУ, которое будет хранить сам проект?
Есть много непонятной информации о частотах. Как обозначается максимальная тактовая частота внутренней логики? Как определить максимально достижимую частоту на выходе, сконфигуренном как LDVS? Есть указания 800 МБ/с, но указано, что это Integrated Memory Controller blocks - то есть это максимальная частота обращения к внутренней памяти? А мне нужно получить импульсы на выводе плис.

КАк я себе вижу реализацию внутренностей. Есть несколько сдвиговых 32-х разрядных регистров. С частотой 125 мгц это все дело пачками по 4 бита подается на сериализатор и с 4х скоростью плюется на выход. В сдвиговые регистры последовательно загружаются заранее предопределенные наборы данных, таким образом получаю свои меняющиеся ширину импульсов и сдвиг фаз.
То есть в виде логических элементов я схему могу нарисовать. Осталось это реализовать внутри плис....

Спасибо.
Kuzmi4
2 alkinoy
1) судя по всему вам для вашей задачи понадобится PLL - то есть сделаете частоту внутри. Как именно - изучайте XAPP1064.ZIP (там для аутпута IBUFGDS(для дифа)/PLL_ADV/BUFPLL/OSERDES2 - ничего сложного, а вот для инпута там танцы с плясками wacko.gif )
2) да (BRAM/LUT-based ROM)
3) да (конфигурационный е2пром: XCF01S~XCF32P)
...
andrewkrot
А вы точно определились с интерфейсом? Может этот подойдет - http://www.pericom.com/pdf/datasheets/PI90SD1636C.pdf он без 8/10 бит преобразования. Есть у тексаса еще TLK2201, но там CML вместо LVDS. А в плисах много граблей есть - особенно если никогда с ними не связывались.
Anatol'
Цитата(alkinoy @ May 24 2011, 21:17) *
Да, спасибо.
По указанному документу возник вопрос. Фигурирует I/O Clock - частота, с которой будут выводится последовательные данные. Она подается извне или ее можно синтезировать внутри? Если да - то как?
Я правильно понимаю, что внутри плис можно реализовать подобие ПЗУ для хранения данных?
Я правильно понимаю, что спартану нужно снаружи вешать ПЗУ, которое будет хранить сам проект?
Есть много непонятной информации о частотах. Как обозначается максимальная тактовая частота внутренней логики? Как определить максимально достижимую частоту на выходе, сконфигуренном как LDVS? Есть указания 800 МБ/с, но указано, что это Integrated Memory Controller blocks - то есть это максимальная частота обращения к внутренней памяти? А мне нужно получить импульсы на выводе плис.

КАк я себе вижу реализацию внутренностей. Есть несколько сдвиговых 32-х разрядных регистров. С частотой 125 мгц это все дело пачками по 4 бита подается на сериализатор и с 4х скоростью плюется на выход. В сдвиговые регистры последовательно загружаются заранее предопределенные наборы данных, таким образом получаю свои меняющиеся ширину импульсов и сдвиг фаз.
То есть в виде логических элементов я схему могу нарисовать. Осталось это реализовать внутри плис....

Спасибо.

Почти всё правильно рассуждаете.
Максимальной тактовой частоты логики не существует - она сильно зависит от структуры проекта и разводки.
Вообще, на типичных проектах 6-ые спартаны без особых проблем работают под 300 МГц, сдвиговые регистры и того больше. На 125 будет вообще комфортно.
Про LVDS и SerDes на Spartan 6 попадался какой-то не то гайд, не то аппнот, в котором подробно расписывалось как заводить это дело на 1000 с небольшим МГц (1080, кажется). К сожалению, сейчас не могу его найти, но он существует! sm.gif
Все частоты легко синтезировать внутри (естественно, с внешним референсом). Читать про CMT/DCM/PLL.
Внутри плис есть Block RAM - ПЗУ их назвать сложно, скорее это SRAM, но данные в них хранить можно sm.gif
Внешнее ПЗУ - да, много вариантов.
Integrated Memory Controller block - это встроенные контроллеры внешней DDR-памяти. Вам они ни к чему, и их нет в маленьких чипах.

Ещё, в случае LVDS-канала, можно спарить SerDes'ы и получить 8-битный сериализатор. Вообще лафа )

Цитата(alkinoy @ May 24 2011, 21:17) *
Осталось это реализовать внутри плис....

Все среды разработки под ПЛИС поддерживают схематический ввод - вам скорее всего так будет проще, чем изучать HDL.
Kuzmi4
Касательно
Цитата(Anatol' @ May 28 2011, 13:27) *
...Ещё, в случае LVDS-канала, можно спарить SerDes'ы и получить 8-битный сериализатор....


В любом случае
Цитата
можно спарить SerDes'ы и получить 8-битный сериализатор
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.