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

📄 gateen.v

📁 根据外部控制指令和送入的波形参数
💻 V
📖 第 1 页 / 共 2 页
字号:
//这里由于帧输出,积累到8-10个PRF点数后,高低重频的PRF点数还不相同,//因此输出到DPC_ram的地址如何处理?//由于DPC_RAM的组成有2块拼接的,前64K,后16K;片选的输出状态要考虑;module gate_en(//              CLK_50M,              CLK_24M,	           CLK_33M,              CLK_MOD,	               CLK_DA1,//              CLK_FPGA,              FRAME_SYN,              RESET,//              prf_in,        //?没被使用?              PRF_SEL,              work_mode,              core_enable,              core_busy,      //因为乒乓操作是按PRF来做的,一个PRF做乒,下一个做乓,              core_ready,     //rfd;              core_d_valid,//              frame_prf_num,   //?没被使用?              out_index,              sel_ad_out,        //按PRF翻转,最好在CORE_BUSY后就切换;                              //这里不转接CORE地址,主要是考虑避免额外的延时;                                       //因为外部地址由定时FPGA产生,所以不需额外产生地址。              read_ad,              cs_ad,              read_ad_en,                            DPC_OUT_CS_P1,    //按帧同步操作,积累到8-10个PRF转换输RAM区-64K;              DPC_OUT_CS_P2,                                                //-16K;              DPC_OUT_CS_Q1,    //按帧同步操作,积累到8-10个PRF转换输出乓RAM区-64K;              DPC_OUT_CS_Q2,                                                //-16K;              DPC_WEP,          //DPC写乒RAM;              DPC_WEQ,          //DPC写乓RAM;              DPC_OUT_ADDR,				  DSP_IN_CS_P1,				  DSP_IN_CS_P2,				  DSP_IN_CS_Q1,				  DSP_IN_CS_Q2,              REF_RAM4K_SEL,              REF_RAM8K_SEL,				  DPC_SEL_PQ,				  ADSP_MS,				  test              );//input                CLK_50M;input                CLK_24M;input                CLK_33M;input                RESET;input                FRAME_SYN;input                core_busy;input                core_ready;    //1有效input                core_d_valid;input                work_mode;//input                prf_in;//input  [4:0]         frame_prf_num;input  [12:0]        out_index;input                PRF_SEL; input   [2:0]        ADSP_MS;output               CLK_MOD;output               CLK_DA1;//output               CLK_FPGA;output               sel_ad_out;output               DPC_OUT_CS_P1;        //0有效;output               DPC_OUT_CS_P2;output               DPC_OUT_CS_Q1;output               DPC_OUT_CS_Q2;output               DSP_IN_CS_P1;        //0有效;output               DSP_IN_CS_P2;output               DSP_IN_CS_Q1;output               DSP_IN_CS_Q2;output               DPC_WEP;output               DPC_WEQ;output[15:0]         DPC_OUT_ADDR;output               REF_RAM4K_SEL;output               REF_RAM8K_SEL;output               core_enable;output               read_ad;        //rfd 触发;output               cs_ad;          //可强制为0;有效output               read_ad_en;     //rfd 触发,0有效output               DPC_SEL_PQ;output  [7:0]        test;reg              CLK_MOD;reg              CLK_DA1;//reg [15:0]       clksum1;reg [15:0]       clksum2;reg              sel_ad_out;reg              DPC_OUT_CS_P1;reg              DPC_OUT_CS_P2;reg              DPC_OUT_CS_Q1;reg              DPC_OUT_CS_Q2;wire              DSP_IN_CS_P1;wire              DSP_IN_CS_P2;wire              DSP_IN_CS_Q1;wire              DSP_IN_CS_Q2;reg              cs_ad;reg              DPC_SEL_PQ;    //1:P channel 0:Q channelreg[4:0]        busy_cnt; reg             DPC_RAM_SEL;reg[2:0]        DPC_ADDR_BASE1;   //共16位;可以通过预制相应地址线实现超出范围地址的寻址;前64K;reg[2:0]        DPC_ADDR_BASE2;   //共16位;后16Kwire[2:0]       DPC_ADDR_BASE;wire            DPC_ADDR_SWITCH; wire            core_busy_negedge;wire            FRAME_SYN_posedge;wire            REF_RAM4K_SEL;wire            REF_RAM8K_SEL;reg            core_enable;wire            read_ad;wire            read_ad_en;reg [15:0]      DPC_OUT_ADDR;wire            DPC_WEP;wire            DPC_WEQ;reg             core_busy_delay;reg             FRAME_SYN_delay;//reg             CLK_FPGA;reg             temp;reg             temp_delay;wire            prf_cnt_posedge;   wire [7:0]      test;    wire            DSP_CS_1;wire            DSP_CS_2;reg  [15:0]     DPC_OUT_ADDR1;
reg  [15:0]     DPC_OUT_ADDR2;reg  [15:0]     DPC_OUT_ADDR3;assign prf_cnt_posedge =(temp)&&(~temp_delay);assign DPC_ADDR_SWITCH =(((PRF_SEL==0)&&(prf_cnt_posedge))||((PRF_SEL==1)&&(prf_cnt_posedge)))?1'b1:1'b0;            assign core_busy_negedge =(core_busy_delay)&&(~core_busy);assign FRAME_SYN_posedge =(~FRAME_SYN_delay)&&(FRAME_SYN);assign REF_RAM4K_SEL =(PRF_SEL==1'b0)?1'b0:1'b1;assign REF_RAM8K_SEL =(PRF_SEL==1'b0)?1'b1:1'b0;//assign core_enable  =(work_mode==1'b1)?1'b0:1'b1;   //脉压不脉压由这里控制;assign read_ad      =(core_ready==1'b1)?1'b1:1'b0;assign read_ad_en   =(core_ready==1'b1)?1'b1:1'b0;assign DPC_ADDR_BASE =(DPC_RAM_SEL==1'b1)?DPC_ADDR_BASE1:DPC_ADDR_BASE2;//assign DPC_OUT_ADDR ={3'b0,out_index};                      //地址组合;测试用//assign DPC_OUT_ADDR1 ={DPC_ADDR_BASE,out_index};               //地址组合?assign DPC_WEP =((core_d_valid==1'b1)&&(DPC_SEL_PQ==1'b1))?CLK_50M:1'b1;   //0有效;PRAM写
always@(posedge CLK_33M or negedge RESET)  if(!RESET)    DPC_OUT_ADDR1<=1'b0;  else    DPC_OUT_ADDR1<={DPC_ADDR_BASE,out_index};

