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 |
---|