_sda 0 21 июля, 2016 Опубликовано 21 июля, 2016 · Жалоба Вот возникла необходимость реализовать цифровую линию задержки данных АЦП с высоким разрешением. Тактовая частота 300МГц, максимальная задержка 200мкс, данные представляют собой четыре фазы потока от АЦП, чип Arria V. На каждую фазу ставлю двухпортовку на M10K,адреса wr/rd по 16 бит. DelayLine: process (iclk,iReset) begin if (iReset = '1') then address_rd <= (others => '0'); wren <= '0'; elsif (RISING_EDGE(iclk)) then wren <= '1'; address_rd <= address_rd+1; address_wr <= address_rd + idata_delay; data_wr1 <= idata_sdr_a(11 downto 0); data_wr2 <= idata_sdr_a(23 downto 12); data_wr3 <= idata_sdr_b(11 downto 0); data_wr4 <= idata_sdr_b(23 downto 12); odata_sdr_a(11 downto 0) <= data_rd1; odata_sdr_a(23 downto 12) <= data_rd2; odata_sdr_b(11 downto 0) <= data_rd3; odata_sdr_b(23 downto 12) <= data_rd4; end if; end process; Проблема в том что не удаётся убрать минусовые слэки между регистрами address_rd,address_wr и входными регистрами адреса памяти. Колдовство с настройками фиттера ощутимого результата не дало. Может подскажете чего,коллеги? Не хватает всего 200ps... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 21 июля, 2016 Опубликовано 21 июля, 2016 · Жалоба Проблема в том что не удаётся убрать минусовые слэки между регистрами address_rd,address_wr и входными регистрами адреса памяти. Колдовство с настройками фиттера ощутимого результата не дало. Может подскажете чего,коллеги? Не хватает всего 200ps... Очевидно, памяти используется много, отсюда большое ветвление шины адреса. Можно добавить ещё один конвейерный регистр в шину адреса, если Квартус сумеет его правильно размножить, или вручную размножить. Ещё можно тактировать память дополнительным клоком, смещённым по фазе на +200ps или побольше, при этом может не хватить запаса по выходам, тогда на выходы добавить ещё регистр. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 21 июля, 2016 Опубликовано 21 июля, 2016 · Жалоба Очевидно, памяти используется много, отсюда большое ветвление шины адреса. Можно добавить ещё один конвейерный регистр в шину адреса, если Квартус сумеет его правильно размножить, или вручную размножить. Ещё можно тактировать память дополнительным клоком, смещённым по фазе на +200ps или побольше, при этом может не хватить запаса по выходам, тогда на выходы добавить ещё регистр. Ага,спасибо! Да,памяти много - 3Mbit. Насчёт дополнительного клока уже пробую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 21 июля, 2016 Опубликовано 21 июля, 2016 · Жалоба На каждую фазу ставлю двухпортовку на M10K,адреса wr/rd по 16 бит. Итого задержка 64к. Я бы раздробил на 8 каскадов 8k если у вас ария не жизель (GZ) и 4 каскада по 16к если жизель. В противном случае, на выходе есть лишние мультиплексоры. Это дополнительно ограничивает размещение на кристалле. Задержка на 8к (13 бит) для 64бит свободно разводиться на 337 на C5. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 21 июля, 2016 Опубликовано 21 июля, 2016 · Жалоба Вот возникла необходимость реализовать цифровую линию задержки данных АЦП с высоким разрешением. Тактовая частота 300МГц, максимальная задержка 200мкс, данные представляют собой четыре фазы потока от АЦП, чип Arria V. На каждую фазу ставлю двухпортовку на M10K,адреса wr/rd по 16 бит. Проблема в том что не удаётся убрать минусовые слэки между регистрами address_rd,address_wr и входными регистрами адреса памяти. Колдовство с настройками фиттера ощутимого результата не дало. Может подскажете чего,коллеги? Не хватает всего 200ps... А если сначала данные писать в регистр двойной разрядности, сначала младшее слово, потом - старшее. А уже из этого регистра - в память... Тогда тактовая для памяти будет вдвое ниже... Либо 2 поля памяти и писать-читать в них по-очереди... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 21 июля, 2016 Опубликовано 21 июля, 2016 · Жалоба А если сначала данные писать в регистр двойной разрядности, сначала младшее слово, потом - старшее. А уже из этого регистра - в память... Тогда тактовая для памяти будет вдвое ниже... Пока компилится с новым клоком... Да,мысль хорошая,но тогда дискрета задержки увеличится в 2 раза,пока не готов ответить устроит или нет. Запишем резервным решением,спасибо! Итого задержка 64к. Я бы раздробил на 8 каскадов 8k если у вас ария не жизель (GZ) и 4 каскада по 16к если жизель. В противном случае, на выходе есть лишние мультиплексоры. Это дополнительно ограничивает размещение на кристалле. Задержка на 8к (13 бит) для 64бит свободно разводиться на 337 на C5. Тоже хорошая мысль и без потери дискретности,спасибо! С дополнительным клоком сразу не получилось,сдвинул фазу на 330 градусов(-30) - слэки выросли до -6 нс но уже по данным с клока RAM на основной клок. Похоже тут нужно прописывать мультициклы... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 21 июля, 2016 Опубликовано 21 июля, 2016 · Жалоба С дополнительным клоком сразу не получилось,сдвинул фазу на 330 градусов(-30) - слэки выросли до -6 нс но уже по данным с клока RAM на основной клок. Похоже тут нужно прописывать мультициклы... Дополнительный клок нужно двигать на +30, и мультициклы действительно потребуются с основного на дополнительный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 21 июля, 2016 Опубликовано 21 июля, 2016 · Жалоба Дополнительный клок нужно двигать на +30, и мультициклы действительно потребуются с основного на дополнительный. Не,когда сделал +30 слеки по адресу выросли, дополнительный клок сместился влево. А при -30 по адресу слеки совсем пропали. Основной клок у меня работает в обвязке, вспомогательный - только для RAM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 21 июля, 2016 Опубликовано 21 июля, 2016 · Жалоба Отказался от дополнительного клока, как то там всё сложно оказалось, в одном месте задавишь слэки - они вылазят в другом. Было бы больше времени может и добил бы. За полчаса переделал структуру модуля как предложил des00 - даже запас появился 900 пс. Так что можно считать что проблема решена общими усилиями. Всем спасибо! А des00 - респект! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться