commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r6003 - in gnuradio/branches/developers/jcorgan/radar/


From: jcorgan
Subject: [Commit-gnuradio] r6003 - in gnuradio/branches/developers/jcorgan/radar/gr-radar-mono: . doc src/fpga/lib src/fpga/tb src/fpga/top src/python
Date: Tue, 17 Jul 2007 15:40:33 -0600 (MDT)

Author: jcorgan
Date: 2007-07-17 15:40:32 -0600 (Tue, 17 Jul 2007)
New Revision: 6003

Added:
   gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/doc/registers.ods
Modified:
   gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/README
   gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/doc/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_config.vh
   
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/lib/radar_tx.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.v
   
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.srf
   
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/python/radar_mono.py
   
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/python/usrp_radar_mono.py
Log:
Implemented pulse state machine and CW output.

Modified: gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/README
===================================================================
--- gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/README     
2007-07-17 17:48:00 UTC (rev 6002)
+++ gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/README     
2007-07-17 21:40:32 UTC (rev 6003)
@@ -11,4 +11,4 @@
 Johnathan Corgan
 Corgan Enterprises LLC
 address@hidden
-7/11/2007
+7/17/2007

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/doc/Makefile.am
===================================================================
--- gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/doc/Makefile.am    
2007-07-17 17:48:00 UTC (rev 6002)
+++ gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/doc/Makefile.am    
2007-07-17 21:40:32 UTC (rev 6003)
@@ -21,3 +21,4 @@
 
 include $(top_srcdir)/Makefile.common
 
+EXTRA_DIST = registers.ods
\ No newline at end of file

Added: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/doc/registers.ods
===================================================================
(Binary files differ)


Property changes on: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/doc/registers.ods
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

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-07-17 17:48:00 UTC (rev 6002)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar.v   
    2007-07-17 21:40:32 UTC (rev 6003)
@@ -45,25 +45,29 @@
    output [15:0] rx_ech_i_o;   // I channel processed echos to Rx FIFO
    output [15:0] rx_ech_q_o;   // Q channel processed echos to Rx FIFO
 
+   // Application control
    wire          reset;                // Master application reset
    wire         tx_enable;     // Transmitter enable
    wire         rx_enable;     // Receiver enable
-   
-   wire [15:0]          ampl;          
-   wire [31:0]          freq;          // temporary
+   wire          tx_ctrl;       // Transmitter on control
+   wire          rx_ctrl;       // Receiver on control
+        
+   // Configuration
+   wire [15:0]          ampl;          // Pulse amplitude
+   wire [31:0]          freq;          // Temporary, for frequency response 
testing
 
    radar_control controller
-     
(.clk_i(clk_i),.s_strobe_i(s_strobe_i),.saddr_i(saddr_i),.sdata_i(sdata_i),
-      .reset_o(reset),.tx_ena_o(tx_enable),.rx_ena_o(rx_enable),
-      .ampl_o(ampl),.freq_o(freq),.tx_strobe_o(tx_strobe_o));
+     
(.clk_i(clk_i),.saddr_i(saddr_i),.sdata_i(sdata_i),.s_strobe_i(s_strobe_i),
+      
.reset_o(reset),.tx_strobe_o(tx_strobe_o),.tx_ctrl_o(tx_ctrl),.rx_ctrl_o(rx_ctrl),
+      .ampl_o(ampl),.freq_o(freq));
 
    radar_tx transmitter
-     ( .clk_i(clk_i),.rst_i(reset),.ena_i(tx_enable),
-       .ampl_i(ampl),.freq_i(freq),
-       .strobe_i(tx_strobe_o),.tx_i_o(tx_dac_i_o),.tx_q_o(tx_dac_q_o) );
+     ( .clk_i(clk_i),.rst_i(reset),.ena_i(tx_ctrl),
+       .ampl_i(ampl),.freq_i(freq),.strobe_i(tx_strobe_o),
+       .tx_i_o(tx_dac_i_o),.tx_q_o(tx_dac_q_o) );
    
    radar_rx receiver
-     ( .clk_i(clk_i),.rst_i(reset),.ena_i(rx_enable),
+     ( .clk_i(clk_i),.rst_i(reset),.ena_i(rx_ctrl & 1'b0), // Disable receiver 
for now
        .strobe_i(rx_strobe_i),.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) );
    

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_config.vh
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_config.vh
       2007-07-17 17:48:00 UTC (rev 6002)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_config.vh
       2007-07-17 21:40:32 UTC (rev 6003)
@@ -24,8 +24,11 @@
 
 `define FR_RADAR_MODE           `FR_USER_0
 `define bmFR_RADAR_MODE_RESET  32'h0001
-`define bmFR_RADAR_MODE_TX      32'h0002
-`define bmFR_RADAR_MODE_RX      32'h0004
 
+`define FR_RADAR_TON            `FR_USER_1
+`define FR_RADAR_TSW            `FR_USER_2
+`define FR_RADAR_TLOOK          `FR_USER_3
+`define FR_RADAR_TIDLE          `FR_USER_4
+
 `define FR_RADAR_AMPL           `FR_USER_5
 `define FR_RADAR_FREQ1N         `FR_USER_8

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-07-17 17:48:00 UTC (rev 6002)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_control.v
       2007-07-17 21:40:32 UTC (rev 6003)
@@ -22,8 +22,8 @@
 `include "../lib/radar_config.vh"
 
 module radar_control(clk_i,saddr_i,sdata_i,s_strobe_i,
-                    reset_o,tx_ena_o,rx_ena_o,ampl_o,freq_o,
-                    tx_strobe_o);
+                    reset_o,tx_strobe_o,tx_ctrl_o,rx_ctrl_o,
+                    ampl_o,freq_o);
 
    // System interface
    input         clk_i;                // Master clock @ 64 MHz
@@ -31,44 +31,108 @@
    input  [31:0] sdata_i;      // Configuration bus data
    input        s_strobe_i;    // Configuration bus write
 
-   // Configuration outputs
+   // Control and configuration outputs
    output       reset_o;
-   output        tx_ena_o;
-   output        rx_ena_o;
-   
+   output        tx_strobe_o;
+   output        tx_ctrl_o;
+   output        rx_ctrl_o;
    output [15:0] ampl_o;
    output [31:0] freq_o;
-
-   // Control signal outputs
-   output        tx_strobe_o;
-
+   
    // Internal configuration
    wire         lp_ena;
    wire         dr_ena;
    wire         md_ena;
-   wire [1:0]   chirps;
+   wire   [1:0]  chirps;
+   wire   [15:0] t_on;
+   wire   [15:0] t_sw;
+   wire   [15:0] t_look;
+   wire   [31:0] t_idle;
 
-   // Master control state machine
-   reg [31:0]   phase;
-
    // Configuration from host
-   setting_reg #(`FR_RADAR_MODE) 
sr_mode(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
-                                        
.out({chirps,md_ena,dr_ena,lp_ena,rx_ena_o,tx_ena_o,reset_o}));
+   setting_reg #(`FR_RADAR_MODE)   
sr_mode(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
+                                          
.out({chirps,md_ena,dr_ena,lp_ena,reset_o}));
                                     
-   setting_reg #(`FR_RADAR_AMPL) 
sr_ampl(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
-                                        .out(ampl_o));
+   setting_reg #(`FR_RADAR_TON)    
sr_ton(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
+                                         .out(t_on));
+   
+   setting_reg #(`FR_RADAR_TSW)    
sr_tsw(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
+                                         .out(t_sw));
+                                    
+   setting_reg #(`FR_RADAR_TLOOK)  
sr_tlook(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
+                                           .out(t_look));
+                                    
+   setting_reg #(`FR_RADAR_TIDLE)  
sr_tidle(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
+                                           .out(t_idle));
+                                    
+   setting_reg #(`FR_RADAR_AMPL)   
sr_ampl(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
+                                          .out(ampl_o));
 
    setting_reg #(`FR_RADAR_FREQ1N) 
sr_freq(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
                                           .out(freq_o));
 
-   // Master time base
+   // Pulse state machine
+   `define ST_ON   4'b0001
+   `define ST_SW   4'b0010
+   `define ST_LOOK 4'b0100
+   `define ST_IDLE 4'b1000
+
+   reg [3:0]  state;
+   reg [31:0] count;
+
    always @(posedge clk_i)
      if (reset_o)