always@(posedge CLK_33M or negedge RESET)  if(!RESET)    DPC_OUT_ADDR2<=1'b0;  else    DPC_OUT_ADDR2<=DPC_OUT_ADDR1;

always@(posedge CLK_33M or negedge RESET)  if(!RESET)    DPC_OUT_ADDR3<=1'b0;  else    DPC_OUT_ADDR3<=DPC_OUT_ADDR2;

always@(posedge CLK_33M or negedge RESET)  if(!RESET)    DPC_OUT_ADDR<=1'b0;  else    DPC_OUT_ADDR<=DPC_OUT_ADDR3;


assign DPC_WEQ =((core_d_valid==1'b1)&&(DPC_SEL_PQ==1'b0))?CLK_33M:1'b1;   //0有效;QRAM写     assign DPC_WEP =((core_d_valid==1'b1)&&(DPC_SEL_PQ==1'b1))?CLK_33M:1'b1;assign test[0] =DPC_ADDR_BASE2[0];//DSP_IN_CS_P2;//                  //9assign test[1] =DPC_ADDR_BASE2[1];//DPC_WEP;//DPC_RAM_SEL;           //10assign test[3] =DPC_ADDR_SWITCH; // DPC_WEQ;//                  //11assign test[2] =DPC_ADDR_BASE2[2];//; DSP_CS_1;//        //12assign test[4] =DPC_RAM_SEL;//FRAME_SYN;// DSP_CS_2;//              //13assign test[5] =DPC_ADDR_BASE1[0];//prf_cnt_posedge; //DSP_IN_CS_Q1;//                   //14assign test[6] =DPC_ADDR_BASE1[1];//DSP_IN_CS_Q2;//PRF_SEL;                            //15assign test[7] =DPC_ADDR_BASE1[2];//DSP_IN_CS_P1;//core_busy_negedge;                  //16assign DSP_CS_1 =(ADSP_MS[2:1]==2'b01)?1'b1:1'b0;assign DSP_CS_2 =(ADSP_MS[2:1]==2'b10)?1'b1:1'b0;always@(busy_cnt)  if(busy_cnt==5'h8)      //if(busy_cnt==5'ha)   //应该是8的时候翻一次,8*8K=64K;    temp=1'b1;  else    temp=1'b0;always@(posedge CLK_33M or negedge RESET)  if(!RESET)    temp_delay<=1'b0;  else    temp_delay<=temp;        always@(posedge CLK_33M or negedge RESET)   //core就使能   if(!RESET)      core_enable <=1'b1;   else      core_enable <=1'b1;always@(posedge CLK_33M or negedge RESET)   if(!RESET)      begin        DPC_ADDR_BASE1 <=3'h0;        DPC_ADDR_BASE2 <=3'h0;      end   else      if(FRAME_SYN_posedge==1)               //1010+,考虑在桢同步下,DPC基地址要复位;         begin           DPC_ADDR_BASE1 <=3'h0;           DPC_ADDR_BASE2 <=3'h0;         end       else              if(core_busy_negedge ==1)            if(DPC_RAM_SEL ==1'b1)                           //前64K地址               DPC_ADDR_BASE1 <=DPC_ADDR_BASE1+3'h1;               else               DPC_ADDR_BASE2 <=DPC_ADDR_BASE2+3'h1;  always@(posedge CLK_33M or negedge RESET)   if(!RESET)      core_busy_delay <=1'b0;   else      core_busy_delay <=core_busy;     always@(posedge CLK_33M or negedge RESET)   if(!RESET)      FRAME_SYN_delay <=1'b0;   else      FRAME_SYN_delay <=FRAME_SYN;/*always @(posedge CLK_50M or negedge RESET)    if(!RESET)         clksum1  <=  16'h0;    else       if(clksum1==16'h1)     //2DIVIDE FREQUENCE;          clksum1  <=  16'h0;       else          clksum1  <=  clksum1  + 1'h1;*/ /*always@(posedge CLK_24M or negedge RESET)    if(!RESET)         clksum2  <=   16'h0;     else         if(clksum2 ==16'h3)               clksum2   <=16'h0;         else           clksum2   <=clksum2  +16'h1;			  */always@(posedge CLK_33M or negedge RESET)   //5M  =40/8;    if(!RESET)         clksum2  <=   16'h0;     else

⌨️ 快捷键说明

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