updated wiki url
[debian/gnuradio] / usrp2 / fpga / control_lib / wb_readback_mux.v
1
2
3 // Note -- clocks must be synchronous (derived from the same source)
4 // Assumes alt_clk is running at a multiple of wb_clk
5
6 module wb_readback_mux
7   (input wb_clk_i,
8    input wb_rst_i,
9    input wb_stb_i,
10    input [15:0] wb_adr_i,
11    output reg [31:0] wb_dat_o,
12    output reg wb_ack_o,
13    
14    input [31:0] word00,
15    input [31:0] word01,
16    input [31:0] word02,
17    input [31:0] word03,
18    input [31:0] word04,
19    input [31:0] word05,
20    input [31:0] word06,
21    input [31:0] word07,
22    input [31:0] word08,
23    input [31:0] word09,
24    input [31:0] word10,
25    input [31:0] word11,
26    input [31:0] word12,
27    input [31:0] word13,
28    input [31:0] word14,
29    input [31:0] word15
30    );
31
32    always @(posedge wb_clk_i)
33      if(wb_rst_i)
34        wb_ack_o <= 0;
35      else
36        wb_ack_o <= wb_stb_i & ~wb_ack_o;
37    
38    always @(posedge wb_clk_i)
39      case(wb_adr_i[5:2])
40        0 : wb_dat_o <= word00;
41        1 : wb_dat_o <= word01;
42        2 : wb_dat_o <= word02;
43        3 : wb_dat_o <= word03;
44        4 : wb_dat_o <= word04;
45        5 : wb_dat_o <= word05;
46        6 : wb_dat_o <= word06;
47        7 : wb_dat_o <= word07;
48        8 : wb_dat_o <= word08;
49        9 : wb_dat_o <= word09;
50        10: wb_dat_o <= word10;
51        11: wb_dat_o <= word11;
52        12: wb_dat_o <= word12;
53        13: wb_dat_o <= word13;
54        14: wb_dat_o <= word14;
55        15: wb_dat_o <= word15;
56      endcase // case(addr_reg[3:0])
57       
58 endmodule // wb_readback_mux
59
60