-       phase <= 32'b0;
+       begin
+         state <= `ST_ON;
+         count <= 32'b0;
+       end
      else
-       phase <= phase + 32'b1;
+       case (state)
+        `ST_ON:
+          if (count == {16'b0,t_on})
+            begin
+               state <= `ST_SW;
+               count <= 32'b0;
+            end
+          else
+            count <= count + 32'b1;
+        
+        `ST_SW:
+          if (count == {16'b0,t_sw})
+            begin
+               state <= `ST_LOOK;
+               count <= 32'b0;
+            end
+          else
+            count <= count + 24'b1;
+
+        `ST_LOOK:
+          if (count == {16'b0,t_look})
+            begin
+               state <= `ST_IDLE;
+               count <= 32'b0;
+            end
+          else
+            count <= count + 32'b1;
+
+        `ST_IDLE:
+          if (count == t_idle)
+            begin
+               state <= `ST_ON;
+               count <= 24'b0;
+            end
+          else
+            count <= count + 32'b1;
+
+        default:                 // Invalid state, reset state machine
+          begin
+             state <= `ST_ON;
+             count <= 32'b0;
+          end
+       endcase
    
-   // 32 MHz
-   assign tx_strobe_o = phase[0];
+   assign tx_strobe_o = count[0]; // Drive DAC inputs at 32 MHz
+   assign tx_ctrl_o = (state == `ST_ON);
+   assign rx_ctrl_o = (state == `ST_LOOK);
    
 endmodule // radar_control

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-07-17 17:48:00 UTC (rev 6002)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_rx.v
    2007-07-17 21:40:32 UTC (rev 6003)
@@ -22,8 +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,strobe_i,saddr_i,sdata_i,s_strobe_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,strobe_i,saddr_i,sdata_i,s_strobe_i,
+               rx_in_i_i,rx_in_q_i,rx_i_o,rx_q_o,rx_strobe_o);
    
    input clk_i;
    input rst_i;
@@ -36,7 +36,7 @@
 
    input [15:0] rx_in_i_i;
    input [15:0] rx_in_q_i;
-
+   
    output [15:0] rx_i_o;
    output [15:0] rx_q_o;
    output rx_strobe_o;

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_tx.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_tx.v
    2007-07-17 17:48:00 UTC (rev 6002)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_tx.v
    2007-07-17 21:40:32 UTC (rev 6003)
@@ -19,7 +19,8 @@
 //  Foundation, Inc., 51 Franklin Street, Boston, MA  02110-1301  USA
 //
 
-module radar_tx(clk_i,rst_i,ena_i,strobe_i,ampl_i,freq_i,tx_i_o,tx_q_o);
+module radar_tx(clk_i,rst_i,ena_i,strobe_i,
+               ampl_i,freq_i,tx_i_o,tx_q_o);
    // System control
    input clk_i;
    input rst_i;

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-07-17 17:48:00 UTC (rev 6002)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.sav
   2007-07-17 21:40:32 UTC (rev 6003)
@@ -1,19 +1,19 @@
-*-20.514782 1460000 -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
+*-22.712532 61300000 -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
 radar_tb.rst
 radar_tb.uut.reset
-radar_tb.uut.tx_enable
 radar_tb.uut.rx_enable
 @200
 -
address@hidden
+radar_tb.uut.controller.ampl_o[15:0]
 @24
 radar_tb.uut.freq[31:0]
address@hidden
-radar_tb.uut.controller.ampl_o[15:0]
 @200
 -
+-
 @28
 radar_tb.tx_strobe
 @8420
@@ -21,5 +21,6 @@
 radar_tb.uut.tx_dac_q_o[13:0]
 @200
 -
address@hidden
-radar_tb.uut.controller.phase[31:0]
address@hidden
+radar_tb.uut.controller.tx_ctrl_o
+radar_tb.uut.controller.rx_ctrl_o

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.v 
    2007-07-17 17:48:00 UTC (rev 6002)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.v 
    2007-07-17 21:40:32 UTC (rev 6003)
@@ -117,32 +117,48 @@
       end
    endtask // reset
    
-   // Enable/disable transmitter
-   task enable_tx;
-      input enabled;
-      
+   // Waveform on time
+   task set_ton;
+      input [23:0] t_on;
+
       begin
-        mode = enabled ? (mode | `bmFR_RADAR_MODE_TX) : (mode & 
~`bmFR_RADAR_MODE_TX);
-        write_cfg_register(`FR_RADAR_MODE, mode);
+        write_cfg_register(`FR_RADAR_TON, t_on);
       end
-   endtask // enable_tx
-   
-   // Enable/disable receiver
-   task enable_rx;
-      input enabled;
-      
+   endtask // set_ton
+
+   // Transmitter switching time
+   task set_tsw;
+      input [23:0] t_sw;
+
       begin
-        mode = enabled ? (mode | `bmFR_RADAR_MODE_RX) : (mode & 
~`bmFR_RADAR_MODE_RX);
-        write_cfg_register(`FR_RADAR_MODE, mode);
+        write_cfg_register(`FR_RADAR_TSW, t_sw);
       end
-   endtask // enable_rx
-   
+   endtask // t_sw
+
+   // Receiver look time
+   task set_tlook;
+      input [23:0] t_look;
+
+      begin
+        write_cfg_register(`FR_RADAR_TLOOK, t_look);
+      end
+   endtask // set_tlook
+
+   // Inter-pulse idle time
+   task set_tidle;
+      input [23:0] t_idle;
+
+      begin
+        write_cfg_register(`FR_RADAR_TIDLE, t_idle);
+      end
+   endtask // set_tidle
+
    // Waveform amplitude
    task set_amplitude;
-      input [13:0] amp;
+      input [31:0] ampl;
 
       begin
-        write_cfg_register(`FR_RADAR_AMPL, amp);
+        write_cfg_register(`FR_RADAR_AMPL, ampl);
       end
    endtask // set_amplitude
 
@@ -159,12 +175,17 @@
    task test_tx;
       begin
         #20 set_reset(1);
+
+        #20 set_ton(320-1);    // 5us on time
+        #20 set_tsw(26-1);     // 406ns switching time
+        #20 set_tlook(320-1);  // 5us look time
+        #20 set_tidle(3174-1); // 60us pulse period
+        
         #20 set_amplitude(16'd9946);
         #20 set_frequency(32'h08000000);
-        #20 enable_tx(1);
-        #20 enable_rx(0);
+
         #20 set_reset(0);
-        #10000;
+        #200000;
       end
    endtask // test_tx
    

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.srf
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.srf
   2007-07-17 17:48:00 UTC (rev 6002)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.srf
   2007-07-17 21:40:32 UTC (rev 6003)
@@ -128,3 +128,8 @@
 { "Warning" "WFIOMGR_BIDIR_OR_OUTPUT_WITH_TRIVIAL_DATAIN" "18 " "Warning: 
Following * pins have nothing, GND, or VCC driving datain port -- changes to 
this connectivity may change fitting results" { { "Info" 
"IFIOMGR_BIDIR_OR_OUTPUT_WITH_TRIVIAL_DATAIN_SUB" "tx_b\[13\] GND " "Info: Pin 
tx_b\[13\] has GND driving its datain port" {  } { { "usrp_radar_mono.v" "" { 
Text "H:/gnuradio/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.v" 41 -1 0 } 
} { "c:/altera/71sp1/quartus/bin/Assignment Editor.qase" "" { Assignment 
"c:/altera/71sp1/quartus/bin/Assignment Editor.qase" 1 { { 0 "tx_b\[13\]" } } } 
} { "c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan 
"c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { tx_b[13] } 
"NODE_NAME" } } { "c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" { 
Floorplan "c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { 
tx_b[13] } "NODE_NAME" } }  } 0 0 "Pin %1!s! has %2!s! driving its datain port" 
1 0 "" 0}  } {  } 0 0 "Following %1!d! pins have nothing, GND, or VCC driving 
datain port -- changes to this connectivity may change fitting results" 0 0 "" 
0}
 { "Warning" "WFIOMGR_BIDIR_OR_OUTPUT_WITH_TRIVIAL_DATAIN" "18 " "Warning: 
Following * pins have nothing, GND, or VCC driving datain port -- changes to 
this connectivity may change fitting results" { { "Info" 
"IFIOMGR_BIDIR_OR_OUTPUT_WITH_TRIVIAL_DATAIN_SUB" "TXSYNC_B GND " "Info: Pin 
TXSYNC_B has GND driving its datain port" {  } { { "usrp_radar_mono.v" "" { 
Text "H:/gnuradio/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.v" 44 -1 0 } 
} { "c:/altera/71sp1/quartus/bin/Assignment Editor.qase" "" { Assignment 
"c:/altera/71sp1/quartus/bin/Assignment Editor.qase" 1 { { 0 "TXSYNC_B" } } } } 
{ "c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan 
"c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { TXSYNC_B } 
"NODE_NAME" } } { "c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" { 
Floorplan "c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { 
TXSYNC_B } "NODE_NAME" } }  } 0 0 "Pin %1!s! has %2!s! driving its datain port" 
1 0 "" 0}  } {  } 0 0 "Following %1!d! pins have nothing, GND, or VCC driving 
datain port -- changes to this connectivity may change fitting results" 0 0 "" 
0}
 { "Warning" "WFIOMGR_BIDIR_OR_OUTPUT_WITH_TRIVIAL_DATAIN" "18 " "Warning: 
Following * pins have nothing, GND, or VCC driving datain port -- changes to 
this connectivity may change fitting results" { { "Info" 
"IFIOMGR_BIDIR_OR_OUTPUT_WITH_TRIVIAL_DATAIN_SUB" "usbrdy\[0\] GND " "Info: Pin 
usbrdy\[0\] has GND driving its datain port" {  } { { "usrp_radar_mono.v" "" { 
Text "H:/gnuradio/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.v" 49 -1 0 } 
} { "c:/altera/71sp1/quartus/bin/Assignment Editor.qase" "" { Assignment 
"c:/altera/71sp1/quartus/bin/Assignment Editor.qase" 1 { { 0 "usbrdy\[0\]" } } 
} } { "c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan 
"c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { usbrdy[0] } 
"NODE_NAME" } } { "c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" { 
Floorplan "c:/altera/71sp1/quartus/bin/TimingClosureFloorplan.fld" "" "" { 
usbrdy[0] } "NODE_NAME" } }  } 0 0 "Pin %1!s! has %2!s! driving its datain 
port" 1 0 "" 0}  } {  } 0 0 "Following %1!d! pins have nothing, GND, or VCC 
driving datain port -- changes to this connectivity may change fitting results" 
0 0 "" 0}
+{ "Warning" "WSGN_WIDTH_MISMATCH_OUTPUT_PORT" "out sr_ampl 16 32 " "Warning: 
Port \"out\" on the entity instantiation of \"sr_ampl\" is connected to a 
signal of width 16. The formal width of the signal in the module is 32.  Extra 
bits will be left dangling without any fanout logic." {  } { { 
"../lib/radar_control.v" "sr_ampl" { Text 
"H:/gnuradio/radar/gr-radar-mono/src/fpga/lib/radar_control.v" 69 0 0 } }  } 0 
0 "Port \"%1!s!\" on the entity instantiation of \"%2!s!\" is connected to a 
signal of width %3!d!. The formal width of the signal in the module is %4!d!.  
Extra bits will be left dangling without any fanout logic." 1 0 "" 0}
+{ "Warning" "WSGN_WIDTH_MISMATCH_OUTPUT_PORT" "out sr_tlook 16 32 " "Warning: 
Port \"out\" on the entity instantiation of \"sr_tlook\" is connected to a 
signal of width 16. The formal width of the signal in the module is 32.  Extra 
bits will be left dangling without any fanout logic." {  } { { 
"../lib/radar_control.v" "sr_tlook" { Text 
"H:/gnuradio/radar/gr-radar-mono/src/fpga/lib/radar_control.v" 63 0 0 } }  } 0 
0 "Port \"%1!s!\" on the entity instantiation of \"%2!s!\" is connected to a 
signal of width %3!d!. The formal width of the signal in the module is %4!d!.  
Extra bits will be left dangling without any fanout logic." 1 0 "" 0}
+{ "Warning" "WSGN_WIDTH_MISMATCH_OUTPUT_PORT" "out sr_tsw 16 32 " "Warning: 
Port \"out\" on the entity instantiation of \"sr_tsw\" is connected to a signal 
of width 16. The formal width of the signal in the module is 32.  Extra bits 
will be left dangling without any fanout logic." {  } { { 
"../lib/radar_control.v" "sr_tsw" { Text 
"H:/gnuradio/radar/gr-radar-mono/src/fpga/lib/radar_control.v" 60 0 0 } }  } 0 
0 "Port \"%1!s!\" on the entity instantiation of \"%2!s!\" is connected to a 
signal of width %3!d!. The formal width of the signal in the module is %4!d!.  
Extra bits will be left dangling without any fanout logic." 1 0 "" 0}
+{ "Warning" "WSGN_WIDTH_MISMATCH_OUTPUT_PORT" "out sr_ton 16 32 " "Warning: 
Port \"out\" on the entity instantiation of \"sr_ton\" is connected to a signal 
of width 16. The formal width of the signal in the module is 32.  Extra bits 
will be left dangling without any fanout logic." {  } { { 
"../lib/radar_control.v" "sr_ton" { Text 
"H:/gnuradio/radar/gr-radar-mono/src/fpga/lib/radar_control.v" 57 0 0 } }  } 0 
0 "Port \"%1!s!\" on the entity instantiation of \"%2!s!\" is connected to a 
signal of width %3!d!. The formal width of the signal in the module is %4!d!.  
Extra bits will be left dangling without any fanout logic." 1 0 "" 0}
+{ "Warning" "WSGN_WIDTH_MISMATCH_OUTPUT_PORT" "out sr_mode 6 32 " "Warning: 
Port \"out\" on the entity instantiation of \"sr_mode\" is connected to a 
signal of width 6. The formal width of the signal in the module is 32.  Extra 
bits will be left dangling without any fanout logic." {  } { { 
"../lib/radar_control.v" "sr_mode" { Text 
"H:/gnuradio/radar/gr-radar-mono/src/fpga/lib/radar_control.v" 54 0 0 } }  } 0 
0 "Port \"%1!s!\" on the entity instantiation of \"%2!s!\" is connected to a 
signal of width %3!d!. The formal width of the signal in the module is %4!d!.  
Extra bits will be left dangling without any fanout logic." 1 0 "" 0}

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/python/radar_mono.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/python/radar_mono.py
   2007-07-17 17:48:00 UTC (rev 6002)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/python/radar_mono.py
   2007-07-17 21:40:32 UTC (rev 6003)
