This repository has been archived on 2024-01-14. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
vivado-202401/projects/duifei/duifei_cal_coarse/rtl/Sisyif_src/Sisyif.v
T
2023-04-13 13:33:41 +08:00

302 lines
7.9 KiB
Verilog

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: Chengdu Tiger
// Engineer: Tangxy
//
// Create Date: 14:14:49 09/06/2021
// Design Name:
// Module Name: top
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module Sisyif(
input clk_40m ,
input clk_20m ,
input rst_n ,
//调零至信处接口
input SPI_CLK_F ,//SPI控制,时钟暂定50MHz,用来发送跳频频点、发射MGC值、接收MGC值
input SPI_SYN_F ,//片选
input SPI_MOSI_F ,
output SPI_MISO_F ,
input TP_EN_F ,//跳频使能控制(上升沿更新)
input TR_MGC_F ,//接收发射MGC使能控制(上升沿更新)
input CAL_F ,//校准MGC使能(上升沿更新)
input PRF ,//高发低收,默认接收
//信处至射频接口
output standby ,//高开低待机,默认待机
output SW_PLL ,//乒乓频率源选择0:频率源A —— 1:频率源B
output T ,//发射电源控制
output R ,//接收电源控制
output SW_BPF ,//开关滤波器选择
output SCLK1 ,//锁相环A控制
output SDIO1 ,//
output CS1 ,//
input LD1 ,//
output SCLK2 ,//锁相环B控制
output SDIO2 ,//
output CS2 ,//
input LD2 ,//
output SCLK3 ,//点频源控制
output SDIO3 ,//
output CS3 ,//
input LD3 ,//
output TMGC_16db ,//发射通道MGC控制,高电平衰减
output TMGC_8db ,//
output TMGC_4db ,//
output TMGC_2db ,//
output TMGC_1db ,//
output RMGC_16db ,//四个接收通道MGC控制,同时控制,高电平衰减
output RMGC_8db ,//
output RMGC_4db ,//
output RMGC_2db ,//
output RMGC_1db ,//
output ENABLE ,//SPI控制四个接收通道增益校准
output SC ,//
output SD ,//
output END_SYN ,//
input SDOUT ,//
inout DQ_WD ,//温度传感器
output SW_RX //接收监测控制
);
wire vio_rstn ;
wire [9:0] SYNC_OUT ;
wire [35:0] CONTROL0 ;
wire [35:0] CONTROL1 ;
wire [150:0] TRIG0 ;
wire[15:0] temp_data ;//LSB =0.625 C
wire[7:0] temp ;//LSB =1°C
wire[11:0] hop_fre_code;
wire adf4371_hop1 ;
wire adf4371_hop2 ;
wire [15:0] fre_code ;
wire [7:0] tx_mgc ;
wire [7:0] rx1_mgc ;
wire [7:0] rx2_mgc ;
wire [7:0] rx3_mgc ;
wire [7:0] rx4_mgc ;
wire [3:0] cal1_mgc ;
wire [3:0] cal2_mgc ;
wire [3:0] cal3_mgc ;
wire [3:0] cal4_mgc ;
wire [7:0] tx_cal_mgc ;
wire [3:0] model ;
wire [3:0] rf_en ;
wire [31:0] frame_count;
wire [3:0] ceshi_model;
wire [15:0] current_fre_code ;
wire [15:0] cal_fre_code ;
wire [7:0] R_MGC_1 ;
wire SW_C1;
wire SW;
wire SW2;
wire SW3;
wire [3:0] R_CAL1;
wire [3:0] R_CAL2;
wire [3:0] R_CAL3;
wire [3:0] R_CAL4;
wire [4:0] T_CAL ;
assign temp = temp_data[11:4] ;
assign RMGC_16db = R_MGC_1[4] ;
assign RMGC_8db = R_MGC_1[3] ;
assign RMGC_4db = R_MGC_1[2] ;
assign RMGC_2db = R_MGC_1[1] ;
assign RMGC_1db = R_MGC_1[0] ;
assign standby = rf_en == 4'b0 ;
assign T = PRF ;
assign R = ~PRF ;
assign SW_BPF = SW_C1 ;
assign SW_PLL = SW ;
assign SW_RX = rx2_mgc == 8'b0 ? 1'b0 :1'b1 ;
spi_slave u_spi_slave (
.i_sys_clk(clk_40m),
.i_sys_rst_n(rst_n),
.i_spi_sck(SPI_CLK_F),
.i_spi_cs(SPI_SYN_F),
.i_spi_sdi(SPI_MOSI_F),
.o_frame_count(frame_count),
.o_fre_code(fre_code),
.o_tx_mgc(tx_mgc),
.o_model(model),
.o_rf_en(rf_en),
.o_cal1_mgc(cal1_mgc),
.o_cal2_mgc(cal2_mgc),
.o_cal3_mgc(cal3_mgc),
.o_cal4_mgc(cal4_mgc),
.o_tx_cal_mgc(tx_cal_mgc),
.o_rx1_mgc(rx1_mgc),
.o_rx2_mgc(rx2_mgc),
.o_rx3_mgc(rx3_mgc),
.o_rx4_mgc(rx4_mgc),
.o_ceshi_model(ceshi_model)
);
spi_master u_spi_master (
.i_sys_rst_n (rst_n) ,
.i_clk (clk_40m) ,
//.debug_clk (clk_80m) ,
.i_spi_sck (SPI_CLK_F) ,
.i_spi_cs (SPI_SYN_F) ,
.o_spi_sdo (SPI_MISO_F) ,
.i_spi_sdi (SPI_MOSI_F) ,
.i_LD_LO3 (LD3) ,
.i_LD1 (LD1) ,
.i_LD2 (LD2) ,
.i_cal1_mgc (R_CAL4) ,
.i_cal2_mgc (R_CAL3) ,
.i_cal3_mgc (R_CAL2) ,
.i_cal4_mgc (R_CAL1) ,
.i_temp (temp ) ,
.i_frame_count (frame_count)
);
mgc_ctrl u_mgc_ctrl(
.i_sys_clk (clk_40m ),
.i_rst_n (rst_n ),
.i_TR_SW_F (PRF ),
.i_TP_EN_F (TP_EN_F ),
.i_T_MGC_EN_F (TR_MGC_F ),
.i_R_MGC_EN_F (TR_MGC_F ),
.i_CAL_F (CAL_F ),
.i_fre_code (fre_code ),
.i_tx_mgc (tx_mgc ),
.i_rx1_mgc (rx1_mgc ),
.i_rx2_mgc (rx2_mgc ),
.i_rx3_mgc (rx3_mgc ),
.i_rx4_mgc (rx4_mgc ),
.i_ceshi_module (ceshi_model ),
.o_current_fre_code (current_fre_code ),
.o_cal_fre_code (cal_fre_code ),
.o_hop_fre_code (hop_fre_code ), //0(20.375GHz)~3500(23.875GHz)
.o_adf4371_hop1 (adf4371_hop1 ), //high active
.o_adf4371_hop2 (adf4371_hop2 ),
.o_SW (SW ),
.o_SW2 (SW2 ),
.o_SW3 (SW3 ),
.o_SW_C1 (SW_C1 ),
.o_T_MGC_1dB (TMGC_1db ),
.o_T_MGC_2dB (TMGC_2db ),
.o_T_MGC_4dB (TMGC_4db ),
.o_T_MGC_8dB (TMGC_8db ),
.o_T_MGC_16dB (TMGC_16db ),
.o_R_MGC_1 (R_MGC_1 )
//.o_R_MGC_2 (R_MGC_2 ),
//.o_R_MGC_3 (R_MGC_3 ),
//.o_R_MGC_4 (R_MGC_4 )
);
wire cfgover;
adf4371_a u_adf4371_a (
.sysclk (clk_40m ),
.arstn (rst_n&vio_rstn ),
.cs (CS1 ),
.mux_out (LD1 ),
.sclk (SCLK1 ),
.sdio (SDIO1 ),
.rf_en (rf_en ),
.SW_PLL (SW_PLL ),
.CAL_F (CAL_F ),
.o_cfgover (cfgover ),
.ceshi_model(ceshi_model ),
.adf4371_hop(adf4371_hop1),
.fre_code (hop_fre_code)
);
adf4371_b u_adf4371_b (
.sysclk (clk_40m ),
.arstn (rst_n&vio_rstn),
.cs (CS2 ),
.mux_out (LD2 ),
.sclk (SCLK2 ),
.sdio (SDIO2 ),
.rf_en (rf_en ),
.SW_PLL (SW_PLL ),
.CAL_F (CAL_F ),
.i_cfgover (cfgover ),
.ceshi_model(ceshi_model ),
.adf4371_hop(adf4371_hop2),
.fre_code (hop_fre_code)
);
fre_caliatt u_fre_caliatt (
.i_clk (clk_40m ),
.i_rstn (rst_n ),
.ENABLE (ENABLE ),
.SC (SC ),
.SD (SD ),
.END_SYN (END_SYN ),
.SDOUT (SDOUT ),
.CAL_F (CAL_F ),
.i_temp (temp ),
.i_fre_mode (current_fre_code ),
.i_cal_fre_code (cal_fre_code ),
// .SYNC_OUT (SYNC_OUT ),
.SW (SW ),
.cal1_mgc (cal1_mgc ),
.cal2_mgc (cal2_mgc ),
.cal3_mgc (cal3_mgc ),
.cal4_mgc (cal4_mgc ),
.tx_cal_mgc (tx_cal_mgc ),
.tx_mgc (tx_mgc ),
.i_ceshi_module (ceshi_model ),
.R_CAL1 (R_CAL1 ),
.R_CAL2 (R_CAL2 ),
.R_CAL3 (R_CAL3 ),
.R_CAL4 (R_CAL4 ),
.T_CAL (T_CAL )
);
adf4351_2 u_adf4351 (
.i_sysclk(clk_20m),
.i_arstn(rst_n),
.o_ADF4351_SCK(SCLK3),
.o_ADF4351_DATA(SDIO3),
.o_ADF4351_LE(CS3),
.i_ADF4351_locked(LD3)
);
ds18b20_temp u_temp (
.clk(clk_40m),
.rstn(rst_n),
.dq(DQ_WD),
.temp_data(temp_data)
);
assign vio_rstn = 1'b1;
endmodule