[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r6011 - in gnuradio/branches/developers/jcorgan/radar/
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r6011 - in gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src: fpga/lib fpga/tb fpga/top python |
Date: |
Wed, 18 Jul 2007 13:38:53 -0600 (MDT) |
Author: jcorgan
Date: 2007-07-18 13:38:53 -0600 (Wed, 18 Jul 2007)
New Revision: 6011
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_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_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:
Added LFM chirp to transmitter.
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-18 04:44:21 UTC (rev 6010)
+++
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar.v
2007-07-18 19:38:53 UTC (rev 6011)
@@ -54,16 +54,17 @@
// Configuration
wire [15:0] ampl; // Pulse amplitude
- wire [31:0] freq; // Temporary, for frequency response
testing
+ wire [31:0] fstart; // Chirp start frequency
+ wire [31:0] fincr; // Chirp per strobe frequency increment
radar_control controller
(.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));
+ .ampl_o(ampl),.fstart_o(fstart),.fincr_o(fincr));
radar_tx transmitter
- ( .clk_i(clk_i),.rst_i(reset),.ena_i(tx_ctrl),
- .ampl_i(ampl),.freq_i(freq),.strobe_i(tx_strobe_o),
+ ( .clk_i(clk_i),.rst_i(reset),.ena_i(tx_ctrl),.strobe_i(tx_strobe_o),
+ .ampl_i(ampl),.fstart_i(fstart),.fincr_i(fincr),
.tx_i_o(tx_dac_i_o),.tx_q_o(tx_dac_q_o) );
radar_rx receiver
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-18 04:44:21 UTC (rev 6010)
+++
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_config.vh
2007-07-18 19:38:53 UTC (rev 6011)
@@ -29,6 +29,7 @@
`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_FSTART `FR_USER_6
+`define FR_RADAR_FINCR `FR_USER_7
-`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-18 04:44:21 UTC (rev 6010)
+++
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_control.v
2007-07-18 19:38:53 UTC (rev 6011)
@@ -23,7 +23,7 @@
module radar_control(clk_i,saddr_i,sdata_i,s_strobe_i,
reset_o,tx_strobe_o,tx_ctrl_o,rx_ctrl_o,
- ampl_o,freq_o);
+ ampl_o,fstart_o,fincr_o);
// System interface
input clk_i; // Master clock @ 64 MHz
@@ -37,7 +37,8 @@
output tx_ctrl_o;
output rx_ctrl_o;
output [15:0] ampl_o;
- output [31:0] freq_o;
+ output [31:0] fstart_o;
+ output [31:0] fincr_o;
// Internal configuration
wire lp_ena;
@@ -68,9 +69,12 @@
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));
+ setting_reg #(`FR_RADAR_FSTART)
sr_fstart(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
+ .out(fstart_o));
+ setting_reg #(`FR_RADAR_FINCR)
sr_fincr(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
+ .out(fincr_o));
+
// Pulse state machine
`define ST_ON 4'b0001
`define ST_SW 4'b0010
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-18 04:44:21 UTC (rev 6010)
+++
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/lib/radar_tx.v
2007-07-18 19:38:53 UTC (rev 6011)
@@ -20,7 +20,9 @@
//
module radar_tx(clk_i,rst_i,ena_i,strobe_i,
- ampl_i,freq_i,tx_i_o,tx_q_o);
+ ampl_i,fstart_i,fincr_i,
+ tx_i_o,tx_q_o);
+
// System control
input clk_i;
input rst_i;
@@ -29,19 +31,29 @@
// Configuration
input [15:0] ampl_i;
- input [31:0] freq_i;
+ input [31:0] fstart_i;
+ input [31:0] fincr_i;
- // Output
+ // Chirp output
output [13:0] tx_i_o;
output [13:0] tx_q_o;
+ wire [15:0] cordic_i, cordic_q;
- wire [15:0] cordic_i, cordic_q;
+ // Chirp generator
+ reg [31:0] freq;
+ always @(posedge clk_i)
+ if (rst_i | ~ena_i)
+ freq <= fstart_i;
+ else
+ if (strobe_i)
+ freq <= freq + fincr_i;
+
cordic_nco
nco(.clk_i(clk_i),.rst_i(rst_i),.ena_i(ena_i),.strobe_i(strobe_i),
- .ampl_i(ampl_i),.freq_i(freq_i),.phs_i(0),
+ .ampl_i(ampl_i),.freq_i(freq),.phs_i(0),
.data_i_o(cordic_i),.data_q_o(cordic_q));
- assign tx_i_o = cordic_i[13:0];
- assign tx_q_o = cordic_q[13:0];
+ assign tx_i_o = cordic_i[13:0];
+ assign tx_q_o = cordic_q[13:0];
endmodule // radar_tx
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-18 04:44:21 UTC (rev 6010)
+++
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.sav
2007-07-18 19:38:53 UTC (rev 6011)
@@ -1,19 +1,19 @@
-*-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
+*-24.712317 37100000 -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.rx_enable
@200
-
@420
radar_tb.uut.controller.ampl_o[15:0]
address@hidden
-radar_tb.uut.freq[31:0]
address@hidden
+radar_tb.uut.controller.fstart_o[31:0]
+radar_tb.uut.controller.fincr_o[31:0]
+radar_tb.uut.transmitter.freq[31:0]
@200
-
--
@28
radar_tb.tx_strobe
@8420
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-18 04:44:21 UTC (rev 6010)
+++
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/tb/radar_tb.v
2007-07-18 19:38:53 UTC (rev 6011)
@@ -153,24 +153,33 @@
end
endtask // set_tidle
- // Waveform amplitude
- task set_amplitude;
+ // Chirp amplitude
+ task set_ampl;
input [31:0] ampl;
begin
write_cfg_register(`FR_RADAR_AMPL, ampl);
end
- endtask // set_amplitude
+ endtask // set_ampl
- // Waveform frequency
- task set_frequency;
- input [31:0] freq;
+ // Chirp start frequency
+ task set_fstart;
+ input [31:0] fstart;
begin
- write_cfg_register(`FR_RADAR_FREQ1N, freq);
+ write_cfg_register(`FR_RADAR_FSTART, fstart);
end
- endtask // frequency
+ endtask // set_fstart
+
+ // Chirp frequency increment
+ task set_fincr;
+ input [31:0] fincr;
+ begin
+ write_cfg_register(`FR_RADAR_FINCR, fincr);
+ end
+ endtask // set_fincr
+
// Test transmitter functionality
task test_tx;
begin
@@ -181,9 +190,10 @@
#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 set_ampl(16'd9946);
+ #20 set_fstart(32'h80000000); // -16 to 16 MHz
+ #20 set_fincr (32'h0199999A);
+
#20 set_reset(0);
#200000;
end
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-18 04:44:21 UTC (rev 6010)
+++
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/fpga/top/usrp_radar_mono.srf
2007-07-18 19:38:53 UTC (rev 6011)
@@ -133,3 +133,8 @@
{ "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}
+{ "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" 70 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" 64 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" 61 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" 58 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" 55 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-18 04:44:21 UTC (rev 6010)
+++
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/python/radar_mono.py
2007-07-18 19:38:53 UTC (rev 6011)
@@ -40,14 +40,11 @@
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
+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
# These are for phase II development
-
-# Temporarily use this for transmitter frequency calibration
-FR_RADAR_FREQ1N = usrp.FR_USER_8 # 24-bit N register for chirp #1
-
+#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
@@ -111,17 +108,21 @@
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):
+ def set_freq(self, center_freq, chirp_width):
self._center_freq = center_freq
- self._waveform_freq = waveform_freq
- self._ftw = int(waveform_freq*(2**32)/32e6)
+ self._chirp_width = chirp_width
+ self._fstart = -int((chirp_width/2)*(2**32)/32e6)
+ self._fincr = int((chirp_width/16e6)*(2**32)/(self._ton_ticks+1))
+
if self._verbose:
print "Setting transmitter center frequency to", n2s(center_freq)
- print "Setting waveform frequency offset to", n2s(waveform_freq),
"with ftw of", self._ftw
+ print "Setting chirp width to", n2s(chirp_width), "Hz
"+"("+hex(self._fstart)+", "+hex(self._fincr)+")"
+
result = self._u.tune(0, self._subdev, center_freq)
if result == False:
raise RuntimeError("Failed to set transmitter frequency.")
- self._u._write_fpga_reg(FR_RADAR_FREQ1N, self._ftw)
+ self._u._write_fpga_reg(FR_RADAR_FSTART, self._fstart)
+ self._u._write_fpga_reg(FR_RADAR_FINCR, self._fincr)
def start(self):
self._u.start()
@@ -256,9 +257,10 @@
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 set_freq(self, center_freq, chirp_width):
+ self._trans.set_freq(center_freq, chirp_width)
+ # set receiver center frequency
+
def start(self):
self._trans.start()
self.set_reset(False)
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-18 04:44:21 UTC (rev 6010)
+++
gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src/python/usrp_radar_mono.py
2007-07-18 19:38:53 UTC (rev 6011)
@@ -33,9 +33,8 @@
parser = OptionParser(option_class=eng_option)
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=1e6,
- help="set waveform offset frequency to FREQ in Hz,
default is %default", metavar="FREQ")
+ parser.add_option("-w", "--chirp-width", type="eng_float", default=16e6,
+ help="set LFM chirp bandwidth 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,
@@ -82,7 +81,7 @@
s.set_tlook(options.tlook)
s.set_prf(options.prf)
s.set_amplitude(options.amplitude)
- s.tune(options.frequency, options.waveform_frequency)
+ s.set_freq(options.frequency, options.chirp_width)
s.start()
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r6011 - in gnuradio/branches/developers/jcorgan/radar/gr-radar-mono/src: fpga/lib fpga/tb fpga/top python,
jcorgan <=