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

 
 
> Как проще и правильней переходить с clk на clk_xN и обратно
myq
сообщение Nov 3 2017, 09:24
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 11-05-04
Из: World wide
Пользователь №: 3



Добрый день, коллеги.

Основная логика работает на базовой частоте, а небольшая выделенная часть, например, BlockRAM - на удвоенной или утроенной.
Как это лучше реализовать, если учесть, что [высокая] частота BRAM близка к максимальной для данного ПЛИСа.

Про идею можно почитать тут:
  1. https://cpufpga.files.wordpress.com/2016/04...s_isca_2016.pdf слайд 74
  2. https://www.xilinx.com/support/answers/68595.html
  3. http://citeseerx.ist.psu.edu/viewdoc/downl...p1&type=pdf


Вопросы/требования:
1) оба клока (clk, clk_x2) должны быть выходами PLL или необязательно?
2) надо обойтись без синхронизаторов и async fifo
3) надо ли дополнительно констрейнить или САПР сам правильно всё понимает?

По клокам, я предполагаю, что снаружи надо генерить более высокую частоту с низким джиттером (т.е. clk_xN), а внутри - делить её уже на N.

Как достоверно определять 1-й такт из N?

Код
always @ (posedge clk_xN) begin
  if (clk) blablabla;
end


- выглядит не очень, и тут надо знать точно как соотносятся моменты перепада clk и clk_xN.


--------------------
IPSA SCIENTIA POTESTAS EST
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
myq
сообщение Nov 3 2017, 13:19
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 11-05-04
Из: World wide
Пользователь №: 3



Задача по большей части решилась, при условии, что в домене удвоенной частоты писать не if (clk), а if (tff)
а tff - переключается каждый такт по удвоенной частоте. т.е. tff равен либо clk либо ~clk, но это обычный триггер, а не клок.

Проект собрался с clk_x2 = 714 MHz на Ultrascale+ (период 1.4ns).
Без Post-route PhysOpt - -0.02ns, PhysOpt вывел слаки в плюс.


--------------------
IPSA SCIENTIA POTESTAS EST
Go to the top of the page
 
+Quote Post
Timmy
сообщение Nov 3 2017, 14:33
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(myq @ Nov 3 2017, 16:19) *
Задача по большей части решилась, при условии, что в домене удвоенной частоты писать не if (clk), а if (tff)
а tff - переключается каждый такт по удвоенной частоте. т.е. tff равен либо clk либо ~clk, но это обычный триггер, а не клок.

В этом случае вы не будете точно знать фазу медленного клока, а как повезёт при сбросе.
Для точного определения фазы можно в медленном клок домене запустить однобитовый счётчик, а в быстром - синхронно выделять фронты на его выходе, в результате не придётся заводить клок непосредственно на логические входы.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 22:30
Рейтинг@Mail.ru


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