📄 router_mod.v
字号:
//需例化开根IP核;或近似公式,在I、Q的绝对值(最高位异或各位)中选大值然后+小值/2;//由于求模输出流水率为4M,而脉压流水率为25M,因此需要考虑添加一级DPRAM(最好用分布式RAM来做,减少块RAM的资源使用)module router_mod( CLK_FPGA, CLK_MOD_in, RESET, core_d_valid, out_index, QD_in, ID_in,// EXP_IN, //直接从data_path模块输出到reg_ctrl_reg中的core_exp_out寄存器中;// DPC_OUT_DATA, MOD_DATA, size_we, QD_tmp, ID_tmp, test );input CLK_FPGA;input CLK_MOD_in;input RESET;input core_d_valid;input [12:0] out_index;input [15:0] QD_in;input [15:0] ID_in;//output[31:0] DPC_OUT_DATA;output[15:0] MOD_DATA; output[15:0] ID_tmp;output[15:0] QD_tmp; output test; input size_we;reg [15:0] MOD_DATA_TMP ; reg [12:0] addrb; wire CLK_FPGA;wire [7:0] test;wire [15:0] QD_tmp;wire [15:0] ID_tmp;assign QD_tmp[15]= QD_in[15]^QD_in[15];assign QD_tmp[14]= QD_in[15]^QD_in[14];assign QD_tmp[13]= QD_in[15]^QD_in[13];assign QD_tmp[12]= QD_in[15]^QD_in[12];assign QD_tmp[11]= QD_in[15]^QD_in[11];assign QD_tmp[10]= QD_in[15]^QD_in[10];assign QD_tmp[9] = QD_in[15]^QD_in[9];assign QD_tmp[8] = QD_in[15]^QD_in[8];assign QD_tmp[7] = QD_in[15]^QD_in[7];assign QD_tmp[6] = QD_in[15]^QD_in[6];assign QD_tmp[5] = QD_in[15]^QD_in[5];assign QD_tmp[4] = QD_in[15]^QD_in[4];assign QD_tmp[3] = QD_in[15]^QD_in[3];assign QD_tmp[2] = QD_in[15]^QD_in[2];assign QD_tmp[1] = QD_in[15]^QD_in[1];assign QD_tmp[0] = QD_in[15]^QD_in[0]; assign ID_tmp[15]= ID_in[15]^ID_in[15];assign ID_tmp[14]= ID_in[15]^ID_in[14];assign ID_tmp[13]= ID_in[15]^ID_in[13];assign ID_tmp[12]= ID_in[15]^ID_in[12];assign ID_tmp[11]= ID_in[15]^ID_in[11];assign ID_tmp[10]= ID_in[15]^ID_in[10];assign ID_tmp[9] = ID_in[15]^ID_in[9];assign ID_tmp[8] = ID_in[15]^ID_in[8];assign ID_tmp[7] = ID_in[15]^ID_in[7];assign ID_tmp[6] = ID_in[15]^ID_in[6];assign ID_tmp[5] = ID_in[15]^ID_in[5];assign ID_tmp[4] = ID_in[15]^ID_in[4];assign ID_tmp[3] = ID_in[15]^ID_in[3];assign ID_tmp[2] = ID_in[15]^ID_in[2];assign ID_tmp[1] = ID_in[15]^ID_in[1];assign ID_tmp[0] = ID_in[15]^ID_in[0]; //assign test[1:0]=out_index[1:0];//assign test[3:2]=addrb[1:0];assign test[3:0]=MOD_DATA_TMP[3:0];assign test[7:4]=MOD_DATA[7:4];/*always@(QD_tmp or ID_tmp) if(ID_tmp>=QD_tmp) MOD_DATA_TMP=ID_tmp+QD_tmp/2; else MOD_DATA_TMP=QD_tmp+ID_tmp/2;*/always@(posedge CLK_FPGA or negedge RESET) if(!RESET) MOD_DATA_TMP <=16'h0; else if(ID_tmp>=QD_tmp) MOD_DATA_TMP <=(ID_tmp+QD_tmp/2)/2+16'h8000; else MOD_DATA_TMP <=(QD_tmp+ID_tmp/2)/2+16'h8000;/*moddpram moddpram ( .addra(out_index), .addrb(addrb), .clka(CLK_FPGA), .clkb(CLK_MOD_in), .dina(MOD_DATA_TMP), .doutb(MOD_DATA), .wea(core_d_valid) );*/always@(posedge CLK_MOD_in or negedge RESET) if(!RESET) addrb<=13'h0; else if(size_we) addrb<=13'h0; else addrb<=addrb+1'b1;endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -