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

📄 partmul.v

📁 Verilog 编写的fir滤波器
💻 V
字号:
module partmul(hin,x,reset,part1,part2,part3,part4,temp);   //部分积产生模块input [7:0] hin;       //输入的h(i)input [8:0] x;         //输入的型x(i)+x(N-i-1)input reset; output [9:0] part1,part2,part3,part4;        //产生的四个部分积output [7:0] temp;        //取反加1和取反加2产生的另一个部分积reg [9:0] part1,part2,part3,part4;wire [2:0] d1,d2,d3,d4;   //四个booth编码产生的信号reg [7:0] temp; booth booth1(hin[1],hin[0],1'b0,d1);booth booth2(hin[3],hin[2],hin[1],d2);booth booth3(hin[5],hin[4],hin[3],d3);booth booth4(hin[7],hin[6],hin[5],d4);always@(d1 or d2 or d3 or d4 or x or reset)  begin  if(!reset)     begin      part1=0;      part2=0;      part3=0;      part4=0;      temp=0;    end  else    begin     case(d1)          //第一个部分积       3'b000: begin part1=0; temp[1:0]=0; end           //当booth编码为0时输出为0       3'b001: begin part1[8:0]=x; part1[9]=x[8]; temp[1:0]=0;  end     //当booth编码为1时输出为x       3'b010: begin part1[9:1]=x; part1[0]=0; temp[1:0]=0;  end         //当booth编码为2时输出为左移后的x       3'b110: begin part1[9:1]=~x; part1[0]=0; temp[1]=1; temp[0]=0; end     //当booth编码为-忒时输出为取反后的x,且temp高位为1       3'b111: begin part1[8:0]=~x; part1[9]=~x[8]; temp[0]=1; temp[1]=0; end  //当booth编码为-1时输出为取反后的x,且temp低位为1       default: begin part1=0; temp[1:0]=0; end      endcase     case(d2)          //第二个部分积       3'b000: begin part2=0; temp[3:2]=0; end       3'b001: begin part2[8:0]=x; part2[9]=x[8]; temp[3:2]=0;  end       3'b010: begin part2[9:1]=x; part2[0]=0; temp[3:2]=0;  end       3'b110: begin part2[9:1]=~x; part2[0]=0; temp[3]=1; temp[2]=0; end       3'b111: begin part2[8:0]=~x; part2[9]=~x[8]; temp[2]=1; temp[3]=0; end       default: begin part2=0; temp[3:2]=0; end      endcase     case(d3)           //第三个部分积       3'b000: begin part3=0; temp[5:4]=0; end       3'b001: begin part3[8:0]=x; part3[9]=x[8]; temp[5:4]=0;  end       3'b010: begin part3[9:1]=x; part3[0]=0; temp[5:4]=0;  end       3'b110: begin part3[9:1]=~x; part3[0]=0; temp[5]=1; temp[4]=0; end       3'b111: begin part3[8:0]=~x; part3[9]=~x[8]; temp[4]=1; temp[5]=0; end       default: begin part3=0; temp[5:4]=0; end      endcase     case(d4)            //第四个部分积       3'b000: begin part4=0; temp[7:6]=0; end       3'b001: begin part4[8:0]=x; part4[9]=x[8]; temp[7:6]=0;  end       3'b010: begin part4[9:1]=x; part4[0]=0; temp[7:6]=0;  end       3'b110: begin part4[9:1]=~x; part4[0]=0; temp[7]=1; temp[6]=0; end       3'b111: begin part4[8:0]=~x; part4[9]=~x[8]; temp[6]=1; temp[7]=0; end       default: begin part4=0; temp[7:6]=0; end      endcase    end   endendmodule

⌨️ 快捷键说明

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