@@ -30,17 +30,15 @@
 #-----------------------------------------------------------------------
 FR_RADAR_MODE           = usrp.FR_USER_0    # Operational mode
 bmFR_RADAR_MODE_RESET   = 1 << 0       # bit 0: active high reset
-bmFR_RADAR_MODE_TX      = 1 << 1       # bit 1: enable transmitter
-#bmFR_RADAR_MODE_RX     = 1 << 2       # bit 2: enable receiver
-#bmFR_RADAR_MODE_LP     = 1 << 3       # bit 3: enable digital loopback
-#bmFR_RADAR_MODE_DR     = 1 << 4       # bit 4: enable on-board deramping
-#bmFR_RADAR_MODE_MD     = 1 << 5       # bit 5: enable echo metadata
-#bmFR_RADAR_MODE_CHIRPS = 3 << 6       # bit 6,7: number of chirp center 
frequencies
+#bmFR_RADAR_MODE_LP     = 1 << 1       # bit 1: enable digital loopback
+#bmFR_RADAR_MODE_DR     = 1 << 2       # bit 2: enable on-board deramping
+#bmFR_RADAR_MODE_MD     = 1 << 3       # bit 3: enable echo metadata
+#bmFR_RADAR_MODE_CHIRPS = 3 << 4       # bit 4,5: number of chirp center 
frequencies
 
