Merged r5945:6012 from jcorgan/radar into trunk. Updates gr-radar-mono component...
[debian/gnuradio] / gr-radar-mono / src / fpga / lib / radar_tx.v
index ffb16fa703768e4885ce553565aa55f622dea125..c20dd0c1a1ca5aa1f9c0252239bb271db2dd8f3e 100644 (file)
 //  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,fstart_i,fincr_i,
+               tx_i_o,tx_q_o);
+
    // System control
    input clk_i;
    input rst_i;
@@ -28,19 +31,29 @@ module radar_tx(clk_i,rst_i,ena_i,strobe_i,ampl_i,freq_i,tx_i_o,tx_q_o);
    
    // 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