/********************************************** _ _ Cook Darwin __

_ descript: 通用配置寄存器接口 用于配置模块寄存器 author : Cook.Darwin Version: VERA.0.0 creaded: 2017/1/9 madified: ***********************************************/ interface common_configure_reg_interface #(

parameter ASIZE = 8,
parameter DSIZE = 32

)();

// `include “E:/work/xilinx_exp/digilent_aritx_ethernet_1205/RTL/data_interface/cfg_reg_define.svh”

// logic [ASIZE-1:0] bus_addr; logic [DSIZE-1:0] wdata; logic [DSIZE-1:0] rdata; logic [ASIZE-1:0] addr; logic [DSIZE-1:0] default_value; logic rst; logic interrupt_enable; logic interrupt_trigger;

modport master ( //configure centor output wdata, input rdata, input addr, input default_value, input rst, input interrupt_enable, input interrupt_trigger // import function logic SET_REG( // input int faddr, // // output [cfg_inf.DSIZE-1:0] fwdata, // input int fdefault_value, // input int frdata, // input int frst) );

modport slaver ( input wdata, output rdata, output addr, output default_value, output rst, output interrupt_enable, output interrupt_trigger );

// function logic [DSIZE-1:0] SET_REG( // input int faddr, // // output [cfg_inf.DSIZE-1:0] fwdata, // input int fdefault_value, // input int frdata, // input int frst); // // addr = faddr; // // fwdata = wdata; // rdata = frdata; // rst = frst; // // default_value = fdefault_value; // // return wdata; // // endfunction:SET_REG

endinterface:common_configure_reg_interface

module CFG_REG #(

parameter DSIZE = 32

)(

common_configure_reg_interface.slaver  cfg_inf,
input int                       addr,
output[DSIZE-1:0]               wdata,
input [DSIZE-1:0]               default_value,
input [DSIZE-1:0]               rdata,
input logic                     rst

);

assign cfg_inf.addr = addr; assign wdata = cfg_inf.wdata; assign cfg_inf.default_value = default_value; assign cfg_inf.rdata = rdata; assign cfg_inf.rst = rst; assign cfg_inf.interrupt_enable = 1'b0; assign cfg_inf.interrupt_trigger = 1'b0; endmodule:CFG_REG

// module CFG_REG_A1 #( // parameter DSIZE = 1 // )( // common_configure_reg_interface.slaver cfg_inf, // input int addr, // output [DSIZE-1:0] wdata, // input [DSIZE-1:0] default_value, // input [DSIZE-1:0] rdata, // input rst // ); // // assign cfg_inf.addr = addr; // assign wdata = cfg_inf.wdata; // assign cfg_inf.default_value = default_value; // assign cfg_inf.rdata = rdata; // assign cfg_inf.rst = rst; // assign cfg_inf.interrupt_enable = 1'b0; // assign cfg_inf.interrupt_trigger = 1'b0; // endmodule:CFG_REG_A1

module CFG_REG_INTR (

common_configure_reg_interface.slaver  cfg_inf,
input int                       addr,
output int                      wdata,
input int                       default_value,
input int                       rdata,
input int                       rst,
input logic                     interrupt_trigger

);

assign cfg_inf.addr = addr; assign wdata = cfg_inf.wdata; assign cfg_inf.default_value = default_value; assign cfg_inf.rdata = rdata; assign cfg_inf.rst = rst; assign cfg_inf.interrupt_enable = 1'b1; assign cfg_inf.interrupt_trigger = interrupt_trigger;

endmodule:CFG_REG_INTR

module general_reg (

common_configure_reg_interface.slaver  cfg_inf,
input int                       addr,
output int                      data,
input int                       default_value

);

CFG_REG CFG_REG_INST( /* common_configure_reg_interface.slaver */ .cfg_inf (cfg_inf ), /* input int */ .addr (addr ), /* output [cfg_inf.DSIZE-1:0] */ .wdata (data ), /* input int */ .default_value (default_value), /* input int */ .rdata (data ), /* input int */ .rst (0 ) );

endmodule:general_reg

module general_reg_intr (

common_configure_reg_interface.slaver  cfg_inf,
input int                       addr,
output int                      data,
input int                       default_value,
input                           interrupt_trigger

);

CFG_REG_INTR CFG_REG_INST( /* common_configure_reg_interface.slaver */ .cfg_inf (cfg_inf ), /* input int */ .addr (addr ), /* output [cfg_inf.DSIZE-1:0] */ .wdata (data ), /* input int */ .default_value (default_value), /* input int */ .rdata (data ), /* input int */ .rst ('0 ), /* input */ .interrupt_trigger (interrupt_trigger ) );

endmodule:general_reg_intr

module general_only_read_reg #(

parameter   DSIZE = 32

)(

common_configure_reg_interface.slaver  cfg_inf,
input int                       addr,
input [DSIZE-1:0]               rdata

);

CFG_REG #(DSIZE) CFG_REG_INST( /* common_configure_reg_interface.slaver */ .cfg_inf (cfg_inf ), /* input int */ .addr (addr ), /* output nit */ .wdata ( ), /* input int */ .default_value ('0 ), /* input int */ .rdata (rdata ), /* input int */ .rst ('0 ) );

endmodule:general_only_read_reg

module general_only_read_reg_intr (

common_configure_reg_interface.slaver  cfg_inf,
input int                       addr,
input int                       rdata,
input                           interrupt_trigger

);

CFG_REG_INTR CFG_REG_INST( /* common_configure_reg_interface.slaver */ .cfg_inf (cfg_inf ), /* input int */ .addr (addr ), /* output nit */ .wdata ( ), /* input int */ .default_value ('0 ), /* input int */ .rdata (rdata ), /* input int */ .rst ('0 ), /* input */ .interrupt_trigger (interrupt_trigger) );

endmodule:general_only_read_reg_intr

module general_pulse(

common_configure_reg_interface.slaver  cfg_inf,
input int                       addr,
output                          data

);

int wdata; assign data = wdata;

CFG_REG CFG_REG_inst( /* common_configure_reg_interface.slaver */ .cfg_inf (cfg_inf ), /* input int */ .addr (addr ), /* output int */ .wdata (wdata ), /* input int */ .default_value ('0 ), /* input int */ .rdata ('0 ), /* input int */ .rst (data ) );

endmodule:general_pulse