реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Десериализатор для LVDS данных АЦП на Stratix3, не корретные результаты post fit simulation
Костян
сообщение Dec 27 2010, 11:34
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Итак кристалл Stratix3 С-2. Симулятор Modelsim 6.5d SE
Делаю десериализатор для потока LVDS данных с АЦП, который представляет собой сдвиговый регистр (не использую аппаратные serdes ).
Исходник десериализатора в аттаче.

SDC файл следующего вида
CODE
create_clock -name {clk} -period 20.020 -waveform { 0.000 10.01 } [get_ports {clk}]
create_clock -name {adc_clk0} -period 2.860 -waveform { 0.540 1.970 } [get_ports { adc_clk0 }]
create_clock -name {adc_frame} -period 20.020 -waveform { 2.700 12.710 } [get_ports {adc_frame}]



сигнал adc_clk180 также описан выше как (и констрейн для него автоматически определен)
CODE
assign adc_clk180 = ~adc_clk0;


RTL симуляция проходит успехно, timequest дает положительные слаки (минимальный для adc_clk0 состовляет порядка 0.3 нс ). Но Post fir симуляция проходит не корректно (хотя моделсим не ругается на setup/hold), выходные данные идут с произвольным сдвигом.


Подскажите, где возможная ошибка и как ее найти ?


з.ы
поясню
adc_clk0 есть сигнал DCO c АЦП
adc_frame - FCO
Прикрепленные файлы
Прикрепленный файл  adc_deser_small.v ( 5.72 килобайт ) Кол-во скачиваний: 56
 
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Dec 27 2010, 13:38
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Для начала стоит убедиться, что всем входам назначен Fast Input Register. Далее, сигнал строба также имеет смысл сначала защелкивать, а потом использовать. После этих проверок можно брать post-fit модель и смотреть внутри, где же конкретно все раскосячивается. Блок небольшой - разобраться будет нетрудно, я думаю.
Go to the top of the page
 
+Quote Post
Костян
сообщение Dec 28 2010, 09:54
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (DmitryR @ Dec 27 2010, 14:38) *
Для начала стоит убедиться, что всем входам назначен Fast Input Register.

Было указано.

QUOTE
Далее, сигнал строба также имеет смысл сначала защелкивать, а потом использовать.

Спасибо, делаю след образом


CODE
    reg adc_frame_d;
    always @(posedge adc_clk0)
                adc_frame_d <= adc_frame;

где adc_frame - строб FCO

соответственно контрейн
CODE
create_generated_clock -name {adc_deser_small:adc_mod1|adc_frame_d} -source [get_ports {adc_frame}] -divide_by 1 -multiply_by 1 [get_registers {adc_deser_small:adc_mod1|adc_frame_d}]


Слаки положительные, но timequest дает варнинг.

QUOTE
Warning: No paths exist between clock target "adc_deser_small:adc_mod1|adc_frame_d" of clock "adc_deser_small:adc_mod1|adc_frame_d" and its clock source. Assuming zero source clock latency.

Что бы это значило ?


Modelsim по прежнему выдает не корректные результат post fir simulate
Go to the top of the page
 
+Quote Post
sazh
сообщение Dec 28 2010, 11:11
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Костян @ Dec 27 2010, 17:34) *
adc_frame - FCO


Этот сигнал у Вас и клоком и данными одновременно выступает. Есть регистры, ena - сформированы из adc_frame, наверно к клоку не привязан.
Может сначала 1 канал отладить.
Go to the top of the page
 
+Quote Post
Костян
сообщение Dec 28 2010, 11:30
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (sazh @ Dec 28 2010, 12:11) *
Может сначала 1 канал отладить.

Этим уже сейчас и занимаюсь.

Просматривая Technology Map Viewer заметил, что первый триггер сдвигового регистра положительных данных data_ch_shift_p располагается в pad-e , тогда как триггер негативных данных data_ch_shift_n уже в ячейках.
Т.к констрейна на входные данные нет, то по всей видимости timequest не ругается на сие, а моделсим же показывать стал при упрощении проекта некорректный setup для первого триггера data_ch_shift_n.

Убрать атрибут Fast Input Register со входа данных. Но встает тогда вопрос, какой констрейн задать на входные данные, чтобы timequest их просчитывал (ошибок нету, а моделсим ругается на $setup time)?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 07:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016