Verilog数字电路设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

被乘数A 乘数B 部分积0 部分积1 A左移 部分积2 A左移 积P
1011 × 1101 1011 0000 01011 1011 110111 1011 10001111
4×4移位相加乘法操作示意图
8位移位相加乘法器顶层设计
8位移位相加乘法器时序仿真波形
(3)加法树乘法器
加法树乘法器示意图
(4)流水线加法器
module adder8(cout,sum,a,b,cin,enable); input[7:0] a,b; input cin,enable; output[7:0] sum; output cout; reg cout; reg[7:0] sum; reg[3:0] tempa,tempb,firsts; reg firstc; always @(posedge enable) begin {firstc,firsts}=a[3:0]+b[3:0]+cin; tempa=a[7:4]; tempb=b[7:4]; end always @(posedge enable) begin {cout,sum[7:4]}=tempa+tempb+firstc; sum[3:0]=firsts; end endmodule
assign G[4]=a[4]&b[4]; assign P[4]=a[4]|b[4]; assign C[4]=G[3]|(P[3]&C[3]); assign sum[4]=G[2]^P[2]^C[2]; assign G[5]=a[5]&b[5]; assign P[5]=a[5]|b[5]; assign C[5]=G[4]|(P[4]&C[4]); assign sum[5]=G[5]^P[5]^C[5]; assign G[6]=a[6]&b[6]; assign P[6]=a[6]|b[6]; assign C[6]=G[5]|(P[5]&C[5]); assign sum[6]=G[6]^P[6]^C[6]; assign G[7]=a[7]&b[7]; assign P[7]=a[7]|b[7]; assign C[7]=G[6]|(P[6]&C[6]); assign sum[7]=G[7]^P[7]^C[7]; assign cout=G[7]|(P[7]&C[7]); endmodule
(4)查找表乘法器
利用Verilog语言的乘法操作符,可很容 易地实现并行乘法器,并可由EDA综合软 件自动转化为电路网表结构

8×8并行乘法器的门级综合原理图
(2)移位相加乘法器

移位相加乘法器将乘法 变为加法实现,其设计 思路是:乘法通过逐次 移位相加实现,每次判 断乘数的最低位,若为 1则将被乘数移位相加。
module add_ahead(sum,cout,a,b,cin); input[7:0] a,b; input cin; output[7:0] sum; output cout; wire[7:0] G,P; wire[7:0] C,sum; assign G[0]=a[0]&b[0]; assign P[0]=a[0]|b[0]; assign C[0]=cin; assign sum[0]=G[0]^P[0]^C[0]; assign G[1]=a[1]&b[1]; assign P[1]=a[1]|b[1]; assign C[1]=G[0]|(P[0]&cin); assign sum[1]=G[1]^P[1]^C[1]; assign G[2]=a[2]&b[2]; assign P[2]=a[2]|b[2]; assign C[2]=G[1]|(P[1]&C[1]); assign sum[2]=G[2]^P[2]^C[2]; assign G[3]=a[3]&b[3]; assign P[3]=a[3]|b[3]; assign C[3]=G[2]|(P[2]&C[2]); assign sum[3]=G[3]^P[3]^C[3];
(2)并行加法器
module add_bx(cout,sum,a,b,cin); input[7:0] a,b; input cin; output[7:0] sum; output cout; assign {cout,sum}=a+b+cin; endmodule
全部由逻辑门实现
(3) 8位超前进位加法器
第9章 Verilog数字电路设计
9.1 加法器
◆ 级连加法器 ◆ 并行加法器 ◆ 超前进位加法器
◆ 流水线wk.baidu.com法器
(1)8位级连加法器
8位级连加法器代码
module add_jl(sum,cout,a,b,cin); input[7:0] a,b; input cin; output[7:0] sum; output cout; full_add1 f0(a[0],b[0],cin,sum[0],cin1); full_add1 f1(a[1],b[1],cin1,sum[1],cin2); full_add1 f2(a[2],b[2],cin2,sum[2],cin3); full_add1 f3(a[3],b[3],cin3,sum[3],cin4); full_add1 f4(a[4],b[4],cin4,sum[4],cin5); full_add1 f5(a[5],b[5],cin5,sum[5],cin6); full_add1 f6(a[6],b[6],cin6,sum[6],cin7); full_add1 f7(a[7],b[7],cin7,sum[7],cout); endmodule
9.2 乘法器
◆ 并行乘法器
◆ 移位相加
◆ 查找表
◆ 加法树
(1)并行乘法器
module mult(outcome,a,b); parameter size=8; input[size:1] a,b; output[2*size:1] outcome; assign outcome=a*b; endmodule
相关文档
最新文档