简单计算器eda设计最终打印版_第1页
简单计算器eda设计最终打印版_第2页
简单计算器eda设计最终打印版_第3页
简单计算器eda设计最终打印版_第4页
简单计算器eda设计最终打印版_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录第一章 设计原理11.1 课程设计依据11.2 课程设计内容及原理11.3 课程设计要求1第二章 设计流程22.1设计流程图22.2 LED灯接线部分显示3第三章 模块连接43.1 四选一多路器43.1.1多路器程序设计43.1.2四选一多路器仿真图53.1.3四选一多路器仿真波形分析53.2 7段数码管显示53.2.1数码管程序设计53.2.2数码管仿真图63.2.2数码管仿真图分析63.3 循环扫描模块73.3.1循环扫描程序73.3.2循环扫描仿真图83.3.3 循环扫描模块分析83.4 简易计算器总体程序设计83.4.1简单计算器程序设计83.4.2简单计算器总体仿真图113.4

2、.3简单计算器仿真图设计分析11第四章 设计体会12参考文献13第一章 设计原理1.1 课程设计依据在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,利用硬件描述语言Verilog HDL、EDA软件Quartus II和硬件平台Cyclone/Cyclone II FPGA进行电路系统的设计。1.2 课程设计内容及原理设计一个简单计算器,采用简单4*4计算器键盘,输入2位十进制数进行+、-、 *、/ 四种运算,输入数据分别用两位数码管显示,输出用四位数码管显示4位10进制数,其中除法的结果显示分为商和余数两部分,要求采用时序逻辑设计实现计算器功能。为了完成要求的效果显示,我先

3、设计了一个简单的四则运算器,为了使其结果能清楚的看到,所以计算器模块和一个7段数码管模块连接。实验要求,输入分别用两位数码管显示,输出用四位数码管显示,所以用一个38译码器和数码管连接,通过开关控制,形成动态显示。从左向右,依次是第一位数码管显示a的高四位,第二位数码管显示a的低四位;第三位数码管显示b的高四位,第四位数码管显示b的低四位;第五位数码管到第八位数码管显示输出的结果。通过改变时钟,使其看起来像同时显示在数码管上。1.3 课程设计要求1、 要求每个同学独立完成设计任务。2、 课程设计说明书封面格式要求见天津城市建设学院课程设计教学规范附表1。3、 课程设计的说明书要求简洁、通顺,计

4、算正确,图纸表达内容完整、清楚、规范。4、 测试要求:根据题目的特点,采用相应的时序仿真或者在实验系统上观察结果。5、 课程设计说明书要求:l 说明题目的设计原理和思路、采用方法及设计流程。l 系统框图、Verilog语言设计程序或原理图。l 对各子模块的功能以及各子模块之间的关系做较详细的描述。l 详细说明调试方法和调试过程。l 说明测试结果:仿真时序图和结果显示图,并对其进行说明和分析13第二章 设计流程2.1设计流程图设计流程如下图,分别用两个数码管表示二位十进制数,用一个case语句表示输入数值采用哪种运算方式,分别用00,01,10,11表示加、减、乘、除。首先对运算符号进行选择,然

5、后再在各自模块进行计算,用38译码器选择从哪个数码管输出。图1 硬件设计流程图图2 输出结果A. B的软件流程图2.2 LED灯接线部分显示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、

6、1;接有高电平的段发亮,于是数码管显示“5”。注意,这里没有考虑表示小数点的发光管,如果要考虑,需要增加段dp。LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。A、静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O埠进行驱动,或者使用如BCD码二-十进位*器*进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O埠多,如驱动5个数码管静态显示则需要5×840根I/O埠来驱动,要知道一个89S51单片机可用的I/O埠才32个呢。故实

7、际应用时必须增加*驱动器进行驱动,增加了硬体电路的复杂性。B、动态显示驱动:  数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp "的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。透过分时轮流控制各个LED数码管

8、的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O埠,而且功耗更低。第三章 模块连接3.1 四选一多路器3.1.1多路器程序设计通过对四选一多路器设计,对计算器的运算符“+”,“-”,“*”,“/”进行选择程序如下:module jsq(a,b,c,out,out1,out2);input7:0a,b;input1:0c;output1

9、5:0out;output7:0out1,out2;reg 15:0out;reg7:0out1,out2;always(a,b,c,out)case(c)2'b00:beginout1=0;out2=0;out=a+b;end2'b01:beginout1=0;out2=0;out=a-b;end2'b10:beginout1=0;out2=0;out=a*b;end2'b11:beginout1=a/b;out2=a%b;out=out1,out2;enddefault:;endcaseendmodule3.1.2四选一多路器仿真图在软件Quartus II

10、中输入程序,进行仿真四选一多路器仿真图如下:图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.2 7段数码管显示3.2.1数码管程序设计程序如下:module DECS7S (A, LED7S);inp

