⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 top.v

📁 pci pci转local bus总线的应用
💻 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 + -