1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
module register_io
(input clk, input reset, input wire [1:0] enable, input wire [6:0] addr,
input wire [31:0] datain, output reg [31:0] dataout, output wire [15:0] debugbus,
input wire [31:0] rssi_0, input wire [31:0] rssi_1,
input wire [31:0] rssi_2, input wire [31:0] rssi_3,
output wire [31:0] threshhold, output wire [31:0] rssi_wait);
reg strobe;
wire [31:0] out[7:0];
assign debugbus = {clk, enable, addr[2:0], datain[4:0], dataout[4:0]};
assign threshhold = out[1];
assign rssi_wait = out[2];
always @(*)
if (reset | ~enable[1])
begin
strobe <= 0;
dataout <= 0;
end
else
begin
if (enable[0])
begin
//read
if (addr == 7'd9)
dataout <= rssi_0;
else if (addr == 7'd10)
dataout <= rssi_1;
else if (addr == 7'd11)
dataout <= rssi_2;
else if (addr == 7'd12)
dataout <= rssi_3;
else
dataout <= out[addr[2:0]];
strobe <= 0;
end
else
begin
//write
dataout <= dataout;
strobe <= 1;
end
end
//register declarations
setting_reg #(0) setting_reg0(.clock(clk),.reset(reset),
.strobe(strobe),.addr(addr),.in(datain),.out(out[0]));
setting_reg #(1) setting_reg1(.clock(clk),.reset(reset),
.strobe(strobe),.addr(addr),.in(datain),.out(out[1]));
setting_reg #(2) setting_reg2(.clock(clk),.reset(reset),
.strobe(strobe),.addr(addr),.in(datain),.out(out[2]));
setting_reg #(3) setting_reg3(.clock(clk),.reset(reset),
.strobe(strobe),.addr(addr),.in(datain),.out(out[3]));
setting_reg #(4) setting_reg4(.clock(clk),.reset(reset),
.strobe(strobe),.addr(addr),.in(datain),.out(out[4]));
setting_reg #(5) setting_reg5(.clock(clk),.reset(reset),
.strobe(strobe),.addr(addr),.in(datain),.out(out[5]));
setting_reg #(6) setting_reg6(.clock(clk),.reset(reset),
.strobe(strobe),.addr(addr),.in(datain),.out(out[6]));
setting_reg #(7) setting_reg7(.clock(clk),.reset(reset),
.strobe(strobe),.addr(addr),.in(datain),.out(out[7]));
endmodule
|