Доброго всем дня.
Cyclone IV GX, q11.0 + modelsim
ALTGX: Basic mode, 3 gb/s, 8b/10b, 16bit, transmitter+receiver, 1 lane.
Сначала не заводился ресивер, выяснилось, что reset'ы всем подблокам ALTGX надо слать не одновременно, а в хитрой последовательности, указанной в handbook.
Но, когда ресивер заработал, выяснилось, что трансмиттер шлёт константу в коде 8b/10b, т.е. битовую последовательность равную одному и тому же значению до кодирования, при этом я передаю реально - значение счётчика, т.е. должно меняться, но не меняется.
Один дизайнер уже сталкивался с этим на Alteraforum.com ему помогла доп. задержка между взведением pll_locked и сбросом tx_digitalreset (хотя эта задержка не требуется по хэндбуку).
Я пошёл дальше и игрался с задержкой вплость до огромной - 3000 тактов на частоте 75 МГц, результата нет.
Пробовал и RTL и Timing симуляцию.
Ссылка на кросспост -
http://www.alteraforum.com/forum/showthread.php?p=119921 там моё сообщение третье.
Кусок инициализирующего кода:
Код
initial begin
gxb_powerdown <= 0;
pll_areset <= 0;
rx_analogreset <= 0;
rx_digitalreset <= 0;
tx_digitalreset <= 0;
#10000 gxb_powerdown <= 1;
pll_areset <= 1;
rx_analogreset <= 1;
rx_digitalreset <= 1;
tx_digitalreset <= 1;
#1000000 pll_areset <= 0;
gxb_powerdown <= 0;
wait( pll_locked) repeat( 300) @ (posedge tx_clkout);
tx_digitalreset <= 0;
wait( ~busy) repeat( 3) @ (posedge tx_clkout);
rx_analogreset <= 0;
wait( rx_freqlocked) #4000000 rx_digitalreset <= 0;
end
Строчка
wait( pll_locked) repeat( 300) @ (posedge tx_clkout); и даёт дополнительную, но необязательную по хэндбуку задержку.
Кто поможет, как завести трансмиттер.