|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
使用Altera ALTGX IP收发数据。
ALTGX设置:
protocol :Basic
subportocol :none
operation mode:Receiver and Transmitter
channel width :16
effective data rate :2457.6Mbps
input clock frenquency:122.88MHz
base data rage :2457.6Mbps
Enable 8b 10b decoder/encoder
cal_blk_clk 25MHz
pll_inclk
122.88MHz
reconfig_clk 50MHz
用Modelsim仿真。
仿真的结果pll_locked始终为0,似乎PLL不起作用。
rx_freqlocked也始终为0.
请教问题:
1.operation mode有Receiver时为何一定需要altgx_reconfig?
2.如果按照我下面的altgx_reconfig的接法,是如何时序重新配置ALTGX的?
3.复位时序如何设置。在实际电路中,如何控制各复位时序的时间长短(定时器是否可以)?
`timescale 1ns/1ps
//复位时序是按照附图1、2设置的
initial
begin
#0
gxb_powerdown=0;
#10
gxb_powerdown=1;
#1000
gxb_powerdown=0;
end
initial
begin
#0
pll_areset=0;
#10
pll_areset=1;
#1000
pll_areset=0;
end
reg [1:0] tx_digitalreset_init;
initial
begin
#0
tx_digitalreset_init=2'b00;
#10
tx_digitalreset_init=2'b11;
//#3000
//tx_digitalreset_init=2'b00;
end
assign tx_digitalreset = pll_locked ? 2'b00 : tx_digitalreset_init;
reg
[1:0]
rx_analogreset_init;
initial
begin
#0
rx_analogreset_init=2'b00;
#10
rx_analogreset_init=2'b11;
//#6000
//rx_analogreset_init=2'b00;
end
assign #2 rx_analogreset = busy ? rx_analogreset_init : 2'b00;
reg [1:0]
rx_digitalreset_init;
initial
begin
#0
rx_digitalreset_init
=
2'b00;
#10
rx_digitalreset_init
=
2'b11;
//#7000
//rx_digitalreset_init=2'b00;
end
assign
#4000 rx_digitalreset = (rx_freqlocked == 2'b11) ? rx_digitalreset_init : 2'b00;
altgx_rx_cfg altgx_tx_cfg(
.reconfig_clk
(reconfig_clk
),
.reconfig_fromgxb
(reconfig_fromgxb
),
.busy
(busy
),
.reconfig_togxb
(reconfig_togxb_tx
)
);
altgxb_TR altgxb_Tx (
.cal_blk_clk
(cal_blk_clk
),
.gxb_powerdown
(gxb_powerdown
),
.pll_areset
(pll_areset
),
.pll_inclk
(pll_inclk
),
.reconfig_clk
(reconfig_clk
),
.reconfig_togxb
(reconfig_togxb),
.rx_analogreset
(rx_analogreset
),
.rx_datain
(rx_datain
),
.rx_digitalreset
(rx_digitalreset
),
.tx_ctrlenable
(tx_ctrlenable
),
.tx_datain
(tx_datain
),
.tx_digitalreset
(tx_digitalreset
),
.pll_locked
(pll_locked),//? 这个信号始终为0.
.reconfig_fromgxb
(reconfig_fromgxb),
.rx_clkout
(rx_clkout),
.rx_ctrldetect
(rx_ctrldetect),
.rx_dataout
(rx_dataout),
.rx_freqlocked
(rx_freqlocked),
.rx_patterndetect
(rx_patterndetect),
.rx_syncstatus
(rx_syncstatus),
.tx_clkout
(tx_clkout),
.tx_dataout
(tx_dataout)
);
|
|