radar_system_top_te0713_umft601x_dev.v
1 `timescale 1ns / 1ps 2 3 module radar_system_top_te0713_umft601x_dev ( 4 input wire ft601_clk_in, 5 inout wire [31:0] ft601_data, 6 output wire [3:0] ft601_be, 7 input wire ft601_txe, 8 input wire ft601_rxf, 9 output wire ft601_wr_n, 10 output wire ft601_rd_n, 11 output wire ft601_oe_n, 12 output wire ft601_siwu_n, 13 output wire ft601_chip_reset_n, 14 output wire ft601_wakeup_n, 15 output wire ft601_gpio0, 16 output wire ft601_gpio1 17 ); 18 19 reg [15:0] por_counter = 16'd0; 20 reg [31:0] hb_counter = 32'd0; 21 reg [15:0] packet_div = 16'd0; 22 reg [2:0] stream_control_reg = 3'b001; 23 reg status_request_reg = 1'b0; 24 reg [31:0] range_profile_reg = 32'd0; 25 reg range_valid_reg = 1'b0; 26 reg [15:0] doppler_real_reg = 16'd0; 27 reg [15:0] doppler_imag_reg = 16'd0; 28 reg doppler_valid_reg = 1'b0; 29 reg cfar_detection_reg = 1'b0; 30 reg cfar_valid_reg = 1'b0; 31 32 wire sys_reset_n; 33 wire [31:0] cmd_data; 34 wire cmd_valid; 35 wire [7:0] cmd_opcode; 36 wire [7:0] cmd_addr; 37 wire [15:0] cmd_value; 38 wire ft601_clk_out_unused; 39 wire ft601_txe_n_unused; 40 wire ft601_rxf_n_unused; 41 42 assign sys_reset_n = por_counter[15]; 43 assign ft601_chip_reset_n = sys_reset_n; 44 assign ft601_wakeup_n = 1'b1; 45 assign ft601_gpio0 = hb_counter[24]; 46 assign ft601_gpio1 = sys_reset_n; 47 48 always @(posedge ft601_clk_in) begin 49 if (!sys_reset_n) begin 50 por_counter <= por_counter + 1'b1; 51 hb_counter <= 32'd0; 52 packet_div <= 16'd0; 53 stream_control_reg <= 3'b001; 54 status_request_reg <= 1'b0; 55 range_profile_reg <= 32'd0; 56 range_valid_reg <= 1'b0; 57 doppler_real_reg <= 16'd0; 58 doppler_imag_reg <= 16'd0; 59 doppler_valid_reg <= 1'b0; 60 cfar_detection_reg <= 1'b0; 61 cfar_valid_reg <= 1'b0; 62 end else begin 63 hb_counter <= hb_counter + 1'b1; 64 packet_div <= packet_div + 1'b1; 65 66 status_request_reg <= 1'b0; 67 range_valid_reg <= 1'b0; 68 doppler_valid_reg <= 1'b0; 69 cfar_valid_reg <= 1'b0; 70 71 if (cmd_valid) begin 72 case (cmd_opcode) 73 8'h04: stream_control_reg <= cmd_value[2:0]; 74 8'hFF: status_request_reg <= 1'b1; 75 default: ; 76 endcase 77 end 78 79 if (packet_div == 16'hFFFF && stream_control_reg[0]) begin 80 range_profile_reg <= {hb_counter[31:16], hb_counter[15:0] ^ 16'hA5A5}; 81 range_valid_reg <= 1'b1; 82 83 if (stream_control_reg[1]) begin 84 doppler_real_reg <= hb_counter[31:16]; 85 doppler_imag_reg <= hb_counter[15:0]; 86 doppler_valid_reg <= 1'b1; 87 end 88 89 if (stream_control_reg[2]) begin 90 cfar_detection_reg <= hb_counter[10]; 91 cfar_valid_reg <= 1'b1; 92 end 93 end 94 end 95 end 96 97 usb_data_interface usb_inst ( 98 .clk(ft601_clk_in), 99 .reset_n(sys_reset_n), 100 .ft601_reset_n(sys_reset_n), 101 .range_profile(range_profile_reg), 102 .range_valid(range_valid_reg), 103 .doppler_real(doppler_real_reg), 104 .doppler_imag(doppler_imag_reg), 105 .doppler_valid(doppler_valid_reg), 106 .cfar_detection(cfar_detection_reg), 107 .cfar_valid(cfar_valid_reg), 108 .ft601_data(ft601_data), 109 .ft601_be(ft601_be), 110 .ft601_txe_n(ft601_txe_n_unused), 111 .ft601_rxf_n(ft601_rxf_n_unused), 112 .ft601_txe(ft601_txe), 113 .ft601_rxf(ft601_rxf), 114 .ft601_wr_n(ft601_wr_n), 115 .ft601_rd_n(ft601_rd_n), 116 .ft601_oe_n(ft601_oe_n), 117 .ft601_siwu_n(ft601_siwu_n), 118 .ft601_srb(2'b00), 119 .ft601_swb(2'b00), 120 .ft601_clk_out(ft601_clk_out_unused), 121 .ft601_clk_in(ft601_clk_in), 122 .cmd_data(cmd_data), 123 .cmd_valid(cmd_valid), 124 .cmd_opcode(cmd_opcode), 125 .cmd_addr(cmd_addr), 126 .cmd_value(cmd_value), 127 .stream_control(stream_control_reg), 128 .status_request(status_request_reg), 129 .status_cfar_threshold(16'h1234), 130 .status_stream_ctrl(stream_control_reg), 131 .status_radar_mode(2'b00), 132 .status_long_chirp(16'd3000), 133 .status_long_listen(16'd13700), 134 .status_guard(16'd17540), 135 .status_short_chirp(16'd50), 136 .status_short_listen(16'd17450), 137 .status_chirps_per_elev(6'd32), 138 .status_range_mode(2'b01), 139 .status_self_test_flags(5'b11111), 140 .status_self_test_detail(8'hA5), 141 .status_self_test_busy(1'b0) 142 ); 143 144 endmodule