commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r6450 - in gnuradio/branches/developers/jcorgan/radar:


From: jcorgan
Subject: [Commit-gnuradio] r6450 - in gnuradio/branches/developers/jcorgan/radar: config gr-radar-mono/src/fpga gr-radar-mono/src/fpga/lib gr-radar-mono/src/fpga/models gr-radar-mono/src/fpga/tb gr-radar-mono/src/fpga/top
Date: Mon, 17 Sep 2007 12:49:51 -0600 (MDT)

Author: jcorgan
Date: 2007-09-17 12:49:51 -0600 (Mon, 17 Sep 2007)
New Revision: 6450

Added:
   gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/models/
   
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/models/Makefile.am
   
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/models/fifo_1clk.v
Modified:
   gnuradio/branches/developers/jcorgan/radar/config/grc_gr_radar_mono.m4
   gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/Makefile.am
   
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/Makefile.am
   gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar.v
   
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_control.v
   
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_rx.v
   
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.sav
   
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.sh
   gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/top/
   
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.rbf
   
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.v
Log:
Receiver streaming in debug mode now working.

Modified: gnuradio/branches/developers/jcorgan/radar/config/grc_gr_radar_mono.m4
===================================================================
--- gnuradio/branches/developers/jcorgan/radar/config/grc_gr_radar_mono.m4      
2007-09-15 23:26:49 UTC (rev 6449)
+++ gnuradio/branches/developers/jcorgan/radar/config/grc_gr_radar_mono.m4      
2007-09-17 18:49:51 UTC (rev 6450)
@@ -27,6 +27,7 @@
         gr-radar-mono/src/fpga/Makefile \
         gr-radar-mono/src/fpga/top/Makefile \
          gr-radar-mono/src/fpga/lib/Makefile \
+         gr-radar-mono/src/fpga/models/Makefile \
         gr-radar-mono/src/fpga/tb/Makefile \
         gr-radar-mono/src/lib/Makefile \
         gr-radar-mono/src/python/Makefile \

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/Makefile.am
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/Makefile.am   
    2007-09-15 23:26:49 UTC (rev 6449)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/Makefile.am   
    2007-09-17 18:49:51 UTC (rev 6450)
@@ -21,4 +21,4 @@
 
 include $(top_srcdir)/Makefile.common
 
-SUBDIRS = lib top tb
+SUBDIRS = lib top tb models

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/Makefile.am
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/Makefile.am
   2007-09-15 23:26:49 UTC (rev 6449)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/Makefile.am
   2007-09-17 18:49:51 UTC (rev 6450)
@@ -31,4 +31,4 @@
                fifo32_4k.v     \
                cordic_nco.v
 
-MOSTLYCLEANFILES = *~
+MOSTLYCLEANFILES = *~ *.bak

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar.v   
    2007-09-15 23:26:49 UTC (rev 6449)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar.v   
    2007-09-17 18:49:51 UTC (rev 6450)
@@ -25,7 +25,7 @@
             tx_side_o,tx_strobe_o,tx_dac_i_o,tx_dac_q_o,
             rx_adc_i_i,rx_adc_q_i,
             rx_strobe_o,rx_ech_i_o,rx_ech_q_o);
-
+   
    // System interface
    input         clk_i;                // Master clock @ 64 MHz
    input  [6:0]  saddr_i;      // Configuration bus address
@@ -53,6 +53,7 @@
    wire         rx_enable;     // Receiver enable
    wire          tx_ctrl;       // Transmitter on control
    wire          rx_ctrl;       // Receiver on control
+   wire [15:0]          pulse_num;     // Count of pulses since tx_enabled
         
    // Configuration
    wire [15:0]          ampl;          // Pulse amplitude
@@ -63,7 +64,7 @@
      
(.clk_i(clk_i),.saddr_i(saddr_i),.sdata_i(sdata_i),.s_strobe_i(s_strobe_i),
       .reset_o(reset),.tx_side_o(tx_side_o),.dbg_o(debug_enabled),
       .tx_strobe_o(tx_strobe_o),.tx_ctrl_o(tx_ctrl),.rx_ctrl_o(rx_ctrl),
-      .ampl_o(ampl),.fstart_o(fstart),.fincr_o(fincr));
+      .ampl_o(ampl),.fstart_o(fstart),.fincr_o(fincr),.pulse_num_o(pulse_num));
 
    radar_tx transmitter
      ( .clk_i(clk_i),.rst_i(reset),.ena_i(tx_ctrl),.strobe_i(tx_strobe_o),
@@ -72,7 +73,7 @@
    
    radar_rx receiver
      ( .clk_i(clk_i),.rst_i(reset),.ena_i(rx_ctrl),.dbg_i(debug_enabled),
-       .rx_in_i_i(rx_adc_i_i),.rx_in_q_i(rx_adc_q_i),
+       .pulse_num_i(pulse_num),.rx_in_i_i(rx_adc_i_i),.rx_in_q_i(rx_adc_q_i),
        .rx_strobe_o(rx_strobe_o),.rx_i_o(rx_ech_i_o),.rx_q_o(rx_ech_q_o) );
    
 endmodule // radar

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_control.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_control.v
       2007-09-15 23:26:49 UTC (rev 6449)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_control.v
       2007-09-17 18:49:51 UTC (rev 6450)
@@ -21,10 +21,9 @@
 
 `include "../lib/radar_config.vh"
 
-module radar_control(clk_i,saddr_i,sdata_i,s_strobe_i,
-                    reset_o,tx_side_o,dbg_o,
-                    tx_strobe_o,tx_ctrl_o,rx_ctrl_o,
-                    ampl_o,fstart_o,fincr_o);
+module radar_control(clk_i,saddr_i,sdata_i,s_strobe_i,reset_o,
+                    tx_side_o,dbg_o,tx_strobe_o,tx_ctrl_o,rx_ctrl_o,
+                    ampl_o,fstart_o,fincr_o,pulse_num_o);
 
    // System interface
    input         clk_i;                // Master clock @ 64 MHz
@@ -42,7 +41,8 @@
    output [15:0] ampl_o;
    output [31:0] fstart_o;
    output [31:0] fincr_o;
-   
+   output [15:0] pulse_num_o;
+
    // Internal configuration
    wire         lp_ena;
    wire         md_ena;
@@ -94,12 +94,14 @@
 
    reg [3:0]  state;
    reg [31:0] count;
-
+   reg [15:0] pulse_num_o;
+   
    always @(posedge clk_i)
      if (reset_o)
        begin
          state <= `ST_ON;
          count <= 32'b0;
+         pulse_num_o <= 16'b0;
        end
      else
        case (state)
@@ -108,6 +110,7 @@
             begin
                state <= `ST_SW;
                count <= 32'b0;
+               pulse_num_o <= pulse_num_o + 16'b1;
             end
           else
             count <= count + 32'b1;

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_rx.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_rx.v
    2007-09-15 23:26:49 UTC (rev 6449)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_rx.v
    2007-09-17 18:49:51 UTC (rev 6450)
@@ -22,9 +22,8 @@
 `include "../../../../usrp/firmware/include/fpga_regs_common.v"
 `include "../../../../usrp/firmware/include/fpga_regs_standard.v"
 
-module radar_rx(clk_i,rst_i,ena_i,dbg_i,
-               rx_in_i_i,rx_in_q_i,
-               rx_i_o,rx_q_o,rx_strobe_o);
+module radar_rx(clk_i,rst_i,ena_i,dbg_i,pulse_num_i,rx_in_i_i,
+               rx_in_q_i,rx_i_o,rx_q_o,rx_strobe_o);
    
    input clk_i;
    input rst_i;
@@ -33,11 +32,12 @@
    
    input [15:0] rx_in_i_i;
    input [15:0] rx_in_q_i;
+   input [15:0] pulse_num_i;
    
    output [15:0] rx_i_o;
    output [15:0] rx_q_o;
    output reg    rx_strobe_o;
-
+   
    reg [15:0] count;
 
    always @(posedge clk_i)
@@ -46,71 +46,63 @@
      else
        count <= count + 16'b1;
 
-   wire [31:0] fifo_data = dbg_i ? {count[15:0],16'hAA55} : 
{rx_in_i_i,rx_in_q_i};
+   wire [31:0] fifo_inp = dbg_i ? {count[15:0],pulse_num_i[15:0]} : 
{rx_in_i_i,rx_in_q_i};
 
-   // Need to buffer received samples as they come in at 32 bits per cycle
-   // but the rx_buffer.v fifo is only 16 bits wide.
-   //
-   reg         fifo_read;
+   // Buffer incoming samples every clock
    wire [31:0] fifo_out;
+   reg         fifo_ack;
    wire        fifo_empty;
+
+// Use model if simulating, otherwise Altera Megacell
+`ifdef SIMULATION
+   fifo_1clk #(32, 4096) buffer(.clock(clk_i),.sclr(rst_i),
+                               .data(fifo_inp),.wrreq(ena_i),
+                               .rdreq(fifo_ack),.q(fifo_out),
+                               .empty(fifo_empty));
+`else
+   fifo32_4k buffer(.clock(clk_i),.sclr(rst_i),
+                   .data(fifo_inp),.wrreq(ena_i),
+                   .rdreq(fifo_ack),.q(fifo_out),
+                   .empty(fifo_empty));
+`endif
    
