Перейти к содержанию
    

Цифровая линия задержки

Вот возникла необходимость реализовать цифровую линию задержки данных АЦП с высоким разрешением. Тактовая частота 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...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема в том что не удаётся убрать минусовые слэки между регистрами address_rd,address_wr и входными регистрами адреса памяти. Колдовство с настройками фиттера ощутимого результата не дало. Может подскажете чего,коллеги? Не хватает всего 200ps...

Очевидно, памяти используется много, отсюда большое ветвление шины адреса. Можно добавить ещё один конвейерный регистр в шину адреса, если Квартус сумеет его правильно размножить, или вручную размножить. Ещё можно тактировать память дополнительным клоком, смещённым по фазе на +200ps или побольше, при этом может не хватить запаса по выходам, тогда на выходы добавить ещё регистр.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очевидно, памяти используется много, отсюда большое ветвление шины адреса. Можно добавить ещё один конвейерный регистр в шину адреса, если Квартус сумеет его правильно размножить, или вручную размножить. Ещё можно тактировать память дополнительным клоком, смещённым по фазе на +200ps или побольше, при этом может не хватить запаса по выходам, тогда на выходы добавить ещё регистр.

Ага,спасибо! Да,памяти много - 3Mbit. Насчёт дополнительного клока уже пробую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На каждую фазу ставлю двухпортовку на M10K,адреса wr/rd по 16 бит.

Итого задержка 64к. Я бы раздробил на 8 каскадов 8k если у вас ария не жизель (GZ) и 4 каскада по 16к если жизель. В противном случае, на выходе есть лишние мультиплексоры. Это дополнительно ограничивает размещение на кристалле. Задержка на 8к (13 бит) для 64бит свободно разводиться на 337 на C5.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот возникла необходимость реализовать цифровую линию задержки данных АЦП с высоким разрешением. Тактовая частота 300МГц, максимальная задержка 200мкс, данные представляют собой четыре фазы потока от АЦП, чип Arria V. На каждую фазу ставлю двухпортовку на M10K,адреса wr/rd по 16 бит.

 

Проблема в том что не удаётся убрать минусовые слэки между регистрами address_rd,address_wr и входными регистрами адреса памяти. Колдовство с настройками фиттера ощутимого результата не дало. Может подскажете чего,коллеги? Не хватает всего 200ps...

 

А если сначала данные писать в регистр двойной разрядности, сначала младшее слово, потом - старшее. А уже из этого регистра - в память... Тогда тактовая для памяти будет вдвое ниже...

Либо 2 поля памяти и писать-читать в них по-очереди...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если сначала данные писать в регистр двойной разрядности, сначала младшее слово, потом - старшее. А уже из этого регистра - в память... Тогда тактовая для памяти будет вдвое ниже...

Пока компилится с новым клоком...

Да,мысль хорошая,но тогда дискрета задержки увеличится в 2 раза,пока не готов ответить устроит или нет. Запишем резервным решением,спасибо!

 

Итого задержка 64к. Я бы раздробил на 8 каскадов 8k если у вас ария не жизель (GZ) и 4 каскада по 16к если жизель. В противном случае, на выходе есть лишние мультиплексоры. Это дополнительно ограничивает размещение на кристалле. Задержка на 8к (13 бит) для 64бит свободно разводиться на 337 на C5.

Тоже хорошая мысль и без потери дискретности,спасибо!

 

С дополнительным клоком сразу не получилось,сдвинул фазу на 330 градусов(-30) - слэки выросли до -6 нс но уже по данным с клока RAM на основной клок. Похоже тут нужно прописывать мультициклы...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С дополнительным клоком сразу не получилось,сдвинул фазу на 330 градусов(-30) - слэки выросли до -6 нс но уже по данным с клока RAM на основной клок. Похоже тут нужно прописывать мультициклы...

Дополнительный клок нужно двигать на +30, и мультициклы действительно потребуются с основного на дополнительный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дополнительный клок нужно двигать на +30, и мультициклы действительно потребуются с основного на дополнительный.

Не,когда сделал +30 слеки по адресу выросли, дополнительный клок сместился влево. А при -30 по адресу слеки совсем пропали.

Основной клок у меня работает в обвязке, вспомогательный - только для RAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отказался от дополнительного клока, как то там всё сложно оказалось, в одном месте задавишь слэки - они вылазят в другом. Было бы больше времени может и добил бы. За полчаса переделал структуру модуля как предложил des00 - даже запас появился 900 пс. Так что можно считать что проблема решена общими усилиями. Всем спасибо! А des00 - респект!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...