📄 top.v
字号:
//说明
//
//本程序用于R8000E 16端口GE线卡
//
//主要功能:
//1、PCI到LocalBus接口、IIC等的转换
// LocalBus接口接VSC7324处理器接口
// IIC接CY22394、24C02、Backplane(风扇单元)
//2、复位、中断及其它控制信号
//
//
//李翔
//2006-04-21
//
module top
(
pci_clk,pci_ad,pci_c_be_n,pci_par,pci_frame_n,
pci_trdy_n,pci_irdy_n,pci_stop_n,//pci_inta_n,
pci_devsel_n,/*pci_idsel,*/pci_perr_n,pci_serr_n,
// pci_req_n,pci_gnt_n,
//I2C to cpld
sfpiic_scl,
sfpiic_sda,
tri_sfpiic_sda1,
sfp_address1,
//i2c
iic_scl,
iic_sda,
//reset
reset_n,
reset_8245,
reset_5248,
reset_5650,
reset_5464,
reset_rs232,
reset_zl,
reset_sof,
//data--addr
pi_addr,pi_data,
oe_a,oe_d,dir,
//Zarlink
cpu_cs_n,cpu_oe_n, cpu_we_n,
cpu_ts_ale, cpu_ta_n,cpu_clk,
//phy
phy_ref,clk_25M,
//int
bcm5464_int_n,
bcm5248_int,
alarm_led,
role_led,
run_led,fpga_int,
//Cpld
cpld_cs,cpld_wr,cpld_rd,
//rtc
rtc_ad,rtc_cs_n,rtc_as,rtc_rw,rtc_ds,rtc_sqw,
//card information
lc1_mod_type,
lc2_mod_type,
present_n,
//interface status
g11_status1,g11_status2,g11_status3,g11_status4,
g22_status1,g22_status2,g22_status3,g22_status4,
f11_status1,f11_status2,f11_status3,f11_status4,
f22_status1,f22_status2,f22_status3,f22_status4
);
//信号定义
//PCI
input pci_clk; //PCI时钟
inout [31:0] pci_ad; //PCI数据地址复用线
input [3:0] pci_c_be_n; //PCI命今/字节使能信号
inout pci_par; //PCI奇偶校验信号
input pci_frame_n; //PCI标志传输开始与结束
output pci_trdy_n; //Slave可以转输数据的标志
input pci_irdy_n; //Master可以传输数据的标志
output pci_stop_n; //Slave主动结束传输数据的信号
output pci_devsel_n; //当Slave发现自己被寻址时置低应答
//input pci_idsel; //在即插即用系统启动时用于选中板卡的信号
// output pci_inta_n; //
output pci_perr_n; //数据奇偶校验错
output pci_serr_n; //系统奇偶校验错
//PCI Arbiter
// input pci_req_n;
// output pci_gnt_n;
//I2C to card
output iic_scl;
inout iic_sda;
//I2C to cpld
output sfpiic_scl;
inout sfpiic_sda;
output tri_sfpiic_sda1;
wire tri_sfpiic_sda;
//wire sfpiic_clk;
wire [2:0] sfp_address;
output [2:0] sfp_address1;
assign sfp_address1 = sfp_address;
assign tri_sfpiic_sda1 = tri_sfpiic_sda;
//Parallel Interface
output [21:0] pi_addr; //地址线
inout [31:0] pi_data; //数据线
output dir;
output oe_a;
output oe_d;
//Zarlink
output cpu_cs_n;
output cpu_oe_n;
output cpu_we_n;
output cpu_ts_ale;
input cpu_ta_n;
output cpu_clk;
/********************************/
/** interupt and led interface **/
/********************************/
//wire fpga_int;
//assign pci_inta_n = fpga_int;
input [3:0] bcm5464_int_n;
wire [3:0] bcm5464_int;
assign bcm5464_int[0] = !bcm5464_int_n[0];
assign bcm5464_int[1] = !bcm5464_int_n[1];
assign bcm5464_int[2] = !bcm5464_int_n[2];
assign bcm5464_int[3] = !bcm5464_int_n[3];
input [3:0] bcm5248_int;
output fpga_int;
output alarm_led;
output role_led;
output run_led;
//RTC
inout [7:0] rtc_ad;
output rtc_cs_n;
output rtc_as;
output rtc_rw;
output rtc_ds;
input rtc_sqw;
//cpld
output cpld_cs;
output cpld_wr;
output cpld_rd;
//phy
output phy_ref;
input clk_25M;
//Reset
input reset_n;
output reset_8245;
output reset_5248;
output reset_5650;
output reset_5464;
output reset_rs232;
output reset_zl;
output reset_sof;
//globe_clk
input [1:0] present_n;
input [3:0] lc1_mod_type;
input [3:0] lc2_mod_type;
output g11_status1;
output g11_status2;
output g11_status3;
output g11_status4;
output g22_status1;
output g22_status2;
output g22_status3;
output g22_status4;
output f11_status1;
output f11_status2;
output f11_status3;
output f11_status4;
output f22_status1;
output f22_status2;
output f22_status3;
output f22_status4;
////////////////////////////////////////////////////////////////////////////////
wire [6:0] reset_reg;//片内全局复位
wire [31:0] l_addr;
wire [31:0] l_data_in;
wire [31:0] l_data_out;
wire l_irq_n;
wire [11:0] lt_tsr;
wire lt_rdyn;
wire [3:0] l_cmdo;
wire lt_framen;
wire lt_ackn;
wire lt_dxfrn;
wire lt_discn = 1'b1;
wire lt_abortn;
wire [31:0] pi_data_out;//PI data out
wire [31:0] local_data_out;//FPGA data out
wire pi_rdyn;
wire local_rdyn;
wire cs_local_n;
wire [4:0] led_reg;
wire [15:0] int_mask;
wire [15:0] int_clear;
wire [15:0] int_state;
wire dog_clear;
wire [7:0] dog_value;
wire [7:0] dog_cnt;
wire clk1hz;
wire clk2hz;
wire clk4hz;
wire clk8hz;
wire clk16hz;
wire clk16khz;
//wire [7:0] ot_thr;//Overtime threshold
// wire [31:0] err_cnt;//error counter
/******************************************************************************/
RESET_GEN RESET_GEN(
.clk33m (pci_clk ),
.reset_n (reset_n ),
.reset_reg (reset_reg ),
.reset_8245 (reset_8245 ),
.reset_5248 (reset_5248 ),
.reset_5650 (reset_5650 ),
.reset_5464 (reset_5464 ),
.reset_rs232 (reset_rs232 ),
.reset_zl (reset_zl ),
.reset_sof (reset_sof ),
.dog_clear (dog_clear ),
.dog_value (dog_value ),
.dog_cnt (dog_cnt ),
.clk1hz (clk1hz ),
.clk2hz (clk2hz ),
.clk4hz (clk4hz ),
.clk8hz (clk8hz ),
.clk16hz (clk16hz ),
.clk16khz (clk16khz )
);
/******************************************************************************/
assign lt_rdyn = pi_rdyn && local_rdyn;
assign cs_local_n = ! lt_tsr[0];//BAR0
assign l_data_in[31:0] = cs_local_n ? pi_data_out : local_data_out;
/******************************************************************************/
/***PCI************************************************************************/
pci_top pci (
.clk ( pci_clk ),
.rstn ( reset_n ),
.idsel ( pci_ad[24] ),/*pci_idsel*/
.ad ( pci_ad ),
.cben ( pci_c_be_n ),
.framen ( pci_frame_n ),
.irdyn ( pci_irdy_n ),
.trdyn ( pci_trdy_n ),
.devseln ( pci_devsel_n ),
.stopn ( pci_stop_n ),
.intan ( ),
.par ( pci_par ),
.perrn ( pci_perr_n ),
.serrn ( pci_serr_n ),
.cmd_reg ( ),
.stat_reg ( ),
.l_adi ( l_data_in ),
.l_dato ( l_data_out ),
.l_adro ( l_addr ),
.l_beno ( ),
.l_cmdo ( l_cmdo ),
.lt_rdyn ( lt_rdyn ),
.lt_discn ( lt_discn ),
.lt_abortn ( lt_abortn ),
.lirqn ( l_irq_n ),
.lt_framen ( lt_framen ),
.lt_ackn ( lt_ackn ),
.lt_dxfrn ( lt_dxfrn ),
.lt_tsr ( lt_tsr ));
/***PCI Artiter****************************************************************/
/*pci_Arbiter pci_arbiter (
.REQ_ ( {1'b1,pci_reqb_n,pci_req_n[3:0]} ),
.reset_ ( reset_n ),
.clk_in ( pci_clk ),
.frame_ ( pci_frame_n ),
.irdy_ ( pci_irdy_n ),
.GNT_ ( {pci_gntb_n,pci_gnt_n[3:0]} )); */
/***Back end Interface*********************************************************/
parallel_interface Parallel_interface (
.clock ( pci_clk ),
.reset_n ( reset_n ),
.addr_in ( l_addr[23:2] ),
.data_in ( l_data_out[31:0] ),
.data_out ( pi_data_out[31:0] ),
.l_cmdo ( l_cmdo ),
.ready_n ( pi_rdyn ),
.abort_n ( lt_abortn ),
.lt_framen ( lt_framen ),
.lt_ackn ( lt_ackn ),
.lt_dxfrn ( lt_dxfrn ),
.lt_tsr ( lt_tsr ),
.pi_addr ( pi_addr ),
.pi_data ( pi_data[31:0] ),
.dir ( dir ),
.oe_a ( oe_a ),
.oe_d ( oe_d ),
//zarlink
.cpu_cs_n ( cpu_cs_n ),
.cpu_oe_n ( cpu_oe_n ),
.cpu_we_n ( cpu_we_n ),
.cpu_ts_ale ( cpu_ts_ale ),
.cpu_ta_n ( cpu_ta_n ),
.cpu_clk ( cpu_clk ),
//cpld
.cpld_cs ( cpld_cs ),
.cpld_wr ( cpld_wr ),
.cpld_rd ( cpld_rd ),
//rtc
.rtc_ad ( rtc_ad ),
.rtc_cs_n ( rtc_cs_n ),
.rtc_as ( rtc_as ),
.rtc_rw ( rtc_rw ),
.rtc_ds ( rtc_ds ),
.rtc_sqw ( rtc_sqw ),
// .ot_thr ( ot_thr ),
.ot_cnt ( err_cnt ));
/***MISC***********************************************************************/
fpga_misc misc (
.clock ( pci_clk ),
.reset_n ( reset_n ),
.addr_in ( l_addr[31:2] ),
.data_in ( l_data_out[31:0]),
.data_out ( local_data_out),
.l_cmdo ( l_cmdo ),
.ready_n ( local_rdyn ),
.lt_framen ( lt_framen ),
.lt_ackn ( lt_ackn ),
.lt_dxfrn ( lt_dxfrn ),
.lt_tsr ( lt_tsr ),
.cs_n ( cs_local_n ),
// .rst_in_n ( rst_in_n ),
.reset_reg (reset_reg ),
.dog_clear (dog_clear ),
.dog_value (dog_value ),
.dog_cnt (dog_cnt ),
.led_reg (led_reg ),
//
.clk_25M ( clk_25M ),
.phy_ref ( phy_ref ),
.present_n ( present_n ),
.lc1_mod_type ( lc1_mod_type ),
.lc2_mod_type ( lc2_mod_type ),
.g1_status1 ( g11_status1 ),
.g1_status2 ( g11_status2 ),
.g1_status3 ( g11_status3 ),
.g1_status4 ( g11_status4 ),
.g2_status1 ( g22_status1 ),
.g2_status2 ( g22_status2 ),
.g2_status3 ( g22_status3 ),
.g2_status4 ( g22_status4 ),
.f1_status1 ( f11_status1 ),
.f1_status2 ( f11_status2 ),
.f1_status3 ( f11_status3 ),
.f1_status4 ( f11_status4 ),
.f2_status1 ( f22_status1 ),
.f2_status2 ( f22_status2 ),
.f2_status3 ( f22_status3 ),
.f2_status4 ( f22_status4 ),
// .sys_run ( sys_run ),
// .sys_alerm ( sys_alerm ),
// .sys_role ( sys_role ),
//I2C to card
.IIC_SCL ( iic_scl ),
.IIC_SDA ( iic_sda ),
//I2C to cpld
.SFPIIC_SCL (sfpiic_scl ),
.SFPIIC_SDA (sfpiic_sda ),
.TRI_SFPIIC_SDA(tri_sfpiic_sda),
.SFP_ADDRESS (sfp_address ),
.int_mask (int_mask ),
.int_clear (int_clear ),
.int_state (int_state ),
// .int_out_n ( l_irq_n ),
// .int_in_n ( int_n ),
// .sys_run ( sys_run ),
// .sys_alerm ( sys_alerm ),
// .sys_role ( sys_role ),
// .ot_thr ( ot_thr ),
.err_cnt ( err_cnt ));
/******************************************************/
/* generate int and led */
/******************************************************/
INT_LED INT_LED(
.clk33m(pci_clk),
.clk1hz(clk1hz),
.clk4hz(clk4hz),
.clk16khz(clk16khz),
.reset_n(reset_n),
.int_mask(int_mask),
.int_clear(int_clear),
.int_state(int_state),
.fpga_int(fpga_int),
.bcm5464_int(bcm5464_int),
.bcm5248_int(bcm5248_int),
// .card_present(card_present),
.alarm_led(alarm_led),
.role_led(role_led),
.run_led(run_led),
.led_reg(led_reg)
);
/******************************************************************************/
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -