使用SRIO生成的例子进行自环实验,在板子上把rx和tx用光纤链接起来,不知道为啥IP核一直不能初始化,即port_initialized和link_initialized一直无法拉高,IP核也给了复位信号,是连接到了板子上的复位按键,因为板子上是低电平有效,IP核是高电平有效,所以是取法送给IP核的,IP核的时钟呢,使用一个时钟芯片产生的125MHZ, sim_train_en 也置零了
`timescale 1ps/1ps
(* DowngradeIPIdentifiedWarnings = "yes" *)
module srio_example_top_srio_gen2_0 #(
parameter SIM_VERBOSE = 0, // 设为1时,可以利用srio_report.v模块生成不可综合的报告。为0时,此功能被屏蔽
parameter VALIDATION_FEATURES = 1, // 设为1时,选择例子工程中的srio_request_gen.v和srio_response_gen.v产生相应的请求事务与响应事务对IP核的功能进行测试。为0时,选择外部的用户接口由用户自己编写请求事务与响应事务的代码对IP进行测试
parameter QUICK_STARTUP = 1, // 设为1时,选择例子工程中的srio_quick_start.v产生相应的维护事务对IP核的配置空间进行访问。为0时,选择外部的维护接口由用户自己编写维护事务的代码对IP核的配置空间进行访问
parameter STATISTICS_GATHERING = 1, // 设为1时,可以利用srio_statistics.v模块搜集IP的性能细节,这个模块是可综合的,可以通过Chipscope或ILA进行访问。为0时,此功能被屏蔽
parameter C_LINK_WIDTH = 1
)
// port declarations ----------------端口声明
(
input sys_clk_p, // Differentia system clock 200Mhz input on board
input sys_clk_n,
// Clocks and Resets
input sys_clkp, // IP核配置界面第一页的参考时钟
input sys_clkn, // IP核配置界面第一页的参考时钟
input sys_rst, // IP核的复位信号,高电平有效
// high-speed IO
input srio_rxn0, // 串行接收数据信号
input srio_rxp0, // Serial Receive Data
output srio_txn0, // 串行发送数据信号
output srio_txp0, // Serial Transmit Data
inout si5338_scl, //i2c clock
inout si5338_sda, //i2c data
output si5338_i2c_lsb, //i2c address LSB
// input sim_train_en, // 用来减少仿真时间的控制信号,仿真时把这个信号置1可以加快仿真速度,但是代码在硬件上运行时这个信号必须赋值为0
output [3:0] led0 //led指示信号,可以把port_initialized和link_initialized两个信号接到led0中,这样在硬件上执行时可以方便观察链路状态
);
// ----------------------------------
wire sys_clk;
assign si5338_i2c_lsb =1'b0;
wire sim_train_en = 1'b0;
IBUFGDS u_ibufg_sys_clk
(
.I (sys_clk_p),
.IB (sys_clk_n),
.O (sys_clk )
);
si5338#
(
.kInitFileName ("si5338_i4_50_200_156_125_100.mif" ),
.input_clk (200000000 ),
.i2c_address (7'b1110000 ),
.bus_clk (400000 )
)
si5338_inst(
.clk (sys_clk ),
.reset (1'b0 ),
.done ( ),
.error ( ),
.SCL (si5338_scl ),
.SDA (si5338_sda )
);
//////////////////////////////////
//
srio_gen2_0 srio_gen2_0_inst
(//---------------------------------------------------------------例化了RapidIO核
.sys_clkp (sys_clkp ),
.sys_clkn (sys_clkn ),
.sys_rst (~sys_rst ),
// all clocks as output in shared logic mode
呀,被官方邀请了。
首先来讲,如果你的板子是xilinx板子,基本上使用ip核是没有任何问题。
现在初始化不成功,也只能检查时钟与复位。从你贴出来的代码来看,你的板载时钟为200M,但是srio核你使用的是125M,我没看到这个125M从何而来?