简单计算器设计

上传人:人*** 文档编号:497889369 上传时间:2023-08-01 格式:DOCX 页数:11 大小:18.04KB
返回 下载 相关 举报
简单计算器设计_第1页
第1页 / 共11页
简单计算器设计_第2页
第2页 / 共11页
简单计算器设计_第3页
第3页 / 共11页
简单计算器设计_第4页
第4页 / 共11页
简单计算器设计_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《简单计算器设计》由会员分享,可在线阅读,更多相关《简单计算器设计(11页珍藏版)》请在金锄头文库上搜索。

1、第一章设计目的及任务要求1.1设计目的1.2设计任务1.3课设要求第二章设计思路2.1设计总体框图错误!未指定书签。2.2设计原理2.2.1计算其原理2.2.2数码显示原理2.2.3八位数码管扫描的原理第三章设计源程序及分析3.1计算器模块3.1.1计算器源程序3.1.2计算器程序分析3.2数码管显示部分3.2.1数码管显示源程序3.2.2数码管显示程序分析3.3循环扫描模块3.3.1循环扫描程序3.3.2循环程序分析3.4总程序及其分析第四章 时序仿真和结果验证4.1计算器时序仿真及其分析104.2数码管时序仿真及分析4.3总体时序仿真图4.4结果验证第五章心得体会第一章 设计目的及任务要求

2、1.1设计目的(1)进一步加强熟练EDA基础知识。(2)熟练掌握Quartus 6.0软件的使用以及用该软件编程和仿真的全过程。(3)培养独立思考问题,解决问题的能力以及查阅相关资料和资料的正确使用能力,为明年的毕业设计 打下良好的设计基础。1.2设计任务设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进 制数,并用四位数码管显示,能够实现+、-、*、/四种运算,其中除法的结果显示分为商和余数两部分, 分别用两位数码管显示。1.3课设要求(1)说明题目的设计原理和思路、采用方法及设计流程。(2)系统框图、Verilog语言设计程序或原理图。(3)对各子模块

3、的功能以及各子模块之间的关系做较详细的描述。(4)详细说明调试方法和调试过程。(5)说明测试结果:仿真时序图和结果显示图,并对其进行说明和分析。第二章设计思路2.1设计总体框图有分析可知,本次课程设计可以分成五个木块来实现相应的功能,分别是输入模块,计算模块,扫描 模块,输出模块以及显示模块。图一设计总体框图2.2设计原理2.2.1计算其原理Verilog语言中可直接用运算符+、-、*、/、来实现四则运算,系统会根据程序自动综合出相应的计 算器。分别是加法器模块,减法器模块,乘法器模块和除法器模块,当程序变得正确的话则各个程序会按照 一定的步骤一步步的往下执彳丁的。2.2.2数码显示原理7段数

4、码是纯组合电路,通常的小规模专用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”。 注意,这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h。共阴极七段数码管的原理图

5、如下 图二所示。图二共阴极七段数码管2.2.3八位数码管扫描的原理图三所示的是8位数码扫描显示电路,其中每个数码管的7个段:g、f、e、d、c、b、a都分别连在 一起,8个数码管分别由8个选通信号k1、k2、k8来选择。被选通的数码管显示数据,其余关闭。如在 某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而 其它7个数码管呈现关闭状态。根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得 8个选通信号k1、k2、k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显 示的数据,于是随着选通信号的扫变,就能实现扫描显示的

6、目的。图三8位数码管显示驱动电路扫描电路通过可调时钟输出片选地址SEL2.0。由SEL2.0通过3-8译码器决定了8位中的哪一 位显示,SEL2.0变化的快慢决定了扫描频率f扫的快慢。扫描频率大于人眼的分辨率时,呈现出八个 数码管同时点亮。第三章设计源程序及分析3.1计算器模块3.1.1计算器源程序mdule jsq(a,b,c,out);input7:0a,b;input1:0c;otput15:0out;reg 15:0outreg7:0out1,out2;always(a,b,c,out)case(c)2b00:out=a+b;2b01:out=a-b;2b10:out=a*b;2b11

7、:beginout1=a/b;out2=a%b;out=out1,out2;enddefault:;endcaseendmodule3.1.2计算器程序分析该模块是本次设计的核心部分,用于实现四则运算,两位八位二进制数a、b作为待计算的输入,并 输入两位二进制数c作为计算功能选择,00代表加法运算、01代表减法运算、10代表乘法运算、11代表 除法运算。输出16位二进制数out位运算结果。并在总体设计中把输入、输出端接到数码管上。3.2数码管显示部分3.2.1数码管显示源程序module DECL7S (A, LED7S);input 3:0 A;output 6:0 LED7S;reg 6:

8、0 LED7S;always (A)begincase(A)4b0000 : LED7S=7b0111111;4b0001: LED7S = 7b0000110 ;4b0010: LED7S = 7b1011011;4b0011: LED7S = 7b1001111;4b0100: LED7S = 7b1100110 ;4b0101: LED7S = 7b1101101;4b0110: LED7S = 7b1111101 ;4b0111: LED7S = 7b0000111 ;4b1000: LED7S = 7b1111111 ;4b1001: LED7S = 7b1101111 ;4b101

9、0: LED7S = 7b1110111 ;4b1011: LED7S = 7b1111100 ;4b1100: LED7S = 7b0111001 ;4b1101: LED7S = 7b1011110 ;4b1110: LED7S = 7b1111001 ;4b1111: LED7S = 7b1110001 ;endcaseendendmodule3.2.2数码管显示程序分析该模块是整个设计中的显示部分,是一个编码器组合逻辑设计,每个数码管可显示十六进制0至F, 对应4位二进制数,因此输入端a、b分别用两个数码管显示,输出out用四个数码管显示,该设计中需 要八个同样的数码管显示器,即。此模

10、块将在总程序中被调用八次。3.3循环扫描模块3.3.1循环扫描程序modulexhsm(clk,rst,count,Dout);inputclk,rst;output6:0Dout;output2:0count;reg6:0Dout;reg2:0count;always(posedge clk or negedge rst)beginif(!rst)count=3b000;else if(count=3b111)count=3b000;elsecount=count+3b001;endalways(posedge clk)begincase(count)3b000: Dout=LED7S1;3

11、b001:Dout=LED7S2;3b010:Dout=LED7S3;3b011:Dout=LED7S4;3b100: Dout=LED7S5;3b101:Dout=LED7S6;3b110:Dout=LED7S7;3b111:Dout=LED7S8;endcaseendendmodule3.3.2循环程序分析该模块是一个循环计数器,在时钟和复位信号的控制下,从000-111循环计数分别控制八个数码管 循环点亮,由于时钟的频率比较快,大于人眼的分辨率,所以显示出八个数码管同时点亮,即同时显示计 算器的输入、输出。3.4总程序及其分析module jsq9(a,b,c,Dout,count,cl

12、k,rst);input7:0a,b;input clk,rst;input1:0c;output6:0Dout;output 2:0count;reg6:0Dout;reg2:0count;reg15:0out;reg6:0 LED7S1,LED7S2,LED7S3,LED7S4, LED7S5,LED7S6,LED7S7,LED7S8;DECL7S u1(.A(a7:4) , .LED7S(LED7S1);DECL7S u2(.A(a3:0) , .LED7S(LED7S2);DECL7S u3(.A(b7:4) , .LED7S(LED7S3);DECL7S u4(.A(b3:0) ,

13、.LED7S(LED7S4);DECL7S u5(.A(out15:12) , .LED7S(LED7S5);DECL7S u6(.A(out11:8) , .LED7S(LED7S6);DECL7S u7(.A(out7:4) , .LED7S(LED7S7);DECL7S u8(.A(out3:0) , .LED7S(LED7S8);reg7:0out1,out2;always(a,b,c,Dout,count,clk,rst)case(c)2b00:out=a+b;2b01:out=a-b;2b10:out=a*b;2b11:beginout1=a/b;out2=a%b;out=out1

14、,out2;enddefault:;endcasealways(posedge clk or negedge rst)beginif(!rst)count=3b000;else if(count=3b111)count=3b000;elsecount=count+3b001;endalways(posedge clk)begincase(count)3b000: Dout=LED7S1;3b001:Dout=LED7S2;3b010:Dout=LED7S3;3b011:Dout=LED7S4;3b100: Dout=LED7S5;3b101:Dout=LED7S6;3b110:Dout=LED7S7;3b111:Dout=LED7S8;endcaseendendmodulemodule DECL7S (A, LED7S);input 3:0 A;output 6:0 LED7S;reg 6:0 LED7S;always (A)begincase(A)4b0000 : LED7S=7

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号