-   fifo32_4k fifo(.clock(clk_i),.sclr(rst_i),
-                 .data(fifo_data),.wrreq(ena_i),
-                 .q(fifo_out),.rdreq(fifo_read),
-                 .empty(fifo_empty) );
+   // Write samples to rx_fifo every third clock
+   `define ST_FIFO_IDLE   3'b001
+   `define ST_FIFO_STROBE 3'b010
+   `define ST_FIFO_ACK    3'b100
 
-   `define ST_RD_IDLE     4'b0001
-   `define ST_RD_REQ      4'b0010
-   `define ST_WR_FIFO     4'b0100
-   `define ST_RD_DELAY    4'b1000
+   reg [2:0]   state;
 
-   reg [3:0] state;
-   reg [3:0] delay;
-   
    always @(posedge clk_i)
-     if (rst_i | ~ena_i)
+     if (rst_i)
        begin
-         state <= `ST_RD_IDLE;
-         delay <= 4'd0;
+         state <= `ST_FIFO_IDLE;
          rx_strobe_o <= 1'b0;
-         fifo_read <= 1'b0;
+         fifo_ack <= 1'b0;
        end
      else
        case (state)
-        `ST_RD_IDLE:
+        `ST_FIFO_IDLE:
+          if (!fifo_empty)
+            begin
+               // Tell rx_fifo sample is ready
+               rx_strobe_o <= 1'b1;
+               state <= `ST_FIFO_STROBE;
+            end
+        `ST_FIFO_STROBE:
           begin
-             if (!fifo_empty)
-               begin
-                  fifo_read <= 1'b1;
-                  state <= `ST_RD_REQ;
-               end
+             rx_strobe_o <= 1'b0;
+             // Ack our FIFO
+             fifo_ack <= 1'b1;
+             state <= `ST_FIFO_ACK;
           end
-
-        `ST_RD_REQ:
+        `ST_FIFO_ACK:
           begin
-             fifo_read <= 1'b0;
-             rx_strobe_o <= 1'b1;
-             state <= `ST_WR_FIFO;
+             fifo_ack <= 1'b0;
+             state <= `ST_FIFO_IDLE;
           end
-
-        `ST_WR_FIFO:
-          begin
-             rx_strobe_o <= 1'b0;
-             state <= `ST_RD_DELAY;
-          end
-
-        `ST_RD_DELAY:
-          if (delay == 7)
-            begin
-               delay <= 0;
-               state <= `ST_RD_IDLE;
-            end
-          else
-            delay <= delay + 1'b1;
-
        endcase // case(state)
-   
+
    assign rx_i_o = fifo_out[31:16];
    assign rx_q_o = fifo_out[15:0];
    


Property changes on: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/models
___________________________________________________________________
Name: svn:ignore
   + Makefile
Makefile.in


Added: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/models/Makefile.am
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/models/Makefile.am
                                (rev 0)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/models/Makefile.am
        2007-09-17 18:49:51 UTC (rev 6450)
@@ -0,0 +1,27 @@
+#
+# Copyright 2007 Free Software Foundation, Inc.
+# 
+# This file is part of GNU Radio
+# 
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+# 
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+
+include $(top_srcdir)/Makefile.common
+
+EXTRA_DIST = \
+       fifo_1clk.v
+
+MOSTLYCLEANFILES = *~

Added: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/models/fifo_1clk.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/models/fifo_1clk.v
                                (rev 0)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/models/fifo_1clk.v
        2007-09-17 18:49:51 UTC (rev 6450)
@@ -0,0 +1,88 @@
+/* -*- verilog -*- */
+/*
+ * Copyright (C) 2003 Matt Ettus
+ * Copyright (C) 2007 Corgan Enterprises LLC
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+// Model of Altera FIFO with common clock domain
+
+module fifo_1clk(data, wrreq, rdreq, clock, sclr, q,
+                full, empty, usedw);
+
+   parameter width = 32;
+   parameter depth = 4096;
+   //`define rd_req 0;  // Set this to 0 for rd_ack, 1 for rd_req
+      
+   input [31:0]  data;
+   input        wrreq;
+   input        rdreq;
+   input        clock;
+   input        sclr;
+   output [31:0] q;
+   output       full;
+   output       empty;
+   output [11:0] usedw;
+   
+   reg [width-1:0] mem [0:depth-1];
+   reg [7:0]      rdptr;
+   reg [7:0]      wrptr;
+   
+`ifdef rd_req
+   reg [width-1:0] q;
+`else
+   wire [width-1:0] q;
+`endif
+   
+   reg [11:0]    usedw;
+   
+   integer         i;
+   
+   always @( sclr)
+     begin
+       wrptr <= #1 0;
+       rdptr <= #1 0;
+       for(i=0;i<depth;i=i+1)
+         mem[i] <= #1 0;
+     end
+   
+   always @(posedge clock)
+     if(wrreq)
+       begin
+         wrptr <= #1 wrptr+1;
+         mem[wrptr] <= #1 data;
+       end
+   
+   always @(posedge clock)
+     if(rdreq)
+       begin
+         rdptr <= #1 rdptr+1;
+`ifdef rd_req
+         q <= #1 mem[rdptr];
+`endif
+       end
+   
+`ifdef rd_req
+`else
+   assign q = mem[rdptr];
+`endif
+   
+   always @(posedge clock)
+     usedw <= #1 wrptr - rdptr;
+   
+   assign empty = (wrptr == rdptr);
+endmodule

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.sav
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.sav
   2007-09-15 23:26:49 UTC (rev 6449)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.sav
   2007-09-17 18:49:51 UTC (rev 6450)
