Imported Upstream version 3.0
[debian/gnuradio] / usrp / fpga / tb / cbus_tb.v
1 module cbus_tb;
2
3 `define ch1in_freq 0
4 `define ch2in_freq 1
5 `define ch3in_freq 2
6 `define ch4in_freq 3
7 `define ch1out_freq 4
8 `define ch2out_freq 5
9 `define ch3out_freq 6
10 `define ch4out_freq 7
11 `define rates 8
12 `define misc 9
13   
14    task send_config_word;
15       input [7:0] addr;
16       input [31:0] data;
17       integer i;
18       
19       begin
20          #10 serenable = 1;
21          for(i=7;i>=0;i=i-1)
22            begin
23               #10 serdata = addr[i];
24               #10 serclk = 0;
25               #10 serclk = 1;
26               #10 serclk = 0;
27            end
28          for(i=31;i>=0;i=i-1)
29            begin
30               #10 serdata = data[i];
31               #10 serclk = 0;
32               #10 serclk = 1;
33               #10 serclk = 0;
34            end
35          #10 serenable = 0;
36          // #10 serclk = 1;
37          // #10 serclk = 0;
38       end
39    endtask // send_config_word
40    
41    initial $dumpfile("cbus_tb.vcd");
42    initial $dumpvars(0,cbus_tb);
43
44    initial reset = 1;
45    initial #500 reset = 0;
46       
47    reg serclk, serdata, serenable, reset;
48    wire SDO;
49    
50   control_bus control_bus
51     ( .serial_clock(serclk),
52       .serial_data_in(serdata),
53       .enable(serenable),
54       .reset(reset),
55       .serial_data_out(SDO) );
56
57
58    initial 
59      begin
60         #1000 send_config_word(8'd1,32'hDEAD_BEEF);
61         #1000 send_config_word(8'd3,32'hDDEE_FF01);
62         #1000 send_config_word(8'd19,32'hFFFF_FFFF);
63         #1000 send_config_word(8'd23,32'h1234_FEDC);
64         #1000 send_config_word(8'h80,32'h0);
65         #1000 send_config_word(8'h81,32'h0);
66         #1000 send_config_word(8'h82,32'h0);
67         #1000 reset = 1;
68         #1 $finish;
69      end
70    
71 endmodule // cbus_tb