commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r5491 - in gnuradio/branches/developers/jcorgan/snd/gr


From: jcorgan
Subject: [Commit-gnuradio] r5491 - in gnuradio/branches/developers/jcorgan/snd/gr-sounder/src: fpga/lib fpga/tb fpga/top python
Date: Thu, 17 May 2007 20:43:29 -0600 (MDT)

Author: jcorgan
Date: 2007-05-17 20:43:28 -0600 (Thu, 17 May 2007)
New Revision: 5491

Added:
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.sh
Removed:
   
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb_test.sh
Modified:
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder_rx.v
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/strobe.v
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/Makefile.am
   
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.sav
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.v
   
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/top/usrp_sounder.rbf
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_lp.sh
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_rx.sh
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_tx.sh
Log:
Work in progress. Digital loopback works in simulation and on FPGA.

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder_rx.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder_rx.v   
    2007-05-18 02:34:09 UTC (rev 5490)
+++ 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder_rx.v   
    2007-05-18 02:43:28 UTC (rev 5491)
@@ -48,35 +48,48 @@
                       .rate_i(len),.strobe_i(strobe_in),.strobe_o(rx_strobe_o),
                       .count_o());
 
-   // Must register these for RX FIFO as it grabs the value one clock after 
strobe
-   reg [15:0] rx_i_o;
-   reg [15:0] rx_q_o;
+   wire pn_ref;
+   wire ref_strobe = tx_strobe_i & ~rx_strobe_o; // Retard reference phase 
once per period
+   lfsr ref_code
+     ( 
.clk_i(clk_i),.rst_i(rst_i),.ena_i(ena_i),.strobe_i(ref_strobe),.mask_i(mask_i),.pn_o(pn_ref)
 );
 