11、ut 3:0 A;output 6:0 LED7S;reg 6:0 LED7S;always (A)begin case(A)4'b0000: LED7S<=7'b0111111;4'b0001: LED7S <= 7'b0000110 ; 4'b0010: LED7S <= 7'b1011011; 4'b0011: LED7S <= 7'b1001111; 4'b0100: LED7S <= 7'b1100110 ; 4'b0101: LED7S <= 7'b1

12、101101; 4'b0110: LED7S <= 7'b1111101 ;4'b0111: LED7S <= 7'b0000111 ;4'b1000: LED7S <= 7'b1111111 ; 4'b1001: LED7S <= 7'b1101111 ; 4'b1010: LED7S <= 7'b1110111 ; 4'b1011: LED7S <= 7'b1111100 ;4'b1100: LED7S <= 7'b0111001 ;4&

13、#39;b1101: LED7S <= 7'b1011110 ; 4'b1110: LED7S <= 7'b1111001 ;4'b1111: LED7S <= 7'b1110001 ;endcase endendmodule3.2.2数码管仿真图在Quartus II中输入程序,进行波形仿真。数码管仿真图如下图所示:图4 数码管仿真图3.2.2数码管仿真图分析如图4所示为数码管显示器的时序仿真波形,当输入为2时七段数码管中abcdefg的高低电平分别为1011011即abcdg点亮显示数字2,当输入为4时七段数码管对应显示110011

14、0即abcdef被点亮显示数字4.经验证其他数字显示均正确,七段数码管显示器模块设计仿真成功3.3 循环扫描模块3.3.1循环扫描程序程序如下:module xhsm(clk,rst,count,Dout);input clk,rst;output6:0Dout;output2:0count;reg6:0Dout;reg2:0count;reg6:0LED7S1,LED7S2,LED7S3,LED7S4,LED7S5,LED7S6,LED7S7,LED7S8;always(posedge clk or negedge rst)beginif(!rst)count<=3'b000;

15、else if(count=3'b111)count<=3'b000;elsecount<=count+3'b001;endalways(posedge clk)begincase(count)3'b000: Dout<=LED7S1;3'b001: Dout<=LED7S2;3'b010: Dout<=LED7S3;3'b011: Dout<=LED7S4;3'b100: Dout<=LED7S5;3'b101: Dout<=LED7S6;3'b110: Dout&

16、lt;=LED7S7;3'b111: Dout<=LED7S8;endcaseendendmodule3.3.2循环扫描仿真图在软件Quartus II中输入程序,对程序进行仿真。循环扫描仿真图如下图所示:图5 循环扫描仿真图3.3.3 循环扫描模块分析如图5所示为循环扫描时序仿真波形,该模块是一个循环扫描计数器,在时钟和复位信号的控制下,从000111循环计数分别控制八个数码管循环点亮,由于时钟的频率比较快,大于人眼的分辨率,所以显示出八个数码管同时点亮,即同时显示计算器的输入、输出。3.4 简易计算器总体程序设计3.4.1简单计算器程序设计程序如下:module jsq9(a

17、,b,c,Dout,count,clk,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(

18、.A(b3:0),.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)2'b00:out=a+b;2'b01:out=a-b;2'b10:out=a*b;2'b11:beginout1=

19、a/b;out2=a%b;out=out1,out2;enddefault:;endcasealways(posedge clk or negedge rst)beginif(!rst)count<=3'b000;else if(count=3'b111)count<=3'b000;elsecount<=count+3'b001;endalways(posedge clk)begincase(count)3'b000:Dout<=LED7S1;3'b001:Dout<=LED7S2;3'b010:Dout&l

20、t;=LED7S3;3'b011:Dout<=LED7S4;3'b100:Dout<=LED7S5;3'b101:Dout<=LED7S6;3'b110:Dout<=LED7S7;3'b111:Dout<=LED7S8;endcaseendendmodulemodule DECL7S (A, LED7S);input 3:0 A;output 6:0 LED7S;reg 6:0 LED7S;always (A) begin case(A) 4'b0000: LED7S <= 7'b0111111; 4&

21、#39;b0001: LED7S <= 7'b0000110; 4'b0010: LED7S <= 7'b1011011; 4'b0011: LED7S <= 7'b1001111; 4'b0100: LED7S <= 7'b1100110; 4'b0101: LED7S <= 7'b1101101; 4'b0110: LED7S <= 7'b1111101; 4'b0111: LED7S <= 7'b0000111; 4'b1000: LE

22、D7S <= 7'b1111111; 4'b1001: LED7S <= 7'b1101111; 4'b1010: LED7S <= 7'b1110111; 4'b1011: LED7S <= 7'b1111100; 4'b1100: LED7S <= 7'b0111001; 4'b1101: LED7S <= 7'b1011110; 4'b1110: LED7S <= 7'b1111001; 4'b1111: LED7S <= 7&#

23、39;b1110001; endcase endendmodule3.4.2简单计算器总体仿真图在软件Quartus II中输入程序,进行仿真。计算器总体设计仿真图如下:图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。依次类推,可以看出,仿真出来的时序图是正确的。第四章 设计体会通过本次

温馨提示

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

最新文档

评论

0/150

提交评论