@@ -1,4 +1,4 @@
-*-24.808464 9235000 -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
+*-24.712317 7100000 -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
 radar_tb.clk
 radar_tb.ena
@@ -28,7 +28,22 @@
 -
 @28
 radar_tb.fifo_strobe
address@hidden
address@hidden
 radar_tb.fifo_i[15:0]
 @22
 radar_tb.fifo_q[15:0]
address@hidden
+-
address@hidden
+radar_tb.uut.pulse_num[15:0]
+radar_tb.uut.receiver.count[15:0]
address@hidden
+radar_tb.uut.receiver.fifo_empty
+radar_tb.uut.receiver.fifo_rd
address@hidden
+radar_tb.uut.receiver.fifo_inp[31:0]
+radar_tb.uut.receiver.fifo_out[31:0]
address@hidden
+radar_tb.uut.receiver.state[2:0]
address@hidden
+-

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.sh
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.sh
    2007-09-15 23:26:49 UTC (rev 6449)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.sh
    2007-09-17 18:49:51 UTC (rev 6450)
@@ -1,3 +1,7 @@
 #!/bin/sh
-iverilog -y ../lib/ -y ../../../../usrp/fpga/sdr_lib           \
+iverilog \
+    -D SIMULATION \
+    -y ../lib/ \
+    -y ../../../../usrp/fpga/sdr_lib \
+    -y ../models/ \
     radar_tb.v -o radar_tb && ./radar_tb > radar_tb.out


Property changes on: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/top
___________________________________________________________________
Name: svn:ignore
   - *.qmsg
*.qws
*.eqn
*.done
*.htm
*.rpt
*.ini
*.fsf
*.jam
*.jbc
*.pin
*.pof
*.rbf
*.smsg
*.sof
*.ttf
*.summary
db
Makefile
Makefile.in

   + *.qmsg
*.qws
*.eqn
*.done
*.htm
*.rpt
*.ini
*.fsf
*.jam
*.jbc
*.pin
*.pof
*.rbf
*.smsg
*.sof
*.ttf
*.summary
undo_redo.txt
db
Makefile
Makefile.in


Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.rbf
===================================================================
(Binary files differ)

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.v
     2007-09-15 23:26:49 UTC (rev 6449)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.v
     2007-09-17 18:49:51 UTC (rev 6450)
@@ -155,7 +155,7 @@
    assign capabilities[7]   = 0;  // `TX_CAP_HB;
    assign capabilities[6:4] = 1;  // `TX_CAP_NCHAN;
    assign capabilities[3]   = 0;  // `RX_CAP_HB;
-   assign capabilities[2:0] = 1;  // `RX_CAP_NCHAN;
+   assign capabilities[2:0] = 2;  // `RX_CAP_NCHAN;
 
    serial_io serial_io
      ( .master_clk(clk64),.serial_clock(SCLK),.serial_data_in(SDI),





reply via email to

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