📄 fpgab_top.v
字号:
`timescale 1ns / 1ps
module fpgab_top(clk, clk10, clk_out, reset_in,/*clk_data,clk_code,clk_fs,*/DA1_D,DA2_D,RST_DAC,DAC_SCLK,DAC_SDENB,
DAC_SDIO,DAC_SDO,DA_PLLLOCK,DAV1_B,DAV2_B, ADA_D,CLK_ADA,AUX_CLK,
CTRL_CLK,CTRL_BUS,IRQ_EN,IRQ_F2,F2_422_RX,F2_422_TX,F2_TTL_RX,
F2_TTL_TX,F2F,F2_BEEP,F2_LED,F2_SW,TEST_D);
input clk; //系统钟CLK_F2
input clk10; //倍频前的基准时钟10M输入CLK_IN_F2
output clk_out; //使用FPGA内DCM做倍频器时,结果由此输出CLK_OUT_F2
input reset_in; //外部输入RESET信号,低有效
output [15:0] DA1_D; //da通道1输入数据,在DAC_CLK上升沿处被读入
output [15:0] DA2_D; //da通道2输入数据,在DAC_CLK上升沿处被读入
output RST_DAC; //D/A的复位信号,低有效
output DAC_SCLK; //D/A的串行控制接口时钟信号
output DAC_SDENB; //D/A的串行控制接口使能信号
inout DAC_SDIO; //D/A的串行控制接口数据信号
input DAC_SDO; //D/A的串行控制接口输入数据,4线模式时有用
input DA_PLLLOCK; //D/A芯片内部PLL锁定信号
output [5:0] DAV1_B; //1通道衰减器控制码(0~63),静态电平控制
output [5:0] DAV2_B; //2通道衰减器控制码(0~63),静态电平控制
output [7:0] ADA_D; //码钟生成电路的D/A芯片数据线
output CLK_ADA; //码钟生成电路的D/A芯片时钟线
input [2:0] AUX_CLK; //码钟生成电路的时钟信号输入,具体选择参见文档HXI-1 UG pt.doc
input CTRL_CLK; //控制总线时钟40M
inout [35:0] CTRL_BUS; //控制总线,具体管脚对应见文档HXI-1 UG pt.doc
input IRQ_EN; //中断使能信号,高有效
output IRQ_F2; //中断信号,下降沿触发中断
input [7:0] F2_422_RX; //数字I/O的8对422输入信号
output [7:0] F2_422_TX; //数字I/O的8对422输出信号
input [3:0] F2_TTL_RX; //数字I/O的4条TTL输入信号
output [3:0] F2_TTL_TX; //数字I/O的4条TTL输出信号
inout [89:0] F2F; //FPGA1与FPGA2间的90条直联信号,使用时防止方向冲突
output F2_BEEP; //蜂鸣器,高有效
output [5:0] F2_LED; //LED,高有效,0~3位于后面板,4、5在FPGA旁边
input [3:0] F2_SW; //拨码开关,输入1对应其状态NO
output [7:0] TEST_D; //逻辑分析仪接口的D[0:7]——文档不对
//input clk_data,clk_code,clk_fs;
wire reset; //内部复位信号,低有效
assign reset = !reset_in;
wire [30:0] E_data,E_code,E_fs;
wire [25:0] F_data,F_code,F_fs;
wire [25:0] G_data,G_code,G_fs;
wire [30:0] fre_data,fre_code,fre_fs;
//控制总线读写寄存器,现对应读写寄存器均为32个
/*已有功能——1. 初始化DAC工作在X4L模式,相关管脚RST_DAC,DAC_SCLK,DAC_SDENB,DAC_SDIO
2. DAC寄存器读写,相关管脚RST_DAC,DAC_SCLK,DAC_SDENB,DAC_SDIO
*/
wire [30:0]add_cy_31_bit;
wire [15:0]clk_numb;
wire [1:0]biaoshi;
wire [3:0]modulate;
wire reset_m;
wire clk165,LOCKED_OUT_165;
dcm165m d165(clk,reset,clk165,LOCKED_OUT_165);
reg [15:0]numb_5;
reg clk15m5;
always @(posedge clk165 or posedge reset)
begin
if (reset)
begin
numb_5<=16'b0;
clk15m5<=1'b0;
end
else
begin
if(numb_5>=clk_numb)
numb_5<=16'd0;
else
numb_5<=numb_5+1'b1;
if(numb_5<{1'b0,clk_numb[15:1]})
clk15m5<=1'b0;
else
clk15m5<=1'b1;
end
end
wire datain,datain_chi_370,datain_chi_430,datain_chi_470;
wire qufan;
wire up150k;
assign qufan=biaoshi[0];
assign up150k=biaoshi[1];
parameter Uncode=2'b00;
parameter Code12=2'b01;
parameter Code34=2'b10;
wire code_clk,code_out;
wire out_pn;
pn_code_1023 pc0_1( .clk(clk15m5),
.reset(reset),
.numb(4'b0000),
.phase(2'b00),
.pn(out_pn));
pn_catch_83_test pc83(clk,reset);
//encode_BPSK eb34(clk15m5,datain,reset,clk,code_clk34,code_out34,Code34,add_cy_31_bit,qufan,overflow34);
//数据时钟,数据, 110M,码钟, 编码输出,码率, 积分步长 ,是否取反
wire code_clk_core;
wire [1:0]code_out_core;
// wire decodeout,dclk,syn_zhishi;
wire syn_zhi,vtb_syn_12;
wire [15:0]ceshi_vtb12B;
/////////////////////////////////////////////////////
////////////////////////////////////////////////////
reg [7:0]output_shiboqi;
always @*
begin
case(modulate)
4'b0000:begin
output_shiboqi[0]=vtb_syn_12;//ceshi_vtb12B[7];
output_shiboqi[1]=vtb_syn_34;//~code_out_core[1];
output_shiboqi[2]=data_clk_vtb34;//ceshi_vtb12B[6];
output_shiboqi[3]=data_clk_vtb;//~code_out_core[0];
output_shiboqi[4]=datain_chi_370;
output_shiboqi[5]=datain_chi_430;
output_shiboqi[6]=data0_vtb;
output_shiboqi[7]=data0_vtb34;
end
// 4'b0001:begin
// output_shiboqi = ceshi_vtb12B[7:0];
// output_shiboqi[0]=clk15m5;
// output_shiboqi[1]=datain_chi_370;
// output_shiboqi[2]=data_clk_vtb34;
// output_shiboqi[3]=data0_vtb34;
// end
// 4'b0010:begin
// output_shiboqi = ceshi_vtb12B[15:8];
// output_shiboqi[0]=clk15m5;
// output_shiboqi[1]=datain_chi_430;
// output_shiboqi[2]=data_clk_vtb_Q_12_s;
// output_shiboqi[3]=data0_Q12s;
// end
// 4'b0011:begin
// output_shiboqi[0]=clk15m5;
// output_shiboqi[1]=datain_chi_470;
// output_shiboqi[2]=data_clk_vtb_Q_34_s;
// output_shiboqi[3]=data0_Q34s;
// end
endcase
end
assign F2_TTL_TX = output_shiboqi[7:4];
// assign F2_TTL_TX[0] = ~datain_chi_370;//dout_fs;//outen_il;
// assign F2_TTL_TX[1] = data0_vtb34;//outen_fs;
// assign F2_TTL_TX[2]=data0_vtb;//0;//dout_il;
// assign F2_TTL_TX[3]=data_clk_vtb;//syn_zhishi;//dout_fs;
assign TEST_D[7:0]= output_shiboqi[7:0];//clk_data; //码钟
// assign TEST_D[1] = 0;//clk_code; //数据源数据
// assign TEST_D[2] = 0;//clk_fs; //交织后数据
// assign TEST_D[3] = 0;//outen_il;
// assign TEST_D[4] = 0;//dout_il;
// assign TEST_D[5] = 0;//outen_fs;
// assign TEST_D[6] = 0;//dout_fs; //加帧头后数据
// assign TEST_D[7] = 0;
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -