VerilogHDL乘法器

上传人:仙*** 文档编号:34041048 上传时间:2021-10-20 格式:DOC 页数:14 大小:174.01KB
收藏 版权申诉 举报 下载
VerilogHDL乘法器_第1页
第1页 / 共14页
VerilogHDL乘法器_第2页
第2页 / 共14页
VerilogHDL乘法器_第3页
第3页 / 共14页
资源描述:

《VerilogHDL乘法器》由会员分享,可在线阅读,更多相关《VerilogHDL乘法器(14页珍藏版)》请在装配图网上搜索。

1、 目录一、设计的性质、目的和任务2二、设计课题要求21、基本要求22、设计内容2三、总体设计31、输入模块32、乘法模块43、选择模块54、显示模块75、符号模块11四、总体调试与仿真结果13五、调试中遇到的问题及解决的方法13六、课程设计过程中的体会和感想14七、建议 15一、 设计的性质、目的和任务熟悉EDA设计方法、设计语言和开发软件及设计实例,利用掌握的一种硬件描述语言(AHDL/VHDL/Verilog HDL)和EDA开发工具(MaxPlus)进行数字系统的设计开发及仿真。通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析

2、和解决问题的能力,培养学生的创新精神。二、 设计课题要求(1)基本要求掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。(2)设计内容设计一个两个5位数相乘的乘法器。用发光二极管显示输入数值,用7段显示器显示十进制结果。乘数和被乘数分两次输入。在输入乘数和被乘数时,要求显示十进制输入数据。输入显示和计算结果显示,采用分时显示方式进行,可参见计算器的显示功能。注意,如果除法功能为引用功能模块,则难度系数将按照1到2.5计算。#设计提示(仅供参考):通常表示带符号二进制数时,最高位为“0”表示“+”号,最高位为

3、“1”表示“-”号,例如,01101表示“+1101”,而11101则表示“-1101”。乘法运算通常采用移位相加方法实现,见简略示意图。最终符号则用两个数的最高位采用“异或”逻辑得到。乘数被乘数移位寄存移位寄存相乘逻辑累加器结果寄存时钟三、 总体设计基于Verilog HDL 硬件语言的乘法器设计(1) 输入模块该模块为乘数和被乘数输入,由ch(表示乘号)、rst(表示复位)控制。当rst=0、ch=0时,输入被乘数AO;当rst=0、ch=1时,输入乘数BO;当rst=1时,无论ch=0或1,输入均为零。程序如下: 生成模块如下:module shuru (date,ch,AO,BO,rs

4、t); input ch; input rst; input 3:0date; output 3:0AO,BO; reg 3:0 AO,BO; always(date) begincase(ch,rst) 2b00: AO=date; 2b10: BO=date; 2b01: AO=4b0000; 2b11: BO=4b0000; default: begin AO=4bx; BO=4bx; end endcaseendendmodule波形仿真如下:仿真输入被乘数10,乘数12;当复位为1时,输入的14和11均无效。 (2) 乘法模块将乘数b的每一位与被乘数a相乘,如果b的该位为0则相乘得0

5、;如果b的该位为1则相乘后左移相应的位数并寄存,最后累加得出最终结果。程序如下: 生成模块如下:module mult(out,a,b,clk);output7:0 out;input3:0 a,b;input clk;wire7:0 out;wire5:0 out1;wire7:0 out2;reg6:0 temp3;reg5:0 temp2;reg4:0 temp1;reg3:0 temp0;function3:0 mult4;input3:0 operand;input sel;beginmult4=(sel)?(operand):4b0000;endendfunctionalways

6、(posedge clk)begintemp0=mult4(a,b0);temp1=(mult4(a,b1)1);temp2=(mult4(a,b2)2);temp3=(mult4(a,b3)3);endassign out1=temp0+temp1;assign out2=temp2+temp3;assign out=out1+out2;endmodule波形仿真如下:仿真11*12(3) 选择模块由ch(表乘号键)、dh(表等号键)控制,当ch=0,dh=0时选择被乘数的数值(ai)和符号(fa);当ch=1,dh=0(即按下乘号键)时选择乘数的数值(bi)和符号(fb);当ch=1,dh

7、=1(即同时按下乘号键和等号键)时选择结果的数值(ci)和符号(fc)。程序如下: 生成模块如下:module choose(ch,dh,ai,bi,ci,fa,fb,fc,out,fo);input fa,fb,fc;input3:0 ai,bi;input7:0 ci;input ch,dh;output fo;output7:0 out;reg fo;reg7:0 out;always(ai or bi or ci)begin case(ch,dh) 2b00: beginout=ai; fo=fa; end 2b10: begin out=bi; fo=fb; end 2b11: be

