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

下载本文档

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

文档简介

1、题目:简单计算器控制设计大作业摘要 计算器的作用不仅在于能够进行复杂的运算,更重要的是借助计算器可以解决更为实际的问题、探索更加富有挑战性的规律。计算器的发明也提高了人类解决数学问题的能力,虽然机器接替了大量计算,但对机器的使用者来说,聪明地设计合理的算法和解释结果将变得很重要。 设计的背景、目的和意义 人们在生活中会遇到各种各样有关数学的问题,比较复杂的问题就会用到方便、快捷的计算器。在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,利用硬件描述语言Verilog HDL、EDA软件Quartus II和硬件平台Cyclone/Cyclone II FPGA进行电路系统的设计

2、。设计任务及要求设计一个简单计算器,采用单4*4计算器键盘,输入2位十进制数进行+、-、 *、/ 四种运算,输入数据分别用两位数码管显示,输出用四位数码管显示4位10进制数,其中除法的结果显示分为商和余数两部分,要求采用时序逻辑设计实现计算器功能。为了完成要 求的效果显示,我先设计了一个简单的四则运算器,为了使其结果能清楚的看到,所以计算器模块和一个7段数码管模块连接。实验要求,输入分别用两位数码管显示,输出用四位数码管显示,所以用一个38译码器和数码管连接,通过开关控制,形成动态显示。从左向右,依次是第一位数码管显示a的高四位,第二位数码管显示a的低四位;第三位数码管显示b的高四位,第四位数

3、码管显示b的低四位;第五位数码管到第八位数码管显示输出的结果。通过改变时钟,使其看起来像同时显示在数码管上。确定输入和输出变量 输入: module jsq9(a,b,c,Dout,count,clk,rst )。选择计算方式, always(posedge clk or negedge rst) Reset-整体复位。 输出:out1=a+b,输出加法得数 out2=a-b,输出减法得数 out=a*b,输出乘法得数 out1=a/b,输出除法得数确定输入状态 第一位数码管显示a的高四位,第二位数码管显示a的低四位;第三位数码管显示b的高四位,第四位数码管显示b的低四位;第五位数码管到第八位

4、数码管显示输出的结果。 输入2位十进制数,进行+、-、 *、/ 四种运算,输入数据分别用两位数码管显示,输出用数码管显示4位10进制数,其中除法的结果显示分为商和余数两部分,采用时序逻辑设计实现计算器功能。整体设计框图模块 (一)一)四选一多路器四选一多路器 程序程序module jsq(a,b,c,out,out1,out2); input7:0a,b; input1:0c; output15:0out; output7:0out1,out2; reg 15:0out; reg7:0out1,out2; always(a,b,c,out) case(c) 2b00:begin out1=0;

5、 out2=0; out=a+b; end 2b01:begin out1=0; out2=0; out=a-b; end 2b10:begin out1=0; out2=0; out=a*b; end 2b11:begin out1=a/b; out2=a%b; out=out1,out2; end default:; endcase endmodule 四选一多路器仿真图四选一多路器仿真波形分析 当输入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=时输出out=54,即9*6=54,当输入a=1

6、2,b=8,c=11时输出out1=1,out2=4,即商为12/8=1,余数为12%8=4.经此验证分析证明此计算器计算准确无误。模块设计成功。(二)数码管显示程序 module DECS7S (A, LED7S); input 3:0 A; output 6:0 LED7S; reg 6:0 LED7S; always (A) begin case(A) 4b0000: LED7S=7b0111111; 4b0001: LED7S = 7b0000110 4b0010: LED7S = 7b1011011; 4b0011: LED7S = 7b1001111; 4b0100: LED7S

7、= 7b1100110 4b0101: LED7S = 7b1101101; 4b0110: LED7S = 7b1111101 4b0111: LED7S = 7b0000111 4b1000: LED7S = 7b1111111 4b1001: LED7S = 7b1101111 4b1010: LED7S = 7b1110111 4b1011: LED7S = 7b1111100 4b1100: LED7S = 7b0111001 4b1101: LED7S = 7b1011110 4b1110: LED7S = 7b1111001 4b1111: LED7S = 7b1110001 e

8、ndcase end endmodule 数码管仿真图 数码管仿真图分析 数码管显示器的时序仿真波形,当输入为2时七段数码管中,abcdefg的高低电平分别为1011011,即abcdg点亮显示数字时数码管对应显示1100110,即abcdef被点亮显示数字。其他数字显示均正确,七段数码管显示器模块设计仿真成功。循环扫描程序 module xhsm(clk,rst,count,Dout); input clk,rst; output6:0Dout; output2:0count; reg6:0Dout; reg2:0count; reg6:0LED7S1,LED7S2,LED7S3,LED7S

9、4,LED7S5,LED7S6,LED7S7,LED7S8; always(posedge clk or negedge rst) begin if(!rst) count=3b000; else if(count=3b111) count=3b000; else count=count+3b001; end always(posedge clk) begin case(count) 3b000: Dout=LED7S1; 3b001: Dout=LED7S2; 3b010: Dout=LED7S3; 3b011: Dout=LED7S4; 3b100: Dout=LED7S5; 3b101:

10、 Dout=LED7S6; 3b110: Dout=LED7S7; 3b111: Dout=LED7S8; endcase end endmodule 循环扫描仿真图 循环扫描模块分析 循环扫描时序仿真波形,该模块是一个循环扫描计数器,在时钟和复位信号的控制下,从000111循环计数分别控制八个数码管循环点亮,由于时钟的频率比较快,大于人眼的分辨率,所以显示出八个数码管同时点亮,即同时显示计算器的输入、输出。 总体程序设计 module jsq9(a,b,c,Dout,count,clk,rst); input7:0a,b; input clk,rst; input1:0c; output6:

11、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),.LED7S(LED7S4); DECL7S u5(.A(out15:12),.LED7S(LED7S

12、5); 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: begin out1=a/b; out2=a%b; out=out1,out2; end default:; endcase always(posedge

13、clk or negedge rst) begin if(!rst) count=3b000; else if(count=3b111) count=3b000; else count=count+3b001; end always(posedge clk) begin case(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;

14、endcase end endmodule module DECL7S (A, LED7S); input 3:0 A; output 6:0 LED7S; reg 6:0 LED7S; always (A) begin case(A) 4b0000: LED7S = 7b0111111; 4b0001: LED7S = 7b0000110; 4b0010: LED7S = 7b1011011; 4b0011: LED7S = 7b1001111; 4b0100: LED7S = 7b1100110; 4b0101: LED7S = 7b1101101; 4b0110: LED7S = 7b1

15、111101; 4b0111: LED7S = 7b0000111; 4b1000: LED7S = 7b1111111; 4b1001: LED7S = 7b1101111; 4b1010: LED7S = 7b1110111; 4b1011: LED7S = 7b1111100; 4b1100: LED7S = 7b0111001; 4b1101: LED7S = 7b1011110; 4b1110: LED7S = 7b1111001; 4b1111: LED7S = 7b1110001; endcase end endmodule 总体仿真图总体仿真图设计分析 总体设计仿真波形,设计一个四选一多路器,当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:基于单片机原理实现 方案2:基于Verilog原理实现 确定选择方案1,理由是Veri

温馨提示

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

评论

0/150

提交评论