简单计算器eda设计最终打印版Word下载.docx
- 文档编号:6369082
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:16
- 大小:200.67KB
简单计算器eda设计最终打印版Word下载.docx
《简单计算器eda设计最终打印版Word下载.docx》由会员分享,可在线阅读,更多相关《简单计算器eda设计最终打印版Word下载.docx(16页珍藏版)》请在冰点文库上搜索。
2.1设计流程图
设计流程如下图,分别用两个数码管表示二位十进制数,用一个case语句表示输入数值采用哪种运算方式,分别用00,01,10,11表示加、减、乘、除。
首先对运算符号进行选择,然后再在各自模块进行计算,用3—8译码器选择从哪个数码管输出。
图1硬件设计流程图
图2输出结果A.B的软件流程图
2.2LED灯接线部分显示
7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。
设计7段译码器,输出信号LED7S的7位分别接如图一数码管的7个段,高位在左,低位在右。
例如当LED7S输出为“1101101”时,数码管的7个段:
g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;
接有高电平的段发亮,于是数码管显示“5”。
注意,这里没有考虑表示小数点的发光管,如果要考虑,需要增加段dp。
LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。
A、静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O埠进行驱动,或者使用如BCD码二-十进位*器*进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O埠多,如驱动5个数码管静态显示则需要5×
8=40根I/O埠来驱动,要知道一个89S51单片机可用的I/O埠才32个呢。
故实际应用时必须增加*驱动器进行驱动,增加了硬体电路的复杂性。
B、动态显示驱动:
数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"
a,b,c,d,e,f,g,dp"
的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。
透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O埠,而且功耗更低。
第三章模块连接
3.1四选一多路器
3.1.1多路器程序设计
通过对四选一多路器设计,对计算器的运算符“+”,“-”,“*”,“/”进行选择
程序如下:
modulejsq(a,b,c,out,out1,out2);
input[7:
0]a,b;
input[1:
0]c;
output[15:
0]out;
output[7:
0]out1,out2;
reg[15:
reg[7:
always@(a,b,c,out)
case(c)
2'
b00:
begin
out1=0;
out2=0;
out=a+b;
end
b01:
out=a-b;
b10:
out=a*b;
b11:
out1=a/b;
out2=a%b;
out={out1,out2};
default:
;
endcase
endmodule
3.1.2四选一多路器仿真图
在软件QuartusII中输入程序,进行仿真
四选一多路器仿真图如下:
图3四选一多路器仿真图
3.1.3四选一多路器仿真波形分析
如图3所示为计四选一多路器的实序仿真图,当输入a为1、b为1、c为00时输出out为2即1+1=2;
当输入a=5,b=4,c=01时输出out=1.即5-4=1,当输入a=9,b=6,c=10时输出out=54,即9*6=54,当输入a=12,b=8,c=11时输出out1=1,out2=4,即商为12/8=1,余数为12%8=4.经此验证分析证明此计算器计算准确无误。
模块设计成功。
3.27段数码管显示
3.2.1数码管程序设计
moduleDECS7S(A,LED7S);
input[3:
0]A;
output[6:
0]LED7S;
reg[6:
always@(A)
begin
case(A)
4'
b0000:
LED7S<
=7'
b0111111;
b0001:
LED7S<
=7'
b0000110;
b0010:
b1011011;
b0011:
b1001111;
b0100:
b1100110;
b0101:
b1101101;
b0110:
b1111101;
b0111:
b0000111;
b1000:
b1111111;
b1001:
b1101111;
b1010:
b1110111;
b1011:
b1111100;
b1100:
b0111001;
b1101:
b1011110;
b1110:
b1111001;
b1111:
b1110001;
endcase
end
3.2.2数码管仿真图
在QuartusII中输入程序,进行波形仿真。
数码管仿真图如下图所示:
图4数码管仿真图
3.2.2数码管仿真图分析
如图4所示为数码管显示器的时序仿真波形,当输入为2时七段数码管中abcdefg的高低电平分别为1011011即abcdg点亮显示数字2,当输入为4时七段数码管对应显示1100110即abcdef被点亮显示数字4.经验证其他数字显示均正确,七段数码管显示器模块设计仿真成功
3.3循环扫描模块
3.3.1循环扫描程序
modulexhsm(clk,rst,count,Dout);
inputclk,rst;
output[6:
0]Dout;
output[2:
0]count;
reg[6:
reg[2:
0]LED7S1,LED7S2,LED7S3,LED7S4,LED7S5,LED7S6,LED7S7,LED7S8;
always@(posedgeclkornegedgerst)
if(!
rst)
count<
=3'
b000;
elseif(count==3'
b111)
else
=count+3'
b001;
always@(posedgeclk)
case(count)
3'
b000:
Dout<
=LED7S1;
b001:
=LED7S2;
b010:
=LED7S3;
b011:
=LED7S4;
b100:
=LED7S5;
b101:
=LED7S6;
b110:
=LED7S7;
b111:
=LED7S8;
3.3.2循环扫描仿真图
在软件QuartusII中输入程序,对程序进行仿真。
循环扫描仿真图如下图所示:
图5循环扫描仿真图
3.3.3循环扫描模块分析
如图5所示为循环扫描时序仿真波形,该模块是一个循环扫描计数器,在时钟和复位信号的控制下,从000—111循环计数分别控制八个数码管循环点亮,由于时钟的频率比较快,大于人眼的分辨率,所以显示出八个数码管同时点亮,即同时显示计算器的输入、输出。
3.4简易计算器总体程序设计
3.4.1简单计算器程序设计
modulejsq9(a,b,c,Dout,count,clk,rst);
output[2:
reg[15:
0]LED7S1,LED7S2,LED7S3,LED7S4,LED7S5,LED7S6,LED7S7,LED7S8;
DECL7Su1(.A(a[7:
4]),.LED7S(LED7S1));
DECL7Su2(.A(a[3:
0]),.LED7S(LED7S2));
DECL7Su3(.A(b[7:
4]),.LED7S(LED7S3));
DECL7Su4(.A(b[3:
0]),.LED7S(LED7S4));
DECL7Su5(.A(out[15:
12]),.LED7S(LED7S5));
DECL7Su6(.A(out[11:
8]),.LED7S(LED7S6));
DECL7Su7(.A(out[7:
4]),.LED7S(LED7S7));
DECL7Su8(.A(out[3:
0]),.LED7S(LED7S8));
always@(a,b,c,Dout,count,clk,rst)
Dout<
moduleDECL7S(A,LED7S);
case(A)
4'
b0000110;
b1100110;
b1111101;
b0000111;
b1111111;
b1101111;
b1110111;
b1111100;
b0111001;
b1011110;
b1111001;
b1110001;
endcase
3.4.2简单计算器总体仿真图
在软件QuartusII中输入程序,进行仿真。
计算器总体设计仿真图如下:
图6总体设计仿真图
3.4.3简单计算器仿真图设计分析
如图6所示为简易计算器总体设计仿真波形,设计一个四选一多路器,当c为00时,为加法,c为01时,为减法;
c为10时,为乘法;
c为11时,为除法。
如图,在rst为低电平时,输出延迟,当rst为高电平后,在clk上升沿时,a为00000000,b为00000000,c为00,数码管1表示a的高四位,数码管2表示a的低四位,数码管3表示b的高四位,数码管4表示b的低四位,数码管5到数码管8表示输出Dout。
依次类推,可以看出,仿真出来的时序图是正确的。
第四章设计体会
通过本次课程设计让我对简易计算器有了更加深刻的了解,加深了对课本知识的了解。
在一开始看到这个题时,自我感觉很简单,但是当我真正开始做的时候,感觉很茫然,不知从何下手。
最后自己在网上找到了一些关于计算器的程序和数码管的程序进行理解和分析,把思路理清楚了,一步一步地分析,并在书上查找自己不理解的一些问题,自己也在图书馆借了关于这方面的书,来巩固一下在这方面的知识,帮我更好地理解问题。
而且把这几模块知识更好的融合在一起了,弥补了上课理论知识学习的的不足和实验的欠缺,便于以后的学习。
在本次课设中,主要运用了QuartusII软件,今年我们学习了这个软件,但是学习的不是很深,通过这次的学习,我又进一步熟悉了这个软件,并且对一些不是很理解的程序,通过自己查阅资料,现在可以熟悉的掌握了,这个软件的重要性体现在模块设计、程序设计、仿真时间的设计等方面,在仿真时间的设置上一定要注意延时的问题,在这个问题上自己花了很长的时间,就是由于时间没有设计合理,在最终慢慢调试中和对实验的总结,最终仿真出来了正确的仿真图。
通过本次课设,巩固了对课本知识点的学习,同时加强了软件QuartusII编程在EDA设计系统中的应用。
让我学到了只有把所学知识与实践结合起来才能有更高的突破,而且我还要掌握与专业相关软件的使用方法,增强了我的专业技能。
参考文献
[1]潘松,黄继业等.EDA技术实用教程——VerilogHDL(第四版).科学出版社,2010.
[2]潘松,黄继业.EDA技术实用教程——(第三版).科学出版社,2006.
[3]王松武,于鑫,武思军.电子创新设计与实践.北京:
国防工业出版社.2005
[4]孙延鹏,张芝贤,尹常永.VHDL与可编程逻辑器件应用.北京:
航空工业出版社.2006
[5]曹昕燕,周凤臣,聂春燕.EDA技术与课程设计.北京:
清华大学出版社.2006
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 计算器 eda 设计 最终 打印