|
VHDL синтезирование задержек |
|
|
|
Nov 30 2009, 00:14
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331

|
нужно сформировать из исходного сигнала - сигнал с некой задержкой 10 - 30 нс ПЛИС Cyclone-II с градацией -8 Можно ли синтезировать задержки таким способом: Цитата ... signal a:std_logic; signal b:std_logic; ... b<=a or a; -- 8NS Delay
b<=(a or a) or a; --16NS delay или синтезатор оптимизирует и обрежет? как правильнее? (PLL и внешнююсинхронизацию не предлагать)
|
|
|
|
|
Nov 30 2009, 01:52
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103

|
Цитата(%-) @ Nov 30 2009, 03:14)  нужно сформировать из исходного сигнала - сигнал с некой задержкой 10 - 30 нс
ПЛИС Cyclone-II с градацией -8
Можно ли синтезировать задержки таким способом:
или синтезатор оптимизирует и обрежет?
как правильнее? (PLL и внешнююсинхронизацию не предлагать) По синтаксису языка это всего лишь комментарий. Задержки в VHDL описываются другим способом и работают только при симуляции. Есть вариант собрать из ячеек в явном виде, но никто не гарантирует параметров.
|
|
|
|
|
Nov 30 2009, 02:44
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331

|
Цитата(Laptop @ Nov 30 2009, 05:52)  По синтаксису языка это всего лишь комментарий. Задержки в VHDL описываются другим способом и работают только при симуляции. Есть вариант собрать из ячеек в явном виде, но никто не гарантирует параметров. a<=b after 20ns; -не годится так как это немного другое... а как можно собрать из ячеек в явном виде ? (vhdl)
|
|
|
|
|
Nov 30 2009, 03:14
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331

|
Цитата(Shtirlits @ Nov 30 2009, 06:55)  Для таких больших задержек я знаю лишь одно решение - сдвиговый регистр тактируемый подходящей частотой. а как на нескольких вентилях сделать? и сколько наносекунд на каждый вентиль? ПЛИС указал в первом сообщении. например c<= a and b; - сколько задержка? и неужели нельзя несколько последовательно вентилей поставить? как это сделать? квартус всё упрощает - выкидывая вентили
|
|
|
|
|
Nov 30 2009, 03:41
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Цитата(%-) @ Nov 30 2009, 06:14)  квартус всё упрощает - выкидывая вентили И правильно делает. Дизайн схемы должен быть синхронный, и все "линии заержки" - это от лукавого.
Сообщение отредактировал Dima_G - Nov 30 2009, 03:41
|
|
|
|
|
Nov 30 2009, 04:18
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331

|
Цитата(Shtirlits @ Nov 30 2009, 07:41)  атрибут syn_keep описан в quartus hand book
задержка на LE определяется с трудом, так как зависит от: - speed grade - температуры - напряжения питания - разводки
скажите, а с какой точностью нужна задержка? точность +/-5нс. есть стробы записи !WE, нужно получить ещё один с запаздыванием, чтобы адрес обновить. вмешиваюсь в работу SRAM по записи - адрес выставляет плис, а данные с управлением - от процессора. и это д.б. на 50 МГц
|
|
|
|
|
Nov 30 2009, 05:06
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331

|
Цитата(des00 @ Nov 30 2009, 07:40)  нцатый раз советую, сделайте синхронный дизайн !!! вы хотите сказать что ПЛИС на задержкой 8нс справится с клоком 133 МГц ? а вот мне хочется асинхронный - и буду его долбить! сформировал простейший пример: Код library ieee; use ieee.std_logic_1164.all;
entity fl is port ( Port_WE:in std_logic; SRAM0_WE:out std_logic; SRAM1_WE:out std_logic ); end;
architecture fl_arch of fl is
signal BUF:std_logic; attribute syn_keep:integer; attribute syn_keep of BUF:signal is 1;
begin SRAM0_WE<=Port_WE;
BUF<=Port_WE; SRAM1_WE<=BUF; end fl_arch; вот что кажет симулятор и РТЛ: в целом доволен, можно определить задержку и каскадировать буферы, если надо. устройство проектируется для работы в "тепличных условиях" 20градусов +/-10
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 30 2009, 05:29
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Цитата(%-) @ Nov 30 2009, 08:06)  а вот мне хочется асинхронный - и буду его долбить! . . . в целом доволен, можно определить задержку и каскадировать буферы, если надо. Дело Ваше. Но рекомендую заранее купить шаманский бубен - при дальнейшем усложнении проекта будут вылезать такие чудесные грабли, что без шаманства не обойтись. Видел тоску в глазах разработчика, описавшего HDLC в схемном вводе и асинхронном дизайне (точнее, он предпологал, что клок, проходящий через несколько блоков комбинационной логики остается синхронным клоком  ) Сий HDLC контроллер загадочнейшим образом глючил-с. Попытка вывести тестовые сигналы на определенные пины ФПГА (те тупо - wire с какой-то точки) творила чудеса - глюки частично пропадали. Пропадали настолько, что их было тяжело поймать, но при долгой работе - вылезали. Кое-как через пару месяцев мучений сделали более или менее рабочую сборку и зафиксировали ее как read-only  Сейчас, на предложение "чуть-чуть кое-что изменить" разработчик издает нечеловеческий рев и накрывает грудью проект. Вы идете к тому же
|
|
|
|
|
Nov 30 2009, 05:56
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Цитата(%-) @ Nov 30 2009, 09:53)  можете оставаться при своих "синхронных" мнениях, но существуют теже чипы видеоконтроллеров с АСИНХРОННЫМ интерфейсом, которые могут манипулировать с адресом своей SRAM ПОСЛЕ каждой записи по асинхронной шине. неужели ПЛИС такие убогие, что это не реализуемо на асинхронке? А? Не путайте FPGA и ASIC!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|