summaryrefslogtreecommitdiff
path: root/gr-radar-mono/src/fpga/lib/radar_control.v
diff options
context:
space:
mode:
Diffstat (limited to 'gr-radar-mono/src/fpga/lib/radar_control.v')
-rw-r--r--gr-radar-mono/src/fpga/lib/radar_control.v166
1 files changed, 0 insertions, 166 deletions
diff --git a/gr-radar-mono/src/fpga/lib/radar_control.v b/gr-radar-mono/src/fpga/lib/radar_control.v
deleted file mode 100644
index 05b78198d..000000000
--- a/gr-radar-mono/src/fpga/lib/radar_control.v
+++ /dev/null
@@ -1,166 +0,0 @@
-// -*- verilog -*-
-//
-// USRP - Universal Software Radio Peripheral
-//
-// Copyright (C) 2007 Corgan Enterprises LLC
-//
-// This program 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 2 of the License, or
-// (at your option) any later version.
-//
-// This program 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 this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Boston, MA 02110-1301 USA
-//
-
-`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,pulse_num_o,io_tx_ena_o);
-
- // System interface
- input clk_i; // Master clock @ 64 MHz
- input [6:0] saddr_i; // Configuration bus address
- input [31:0] sdata_i; // Configuration bus data
- input s_strobe_i; // Configuration bus write
-
- // Control and configuration outputs
- output reset_o;
- output tx_side_o;
- output dbg_o;
- output tx_strobe_o;
- output tx_ctrl_o;
- output rx_ctrl_o;
- output [15:0] ampl_o;
- output [31:0] fstart_o;
- output [31:0] fincr_o;
- output [15:0] pulse_num_o;
- output io_tx_ena_o;
-
- // Internal configuration
- wire lp_ena;
- wire md_ena;
- wire dr_ena;
- wire [1:0] chirps;
- wire [15:0] t_on;
- wire [15:0] t_sw;
- wire [15:0] t_look;
- wire [31:0] t_idle;
- wire [31:0] atrdel;
-
- // Configuration from host
- wire [31:0] mode;
- setting_reg #(`FR_RADAR_MODE) sr_mode(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
- .out(mode));
- assign reset_o = mode[0];
- assign tx_side_o = mode[1];
- assign lp_ena = mode[2];
- assign md_ena = mode[3];
- assign dr_ena = mode[4];
- assign chirps = mode[6:5];
- assign dbg_o = mode[7];
-
- 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_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));
-
- setting_reg #(`FR_RADAR_ATRDEL) sr_atrdel(.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
- .out(atrdel));
-
- // 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;
- 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)
- `ST_ON:
- if (count == {16'b0,t_on})
- begin
- state <= `ST_SW;
- count <= 32'b0;
- pulse_num_o <= pulse_num_o + 16'b1;
- 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 + 32'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 <= 32'b0;
- end
- else
- count <= count + 32'b1;
-
- default: // Invalid state, reset state machine
- begin
- state <= `ST_ON;
- count <= 32'b0;
- end
- endcase
-
- 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);
-
- // Create delayed version of tx_ctrl_o to drive mixers and TX/RX switch
- atr_delay atr_delay(.clk_i(clk_i),.rst_i(reset_o),.ena_i(1'b1),.tx_empty_i(!tx_ctrl_o),
- .tx_delay_i(atrdel[27:16]),.rx_delay_i(atrdel[11:0]),
- .atr_tx_o(io_tx_ena_o));
-
-endmodule // radar_control