8、ginout=ci; fo=fc; end default: begin out=8bx; fo=1bx; end endcaseendendmodule波形仿真如下:仿真被乘数为-9,乘数为10,结果为-11,选择结果为fo和out。(4) 显示模块显示模块有LED显示模块和数码管显示模块。LED显示模块输入Ri为四位二进制数,分别取反赋值给L0,L1,L2,L3,由L0,L1,L2,L3控制LED的亮灭(输入1灯亮,输入0灯灭)。程序如下: 生成模块如下:module ledxian(Ri,L0,L1,L2,L3); input 3:0Ri ; output L0,L1,L2,L3; as

9、sign L0=Ri0; assign L1=Ri1; assign L2=Ri2; assign L3=Ri3; endmodule 波形仿真如下: 数码管显示模块二进制转十进制:Step=0时,进行初始化;step=1时,若输入最高位有百位则A3加1,若最高位有十位则A2加1,若最高位只有个位则A1加1;Step=2时,分别将寄存数A3,A2,A1赋值给bai,shi,ge。如此循环直到输入值为0module bdzhuanhuan(clk,DB,bai,shi,ge); input clk;input7:0 DB;output 3:0 bai,shi,ge;reg 3:0 A1,A2,A

10、3,bai,shi,ge;reg 8:0 LDB;reg 2:0 step;always(posedge clk)begincase(step) 0: begin LDB7:0=DB; step=1; A1=0; A2=0; A3=100) begin A3=A3+1; LDB=10)&(LDB100) begin A2=A2+1; LDB=1)&(LDB10) begin A1=LDB; LDB=0; end else begin step=2; end end2:beginbai=A3;shi=A2;ge=A1;step=0;enddefault:step=0;endcaseendendm

11、odule波形仿真如下:仿真输入为159,得到分离结果bai=1,shi=5,ge=9显示译码:控制数码管各段的亮灭达到显示09的目的。module shumaxian(b,s,g,bai,shi,ge);input 3:0bai,shi,ge;output 7:0b,s,g;reg 7:0b,s,g;always (1)begincase(bai) 4d0: b=8b00000011;4d1: b=8b10011111;4d2: b=8b00100101;4d3: b=8b00001101;4d4: b=8b10011001;4d5: b=8b01001001;4d6: b=8b010000

12、01;4d7: b=8b00011111;4d8: b=8b00000001;4d9: b=8b00001001;default: b=8bx;endcaseendalways (1)begincase(shi)4d0: s=8b00000011;4d1: s=8b10011111;4d2: s=8b00100101;4d3: s=8b00001101;4d4: s=8b10011001;4d5: s=8b01001001;4d6: s=8b01000001;4d7: s=8b00011111;4d8: s=8b00000001;4d9: s=8b00001001;default:s=8bx;

13、endcaseendalways (1)begincase(ge)4d0: g=8b00000011;4d1: g=8b10011111;4d2: g=8b00100101;4d3: g=8b00001101;4d4: g=8b10011001;4d5: g=8b01001001;4d6: g=8b01000001;4d7: g=8b00011111;4d8: g=8b00000001;4d9: g=8b00001001;default: g=8bx;endcaseendendmodule波形仿真如下:(5)符号模块用乘号控制,当ch=0(未按下乘号)输入被乘数的符号,当ch=1(按下乘号)输

14、入乘数的符号,程序如下。用异或运算结果的符号。module sign(fin,fa,fb,ch);input ch,fin;output fa,fb;reg fa,fb;always(fin) begin if(ch=0)begin fa=fin;endif(ch=1)beginfb=fin; end end endmodule 符号输出时灭掉数码管除符号位以外的其他段,程序如下module mieguan(in,out,rst);input in,rst;output7:0 out;reg7:0 out;always(1)begincase(in,rst) 2b10: out=8b1111_1101; 2b00: out=8b1111_1111; 2b01: out=8b1111_1111; 2b11: out=8b1111_1111;default: out=8bx;endcaseendendmodule 四、 总体调试与仿真结果总体模块结构图: 总体波形仿真:仿真-9*12,得出结果为数码管对应的二进制数00000011显示为000001001显示为9,10011111显示为1,00100101显示为2,00000001显示为8。符号位11111101显示负号,11111111不显示即为正。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!