⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radar_tb.v

📁 这是用python语言写的一个数字广播的信号处理工具包。利用它
💻 V
字号:
// -*- 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//`timescale 1ns/1ps`include "../lib/radar.v"module radar_tb;   // System bus   reg         clk;   reg         rst;   reg         ena;      // Configuration bus   reg [6:0]   saddr;   reg [31:0]  sdata;   reg 	       s_strobe;   // DAC bus   wire        tx_strobe;   wire [13:0] tx_dac_i;   wire [13:0] tx_dac_q;   // ADC bus   reg [15:0]  rx_adc_i;   reg [15:0]  rx_adc_q;      // FIFO bus   wire        fifo_strobe;   wire [15:0] fifo_i;   wire [15:0] fifo_q;      // Configuration shadow registers   reg [31:0]  mode;      radar uut     (.clk_i(clk),.saddr_i(saddr),.sdata_i(sdata),.s_strobe_i(s_strobe),      .tx_strobe_o(tx_strobe),.tx_dac_i_o(tx_dac_i),.tx_dac_q_o(tx_dac_q),      .rx_adc_i_i(rx_adc_i),.rx_adc_q_i(rx_adc_q),      .rx_strobe_o(fifo_strobe),.rx_ech_i_o(fifo_i),.rx_ech_q_o(fifo_q));   // Start up initialization   initial     begin	clk = 0;	rst = 0;	ena = 0;	saddr = 0;	sdata = 0;	s_strobe = 0;	rx_adc_i = 0;	rx_adc_q = 0;	mode = 0;		@(posedge clk);	rst = 1;	@(posedge clk);	rst = 0;	@(posedge clk);	ena = 1;     end      always     #5 clk <= ~clk;      initial     begin	//$monitor($time, " clk=%b rst=%b", clk, uut.reset);		$dumpfile("radar_tb.vcd");	$dumpvars(0, radar_tb);     end   // Test tasks   task write_cfg_register;      input [6:0]  regno;      input [31:0] value;            begin	 @(posedge clk);	 saddr <= regno;	 sdata <= value;	 s_strobe <= 1'b1;	 @(posedge clk);	 s_strobe <= 0;      end   endtask // write_cfg_register      // Application reset line   task set_reset;      input reset;            begin	 mode = reset ? (mode | `bmFR_RADAR_MODE_RESET) : (mode & ~`bmFR_RADAR_MODE_RESET);	 write_cfg_register(`FR_RADAR_MODE, mode);      end   endtask // reset      // Waveform on time   task set_ton;      input [23:0] t_on;      begin	 write_cfg_register(`FR_RADAR_TON, t_on);      end   endtask // set_ton   // Transmitter switching time   task set_tsw;      input [23:0] t_sw;      begin	 write_cfg_register(`FR_RADAR_TSW, t_sw);      end   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   // Chirp amplitude   task set_ampl;      input [31:0] ampl;      begin	 write_cfg_register(`FR_RADAR_AMPL, ampl);      end   endtask // set_ampl   // Chirp start frequency   task set_fstart;      input [31:0] fstart;      begin	 write_cfg_register(`FR_RADAR_FSTART, fstart);      end   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   // Chirp frequency increment   task set_atrdel;      input [31:0] atrdel;      begin	 write_cfg_register(`FR_RADAR_ATRDEL, atrdel);      end   endtask // set_fincr   // Test transmitter functionality   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(640-1);  // 10us look time	 #20 set_tidle(2854-1); // 60us pulse period	 	 #20 set_ampl(16'd9946);	 #20 set_fstart(32'h80000000); // -16 to 16 MHz	 #20 set_fincr (32'h0199999A);	 #20 set_atrdel(32'h00400046); // 64 TX clks, 70 RX clks	 	 #20 set_reset(0);	 #200000;      end   endtask // test_tx      // Execute tests   initial     begin        #20 test_tx;	#100 $finish;     endendmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -