EDA4位密码锁的课程设计_第1页
EDA4位密码锁的课程设计_第2页
EDA4位密码锁的课程设计_第3页
EDA4位密码锁的课程设计_第4页
EDA4位密码锁的课程设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

EDA课程设计报告数字跑表学院:机械与电子工程学院 专业:电子科学与技术 学号: 姓名:熊 一:设计目的:(1)学会利用Quartus发热宏单元和所学的数字电路知识,搭建复杂一点的数字电路或系统。(2)学会使用EDA的程序语言FPGA/CPLD设计数字跑表,设计主要包括功能分析、方案设计和电路测试几个步骤。二:设计内容: 1.设计一个数字跑表,具有如下功能。 (1)复位和暂停,秒表计时等功能。 (2)跑表计时长度可达1小时,计时精度为0.01 秒。 (3)通过6位数码管分别显示跑表的分、秒和百分秒。控制端取值功能复位(clr)1异步清零0计数计数/暂停键(pause)1暂停0计数2.方案论证: 数字跑表设三个输入端,分别为时钟输入(CLK),复位(CLR),启动、暂停按键(PUSE)。复位信号高电平有效,可对跑表异步清零;当启动、暂停键为低电平时跑表开始计时,为高电平时暂停,变低后在原来的数值基础上继续计数。数字跑表的结构示意图如下:图2-1跑表示意图 3.模块电路设计:数字跑表实际上为计数器,数据选择器,七段数码管译码器等模块构成,核心模块应为计数器,其次为暂停控制和清零控制。计时电路计时电路又分为百分秒计时电路、秒计时电路和分计时电路三个模块。百分秒计时电路是一个100进制的计数器,以100Hz输入信号作为计数时钟,其进位信号作为秒计数电路的计数时钟,当秒计数器计满时,产生的进位信号又作为分计数电路的计数时钟。电路的暂停和复位信号用于控制计时的开始、停止和清零。计数器模块:数字跑表的计时器功能是,当PAUSE为低电平时开始计数,百分秒低位自加一,加到九时归零,百分秒高位自加一,加到九时归零,且向秒位发出一个高电平,秒低位自加一,加到九时归零,秒高位自加一,加到五时归零,且向分位发出一个高电平,分低位自加一,加到六时系统清零。数据选择器:数据选择模块:定义三位二进制数ss作为选择数码管的变量,ss自加一,当ss大于7时归零,当ss为5、4、3、2、1时分别将msl,msh,sl,sh,ml,mh的值赋给coder,当ss为6、7时赋值为零。七段数码管显示译码器七段数码管译码器模块:根据数字的显示形状编制真值表,当上一模块coder为09时,分别给seg赋以一组八位二进制数,使数码管显示相应的数字。表1 七段数码管显示译码器真值表:caseseg01234567894.数字跑表的流程图:数字跑表主要由计时器,七段数码管译码器组成。流程框图如图所示。数码管译码器百分秒计数器 CLKmsl pause秒计数器 clr分计数器 图3-1程序流程图表2控制信号的作用复位clr异步复位信号,高电平有效pause同步暂停信号,低电平有效计数。sel共阴数码管的位选信号seg共阴数码管的段选信号三:设计总体框图三:硬件电路设计与程序设计设计思路今需设计一个计时范围为0.01 秒1 小时的数字秒表,首先需要获得一个比较精确的计时基准信号,这里是周期为1/100 s 的计时脉冲,可以把50MHz的信号经过100分频的分频器三次分频得到,其中分频器经过两次分频得到的信号还可作为数码管扫描电路的时钟。其次,还需对每一计数器设置清零信号输入和对六个计数器设置时钟使能信号,即计时允许信号,以便作为秒表的计时起、停控制功能。为了方便控制所有计数模块清零和使能功能设计了一个控制模块。最后把所有计数器的输出数据通过数码管扫描电路模块和七段译码显示模块作为输出,接到实验箱上的8字数码显示电路上就可显示结果了。因此数字秒表可由三个分频器、四个十进制计数器(1/100 秒、1/10 秒、1 秒、1分)、两个六进制计数器(10 秒、10 分)、一个控制器、一个数据选择器以及七段译码显示器组成,如总体框图所示。根据设计思路,本次设计就采用模块化设计,共分为分频器模块(fenpin)、控制模块(kongzhi)、十进制计数模块(cnt10)、六进制计数模块(cnt6)、数码管扫描模块(xuanze)、七段译码显示模块(decl7s)六个模块以及图形式顶层文件。下面我们分别对每个模块的功能进行描述、程序进行设计以及各个模块功能的仿真。1、分频器模块根据设计需要,首先需要获得一个比较精确的计时基准信号,这里是周期为1/ 100 s 的计时脉冲。我们可以把50MHz的信号经过100分频的分频器三次分频得到此基准信号,所以需要设计一个100分频的分频器。此外,经过两次分频的信号(10KHz)还可以同时作为数码管扫描电路的时钟。其模块图如下图所示:Clk为时钟输入信号,newclk为100分频的输出信号。2、控制模块为了方便控制所有计数模块清零和使能功能需要设计一个控制模块,所以该模块的功能就是控制什么时候发出置零信号和使能信号来控制计数器工作。其模块图如下图所示: Clk为开始/暂停功能按钮(下降沿有效),初次按下它时clc(控制计数器清零)为低电平,en(使计数器计数)为高电平;再次按下它时,clc保持为低电平,en跳变为低电平,如此重复循环。Reset为清零按钮(下降沿有效),无论何时按下它时,clc跳变为高电平,en变为低电平,以达到使计数器清零的目的。3、十进制计数模块此模块的功能就是完成十进制的计数功能,同时输出进位信号。其模块图如下图所示:Clk为时钟信号输入端,rst为计数器清零端(高电平有效),en为计数器使能端(高电平有效);daout为数据输出端,cout为进位信号输出端。4、六进制计数模块 此模块的功能就是完成六进制的计数功能,同时输出进位信号。其端口功能同十进制计数模块,在次不再重复诉说。5、数码管扫描模块该模块的功能是选择各个计数端口来的数据,当相应的数据到来时,数据选择器选择数据后输出给七段译码器,同时输出位选信号,再接入到实验箱上的8字数码显示电路上就可显示了。 其模块图如下图所示:Clk为时钟信号输入端,msec1.minute2是各个计数端口来的数据的输入端,deout为数据选择器选择数据后输出端,sel为位选信号输出端。6、七段译码显示模块 该模块的功能就是把输入的四位二进制数据转换为七段数码管的显示编码,再输入到七段数码管中显示出数据。其模块图如下图所示:A为数据输入端,led7s为数据输出端。五:程序设计如下:/*以下引脚锁定基于DE2-35,芯片为EP2C35F672C6*【例1】数字跑表(顶层模块)信号定义如下:Clk50m: 输入50MHz时钟信号;Clr: 异步复位信号;pause: 暂停信号;dotout:小数点;ledl, led0:百分秒的高位和低位;led3, led2:秒信号的高位和低位;led5,1ed4:分信号的高位和低位 */module paobiao (clk,pause,clr,led0,led1,led2,led3,led4,led5,dotout);parameter WIDTH=7;/input clk50m;input clk;input pause;input clr;output dotout;outputWIDTH-1:0 led5;outputWIDTH-1:0 led4;outputWIDTH-1:0 led3;outputWIDTH-1:0 led2;outputWIDTH-1:0 led1;outputWIDTH-1:0 led0;wire isstop;wire zero;switch # (8) switchstop (clk50m,pause, isstop) ;switch # (8) switchzero (clk50m, clr, zero) ;/reg 18 : 0 counter_l00hz ;reg clk100;/assign clkl00=counter_l00hz 18;assign dotout=1b1;/*always (posedge clk50m)begin if(!isstop)begin if(counter_l00hz=19b1111_0100_0010_0100_000)counter_l00hz=0;else counter_l00hz=counter_l00hz+1;endend*/always (*)begin if(!isstop) clk100=clk;endreg 3 : 0 fs0 ; reg fscarry0; reg 3 : 0 fs1; reg fscarry1; reg3 :0 s0;regscarry0;reg3 :0 s1;regscarry1;reg3 :0 minu0;regmiucarry0;reg3 :0 minu1;always (posedge clk100 or posedge zero)begin if (zero) begin fs0=0; fscarry0=0; end else if (clk100=1) begin if(fs0=9) begin fs0=0; fscarry0=1; endelse begin fs0=fs0+1; fscarry0=0 ; end endendalways (posedge fscarry0 or posedge zero)begin if (zero) begin fs1=0; fscarry1=0;end else if (fscarry0=1) begin if(fs1=9) begin fs1=0;fscarry1=1;end else begin fs1=fs1+1; fscarry1=0;end endendalways (posedge fscarry1 or posedge zero)begin if (zero) begin s0=0; scarry0=0;end else if ( fscarry1=1) begin if (s0=9) begin s0=0;scarry0=1;end else begin s0=s0+1;scarry0=0;end end endalways(posedge scarry0 or posedge zero)begin if(zero) begin s1=0;scarry1=0;end else if (scarry0=1) begin if(s1=5) begin s1=0;scarry1=1;end else begin s1=s1+1;scarry1=0;end end endalways (posedge scarry1 or posedge zero) begin if (zero) begin minu0=0;miucarry0=0;end else if (scarry1=1) begin if (minu0=9) begin minu0=0;miucarry0=1;end else begin minu0=minu0+1;miucarry0=0;end endendalways (posedge miucarry0 or posedge zero)begin if (zero) begin minu1=0;end else if (miucarry0=1) begin if (minu1=5) minu1=0; else minu1=minu1+1; end end led ledfs0 (fs0,led0);led ledfsl(fs1,led1);led leds0(s0,led2); led ledsl(s1,led3);led ledmiu0(minu0,led4);led ledmiul(minu1,led5);endmodule/*【例1】数字跑表(7段数码管译码显示模块)。 led.v:7段数码管(led)译码显示模块 datain:4位,10进制数输入ledout:7位,数码管的7段*/module led(datain,ledout);parameter INWIDTH=4;parameter OUTWIDTH=7;inputINWIDTH-1: 0 datain; output OUTWIDTH-1:0 ledout; regOUTWIDTH-1:0 dataout;assign ledout=dataout;always begincase (datain) 0 : dataout=7b;1 : dataout=7b;2 : dataout=7b;3 : dataout=7b;4 : dataout=7b;5 : dataout=7b;6 : dataout=7b;7 : dataout=7b;8 : dataout=7b;9 : dataout=7b; default : dataout=7b;endcaseendendmodule/*【例1】数字跑表(按键廾关消抖电路)。switch-v:对按键开关的消抖电路,采用一个频率较低的时钟,对输入进行采样,消除抖动*/module switch(clk,keyin,keyout);parameter COUNTWIDTH=8;input clk, keyin; output reg keyout; reg COUNTWIDTH-1: 0 counter;wire clk_use; /频率较低的时钟assign clk_use=counter COUNTWIDTH-1;always (posedge clk)counter=counter+1b1;always (posedge clk_use)keyout=keyin;endmodule六:编译仿真及硬件测试1、编译仿真当完成了以上秒表系统各个模块的VHDL设计,就可以使用Quartus对本设计进行编译和仿真。首先使用文本编辑器输入本设计的所有模块的源程序,先对各个模块进行编译和仿真,当所有模块全部编译通过和仿真功能正确后,就可以利用图形编辑工具完成顶层设计,其设计图如顶层设计图所示。然后再对图形编辑器编辑出的顶层设计图进行全程编译,通过之后就可以进行系统的整体仿真了。其中各个模块的仿真已在模块设计中完成,在此从略,下面只说明系统的整体仿真。2.顶层设计图: 在仿真中,clk取10ns的信号,合理选取start和reset信号,就可以进行

温馨提示

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

评论

0/150

提交评论