用Verilog实现题示电路实现四位二进制无符号数乘法计算(a3a2a1a0Xb3b2b1b0)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(二) 设计电路
该运算可由如下电路实现:
运算电路
-6-
(三)程序编写
根据电路,编写如下程序: module yunsuan(A,B,D); input [4:1] A,B; output[2*4:1] D; reg [2*4:1] D; integer i; always @(*) begin D=0; for(i=1;i<=4;i=i+1) if(B[i]) D=D+(A<<(i-1)); end endmodule
-8-
得到如下实验结果:
经过测试, 程序能够顺利执行四位二进制数的乘法, 计算结果与实际值符合。
三.设计总结
我们采用了分工合作, 互补互助的方式完成了此次设计。我们每人先设计其 中一道题目,然后交换彼此的设计与仿真结果,进行检查改进,最终顺利完成了 设计任务。 通过本次课程设计,基本掌握了由要求设计电路、由电路编写 VERILOG 语 言、 调试程序并解决问题的方式方法,使我们对于硬件描述语言有了一个基本的 了解,加深了对数电理论知识及其运用的理解能力。 本次设计最大的收获应该是学会了如何在设计中发现问题并解决问题, 然后 是学会了 Multisim 软件的基本使用方法。
-7-
.D(D) ); initial begin // Initialize Inputs A = 0; B = 0; // Wait 100 ns for global reset to finish #100; // Add stimulus here A=4'b1011; B=4'b1100; #100; A=4'b1000; B=4'b1111; #100; A=4'b1010; B=4'b0101; #100; end endmodule
(四)程序测试
将程序编入 MUTISIM 中进行仿真操作,继续输入如下测试程序: module yunsuan_tb; // Inputs reg [4:1] A; reg [4:1] B; // Outputs wire [8:1] D; // Instantiate the Unit Under Test (UUT) multiply uut ( .A(A), .B(B),
-1-
一.基本部分:请用 Verilog 实现以下电路:
(一)电路图设计思路
图示电路 z5、z4、z3、z2、z1、z0 分别输出 a、b 端口输入信号的与、与非、 或、或非、异或、同或信号,其中,与(and) 、或(or) 、异或(xor)可直接由 Verilog 语言获得, 而与非、 或非、 同或则可分别在与、 或、 异或的基础上取非 (not) 获得。
数字电子技术 课 题 设 计
设计成员: 设计题目:
用 Verilog 实现题示电路 实现四位二进制无符号数乘法计算(a3a2a1a0Xb3b2b1b0)
学 专
院: 业:
电气信息学院 电气工程及其自动化 刘婕 2017 年 5 月
任课教师: 设计时间:
目录
一.基本部分:请用 Verilog 实现以下电路: ....................................................- 2 (一)电路图 ................................................................................................- 2 (二)设计思路 ............................................................................................- 3 (三)程序编写 ............................................................................................- 3 (四)仿真图形 ............................................................................................- 3 二.加分部分:实现四位二进制无符号数乘法计算(a3a2a1a0Xb3b2b1b0) - 6 (一)设计思路 ............................................................................................- 6 (二)设计电路 ............................................................................................- 6 (三)程序编写 ............................................................................................- 7 (四)程序测试 ............................................................................................- 7 三.设计总结 ...................................................................................................- 9 -
(三)程序编写
module mendianlu(input a,b,output z0,z1,z2,z3,z4,z5); and (z5,a,b); not (z4,z5); or (z3,a,b); not (z2,z3); xor (z1,a,b); not (z0,z1); endmodule
(四)仿真图形
将程序编入 MUTISIM 中进行仿真操作,分别使(a,b)=(0,0) (0,1) (1,0) (1,1) ,即分别输入: (1)initial begin a = 0; b = 0; #100; end (2)initial begin a = 0; b = 1; #100; end (3)initial begin a = 1; b = 0; #100; end
-3-
(4)initial begin a = 1; b = 1; #100; end 分别得到如下波形:
a=0,b=0
a=0,b=1
-4-
a=1,b=0
a=1,b=1
-5-
二.加分部分:实现四位二进制无符号数乘法计算 (a3a2a1a0Xb3b2b1b0)
(一) 设计思路
题设乘数和被乘数都是 4 位的二进制数, 两个 4 位的二进制数相 乘 , 乘 积 位 8 位 。 可 以 先 求 得 Ni 与 M 的 乘 积 , 再 将 Ni 与 M 的 乘 积 与前一个周期右移的部分积之和相加, 然后将第二步的结果右移一位 得 到 新 的 部 分 积 之 和 ,为 下 一 个 周 期 做 准 备 ,如 此 进 行 四 个 周 期 。因 此 , 可 用 74LS283 作为加法器,同时和与门共同搭接完成整个四位二进制乘法 器电路。 即使用分解相乘和移位相加的思想来实现本程序。首先按位输入两个四 位二进制数:被乘数 A 和乘数 B,运用 for 循环语句,通过判断乘数 B 将 A 按位 循环移位相加,最后得到 A 和 B 的乘积。
-9-