Основная логика работает на базовой частоте, а небольшая выделенная часть, например, BlockRAM - на удвоенной или утроенной.
Как это лучше реализовать, если учесть, что [высокая] частота BRAM близка к максимальной для данного ПЛИСа.
Про идею можно почитать тут:
- https://cpufpga.files.wordpress.com/2016/04...s_isca_2016.pdf слайд 74
- https://www.xilinx.com/support/answers/68595.html
- 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
if (clk) blablabla;
end
- выглядит не очень, и тут надо знать точно как соотносятся моменты перепада clk и clk_xN.