-   // For debugging, accumulate the sum of the input over one phase period
-   reg [31:0]  sum_i;
-   wire [31:0] sum_scaled_i = sum_i << (5'd16-degree_i);
+   wire [5:0] offset = (5'd16-degree_i);
    
-   wire [31:0] i_ext;
-   wire [31:0] q_ext;
+   reg  [31:0] sum_i, sum_q;
+   reg  [31:0] total_i, total_q;
+   wire [31:0] scaled_i = total_i << offset;
+   wire [31:0] scaled_q = total_q << offset;
+   wire [31:0] i_ext, q_ext;
 
    sign_extend #(16,32) i_extender(rx_in_i_i, i_ext);
    sign_extend #(16,32) q_extender(rx_in_q_i, q_ext);
 
+   wire [31:0] prod_i = pn_ref ? i_ext : -i_ext;
+   wire [31:0] prod_q = pn_ref ? q_ext : -q_ext;
+   
    always @(posedge clk_i)
      if (rst_i | ~ena_i)
        begin
          sum_i <= 0;
-         rx_i_o <= 0;
-         rx_q_o <= 0;
+         sum_q <= 0;
+         total_i <= 0;
+         total_q <= 0;
        end
      else if (rx_strobe_o)
        begin
-         rx_i_o <= sum_scaled_i[31:16];
-         rx_q_o <= sum_scaled_i[15:0];
-         sum_i <= i_ext;
+         total_i <= sum_i + prod_i;
+         total_q <= sum_q + prod_q;
+         sum_i <= 0;
+         sum_q <= 0;
        end
      else if (strobe_in)
-       sum_i <= sum_i + i_ext;
+       begin
+         sum_i = sum_i + prod_i;
+         sum_q = sum_q + prod_q;
+       end
    
+   assign rx_i_o = scaled_i[31:16];
+   assign rx_q_o = scaled_q[31:16];
+   
 endmodule // sounder_rx
 

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/strobe.v
===================================================================
--- gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/strobe.v   
2007-05-18 02:34:09 UTC (rev 5490)
+++ gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/strobe.v   
2007-05-18 02:43:28 UTC (rev 5491)
@@ -35,14 +35,14 @@
 
    always @(posedge clk_i)
      if(rst_i | ~ena_i)
-       counter <= 0;
+       counter <= 32'hFFFFFFFF;        // First period is short by one
      else if(strobe_i)
-       if(counter == 0)
-        counter <= rate_i;
+       if(counter == rate_i)
+        counter <= 0;
        else 
-        counter <= counter - 1;
+        counter <= counter + 1;
 
-   assign strobe_o = ~|counter & ~rst_i & ena_i & strobe_i;
+   assign strobe_o = (counter == rate_i) & strobe_i;
    assign count_o = counter;
    
 endmodule // strobe


Property changes on: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb
___________________________________________________________________
Name: svn:ignore
   - Makefile
Makefile.in
*.vcd
sounder_tb
*.out

   + Makefile
Makefile.in
*.vcd
sounder_tb
*.out*


Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/Makefile.am
===================================================================
--- gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/Makefile.am 
2007-05-18 02:34:09 UTC (rev 5490)
+++ gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/Makefile.am 
2007-05-18 02:43:28 UTC (rev 5491)
@@ -27,4 +27,4 @@
        sounder_tb_test.sh \
        sounder_tb_wave.sh
 
-MOSTLYCLEANFILES = *~ *.vcd *.out sounder_tb
\ No newline at end of file
+MOSTLYCLEANFILES = *~ *.vcd *.out* sounder_tb
\ No newline at end of file

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.sav
===================================================================
--- 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.sav  
    2007-05-18 02:34:09 UTC (rev 5490)
+++ 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.sav  
    2007-05-18 02:43:28 UTC (rev 5491)
@@ -1,4 +1,4 @@
-*-17.000000 321700 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
-1 -1 -1 -1 -1 -1
+*-26.117517 250000000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
-1 -1 -1 -1 -1 -1 -1
 @28
 sounder_tb.uut.clk_i
 sounder_tb.rst
@@ -18,23 +18,17 @@
 @200
 -
 @28
-sounder_tb.tx_strobe
 sounder_tb.tx_dac_i[13:0]
 @200
 -
address@hidden
-sounder_tb.fifo_strobe
 @22
+sounder_tb.fifo_strobe
 sounder_tb.fifo_i[15:0]
 sounder_tb.fifo_q[15:0]
 @200
 -
address@hidden
-sounder_tb.uut.transmitter.pn_code.pn_o
-sounder_tb.uut.transmitter.tx_i_o[13:0]
 @22
-sounder_tb.uut.receiver.phase_strobe.count_o[16:0]
-sounder_tb.uut.receiver.i_ext[31:0]
address@hidden
-sounder_tb.uut.receiver.sum_i[31:0]
-sounder_tb.uut.receiver.sum_scaled_i[31:0]
+sounder_tb.uut.transmitter.pn_code.pn_o
+sounder_tb.uut.receiver.pn_ref
address@hidden
+-

Copied: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.sh 
(from rev 5486, 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb_test.sh)
===================================================================
--- 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.sh   
                            (rev 0)
+++ 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.sh   
    2007-05-18 02:43:28 UTC (rev 5491)
@@ -0,0 +1,7 @@
+#!/bin/sh
+iverilog -y ../lib/ -y ../../../../usrp/fpga/sdr_lib           \
+    sounder_tb.v -o sounder_tb                                      && \
+./sounder_tb                                       > sounder_tb.out  && \
+grep 'rst=0'         sounder_tb.out | grep 'clk=1' > sounder_tb.out2 && \
+grep 'tx_strobe=1'   sounder_tb.out2               > sounder_tb.out3
+    

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.v    
    2007-05-18 02:34:09 UTC (rev 5490)
+++ 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb.v    
    2007-05-18 02:43:28 UTC (rev 5491)
@@ -67,11 +67,11 @@
       .tx_strobe_i(tx_strobe),.tx_dac_i_o(tx_dac_i),.tx_dac_q_o(tx_dac_q),
       .rx_strobe_i(rx_strobe),.rx_adc_i_i(rx_adc_i),.rx_adc_q_i(rx_adc_q),
       .rx_strobe_o(fifo_strobe),.rx_imp_i_o(fifo_i),.rx_imp_q_o(fifo_q));
-   
+
    // Drive tx_strobe @ half clock rate
    always @(posedge clk)
-     tx_strobe = ~tx_strobe;
-
+     tx_strobe <= ~tx_strobe;
+   
    // Start up initialization
    initial
      begin
@@ -101,6 +101,9 @@
    
    initial
      begin
+       $monitor($time, " clk=%b rst=%b tx_strobe=%b fifo_strobe=%b phs=%x 
pn_o=%b pn_ref=%b fifo_i=%x fifo_q=", 
+                clk, uut.reset, tx_strobe, fifo_strobe, 
uut.receiver.phase_strobe.count_o,
+                uut.transmitter.pn, uut.receiver.pn_ref, fifo_i, fifo_q);
        $dumpfile("sounder_tb.vcd");
        $dumpvars(0, sounder_tb);
      end
@@ -178,6 +181,8 @@
         #20 set_degree(degree);
         #20 enable_tx(1);
         #20 set_reset(0);
+        #(uut.len*20);         // One PN code period
+
       end
    endtask // test_tx
    
@@ -192,15 +197,16 @@
         #20 enable_rx(1);
         #20 enable_lp(1);
         #20 set_reset(0);
+        #((uut.len+1)*uut.len*20);
       end
    endtask // test_lp
    
    // Execute tests
    initial
      begin
-       #20 test_lp(8);
-       
-       #10000 $finish;
+        #20 test_tx(12);
+       #20 test_lp(12);
+       #100 $finish;
      end
 endmodule
 

Deleted: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/tb/sounder_tb_test.sh

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/top/usrp_sounder.rbf
===================================================================
(Binary files differ)

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_lp.sh
===================================================================
--- gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_lp.sh   
2007-05-18 02:34:09 UTC (rev 5490)
+++ gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_lp.sh   
2007-05-18 02:43:28 UTC (rev 5491)
@@ -1,4 +1,4 @@
 #!/bin/sh
 
-usrp_sounder.py -r -l -t -n4095 -d12
+usrp_sounder.py -r -l -t -n5000 -d12
 hexdump output.dat >output.hex

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_rx.sh
===================================================================
--- gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_rx.sh   
2007-05-18 02:34:09 UTC (rev 5490)
+++ gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_rx.sh   
2007-05-18 02:43:28 UTC (rev 5491)
@@ -1,4 +1,4 @@
 #!/bin/sh
 
-usrp_sounder.py -r -n4095 -d12
+usrp_sounder.py -r -n5000 -d12
 hexdump output.dat >output.hex

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_tx.sh
===================================================================
--- gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_tx.sh   
2007-05-18 02:34:09 UTC (rev 5490)
+++ gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/test_tx.sh   
2007-05-18 02:43:28 UTC (rev 5491)
@@ -1,3 +1,3 @@
 #!/bin/sh
 
-usrp_sounder.py -t -d12
+usrp_sounder.py -t -f 16M -d12





reply via email to

[Prev in Thread] Current Thread [Next in Thread]