SPI_Test/tb/testbench/rtl/awg_regfile.v

1002 lines
41 KiB
Coq
Raw Normal View History

2024-06-25 16:41:01 +08:00
//+FHDR--------------------------------------------------------------------------------------------------------
// Company:
//-----------------------------------------------------------------------------------------------------------------
// File Name : awg_regfile.v
// Department :
// Author : PWY
// Author's Tel :
//-----------------------------------------------------------------------------------------------------------------
// Relese History
// Version Date Author Description
// 0.1 2024-03-13 PWY AWG dedicated register file
//-----------------------------------------------------------------------------------------------------------------
// Keywords :
//
//-----------------------------------------------------------------------------------------------------------------
// Parameter
//
//-----------------------------------------------------------------------------------------------------------------
// Purpose :
//
//-----------------------------------------------------------------------------------------------------------------
// Target Device:
// Tool versions:
//-----------------------------------------------------------------------------------------------------------------
// Reuse Issues
// Reset Strategy:
// Clock Domains:
// Critical Timing:
// Asynchronous I/F:
// Synthesizable (y/n):
// Other:
//-FHDR--------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------
// -- Register address offset macros
// -----------------------------------------------------------
//MCU parameter register 0
`define MCUPARAR0 16'h00
//MCU parameter register 1
`define MCUPARAR1 16'h04
//MCU parameter register 2
`define MCUPARAR2 16'h08
//MCU parameter register 3
`define MCUPARAR3 16'h0C
//MCU result register 0
`define MCURESR0 16'h10
//MCU result register 1
`define MCURESR1 16'h14
//MCU result register 2
`define MCURESR2 16'h18
//MCU result register 3
`define MCURESR3 16'h1C
//Run-time register
`define RTIMR 16'h98
//Instruction count register
`define ICNTR 16'h9C
//Feedback state information register
`define FSIR 16'hA0
//Modulator Operation Mode Register
`define MODMR 16'h100
//Interpolator Operation Mode Register
`define INTPMR 16'h104
//Frequency Mixer NCO Clear Register
`define MIXNCOCR 16'h108
//Frequency Mixer NCO Frequency Control Word High 32-bit Register
`define MIXNFCWHR 16'h10C
//Frequency Mixer NCO Frequency Control Word Low 16-bit Register
`define MIXNFCWLR 16'h110
//Frequency Mixer NCO Phase Control Word Register
`define MIXNPHAR 16'h114
//Frequency Mixer Operating Mode Register
`define MIXMR 16'h118
//Frequency Mixer Output Data Type Register
`define MIXODTR 16'h11C
//Frequency Mixer Output Data Format Register
`define MIXODFR 16'h120
//Interpolator Selection Register
`define INTPSELR 16'h128
//Tail Correction Bypass Register
`define TCBPR 16'h12C
//Tail Correction A Parameter Real Part Value Register 0
`define TCPARR0 16'h130
//Tail Correction A Parameter Real Part Value Register 1
`define TCPARR1 16'h134
//Tail Correction A Parameter Real Part Value Register 2
`define TCPARR2 16'h138
//Tail Correction A Parameter Real Part Value Register 3
`define TCPARR3 16'h13C
//Tail Correction A Parameter Real Part Value Register 4
`define TCPARR4 16'h140
//Tail Correction A Parameter Real Part Value Register 5
`define TCPARR5 16'h144
//Tail Correction B Parameter Real Part Value Register 0
`define TCPBRR0 16'h148
//Tail Correction B Parameter Real Part Value Register 1
`define TCPBRR1 16'h14C
//Tail Correction B Parameter Real Part Value Register 2
`define TCPBRR2 16'h150
//Tail Correction B Parameter Real Part Value Register 3
`define TCPBRR3 16'h154
//Tail Correction B Parameter Real Part Value Register 4
`define TCPBRR4 16'h158
//Tail Correction B Parameter Real Part Value Register 5
`define TCPBRR5 16'h15C
//Tail Correction A Parameter Imaginary Part Value Register 0
`define TCPAIR0 16'h160
//Tail Correction A Parameter Imaginary Part Value Register 1
`define TCPAIR1 16'h164
//Tail Correction A Parameter Imaginary Part Value Register 2
`define TCPAIR2 16'h168
//Tail Correction A Parameter Imaginary Part Value Register 3
`define TCPAIR3 16'h16C
//Tail Correction A Parameter Imaginary Part Value Register 4
`define TCPAIR4 16'h170
//Tail Correction A Parameter Imaginary Part Value Register 5
`define TCPAIR5 16'h174
//Tail Correction B Parameter Imaginary Part Value Register 0
`define TCPBIR0 16'h178
//Tail Correction A Parameter Imaginary Part Value Register 1
`define TCPBIR1 16'h17C
//Tail Correction B Parameter Imaginary Part Value Register 2
`define TCPBIR2 16'h180
//Tail Correction B Parameter Imaginary Part Value Register 3
`define TCPBIR3 16'h184
//Tail Correction B Parameter Imaginary Part Value Register 4
`define TCPBIR4 16'h188
//Tail Correction B Parameter Imaginary Part Value Register 5
`define TCPBIR5 16'h18C
module awg_regfile (
//system port
input clk // System Main Clock
,input rst_n // Spi Reset active low
//rw op port
,input [31 :0] wrdata // write data
,input wren // write enable
,input [15 :0] rwaddr // read & write address
,input rden // read enable
,output [31 :0] rddata // read data
,input [2 :0] fb_st_i
,input [31 :0] run_time
,input [31 :0] instr_num
//MCU and SPI interface for interaction
,output [31 :0] mcu_param0 // MCU parameter 0
,output [31 :0] mcu_param1 // MCU parameter 1
,output [31 :0] mcu_param2 // MCU parameter 2
,output [31 :0] mcu_param3 // MCU parameter 3
,input [31 :0] mcu_result0 // MCU result 0
,input [31 :0] mcu_result1 // MCU result 1
,input [31 :0] mcu_result2 // MCU result 2
,input [31 :0] mcu_result3 // MCU result 3
,output [2 :0] fb_st_o
//awg cfg
,output mod_sel_sideband //1'b0:Upper sideband;1'b1:Lower sideband;
//DSP cfg
,output qam_nco_clr
,output [47:0] qam_fcw/////////////////////////////////////////////////////////////////////////////
,output [15:0] qam_pha /////////////////////////////////////////////////////////////////////////////
,output [1 :0] qam_mod //2'b00:bypass;2'b01:mix;
//2'b10:cos;2'b11:sin;
,output qam_sel_sideband //1'b0:Upper sideband;1'b1:Lower sideband;
,output [2 :0] intp_mode //3'b000:x1;3'b001:x2;3'b010:x4;
//3'b011:x8;3'b100:x16;
,output [1 :0] intp_sel //2'b00:HBF;2'b01:Nearest-neighbor interpolator;
//2'b10:Median interpolator;2'b00:reserve;
,output [1 :0] dac_mode_sel //2'b00:NRZ mode;2'b01:MIX mode;
//2'b10:2xNRZ mode;2'b00:reserve;
,output tc_bypass //1'b0:bypass;1'b1:enable;
,output [31:0] tcparr0
,output [31:0] tcparr1
,output [31:0] tcparr2
,output [31:0] tcparr3
,output [31:0] tcparr4
,output [31:0] tcparr5
,output [31:0] tcpbrr0
,output [31:0] tcpbrr1
,output [31:0] tcpbrr2
,output [31:0] tcpbrr3
,output [31:0] tcpbrr4
,output [31:0] tcpbrr5
,output [31:0] tcpair0
,output [31:0] tcpair1
,output [31:0] tcpair2
,output [31:0] tcpair3
,output [31:0] tcpair4
,output [31:0] tcpair5
,output [31:0] tcpbir0
,output [31:0] tcpbir1
,output [31:0] tcpbir2
,output [31:0] tcpbir3
,output [31:0] tcpbir4
,output [31:0] tcpbir5
);
localparam L = 1'b0,
H = 1'b1;
// ------------------------------------------------------
// -- Register enable (select) wires
// ------------------------------------------------------
wire mcuparar0en ; // MCUPARAR0 select
wire mcuparar1en ; // MCUPARAR1 select
wire mcuparar2en ; // MCUPARAR2 select
wire mcuparar3en ; // MCUPARAR3 select
wire mcuresr0en ; // MCURESR0 select
wire mcuresr1en ; // MCURESR1 select
wire mcuresr2en ; // MCURESR2 select
wire mcuresr3en ; // MCURESR3 select
wire rtimren ; // RTIMR select
wire icntren ; // ICNTR select
wire fsiren ; // FSIR select
wire modmren ; // MODMR select
wire intpmren ; // INTPMR select
wire mixncocren ; // MIXNCOCR select
wire mixnfcwhren ; // MIXNFCWHR select
wire mixnfcwlren ; // MIXNFCWLR select
wire mixnpharen ; // MIXNPHAR select
wire mixmren ; // MIXMR select
wire mixodtren ; // MIXODTR select
wire mixodfren ; // MIXODFR select
wire intpselren ; // INTPSELR select
wire tcbpren ; // TCBPR select
wire tcparr0en ; // TCPARR0 select
wire tcparr1en ; // TCPARR1 select
wire tcparr2en ; // TCPARR2 select
wire tcparr3en ; // TCPARR3 select
wire tcparr4en ; // TCPARR4 select
wire tcparr5en ; // TCPARR5 select
wire tcpbrr0en ; // TCPBRR0 select
wire tcpbrr1en ; // TCPBRR1 select
wire tcpbrr2en ; // TCPBRR2 select
wire tcpbrr3en ; // TCPBRR3 select
wire tcpbrr4en ; // TCPBRR4 select
wire tcpbrr5en ; // TCPBRR5 select
wire tcpair0en ; // TCPAIR0 select
wire tcpair1en ; // TCPAIR1 select
wire tcpair2en ; // TCPAIR2 select
wire tcpair3en ; // TCPAIR3 select
wire tcpair4en ; // TCPAIR4 select
wire tcpair5en ; // TCPAIR5 select
wire tcpbir0en ; // TCPBIR0 select
wire tcpbir1en ; // TCPBIR1 select
wire tcpbir2en ; // TCPBIR2 select
wire tcpbir3en ; // TCPBIR3 select
wire tcpbir4en ; // TCPBIR4 select
wire tcpbir5en ; // TCPBIR5 select
// ------------------------------------------------------
// -- Register write enable wires
// ------------------------------------------------------
wire mcuparar0we ; // MCUPARAR0 write enable
wire mcuparar1we ; // MCUPARAR1 write enable
wire mcuparar2we ; // MCUPARAR2 write enable
wire mcuparar3we ; // MCUPARAR3 write enable
wire intpmrwe ; // INTPMR write enable
wire mixncocrwe ; // MIXNCOCR write enable
wire mixnfcwhrwe ; // MIXNFCWHR write enable
wire mixnfcwlrwe ; // MIXNFCWLR write enable
wire mixnpharwe ; // MIXNPHAR write enable
wire mixmrwe ; // MIXMR write enable
wire mixodtrwe ; // MIXODTR write enable
wire mixodfrwe ; // MIXODFR write enable
wire intpselrwe ; // INTPSELR write enable
wire tcbprwe ; // TCBPR write enable
wire tcparr0we ; // TCPARR0 write enable
wire tcparr1we ; // TCPARR1 write enable
wire tcparr2we ; // TCPARR2 write enable
wire tcparr3we ; // TCPARR3 write enable
wire tcparr4we ; // TCPARR4 write enable
wire tcparr5we ; // TCPARR5 write enable
wire tcpbrr0we ; // TCPBRR0 write enable
wire tcpbrr1we ; // TCPBRR1 write enable
wire tcpbrr2we ; // TCPBRR2 write enable
wire tcpbrr3we ; // TCPBRR3 write enable
wire tcpbrr4we ; // TCPBRR4 write enable
wire tcpbrr5we ; // TCPBRR5 write enable
wire tcpair0we ; // TCPAIR0 write enable
wire tcpair1we ; // TCPAIR1 write enable
wire tcpair2we ; // TCPAIR2 write enable
wire tcpair3we ; // TCPAIR3 write enable
wire tcpair4we ; // TCPAIR4 write enable
wire tcpair5we ; // TCPAIR5 write enable
wire tcpbir0we ; // TCPBIR0 write enable
wire tcpbir1we ; // TCPBIR1 write enable
wire tcpbir2we ; // TCPBIR2 write enable
wire tcpbir3we ; // TCPBIR3 write enable
wire tcpbir4we ; // TCPBIR4 write enable
wire tcpbir5we ; // TCPBIR5 write enable
// ------------------------------------------------------
// -- Misc wires
// ------------------------------------------------------
// ------------------------------------------------------
// -- Misc Registers
// ------------------------------------------------------
reg [31 :0] mcuparar0 ; // MCUPARAR0 register
reg [31 :0] mcuparar1 ; // MCUPARAR1 register
reg [31 :0] mcuparar2 ; // MCUPARAR2 register
reg [31 :0] mcuparar3 ; // MCUPARAR3 register
reg [31 :0] mcuresr0 ; // MCURESR0 register
reg [31 :0] mcuresr1 ; // MCURESR1 register
reg [31 :0] mcuresr2 ; // MCURESR2 register
reg [31 :0] mcuresr3 ; // MCURESR3 register
reg [31 :0] rtimr ; // RTIMR register
reg [31 :0] icntr ; // ICNTR register
reg [1 :0] fsir ; // FSIR register
reg [0 :0] modmr ; // MODMR register
reg [2 :0] intpmr ; // INTPMR register
reg [0 :0] mixncocr ; // MIXNCOCR register
reg [31 :0] mixnfcwhr ; // MIXNFCWHR register
reg [15 :0] mixnfcwlr ; // MIXNFCWLR register
reg [15 :0] mixnphar ; // MIXNPHAR register
reg [0 :0] mixmr ; // MIXMR register
reg [1 :0] mixodtr ; // MIXODTR register
reg [1 :0] mixodfr ; // MIXODFR register
reg [1 :0] intpselr ; // INTPSELR register
reg [0 :0] tcbpr ; // TCBPR register
reg [31 :0] tcparr0 ; // TCPARR0 register
reg [31 :0] tcparr1 ; // TCPARR1 register
reg [31 :0] tcparr2 ; // TCPARR2 register
reg [31 :0] tcparr3 ; // TCPARR3 register
reg [31 :0] tcparr4 ; // TCPARR4 register
reg [31 :0] tcparr5 ; // TCPARR5 register
reg [31 :0] tcpbrr0 ; // TCPBRR0 register
reg [31 :0] tcpbrr1 ; // TCPBRR1 register
reg [31 :0] tcpbrr2 ; // TCPBRR2 register
reg [31 :0] tcpbrr3 ; // TCPBRR3 register
reg [31 :0] tcpbrr4 ; // TCPBRR4 register
reg [31 :0] tcpbrr5 ; // TCPBRR5 register
reg [31 :0] tcpair0 ; // TCPAIR0 register
reg [31 :0] tcpair1 ; // TCPAIR1 register
reg [31 :0] tcpair2 ; // TCPAIR2 register
reg [31 :0] tcpair3 ; // TCPAIR3 register
reg [31 :0] tcpair4 ; // TCPAIR4 register
reg [31 :0] tcpair5 ; // TCPAIR5 register
reg [31 :0] tcpbir0 ; // TCPBIR0 register
reg [31 :0] tcpbir1 ; // TCPBIR1 register
reg [31 :0] tcpbir2 ; // TCPBIR2 register
reg [31 :0] tcpbir3 ; // TCPBIR3 register
reg [31 :0] tcpbir4 ; // TCPBIR4 register
reg [31 :0] tcpbir5 ; // TCPBIR5 register
reg [31: 0] rddata_reg ;
// ------------------------------------------------------
// -- Address decoder
//
// Decodes the register address offset input(reg_addr)
// to produce enable (select) signals for each of the
// SW-registers in the macrocell. The reg_addr input
// is bits [15:0] of the paddr bus.
// ------------------------------------------------------
assign mcuparar0en = (rwaddr[15:2] == `MCUPARAR0 >> 2) ? 1'b1 : 1'b0;
assign mcuparar1en = (rwaddr[15:2] == `MCUPARAR1 >> 2) ? 1'b1 : 1'b0;
assign mcuparar2en = (rwaddr[15:2] == `MCUPARAR2 >> 2) ? 1'b1 : 1'b0;
assign mcuparar3en = (rwaddr[15:2] == `MCUPARAR3 >> 2) ? 1'b1 : 1'b0;
assign mcuresr0en = (rwaddr[15:2] == `MCURESR0 >> 2) ? 1'b1 : 1'b0;
assign mcuresr1en = (rwaddr[15:2] == `MCURESR1 >> 2) ? 1'b1 : 1'b0;
assign mcuresr2en = (rwaddr[15:2] == `MCURESR2 >> 2) ? 1'b1 : 1'b0;
assign mcuresr3en = (rwaddr[15:2] == `MCURESR3 >> 2) ? 1'b1 : 1'b0;
assign rtimren = (rwaddr[15:2] == `RTIMR >> 2) ? 1'b1 : 1'b0;
assign icntren = (rwaddr[15:2] == `ICNTR >> 2) ? 1'b1 : 1'b0;
assign fsiren = (rwaddr[15:2] == `FSIR >> 2) ? 1'b1 : 1'b0;
assign modmren = (rwaddr[15:2] == `MODMR >> 2) ? 1'b1 : 1'b0;
assign intpmren = (rwaddr[15:2] == `INTPMR >> 2) ? 1'b1 : 1'b0;
assign mixncocren = (rwaddr[15:2] == `MIXNCOCR >> 2) ? 1'b1 : 1'b0;
assign mixnfcwhren = (rwaddr[15:2] == `MIXNFCWHR >> 2) ? 1'b1 : 1'b0;
assign mixnfcwlren = (rwaddr[15:2] == `MIXNFCWLR >> 2) ? 1'b1 : 1'b0;
assign mixnpharen = (rwaddr[15:2] == `MIXNPHAR >> 2) ? 1'b1 : 1'b0;
assign mixmren = (rwaddr[15:2] == `MIXMR >> 2) ? 1'b1 : 1'b0;
assign mixodtren = (rwaddr[15:2] == `MIXODTR >> 2) ? 1'b1 : 1'b0;
assign mixodfren = (rwaddr[15:2] == `MIXODFR >> 2) ? 1'b1 : 1'b0;
assign intpselren = (rwaddr[15:2] == `INTPSELR >> 2) ? 1'b1 : 1'b0;
assign tcbpren = (rwaddr[15:2] == `TCBPR >> 2) ? 1'b1 : 1'b0;
assign tcparr0en = (rwaddr[15:2] == `TCPARR0 >> 2) ? 1'b1 : 1'b0;
assign tcparr1en = (rwaddr[15:2] == `TCPARR1 >> 2) ? 1'b1 : 1'b0;
assign tcparr2en = (rwaddr[15:2] == `TCPARR2 >> 2) ? 1'b1 : 1'b0;
assign tcparr3en = (rwaddr[15:2] == `TCPARR3 >> 2) ? 1'b1 : 1'b0;
assign tcparr4en = (rwaddr[15:2] == `TCPARR4 >> 2) ? 1'b1 : 1'b0;
assign tcparr5en = (rwaddr[15:2] == `TCPARR5 >> 2) ? 1'b1 : 1'b0;
assign tcpbrr0en = (rwaddr[15:2] == `TCPBRR0 >> 2) ? 1'b1 : 1'b0;
assign tcpbrr1en = (rwaddr[15:2] == `TCPBRR1 >> 2) ? 1'b1 : 1'b0;
assign tcpbrr2en = (rwaddr[15:2] == `TCPBRR2 >> 2) ? 1'b1 : 1'b0;
assign tcpbrr3en = (rwaddr[15:2] == `TCPBRR3 >> 2) ? 1'b1 : 1'b0;
assign tcpbrr4en = (rwaddr[15:2] == `TCPBRR4 >> 2) ? 1'b1 : 1'b0;
assign tcpbrr5en = (rwaddr[15:2] == `TCPBRR5 >> 2) ? 1'b1 : 1'b0;
assign tcpair0en = (rwaddr[15:2] == `TCPAIR0 >> 2) ? 1'b1 : 1'b0;
assign tcpair1en = (rwaddr[15:2] == `TCPAIR1 >> 2) ? 1'b1 : 1'b0;
assign tcpair2en = (rwaddr[15:2] == `TCPAIR2 >> 2) ? 1'b1 : 1'b0;
assign tcpair3en = (rwaddr[15:2] == `TCPAIR3 >> 2) ? 1'b1 : 1'b0;
assign tcpair4en = (rwaddr[15:2] == `TCPAIR4 >> 2) ? 1'b1 : 1'b0;
assign tcpair5en = (rwaddr[15:2] == `TCPAIR5 >> 2) ? 1'b1 : 1'b0;
assign tcpbir0en = (rwaddr[15:2] == `TCPBIR0 >> 2) ? 1'b1 : 1'b0;
assign tcpbir1en = (rwaddr[15:2] == `TCPBIR1 >> 2) ? 1'b1 : 1'b0;
assign tcpbir2en = (rwaddr[15:2] == `TCPBIR2 >> 2) ? 1'b1 : 1'b0;
assign tcpbir3en = (rwaddr[15:2] == `TCPBIR3 >> 2) ? 1'b1 : 1'b0;
assign tcpbir4en = (rwaddr[15:2] == `TCPBIR4 >> 2) ? 1'b1 : 1'b0;
assign tcpbir5en = (rwaddr[15:2] == `TCPBIR5 >> 2) ? 1'b1 : 1'b0;
// ------------------------------------------------------
// -- Write enable signals
//
// Write enable signals for writable SW-registers.
// The write enable for each register is the ANDed
// result of the register enable and the input reg_wren
// ------------------------------------------------------
assign mcuparar0we = mcuparar0en & wren;
assign mcuparar1we = mcuparar1en & wren;
assign mcuparar2we = mcuparar2en & wren;
assign mcuparar3we = mcuparar3en & wren;
assign modmrwe = modmren & wren;///////////
assign intpmrwe = intpmren & wren;
assign mixncocrwe = mixncocren & wren;
assign mixnfcwhrwe = mixnfcwhren & wren;
assign mixnfcwlrwe = mixnfcwlren & wren;
assign mixnpharwe = mixnpharen & wren;
assign mixmrwe = mixmren & wren;
assign mixodtrwe = mixodtren & wren;
assign mixodfrwe = mixodfren & wren;
assign intpselrwe = intpselren & wren;
assign tcbprwe = tcbpren & wren;
assign tcparr0we = tcparr0en & wren;
assign tcparr1we = tcparr1en & wren;
assign tcparr2we = tcparr2en & wren;
assign tcparr3we = tcparr3en & wren;
assign tcparr4we = tcparr4en & wren;
assign tcparr5we = tcparr5en & wren;
assign tcpbrr0we = tcpbrr0en & wren;
assign tcpbrr1we = tcpbrr1en & wren;
assign tcpbrr2we = tcpbrr2en & wren;
assign tcpbrr3we = tcpbrr3en & wren;
assign tcpbrr4we = tcpbrr4en & wren;
assign tcpbrr5we = tcpbrr5en & wren;
assign tcpair0we = tcpair0en & wren;
assign tcpair1we = tcpair1en & wren;
assign tcpair2we = tcpair2en & wren;
assign tcpair3we = tcpair3en & wren;
assign tcpair4we = tcpair4en & wren;
assign tcpair5we = tcpair5en & wren;
assign tcpbir0we = tcpbir0en & wren;
assign tcpbir1we = tcpbir1en & wren;
assign tcpbir2we = tcpbir2en & wren;
assign tcpbir3we = tcpbir3en & wren;
assign tcpbir4we = tcpbir4en & wren;
assign tcpbir5we = tcpbir5en & wren;
// ------------------------------------------------------
// -- mcuparar0 register
//
// Write mcuparar0 for 'MCUPARAR0' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> mcuparar0
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) mcuparar0_dfflr (mcuparar0we, wrdata[31:0], mcuparar0, clk, rst_n);
// ------------------------------------------------------
// -- mcuparar1 register
//
// Write mcuparar1 for 'MCUPARAR1' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> mcuparar1
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) mcuparar1_dfflr (mcuparar1we, wrdata[31:0], mcuparar1, clk, rst_n);
// ------------------------------------------------------
// -- mcuparar2 register
//
// Write mcuparar2 for 'MCUPARAR2' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> mcuparar2
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) mcuparar2_dfflr (mcuparar2we, wrdata[31:0], mcuparar2, clk, rst_n);
// ------------------------------------------------------
// -- mcuparar3 register
//
// Write mcuparar3 for 'MCUPARAR3' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> mcuparar3
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) mcuparar3_dfflr (mcuparar3we, wrdata[31:0], mcuparar3, clk, rst_n);
// ------------------------------------------------------
// -- modmr register
//
// Write modmr for 'MODMR' : 32-bit register
// Register is split into the following bit fields
//
// [0] --> modmr
// ------------------------------------------------------
sirv_gnrl_dfflr #(1) modmr_dfflr (modmrwe, wrdata[0], modmr, clk, rst_n);
// ------------------------------------------------------
// -- intpmr register
//
// Write intpmr for 'INTPMR' : 32-bit register
// Register is split into the following bit fields
//
// [2:0] --> intpmr
// ------------------------------------------------------
sirv_gnrl_dfflr #(3) intpmr_dfflr (intpmrwe, wrdata[2:0], intpmr, clk, rst_n);
// ------------------------------------------------------
// -- mixncocr register
//
// Write mixncocr for 'MIXNCOCR' : 32-bit register
// Register is split into the following bit fields
//
// [0] --> mixncocr
// ------------------------------------------------------
sirv_gnrl_dfflr #(1) mixncocr_dfflr (mixncocrwe, wrdata[0], mixncocr, clk, rst_n);
// ------------------------------------------------------
// -- mixnfcwhr register
//
// Write mixnfcwhr for 'MIXNFCWHR' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> mixnfcwhr
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) mixnfcwhr_dfflr (mixnfcwhrwe, wrdata[31:0], mixnfcwhr, clk, rst_n);
// ------------------------------------------------------
// -- mixnfcwlr register
//
// Write mixnfcwlr for 'MIXNFCWHR' : 32-bit register
// Register is split into the following bit fields
//
// [31:16] --> mixnfcwlr
// ------------------------------------------------------
sirv_gnrl_dfflr #(16) mixnfcwlr_dfflr (mixnfcwlrwe, wrdata[31:16], mixnfcwlr, clk, rst_n);
// ------------------------------------------------------
// -- mixnphar register
//
// Write mixnphar for 'MIXNPHAR' : 32-bit register
// Register is split into the following bit fields
//
// [31:16] --> mixnphar
// ------------------------------------------------------
sirv_gnrl_dfflr #(16) mixnphar_dfflr (mixnpharwe, wrdata[31:16], mixnphar, clk, rst_n);
// ------------------------------------------------------
// -- mixmr register
//
// Write mixmr for 'MIXNPHAR' : 32-bit register
// Register is split into the following bit fields
//
// [0] --> mixmr
// ------------------------------------------------------
sirv_gnrl_dfflr #(1) mixmr_dfflr (mixmrwe, wrdata[0], mixmr, clk, rst_n);
// ------------------------------------------------------
// -- mixodtr register
//
// Write mixodtr for 'MIXNPHAR' : 32-bit register
// Register is split into the following bit fields
//
// [1:0] --> mixodtr
// ------------------------------------------------------
sirv_gnrl_dfflr #(2) mixodtr_dfflr (mixodtrwe, wrdata[1:0], mixodtr, clk, rst_n);
// ------------------------------------------------------
// -- mixodfr register
//
// Write mixodfr for 'MIXODFR' : 32-bit register
// Register is split into the following bit fields
//
// [1:0] --> mixodfr
// ------------------------------------------------------
sirv_gnrl_dfflr #(2) mixodfr_dfflr (mixodfrwe, wrdata[1:0], mixodfr, clk, rst_n);
// ------------------------------------------------------
// -- intpselr register
//
// Write intpselr for 'INTPSELR' : 32-bit register
// Register is split into the following bit fields
//
// [1:0] --> intpselr
// ------------------------------------------------------
sirv_gnrl_dfflr #(2) intpselr_dfflr (intpselrwe, wrdata[1:0], intpselr, clk, rst_n);
// ------------------------------------------------------
// -- tcbpr register
//
// Write tcbpr for 'TCBPR' : 32-bit register
// Register is split into the following bit fields
//
// [0] --> tcbpr
// ------------------------------------------------------
sirv_gnrl_dfflr #(1) tcbpr_dfflr (tcbprwe, wrdata[0], tcbpr, clk, rst_n);
// ------------------------------------------------------
// -- tcparr0 register
//
// Write tcparr0 for 'TCPARR0' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcparr0
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcparr0_dfflr (tcparr0we, wrdata[31:0], tcparr0, clk, rst_n);
// ------------------------------------------------------
// -- tcparr1 register
//
// Write tcparr1 for 'TCPARR1' : 32-bit register
// Register is split into the following bit fields
//
// [0] --> tcparr1
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcparr1_dfflr (tcparr1we, wrdata[31:0], tcparr1, clk, rst_n);////////
// ------------------------------------------------------
// -- tcparr2 register
//
// Write tcparr2 for 'TCPARR2' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcparr2
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcparr2_dfflr (tcparr2we, wrdata[31:0], tcparr2, clk, rst_n);
// ------------------------------------------------------
// -- tcparr3 register
//
// Write tcparr3 for 'TCPARR3' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcparr3
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcparr3_dfflr (tcparr3we, wrdata[31:0], tcparr3, clk, rst_n);
// ------------------------------------------------------
// -- tcparr4 register
//
// Write tcparr4 for 'TCPARR4' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcparr4
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcparr4_dfflr (tcparr4we, wrdata[31:0], tcparr4, clk, rst_n);
// ------------------------------------------------------
// -- tcparr5 register
//
// Write tcparr5 for 'TCPARR5' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcparr5
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcparr5_dfflr (tcparr5we, wrdata[31:0], tcparr5, clk, rst_n);
// ------------------------------------------------------
// -- tcpbrr0 register
//
// Write tcpbrr0 for 'tcpbrr0' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpbrr0
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbrr0_dfflr (tcpbrr0we, wrdata[31:0], tcpbrr0, clk, rst_n);
// ------------------------------------------------------
// -- tcpbrr1 register
//
// Write tcpbrr1 for 'tcpbrr1' : 32-bit register
// Register is split into the following bit fields
//
// [0] --> tcpbrr1
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbrr1_dfflr (tcpbrr1we, wrdata[31:0], tcpbrr1, clk, rst_n);////////////////////
// ------------------------------------------------------
// -- tcpbrr2 register
//
// Write tcpbrr2 for 'tcpbrr2' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpbrr2
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbrr2_dfflr (tcpbrr2we, wrdata[31:0], tcpbrr2, clk, rst_n);
// ------------------------------------------------------
// -- tcpbrr3 register
//
// Write tcpbrr3 for 'tcpbrr3' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpbrr3
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbrr3_dfflr (tcpbrr3we, wrdata[31:0], tcpbrr3, clk, rst_n);
// ------------------------------------------------------
// -- tcpbrr4 register
//
// Write tcpbrr4 for 'tcpbrr4' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpbrr4
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbrr4_dfflr (tcpbrr4we, wrdata[31:0], tcpbrr4, clk, rst_n);
// ------------------------------------------------------
// -- tcpbrr5 register
//
// Write tcpbrr5 for 'tcpbrr5' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpbrr5
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbrr5_dfflr (tcpbrr5we, wrdata[31:0], tcpbrr5, clk, rst_n);
// ------------------------------------------------------
// -- tcpair0 register
//
// Write tcpair0 for 'tcpair0' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpair0
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpair0_dfflr (tcpair0we, wrdata[31:0], tcpair0, clk, rst_n);
// ------------------------------------------------------
// -- tcpair1 register
//
// Write tcpair1 for 'tcpair1' : 32-bit register
// Register is split into the following bit fields
//
// [0] --> tcpair1
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpair1_dfflr (tcpair1we, wrdata[31:0], tcpair1, clk, rst_n);
// ------------------------------------------------------
// -- tcpair2 register
//
// Write tcpair2 for 'tcpair2' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpair2
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpair2_dfflr (tcpair2we, wrdata[31:0], tcpair2, clk, rst_n);
// ------------------------------------------------------
// -- tcpair3 register
//
// Write tcpair3 for 'tcpair3' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpair3
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpair3_dfflr (tcpair3we, wrdata[31:0], tcpair3, clk, rst_n);
// ------------------------------------------------------
// -- tcpair4 register
//
// Write tcpair4 for 'tcpair4' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpair4
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpair4_dfflr (tcpair4we, wrdata[31:0], tcpair4, clk, rst_n);
// ------------------------------------------------------
// -- tcpair5 register
//
// Write tcpair5 for 'tcpair5' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpair5
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpair5_dfflr (tcpair5we, wrdata[31:0], tcpair5, clk, rst_n);
// ------------------------------------------------------
// -- tcpbir0 register
//
// Write tcpbir0 for 'tcpbir0' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpbir0
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbir0_dfflr (tcpbir0we, wrdata[31:0], tcpbir0, clk, rst_n);
// ------------------------------------------------------
// -- tcpbir1 register
//
// Write tcpbir1 for 'tcpbir1' : 32-bit register
// Register is split into the following bit fields
//
// [0] --> tcpbir1
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbir1_dfflr (tcpbir1we, wrdata[31:0], tcpbir1, clk, rst_n);//////////
// ------------------------------------------------------
// -- tcpbir2 register
//
// Write tcpbir2 for 'tcpbir2' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpbir2
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbir2_dfflr (tcpbir2we, wrdata[31:0], tcpbir2, clk, rst_n);
// ------------------------------------------------------
// -- tcpbir3 register
//
// Write tcpbir3 for 'tcpbir3' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpbir3
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbir3_dfflr (tcpbir3we, wrdata[31:0], tcpbir3, clk, rst_n);
// ------------------------------------------------------
// -- tcpbir4 register
//
// Write tcpbir4 for 'tcpbir4' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpbir4
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbir4_dfflr (tcpbir4we, wrdata[31:0], tcpbir4, clk, rst_n);
// ------------------------------------------------------
// -- tcpbir5 register
//
// Write tcpbir5 for 'tcpbir5' : 32-bit register
// Register is split into the following bit fields
//
// [31:0] --> tcpbir5
// ------------------------------------------------------
sirv_gnrl_dfflr #(32) tcpbir5_dfflr (tcpbir5we, wrdata[31:0], tcpbir5, clk, rst_n);
// ------------------------------------------------------
// -- mcuresr0
// ------------------------------------------------------
sirv_gnrl_dffr #(32) mcuparar0_dffr (mcu_result0, mcuresr0, clk, rst_n);
// ------------------------------------------------------
// -- mcuresr1
// ------------------------------------------------------
sirv_gnrl_dffr #(32) mcuparar1_dffr (mcu_result1, mcuresr1, clk, rst_n);
// ------------------------------------------------------
// -- mcuresr2
// ------------------------------------------------------
sirv_gnrl_dffr #(32) mcuparar2_dffr (mcu_result2, mcuresr2, clk, rst_n);
// ------------------------------------------------------
// -- mcuresr3
// ------------------------------------------------------
sirv_gnrl_dffr #(32) mcuparar3_dffr (mcu_result3, mcuresr3, clk, rst_n);
// ------------------------------------------------------
// -- rtimr
// ------------------------------------------------------
sirv_gnrl_dffr #(32) rtimr_dffr (run_time, rtimr, clk, rst_n);
// ------------------------------------------------------
// -- icntr
// ------------------------------------------------------
sirv_gnrl_dffr #(32) icntr_dffr (instr_num, icntr, clk, rst_n);
// ------------------------------------------------------
// -- fsir
// ------------------------------------------------------
sirv_gnrl_dffr #(2) fsir_dffr (fb_st_i, fsir, clk, rst_n);
// ------------------------------------------------------
// -- Read data mux
//
// -- The data from the selected register is
// -- placed on a zero-padded 32-bit read data bus.
// ------------------------------------------------------
always @(*) begin : RDDATA_PROC
rddata_reg = {32{1'b0}};
if(mcuparar0en == H ) rddata_reg[31:0] = mcuparar0 ;
if(mcuparar1en == H ) rddata_reg[31:0] = mcuparar1 ;
if(mcuparar2en == H ) rddata_reg[31:0] = mcuparar2 ;
if(mcuparar3en == H ) rddata_reg[31:0] = mcuparar3 ;
if(mcuresr0en == H ) rddata_reg[31:0] = mcuresr0 ;
if(mcuresr1en == H ) rddata_reg[31:0] = mcuresr1 ;
if(mcuresr2en == H ) rddata_reg[31:0] = mcuresr2 ;
if(mcuresr3en == H ) rddata_reg[31:0] = mcuresr3 ;
if(rtimren == H ) rddata_reg[31:0] = rtimr ;
if(icntren == H ) rddata_reg[31:0] = icntr ;
if(fsiren == H ) rddata_reg[1 :0] = fsir ;
if(modmren == H ) rddata_reg[0 :0] = modmr ;
if(intpmren == H ) rddata_reg[2 :0] = intpmr ;
if(mixncocren == H ) rddata_reg[0 :0] = mixncocr ;
if(mixnfcwhren == H ) rddata_reg[31:0] = mixnfcwhr ;
if(mixnfcwlren == H ) rddata_reg[15:0] = mixnfcwlr ;
if(mixnpharen == H ) rddata_reg[15:0] = mixnphar ;
if(mixmren == H ) rddata_reg[0 :0] = mixmr ;
if(mixodtren == H ) rddata_reg[1 :0] = mixodtr ;
if(mixodfren == H ) rddata_reg[1 :0] = mixodfr ;
if(intpselren == H ) rddata_reg[1 :0] = intpselr ;
if(tcbpren == H ) rddata_reg[0 :0] = tcbpr ;
if(tcparr0en == H ) rddata_reg[31:0] = tcparr0 ;
if(tcparr1en == H ) rddata_reg[31:0] = tcparr1 ;
if(tcparr2en == H ) rddata_reg[31:0] = tcparr2 ;
if(tcparr3en == H ) rddata_reg[31:0] = tcparr3 ;
if(tcparr4en == H ) rddata_reg[31:0] = tcparr4 ;
if(tcparr5en == H ) rddata_reg[31:0] = tcparr5 ;
if(tcpbrr0en == H ) rddata_reg[31:0] = tcpbrr0 ;
if(tcpbrr1en == H ) rddata_reg[31:0] = tcpbrr1 ;
if(tcpbrr2en == H ) rddata_reg[31:0] = tcpbrr2 ;
if(tcpbrr3en == H ) rddata_reg[31:0] = tcpbrr3 ;
if(tcpbrr4en == H ) rddata_reg[31 :0] = tcpbrr4 ;/////////
if(tcpbrr5en == H ) rddata_reg[31:0] = tcpbrr5 ;
if(tcpair0en == H ) rddata_reg[31:0] = tcpair0 ;
if(tcpair1en == H ) rddata_reg[31:0] = tcpair1 ;
if(tcpair2en == H ) rddata_reg[31:0] = tcpair2 ;
if(tcpair3en == H ) rddata_reg[31:0] = tcpair3 ;
if(tcpair4en == H ) rddata_reg[31:0] = tcpair4 ;
if(tcpair5en == H ) rddata_reg[31:0] = tcpair5 ;
if(tcpbir0en == H ) rddata_reg[31:0] = tcpbir0 ;
if(tcpbir1en == H ) rddata_reg[31:0] = tcpbir1 ;
if(tcpbir2en == H ) rddata_reg[31:0] = tcpbir2 ;
if(tcpbir3en == H ) rddata_reg[31 :0] = tcpbir3 ;////////
if(tcpbir4en == H ) rddata_reg[31:0] = tcpbir4 ;
if(tcpbir5en == H ) rddata_reg[31:0] = tcpbir5 ;
end
// ------------------------------------------------------
// -- Output signals assignment
// ------------------------------------------------------
//mcu result
assign mcu_param0 = mcuparar0 ;
assign mcu_param1 = mcuparar1 ;
assign mcu_param2 = mcuparar2 ;
assign mcu_param3 = mcuparar3 ;
//fb_st_o
assign fb_st_o = fsir ;
//awg cfg
assign mod_sel_sideband = modmr ;
//DSP cfg
assign qam_nco_clr = mixncocr ;
assign qam_fcw = {mixnfcwhr,mixnfcwlr} ;
assign qam_pha = mixnphar ;
assign qam_mod = mixodtr ;
assign qam_sel_sideband = mixmr ;
assign intp_mode = intpmr ;
assign intp_sel = intpselr ;
assign dac_mode_sel = mixodfr ;
assign tc_bypass = tcbpr ;//////////////////////////////////////////////////////////////////////////////////
//rddata
sirv_gnrl_dffr #(32) rddata_dffr (rddata_reg, rddata, clk, rst_n);
endmodule
`undef MCUPARAR0
`undef MCUPARAR1
`undef MCUPARAR2
`undef MCUPARAR3
`undef MCURESR0
`undef MCURESR1
`undef MCURESR2
`undef MCURESR3
`undef RTIMR
`undef ICNTR
`undef FSIR
`undef MODMR
`undef INTPMR
`undef MIXNCOCR
`undef MIXNFCWHR
`undef MIXNFCWLR
`undef MIXNPHAR
`undef MIXMR
`undef MIXODTR
`undef MIXODFR
`undef INTPSELR
`undef TCBPR
`undef TCPARR0
`undef TCPARR1
`undef TCPARR2
`undef TCPARR3
`undef TCPARR4
`undef TCPARR5
`undef TCPBRR0
`undef TCPBRR1
`undef TCPBRR2
`undef TCPBRR3
`undef TCPBRR4
`undef TCPBRR5
`undef TCPAIR0
`undef TCPAIR1
`undef TCPAIR2
`undef TCPAIR3
`undef TCPAIR4
`undef TCPAIR5
`undef TCPAIR0
`undef TCPBIR1
`undef TCPBIR2
`undef TCPBIR3
`undef TCPBIR4
`undef TCPBIR5