2位BCD码加法器.docx
- 文档编号:12865044
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:12
- 大小:433.78KB
2位BCD码加法器.docx
《2位BCD码加法器.docx》由会员分享,可在线阅读,更多相关《2位BCD码加法器.docx(12页珍藏版)》请在冰点文库上搜索。
2位BCD码加法器
深圳大学实验报告
课程名称:
可编程ASIC设计
实验项目名称:
2位BCD码加法器
学院:
电子科学与技术学院
专业:
电子科学与技术
指导教师:
刘春平
报告人:
学号:
班级:
电子2班
实验报告提交时间:
2015-3-9
一、设计原理
图12位BCD码加法器整体框架图
本实验制作一个2位BCD码加法器,其整体框架图如图1所示。
本制作用VerilogHDL编程,在DE2平台上实现加数、被加数、和分别用数码管显示。
整体由2个子模块构成:
2位BCD码加法器模块、七段数码管译码器模块(7个)。
图中A0、A1、B0、B1、S0、S1均为4bit的端口,S2为1bit的端口,A0为第一个加数的个位,A2为第一个加数的十位,B0为第二个加数的个位,B1为第二个加数的十位,S0为和的个位,S1为和的十位,S2为和的百位(进位)。
二、源程序代码
//①顶层模块
moduleBCDadder2(A0,A1,B0,B1,OUT0,OUT1,OUT2,OUT3,OUT4,OUT5,OUT6,OUT7);
input[3:
0]A0,A1,B0,B1;
output[6:
0]OUT0,OUT1,OUT2,OUT3,OUT4,OUT5,OUT6,OUT7;
wire[3:
0]S1,S0;
wireS2;
adder2adder(A0,A1,B0,B1,S0,S1,S2);
decode4_7U0(OUT0,S0);
decode4_7U1(OUT1,S1);
decode4_7U2(OUT2,S2);
decode4_7U3(OUT3,A0);
decode4_7U4(OUT4,A1);
decode4_7U5(OUT5,B0);
decode4_7U6(OUT6,B1);
decode4_7U7(OUT7,0);//OUT7只是为了将无用的数码管置0
endmodule
//②2位BCD码加法器模块
moduleadder2(A0,A1,B0,B1,S0,S1,S2);
input[3:
0]A0,A1,B0,B1;
output[3:
0]S0,S1;
outputS2;
regS2;
reg[3:
0]S0,S1;
reg[4:
0]T1,T2,Z1,Z2;
regC1,C2;
always@(A0orA1orB0orB1)
begin
T1<=A0+B0;
if(T1>9)
begin
Z1<=10;
C1<=1;
end
else
begin
Z1<=0;
C1<=0;
end
S0<=T1-Z1;
T2<=A1+B1+C1;
if(T2>9)
begin
Z2<=10;
C2<=1;
end
else
begin
Z2<=0;
C2<=0;
end
S1<=T2-Z2;
S2<=C2;
end
endmodule
//③七段数码管译码器模块
moduledecode4_7(decodeout,indec);
output[6:
0]decodeout;
input[3:
0]indec;//4位十进制表示1位十进制数
reg[6:
0]decodeout;
always@(indec)
begin
case(indec)//用case语句进行译码//七段数码管为共阴连接
4'd0:
decodeout=7'b1000000;
4'd1:
decodeout=7'b1111001;
4'd2:
decodeout=7'b0100100;
4'd3:
decodeout=7'b0110000;
4'd4:
decodeout=7'b0011001;
4'd5:
decodeout=7'b0010010;
4'd6:
decodeout=7'b0000010;
4'd7:
decodeout=7'b1111000;
4'd8:
decodeout=7'b0000000;
4'd9:
decodeout=7'b0010000;
default:
decodeout=7'bz;
endcase
end
endmodule
三、仿真结果
1、2位BCD码加法器模块仿真结果如图2所示:
图22位BCD码加法器模块仿真结果
2、译码器模块仿真结果如图3所示:
图3译码器模块仿真结果
3、顶层模块仿真结果如图4所示:
图4顶层模块仿真结果
四、实验结果
1、模块引脚分配如图5所示:
图5模块引脚分配
2、DE2演示结果如下:
如图6、图7所示,数码管为加数、被加数、和的显示模块,从右到左,前三个为和结果,第五和第六个为加数,第七和第八个为被加数;下面一排从右到左16个开关为输入加数和被加数。
图6个位有进位
图7十位有进位
从图6可知,13+39=52,个位进位正常,相加结果正确;
从图7可知,91+33=124,十位进位正常,相加结果也正确。
为了数码管显示明了,程序中已将第4个数码管置0。
以上仿真结果和实验结果说明了此次2位BCD码加法器的设计取得了成功。
五、实验总结
本实验内容为制作一个2位BCD码加法器。
由于上学期已经学习了Verilog和QuartusII软件,相对来说不是很难。
但是实验过程中也遇到了很多小问题,例如Quartus软件本身是按二进制进行运算,仿真较困难;引脚较多,分配容易出错。
遇到一个较棘手的问题就是,Quartus在仿真时默认使用时序仿真,会产生延时,使仿真结果不太符合。
经过上网查找资料,学会了功能仿真,最终仿真的结果则很好。
经过自己的思考和努力,最终解决了以上问题。
通过自己课下的努力和钻研,最终较快较好地成功完成了实验,这给了我极大的兴趣和信心。
从一开始忘记软件的使用过程,到一步一步编程、调试,确实在课下花了很多时间和心思。
但看着自己制作的成果,深感一切都值得。
这也让我体会到,要想学好这门课,仅仅靠听老师上课讲课是没有用的,只有通过自己钻研、自己实践,才能真正掌握知识和运用已学知识。
在接下来的学习时间,我会更加认真去学习,认真听老师讲课,不懂就问,并且加强自己的实践能力,真正学好相关知识,学好本门课。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BCD 加法器
![提示](https://static.bingdoc.com/images/bang_tan.gif)