简单计算器EDA设计_第1页
简单计算器EDA设计_第2页
简单计算器EDA设计_第3页
简单计算器EDA设计_第4页
简单计算器EDA设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、目 录第一章 设计原理11.1 课程设计依据11.2 课程设计内容及原理11.3 课程设计要求1第二章 设计流程22.1设计流程图2第三章 模块连接33.1 四选一多路器33.2 7段数码管显示43.2.1 LED灯接线部分显示43.2.2数码管程序设计53.3 循环扫描模块63.4 简易计算器总体程序设计7第四章 仿真分析104.1 四选一多路器104.1.1四选一多路器仿真图104.1.2四选一多路器仿真波形分析104.2 数码管104.2.1数码管原理图与仿真图104.2.2数码管原理图与仿真图分析114.3 循环扫描124.3.1循环扫描仿真图124.3.2 循环扫描模块分析124.4

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

3、计键盘扫描存储逻辑,采用时序逻辑和有限状态机设计实现计算器操作的顺序步骤。 1.3 课程设计要求1、 要求每个同学独立完成设计任务。2、 课程设计说明书封面格式要求见天津城市建设学院课程设计教学规范附表1。3、 课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。4、 测试要求:根据题目的特点,采用相应的时序仿真或者在实验系统上观察结果。5、 课程设计说明书要求:1)说明题目的设计原理和思路、采用方法及设计流程。2)对各子模块的功能以及各子模块之间的关系作明确的描述。3)对实验和调试过程,仿真结果和时序图进行说明和分析。4)包含系统框图、电路原理图、HDL设计程序、仿真测试

4、图。第二章 设计流程2.1设计流程图设计流程如下图,分别用两个数码管表示二位十进制数,用一个case语句表示输入数值采用哪种运算方式,分别用00,01,10,11表示加、减、乘、除。首先对运算符号进行选择,然后再在各自模块进行计算,用38译码器选择从哪个数码管输出。图1 硬件设计流程图图2 输出结果A. B的软件流程图第三章 模块连接3.1 四选一多路器通过对四选一多路器设计,对计算器的运算符“+”,“-”,“*”,“/”进行选择图3 四选一多路器程序如下:module jsq(a,b,c,out,out1,out2);input7:0a,b;input1:0c;output15:0out;o

5、utput7:0out1,out2;reg 15:0out;reg7:0out1,out2;always(a,b,c,out) case(c) 2'b00:begin out1=0; out2=0; out=a+b; end 2'b01:begin out1=0; out2=0; out=a-b; end 2'b10:begin out1=0; out2=0; out=a*b; end 2'b11:begin out1=a/b; out2=a%b; out=out1,out2; end default:; endcaseendmodule3.2 7段数码管显示3

6、.2.1 LED灯接线部分显示7段数码显示译码器原理:通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示(数码管可以显示0F),最方便的方法就是利用译码程序在FPGA/CPLD中来实现。EL-EDA-实验系统的显示采用8位八段共阴极数码管(高电平有效),所对应的接口序号为:8段驱动接口:a、b、c、d、e、f、g、Dp;作为7段译码器,输入为需要显示的数,输出信号LED7S的7位分别接如图4数码管的7个段,高位在左,低位在右。例如当LED7S输出为“1101101”时,数

7、码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。注意:这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h。图4 共阴数码管及其电路8位数码扫描显示原理:四位拨码开关产生8421BCD码,经译码电路后成为7段数码管(不包括小数点段位)的字形显示驱动信号(ag)。图5所示的是8位数码扫描显示电路,其中每个数码管的7个段: g、f、e、d、c、b、a都分别连在一起,8个数码管分别由8个选通信号k1、k2、k8来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来

8、自段信号端的数据,而其它7个数码管呈现关闭状态。根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1、k2、k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。图5 8位数码驱动显示电路扫描电路通过可调时钟输出片选地址SEL2.0。由SEL2.0 通过3-8译码器的输出决定了8位中的哪一位显示,ag决定了显示什么字形。SEL2.0变化的快慢决定了扫描频率f扫描的快慢。3.2.2数码管程序设计数码管模块:图6 数码管模块程序如下:module DECS7S (A, LED7S);input

9、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'b1101

10、101; 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'

11、;b1101: LED7S <= 7'b1011110 ; 4'b1110: LED7S <= 7'b1111001 ;4'b1111: LED7S <= 7'b1110001 ;endcase endEndmodule3.3 循环扫描模块循环扫描模块:图7 循环扫描模块程序如下:module xhsm(clk,rst,count,Dout);input clk,rst;output6:0Dout;output2:0count;reg6:0Dout;reg2:0count;reg6:0LED7S1,LED7S2,LED7S3,LED7S

12、4,LED7S5,LED7S6,LED7S7,LED7S8;always(posedge clk or negedge rst) begin if(!rst) count<=3'b000; else if(count=3'b111) count<=3'b000; else count<=count+3'b001; end always(posedge clk) begin case(count) 3'b000: Dout<=LED7S1; 3'b001: Dout<=LED7S2; 3'b010: Dout&