-#FR_RADAR_TON    = usrp.FR_USER_1      # 16-bit transmitter on time in clocks
-#FR_RADAR_TSW    = usrp.FR_USER_2      # 16-bit transmitter switch time in 
clocks
-#FR_RADAR_TLOOK  = usrp.FR_USER_3      # 16-bit receiver look time in clocks
-#FR_RADAR_TIDLE  = usrp.FR_USER_4      # 32-bit inter-pulse idle time
+FR_RADAR_TON    = usrp.FR_USER_1       # 16-bit transmitter on time in clocks
+FR_RADAR_TSW    = usrp.FR_USER_2       # 16-bit transmitter switch time in 
clocks
+FR_RADAR_TLOOK  = usrp.FR_USER_3       # 16-bit receiver look time in clocks
+FR_RADAR_TIDLE  = usrp.FR_USER_4       # 32-bit inter-pulse idle time
 FR_RADAR_AMPL   = usrp.FR_USER_5       # 16-bit pulse amplitude (2s 
complement) into CORDIC
 #FR_RADAR_FSTART = usrp.FR_USER_6      # 32-bit FTW for chirp start frequency
 #FR_RADAR_FINCR  = usrp.FR_USER_7      # 32-bit FTW increment per transmit 
clock
@@ -50,17 +48,17 @@
 # Temporarily use this for transmitter frequency calibration
 FR_RADAR_FREQ1N = usrp.FR_USER_8  # 24-bit N register for chirp #1
 
