?? hdb3_encode.tdf
字號:
--以下是HDB3編碼的源程序,它完成的是從不歸零碼到HDB3碼的變換。注意程序中的輸出分別用out_hdb3_up和out_hdb3_down來表示HDB3碼的不同的極性。
--//////////////////////////////////////////////////////////////////////////////////////////////////////////// //該電路為 HDB3 編碼電路, 它完成從 NRZ 碼到 HDB3 碼的編碼功能; //
--// 該電路的輸入信號為 transmit_data 和 transmit_clk 信號; //
--// 其輸出為 out_hdb3_up, out_hdb3_down 信號; //
--////////////////////////////////////////////////////////////////////////////////////////////////////////////
SUBDESIGN hdb3_encode -- 設計實體名;
(
transmit_data,transmit_clk : INPUT;
out_hdb3_up,out_hdb3_down : OUTPUT;
)
VARIABLE
nodes[3..0] : NODE;
shifts[3..0],buffers[1..0] : DFF;
ss : MACHINE
WITH STATES (s_up_o ,
s_up_e ,
s_down_o,
s_down_e);
BEGIN
shifts[].clk = transmit_clk;
buffers[].clk = !transmit_clk;
shifts[0].d = transmit_data;
nodes[0] = shifts[0] # nodes[1];
%檢測到四個連續的零后置1,避免重復計算%
shifts[1].d = nodes[0];
shifts[2].d = shifts[1];
shifts[3].d = shifts[2];
nodes[1] = (!shifts[0]) & (!shifts[1]) & (!shifts[2]) & (!shifts[3]);
%檢測四個連續的零%
ss.clk = transmit_clk;
TABLE
ss, shifts[3], nodes[1] => ss, nodes[2], nodes[3];
s_up_o, 0 , 0 => s_up_o, 1, 0;
s_up_o, 1 , 0 => s_down_e, 0, 1;
s_up_o, x , 1 => s_up_e, 0, 1;
s_up_e, 0 , 0 => s_up_e, 1, 0;
s_up_e, 1 , 0 => s_down_o, 0, 1;
s_up_e, x , 1 => s_down_e, 0, 1;
s_down_o, 0 , 0 => s_down_o, 0, 1;
s_down_o, 1 , 0 => s_up_e, 1, 0;
s_down_o, x , 1 => s_down_e, 1, 0;
s_down_e, 0 , 0 => s_down_e, 0, 1;
s_down_e, 1 , 0 => s_up_o, 1, 0;
s_down_e, x , 1 => s_up_e, 0, 1;
END TABLE;
buffers[0].d = (shifts[3] & nodes[2]) # (nodes[1] & s_down_o);
buffers[1].d = (shifts[3] & nodes[3]) # (nodes[1] & s_up_o);
out_hdb3_up = buffers[0]& transmit_clk;
out_hdb3_down = buffers[1]& transmit_clk;
END;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -