[2943] | 1 | module radio_mirror_regs ( |
---|
| 2 | input clk, |
---|
| 3 | input reset, |
---|
| 4 | input [13:0] spi_reg_wr_data, |
---|
| 5 | input [ 3:0] spi_reg_wr_addr, |
---|
| 6 | input spi_reg_wr_en, |
---|
| 7 | |
---|
| 8 | output [13:0] mirror_reg0, |
---|
| 9 | output [13:0] mirror_reg1, |
---|
| 10 | output [13:0] mirror_reg2, |
---|
| 11 | output [13:0] mirror_reg3, |
---|
| 12 | output [13:0] mirror_reg4, |
---|
| 13 | output [13:0] mirror_reg5, |
---|
| 14 | output [13:0] mirror_reg6, |
---|
| 15 | output [13:0] mirror_reg7, |
---|
| 16 | output [13:0] mirror_reg8, |
---|
| 17 | output [13:0] mirror_reg9, |
---|
| 18 | output [13:0] mirror_regA, |
---|
| 19 | output [13:0] mirror_regB, |
---|
| 20 | output [13:0] mirror_regC |
---|
| 21 | ); |
---|
| 22 | |
---|
| 23 | wire [13:0] radio_mirrorRegs [12:0]; //Thirteen 14-bit registers |
---|
| 24 | |
---|
| 25 | assign mirror_reg0 = radio_mirrorRegs[0]; |
---|
| 26 | assign mirror_reg1 = radio_mirrorRegs[1]; |
---|
| 27 | assign mirror_reg2 = radio_mirrorRegs[2]; |
---|
| 28 | assign mirror_reg3 = radio_mirrorRegs[3]; |
---|
| 29 | assign mirror_reg4 = radio_mirrorRegs[4]; |
---|
| 30 | assign mirror_reg5 = radio_mirrorRegs[5]; |
---|
| 31 | assign mirror_reg6 = radio_mirrorRegs[6]; |
---|
| 32 | assign mirror_reg7 = radio_mirrorRegs[7]; |
---|
| 33 | assign mirror_reg8 = radio_mirrorRegs[8]; |
---|
| 34 | assign mirror_reg9 = radio_mirrorRegs[9]; |
---|
| 35 | assign mirror_regA = radio_mirrorRegs[10]; |
---|
| 36 | assign mirror_regB = radio_mirrorRegs[11]; |
---|
| 37 | assign mirror_regC = radio_mirrorRegs[12]; |
---|
| 38 | |
---|
| 39 | localparam MAX2829_REG0_ON_RESET = 14'b01000101000000; |
---|
| 40 | localparam MAX2829_REG1_ON_RESET = 14'b00000011001010; |
---|
| 41 | localparam MAX2829_REG2_ON_RESET = 14'b01000000000111; |
---|
| 42 | localparam MAX2829_REG3_ON_RESET = 14'b11000010100010; |
---|
| 43 | localparam MAX2829_REG4_ON_RESET = 14'b01110111011101; |
---|
| 44 | localparam MAX2829_REG5_ON_RESET = 14'b01100000100100; |
---|
| 45 | localparam MAX2829_REG6_ON_RESET = 14'b01110000000000; |
---|
| 46 | localparam MAX2829_REG7_ON_RESET = 14'b00000000101010; |
---|
| 47 | localparam MAX2829_REG8_ON_RESET = 14'b00000000100101; |
---|
| 48 | localparam MAX2829_REG9_ON_RESET = 14'b00001000000000; |
---|
| 49 | localparam MAX2829_REGA_ON_RESET = 14'b00001111000000; |
---|
| 50 | localparam MAX2829_REGB_ON_RESET = 14'b00000001111111; |
---|
| 51 | localparam MAX2829_REGC_ON_RESET = 14'b00000000000000; |
---|
| 52 | |
---|
| 53 | localparam MAX2829_REGS_ON_RESET = {MAX2829_REGC_ON_RESET, MAX2829_REGB_ON_RESET, MAX2829_REGA_ON_RESET, |
---|
| 54 | MAX2829_REG9_ON_RESET, MAX2829_REG8_ON_RESET, MAX2829_REG7_ON_RESET, |
---|
| 55 | MAX2829_REG6_ON_RESET, MAX2829_REG5_ON_RESET, MAX2829_REG4_ON_RESET, |
---|
| 56 | MAX2829_REG3_ON_RESET, MAX2829_REG2_ON_RESET, MAX2829_REG1_ON_RESET, |
---|
| 57 | MAX2829_REG0_ON_RESET}; |
---|
| 58 | |
---|
| 59 | genvar bit_index; |
---|
| 60 | genvar reg_index; |
---|
| 61 | for(reg_index = 0; reg_index <= 12; reg_index = reg_index + 1) begin: MIRROR_REGS_GEN |
---|
| 62 | for(bit_index = 0; bit_index <= 13; bit_index = bit_index + 1) begin: MIRROR_REGS_BITS_GEN |
---|
| 63 | FDRE #(.INIT(MAX2829_REGS_ON_RESET[(reg_index * 14) + bit_index])) FDRE_RFA_MIRRORREG ( |
---|
| 64 | .C(clk), |
---|
| 65 | .CE(spi_reg_wr_en & (spi_reg_wr_addr == reg_index)), |
---|
| 66 | .R(reset), |
---|
| 67 | .D(spi_reg_wr_data[bit_index]), |
---|
| 68 | .Q(radio_mirrorRegs[reg_index][bit_index]) |
---|
| 69 | ); |
---|
| 70 | end |
---|
| 71 | end |
---|
| 72 | |
---|
| 73 | endmodule |
---|