13、lt;=LED7S3; 3'b011: Dout<=LED7S4; 3'b100: Dout<=LED7S5; 3'b101: Dout<=LED7S6; 3'b110: Dout<=LED7S7; 3'b111: Dout<=LED7S8; endcase endendmodule3.4 简易计算器总体程序设计程序如下:module jsq9(a,b,c,Dout,count,clk,rst);input7:0a,b;input clk,rst;input1:0c;output6:0Dout;output 2:0count

14、;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),.LED7S(LED7S4);DECL7S u5(.A(out15:12),.LED7S(LED7S5);DECL7S u6(.A(out11:8),.LED7S

15、(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: begin out1=a/b; out2=a%b; out=out1,out2; end default:;endcasealways(posedge clk or negedge rst

16、) begin if(!rst) count<=3'b000; else if(count=3'b111) count<=3'b000; else count<=count+3'b001; endalways(posedge clk) begin case(count) 3'b000:Dout<=LED7S1; 3'b001:Dout<=LED7S2; 3'b010:Dout<=LED7S3; 3'b011:Dout<=LED7S4; 3'b100:Dout<=LED7S5;

17、 3'b101:Dout<=LED7S6; 3'b110:Dout<=LED7S7; 3'b111:Dout<=LED7S8; endcase Endendmodulemodule 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'b0001: LED7S <= 7'b0000110; 4'b0010: LED7S &

18、lt;= 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: LED7S <= 7'b1111111; 4'b1001: LED7S <= 7'b1

19、101111; 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'b1110001; endcase endendmodule 第四章 仿真分析4.1 四选一多路器4.1.1四选

20、一多路器仿真图在软件Quartus II中输入程序,进行仿真,如下:四选一多路器仿真图如下:图8 四选一多路器仿真图4.1.2四选一多路器仿真波形分析如图4所示为计四选一多路器的实序仿真图,当输入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.经此验证分析证明此计算器计算准确无误。模块设计成功。4.2 数码管4.2.1数码管原理图与仿真图在Quartus I

21、I中输入程序,进行波形仿真。原理图如下所示:图9 数码管原理图数码管仿真图如下图所示:图10 数码管仿真图4.2.2数码管原理图与仿真图分析扫描电路通过可调时钟输出片选地址SEL2.0。由SEL2.0 通过3-8译码器的输出决定了8位中的哪一位显示,ag决定了显示什么字形。SEL2.0变化的快慢决定了扫描频率f扫描的快慢。片选地址端SEL2.0可由计数器74161(使用quartus自带的库函数)产生,如图9所示,从000计数到111,以使3-8译码器顺序选通k1、k2、k8。EL-EDA-实验系统中已自带3-8译码器,其对应输入接口为:SEL0SEL2,悬空为高电平,其具体的对应关系如下表所

22、示,故图9中的38译码器可以省掉。如图10所示为数码管显示器的时序仿真波形,当输入为2时七段数码管中abcdefg的高低电平分别为1011011即abcdg点亮显示数字2,当输入为4时七段数码管对应显示1100110即abcdef被点亮显示数字4.经验证其他数字显示均正确,七段数码管显示器模块设计仿真成功4.3 循环扫描4.3.1循环扫描仿真图在软件Quartus II中输入程序,对程序进行仿真。循环扫描仿真图如下图所示:图11 循环扫描仿真图4.3.2 循环扫描模块分析如图11所示为循环扫描时序仿真波形,该模块是一个循环扫描计数器,在时钟和复位信号的控制下,从000111循环计数分别控制八个

23、数码管循环点亮,由于时钟的频率比较快,大于人眼的分辨率,所以显示出八个数码管同时点亮,即同时显示计算器的输入、输出。4.4 四选一多路器4.4.1简单计算器总体仿真图在软件Quartus II中输入程序,进行仿真:计算器总体设计仿真图如下:图12 总体设计仿真图4.4.2简单计算器仿真图设计分析如图12所示为简易计算器总体设计仿真波形,设计一个四选一多路器,当c为00时,为加法,c为01时,为减法;c为10时,为乘法;c为11时,为除法。如图,在rst为低电平时,输出延迟,当rst为高电平后,在clk上升沿时,a为00000000,b为00000000,c为00,数码管1表示a的高四位,数码管

24、2表示a的低四位,数码管3表示b的高四位,数码管4表示b的低四位,数码管5到数码管8表示输出Dout。依次类推,可以看出,仿真出来的时序图是正确的。第五章 设计体会通过对这门课程相关理论的学习,我掌握了EDA的一些基本的的知识,现代电子产品的性能越来越高,复杂度越来越大,更新步伐也越来越快。实现这种进步的主要原因就是微电子技术和电子技术的发展。前者以微细加工技术为代表,目前已进入超深亚微米阶段,可以在几平方厘米的芯片上集成几千万个晶体管;后者的核心就是电子设计自动化EDA(Electronic Design Automatic)技术。  EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目

温馨提示

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

评论

0/150

提交评论