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

📄 wch_fht.v

📁 Altera FPGA CPLD设计高级篇电子书籍
💻 V
字号:
module wch_fht(Clk,Reset,
           PreFhtStar,
           In0,In1,In2,In3,In4,In5,In6,In7,
           In8,In9,In10,In11,In12,In13,In14,In15,
           Out0,Out1,Out2,Out3,Out4,Out5,Out6,Out7,Out8,
           Out9,Out10,Out11,Out12,Out13,Out14,Out15
           );
input Clk;
input Reset;
input PreFhtStar;
input [11:0] In0,In1,In2,In3,In4,In5,In6,In7;
input [11:0] In8,In9,In10,In11,In12,In13,In14,In15;
output [15:0] Out0,Out1,Out2,Out3,Out4,Out5,Out6,Out7;
output [15:0] Out8,Out9,Out10,Out11,Out12,Out13,Out14,Out15;

reg [15:0] Out0,Out1,Out2,Out3,Out4,Out5,Out6,Out7;
reg [15:0] Out8,Out9,Out10,Out11,Out12,Out13,Out14,Out15;
wire [15:0] Temp0,Temp1,Temp2,Temp3,Temp4,Temp5,Temp6,Temp7;
wire [15:0] Temp8,Temp9,Temp10,Temp11,Temp12,Temp13,Temp14,Temp15;
reg [2:0] Cnt3;//count from 0 to 4,when Reset Cnt3=7;
reg FhtEn;//Enable fht culculate

always @(posedge Clk or negedge Reset)
begin 
   if (!Reset)
      Cnt3<= #1 3'b111;  
 
   else
   begin
       if(PreFhtStar)
       Cnt3<= #1 3'b100;
       else 
       Cnt3<= #1 Cnt3-1;
   end
end

always @(posedge Clk or negedge Reset)
if (!Reset)
   FhtEn<= #1 0;
else
begin
     if (PreFhtStar)
     FhtEn<= #1 1;
     if  (Cnt3==1)
     FhtEn<= #1 0;
end
       

      
        assign Temp0=(Cnt3==4)?{In0[11],In0[11],In0[11],In0[11],In0}:Out0;
        assign Temp1=(Cnt3==4)?{In1[11],In1[11],In1[11],In1[11],In1}:Out1;
        assign Temp2=(Cnt3==4)?{In2[11],In2[11],In2[11],In2[11],In2}:Out2;
        assign Temp3=(Cnt3==4)?{In3[11],In3[11],In3[11],In3[11],In3}:Out3;
        assign Temp4=(Cnt3==4)?{In4[11],In4[11],In4[11],In4[11],In4}:Out4;
        assign Temp5=(Cnt3==4)?{In5[11],In5[11],In5[11],In5[11],In5}:Out5;
        assign Temp6=(Cnt3==4)?{In6[11],In6[11],In6[11],In6[11],In6}:Out6;
        assign Temp7=(Cnt3==4)?{In7[11],In7[11],In7[11],In7[11],In7}:Out7;
        assign Temp8=(Cnt3==4)?{In8[11],In8[11],In8[11],In8[11],In8}:Out8;
        assign Temp9=(Cnt3==4)?{In9[11],In9[11],In9[11],In9[11],In9}:Out9;
        assign Temp10=(Cnt3==4)?{In10[11],In10[11],In10[11],In10[11],In10}:Out10;
        assign Temp11=(Cnt3==4)?{In11[11],In11[11],In11[11],In11[11],In11}:Out11;
        assign Temp12=(Cnt3==4)?{In12[11],In12[11],In12[11],In12[11],In12}:Out12;
        assign Temp13=(Cnt3==4)?{In13[11],In13[11],In13[11],In13[11],In13}:Out13;
        assign Temp14=(Cnt3==4)?{In14[11],In14[11],In14[11],In14[11],In14}:Out14;
        assign Temp15=(Cnt3==4)?{In15[11],In15[11],In15[11],In15[11],In15}:Out15;


always @(posedge Clk or negedge Reset)
begin
if (!Reset)
begin

    Out0<=0;Out1<=0;Out2<=0;Out3<=0;Out4<=0;Out5<=0;Out6<=0;Out7<=0;
    Out8<=0;Out9<=0;Out10<=0;Out11<=0;Out12<=0;Out13<=0;Out14<=0;Out15<=0;
end
else
begin
  if ((Cnt3<=4) && Cnt3>=0 && FhtEn)
    begin
    Out0[15:0]<= #1 Temp0[15:0]+Temp8[15:0];
    Out1[15:0]<= #1 Temp0[15:0]-Temp8[15:0];
    Out2[15:0]<= #1 Temp1[15:0]+Temp9[15:0];
    Out3[15:0]<= #1 Temp1[15:0]-Temp9[15:0];
    Out4[15:0]<= #1 Temp2[15:0]+Temp10[15:0];
    Out5[15:0]<= #1 Temp2[15:0]-Temp10[15:0];
    Out6[15:0]<= #1 Temp3[15:0]+Temp11[15:0];
    Out7[15:0]<= #1 Temp3[15:0]-Temp11[15:0];
    Out8[15:0]<= #1 Temp4[15:0]+Temp12[15:0];
    Out9[15:0]<= #1 Temp4[15:0]-Temp12[15:0];
    Out10[15:0]<= #1 Temp5[15:0]+Temp13[15:0];
    Out11[15:0]<= #1 Temp5[15:0]-Temp13[15:0];
    Out12[15:0]<= #1 Temp6[15:0]+Temp14[15:0];
    Out13[15:0]<= #1 Temp6[15:0]-Temp14[15:0];
    Out14[15:0]<= #1 Temp7[15:0]+Temp15[15:0];
    Out15[15:0]<= #1 Temp7[15:0]-Temp15[15:0];
    end
    
end    
end
endmodule

⌨️ 快捷键说明

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