-FR_RADAR_FREQ1R = usrp.FR_USER_9  # 24-bit R register for chirp #1
-FR_RADAR_FREQ1C = usrp.FR_USER_10 # 24-bit control register for chirp #1
-FR_RADAR_FREQ2N = usrp.FR_USER_11 # 24-bit N register for chirp #2
-FR_RADAR_FREQ2R = usrp.FR_USER_12 # 24-bit R register for chirp #2
-FR_RADAR_FREQ2C = usrp.FR_USER_13 # 24-bit control register for chirp #2
-FR_RADAR_FREQ3N = usrp.FR_USER_14 # 24-bit N register for chirp #3
-FR_RADAR_FREQ3R = usrp.FR_USER_15 # 24-bit R register for chirp #3
-FR_RADAR_FREQ3C = usrp.FR_USER_16 # 24-bit control register for chirp #3
-FR_RADAR_FREQ4N = usrp.FR_USER_17 # 24-bit N register for chirp #4
-FR_RADAR_FREQ4R = usrp.FR_USER_18 # 24-bit R register for chirp #4
-FR_RADAR_FREQ4C = usrp.FR_USER_19 # 24-bit control register for chirp #4
+#FR_RADAR_FREQ1R = usrp.FR_USER_9  # 24-bit R register for chirp #1
+#FR_RADAR_FREQ1C = usrp.FR_USER_10 # 24-bit control register for chirp #1
+#FR_RADAR_FREQ2N = usrp.FR_USER_11 # 24-bit N register for chirp #2
+#FR_RADAR_FREQ2R = usrp.FR_USER_12 # 24-bit R register for chirp #2
+#FR_RADAR_FREQ2C = usrp.FR_USER_13 # 24-bit control register for chirp #2
+#FR_RADAR_FREQ3N = usrp.FR_USER_14 # 24-bit N register for chirp #3
+#FR_RADAR_FREQ3R = usrp.FR_USER_15 # 24-bit R register for chirp #3
+#FR_RADAR_FREQ3C = usrp.FR_USER_16 # 24-bit control register for chirp #3
+#FR_RADAR_FREQ4N = usrp.FR_USER_17 # 24-bit N register for chirp #4
+#FR_RADAR_FREQ4R = usrp.FR_USER_18 # 24-bit R register for chirp #4
+#FR_RADAR_FREQ4C = usrp.FR_USER_19 # 24-bit control register for chirp #4
 
 #-----------------------------------------------------------------------
 # Transmitter object.  Uses usrp_sink, but only for a handle to the
@@ -74,9 +72,45 @@
         self._u = usrp.sink_s(fpga_filename='usrp_radar_mono.rbf')
         self._subdev_spec = (0,0); # FPGA code only implements side A
         self._subdev = usrp.selected_subdev(self._u, self._subdev_spec)
+       self._ton_ticks = 0
+       self._tsw_ticks = 0
+       self._tlook_ticks = 0
+       self._tidle_ticks = 0
+       
         if self._verbose:
             print "Using", self._subdev.name(), "for radar transmitter."       
     
 
+    def set_ton(self, ton):
+       self._ton_ticks = 2*(int(ton*64e6)/2)-1  # Even number, then subtract 1
+       if self._verbose:
+           print "Setting pulse on time to", ton, " sec 
("+`self._ton_ticks+1`+" ticks)"
+       self._u._write_fpga_reg(FR_RADAR_TON, self._ton_ticks)
+
+    def set_tsw(self, tsw):
+       self._tsw_ticks = 2*(int(tsw*64e6)/2)-1  # Even number, then subtract 1
+       if self._verbose:
+           print "Setting pulse switching time to", tsw, " sec 
("+`self._tsw_ticks+1`+" ticks)"
+       self._u._write_fpga_reg(FR_RADAR_TSW, self._tsw_ticks)
+
+    def set_tlook(self, tlook):
+       self._tlook_ticks = 2*(int(tlook*64e6)/2)-1  # Even number, then 
subtract 1
+       if self._verbose:
+           print "Setting receiver look time to", tlook, " sec 
("+`self._tlook_ticks+1`+" ticks)"
+       self._u._write_fpga_reg(FR_RADAR_TLOOK, self._tlook_ticks)
+
+    def set_prf(self, prf):
+       period = 2*int(32e6/prf)
+       self._tidle_ticks = 
period-(self._ton_ticks+self._tsw_ticks+self._tlook_ticks+3)-1
+       if self._verbose:
+           print "Setting PRF to", prf, "Hz ("+`self._tidle_ticks+1`+" ticks 
idle time)"
+       self._u._write_fpga_reg(FR_RADAR_TIDLE, self._tidle_ticks)
+
+    def set_amplitude(self, ampl):
+       self._amplitude = int(ampl*9946/100.0) # CORDIC gain correction
+        if self._debug:
+            print "Writing amplitude register with:", hex(self._amplitude)
+        self._u._write_fpga_reg(FR_RADAR_AMPL, self._amplitude)
+
     def tune(self, center_freq, waveform_freq):
         self._center_freq = center_freq
         self._waveform_freq = waveform_freq
@@ -89,12 +123,6 @@
             raise RuntimeError("Failed to set transmitter frequency.")
        self._u._write_fpga_reg(FR_RADAR_FREQ1N, self._ftw)
 
-    def set_amplitude(self, ampl):
-       self._amplitude = int(ampl*9946/100.0) # CORDIC gain correction
-        if self._debug:
-            print "Writing amplitude register with:", hex(self._amplitude)
-        self._u._write_fpga_reg(FR_RADAR_AMPL, self._amplitude)
-
     def start(self):
         self._u.start()
 
@@ -181,48 +209,26 @@
         self._debug = debug
 
        self._mode = 0
-       self._transmitting = False
         self._trans = radar_tx(verbose=self._verbose, debug=self._debug)
        self.set_reset(True)
                
-    def set_amplitude(self, ampl):
-        self._trans.set_amplitude(ampl)
-
-    def tune(self, center_freq, waveform_freq):
-        self._trans.tune(center_freq, waveform_freq)
-
     def _write_mode(self):
         if self._debug:
             print "Writing mode register with:", hex(self._mode)
         self._trans._u._write_fpga_reg(FR_RADAR_MODE, self._mode)
 
-    def enable_tx(self, value):
+    def set_reset(self, value):
        if value:
-            if self._verbose:
-                print "Enabling transmitter."
-           self._mode |= bmFR_RADAR_MODE_TX
-           self._transmitting = True
+            if self._debug:
+                print "Asserting reset."
+           self._mode |= bmFR_RADAR_MODE_RESET
        else:
-            if self._verbose:
-                print "Disabling transmitter."
-           self._mode &= ~bmFR_RADAR_MODE_TX
-           self._transmitting = False
+            if self._debug:
+                print "De-asserting reset."
+           self._mode &= ~bmFR_RADAR_MODE_RESET
        self._write_mode()
-                   
+
     """
-    def enable_rx(self, value):
-       if value:
-           self._mode |= bmFR_RADAR_MODE_RX
-           self._write_mode()
-           self._rcvr.start()
-           self._receiving = True
-       else:
-            self._rcvr.stop()
-           self._mode &= ~bmFR_RADAR_MODE_RX
-           self._write_mode()
-           self._receiving = False
-    """
-    """
     def set_loopback(self, value):
        if value:
             if self._verbose:
@@ -235,27 +241,31 @@
        self._write_mode()
     """
     
-    def set_reset(self, value):
-       if value:
-            if self._debug:
-                print "Asserting reset."
-           self._mode |= bmFR_RADAR_MODE_RESET
-       else:
-            if self._debug:
-                print "De-asserting reset."
-           self._mode &= ~bmFR_RADAR_MODE_RESET
-       self._write_mode()
+    def set_ton(self, ton):
+       self._trans.set_ton(ton)
+       
+    def set_tsw(self, tsw):
+       self._trans.set_tsw(tsw)
+       
+    def set_tlook(self, tlook):
+       self._trans.set_tlook(tlook)
+       
+    def set_prf(self, prf):
+       self._trans.set_prf(prf)
 
+    def set_amplitude(self, ampl):
+        self._trans.set_amplitude(ampl)
+
+    def tune(self, center_freq, waveform_freq):
+        self._trans.tune(center_freq, waveform_freq)
+
     def start(self):
        self._trans.start()
-       self.enable_tx(True)
        self.set_reset(False)
        
     def stop(self):
        self.set_reset(True)
        self._trans.stop()
-       if self._transmitting:
-           self.enable_tx(False)
 
     def __del__(self):
         self.stop()

Modified: 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/python/usrp_radar_mono.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/python/usrp_radar_mono.py
      2007-07-17 17:48:00 UTC (rev 6002)
+++ 
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/python/usrp_radar_mono.py
      2007-07-17 21:40:32 UTC (rev 6003)
@@ -34,10 +34,18 @@
     parser.add_option("-f", "--frequency", type="eng_float", default=0.0,
                       help="set transmitter center frequency to FREQ in Hz, 
default is %default", metavar="FREQ")
     # Temporary for debugging transmitter frequency response
-    parser.add_option("-w", "--waveform-frequency", type="eng_float", 
default=1e3,
+    parser.add_option("-w", "--waveform-frequency", type="eng_float", 
default=1e6,
                       help="set waveform offset frequency to FREQ in Hz, 
default is %default", metavar="FREQ")
     parser.add_option("-a", "--amplitude", type="eng_float", default=100,
                       help="set waveform amplitude in % full scale, default is 
%default,")
+    parser.add_option("",   "--ton", type="eng_float", default=5e-6,
+                     help="set pulse on period in seconds, default is 
%default,")
+    parser.add_option("",   "--tsw", type="eng_float", default=406.25e-9,
+                     help="set transmitter switching period in seconds, 
default is %default,")
+    parser.add_option("",   "--tlook", type="eng_float", default=5e-6,
+                     help="set receiver look time in seconds, default is 
%default,")
+    parser.add_option("",   "--prf", type="eng_float", default=10e3,
+                     help="set pulse repetition frequency in Hz, default is 
%default,")
     parser.add_option("-v", "--verbose", action="store_true", default=False,
                       help="enable verbose output, default is disabled")
     parser.add_option("-D", "--debug", action="store_true", default=False,
@@ -69,8 +77,13 @@
     msgq = gr.msg_queue()
     s = radar(msgq=msgq,verbose=options.verbose,debug=options.debug)
 
+    s.set_ton(options.ton)
+    s.set_tsw(options.tsw)
+    s.set_tlook(options.tlook)
+    s.set_prf(options.prf)
     s.set_amplitude(options.amplitude)
     s.tune(options.frequency, options.waveform_frequency)
+
     s.start()
 
     """





reply via email to

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