首页 VHDL数字钟报告

VHDL数字钟报告

举报
开通vip

VHDL数字钟报告.PAGE/NUMPAGES数字钟设计报告绪论:20世纪90年代,国际上电子和计算机技术较为先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件〔如CPLD、FPGA〕的应用,已得到广泛的普与,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技...

VHDL数字钟报告
.PAGE/NUMPAGES数字钟设计 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 绪论:20世纪90年代,国际上电子和计算机技术较为先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件〔如CPLD、FPGA〕的应用,已得到广泛的普与,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。概要:本设计主要利用VHDL语言在EDA平台上设计一个24进制和12进制可以相互转换的电子数字钟,另外还具有设置时间和闹钟功能。总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和设置程序模块、比较器程序模块、译码显示程序模块。并且使用QUARTUSII软件进行电路波形仿真,下载到实验箱进行验证。一、设计目的1、熟练地运用数字系统的设计方法进行数字系统设计;2、能进行较复杂的数字系统设计;3、按要求设计一个数字钟。二、设计思路数字钟的设计模块包括:分频器、"时、分、秒"计数器、闪烁电路、整点报时和译码显示电路。每一个功能模块作为一个实体单独进行设计,最后再用VHDL的例化语句将各个模块进行整合。该数字钟可以实现的几个功能:计时功能、设置时间功能、设置闹钟和报时功能。系统设计闪烁模块分频模块显示模块时间和闹钟显示选择以与闹钟模块计时与设置时间模块时间控制模块闹钟控制模块设置闹钟模块1、分频模块:提供1hz的时钟信号与100hz的测试时钟信号。可通过实验板上的k2键来调节。2、时间控制模块:控制设置时间和计时的使能信号。3、闹钟控制模块:控制设置闹钟和计时的使能信号。4、计时与设置时间模块和设置闹钟模块:通过时间控制模块和闹钟控制模块传来的使能信号来转换计时、设置时间和设置闹钟。可以通过Key0键设置时间,Key1键设置闹钟。Key3键选择需要设置的位数,Key4键来调整时间。时间和闹钟显示选择以与闹钟模块:接收计时与设置时间模块和设置闹钟模块传来的数据选择时间或者闹钟传至显示模块。并且可以根据sw2键来改变传至显示模块的是12进制和24进制。可以整点报时和闹钟。显示模块:将从时间和闹钟显示选择模块传来的数据显示在数码管上。并且可以在设置时间和设置闹钟时闪烁显示。五、模块设计1分频模块引入50Mhz的时钟信号,根据<50M/2n>-1,实现1hz和100hz的分频ARCHITECTUREBAHAVOFFDISSIGNALQ,Q1:STD_LOGIC;BEGINPROCESSVARIABLETEMP:INTEGERRANGE24999999DOWNTO0;BEGINIFSW2='1'THENIFEN='1'THENIFCLK'EVENTANDCLK='1'THENIFTEMP=24999999THENTEMP:=0;Q<=NOTQ;ELSETEMP:=TEMP+1;ENDIF;ENDIF;ELSETEMP:=0;Q<='0';ENDIF;ENDIF;ENDPROCESS;PROCESSVARIABLETEMP1:INTEGERRANGE249999DOWNTO0;BEGINIFSW2='0'THENIFEN='1'THENIFCLK'EVENTANDCLK='1'THENIFTEMP1=249999THENTEMP1:=0;Q1<=NOTQ1;ELSETEMP1:=TEMP1+1;ENDIF;ENDIF;ELSETEMP1:=0;Q1<='0';ENDIF;ENDIF;ENDPROCESS;PROCESSBEGINIFSW2='1'THENCLK_OUT<=Q;ELSECLK_OUT<=Q1;ENDIF;ENDPROCESS;ENDARCHITECTURE;时间控制模块〔与闹钟控制模块类似〕〔1〕功能 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 通过TIMESET〔KEY0〕键来控制设置时间,按下TIMESET〔KEY0〕,开始设置时间,再次按下 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示设置结束。通过使用状态机,每按下一次SHIFT〔KEY3〕改变状态从状态s0->s1->s2->s3->s4->s1来改变使能信号。S0状态为计时模式,S1,S2,S3,S4状态为设置时间模式。S1状态为分钟低位可设置,S2状态为分钟高位可设置,S3状态为小时低位可设置,S4状态为小时高位可设置。〔2〕信号分析SEC_EN0,MIN_EN1,MIN_EN0,HOUR_EN1,HOUR_EN0为0时为不可改变状态〔不能计时和设置〕,为1时为可改变状态〔能计时和设置〕。SEL为0时,传入计时与设置时间模块的是1hz的时钟信号,SEL为1时,进入设置模式,传入计时与设置时间模块的是ADD信号,ARCHITECTUREBAHAVOFSETMODEISTYPEFSM_STIS;SIGNALCST,NST:FSM_ST:=S0;SIGNALFLAG:STD_LOGIC:='0';BEGINPROCESSBEGINIFTIMESET'EVENTANDTIMESET='1'THENFLAG<=NOTFLAG;——小时时间设置标记FLAG_H<=FLAG;——输出小时时间设置标记ENDIF;ENDPROCESS;PROCESSBEGINIFFLAG='1'THENIFSHIFT'EVENTANDSHIFT='1'THENCST<=NST;ENDIF;LED<='1';ELSECST<=S0;LED<='0';ENDIF;ENDPROCESS;——PROCESSBEGINCASECSTISWHENS0=>NST<=S1;——S0状态为计时模式WHENS1=>NST<=S2;——S1状态为分钟低位可设置WHENS2=>NST<=S3;——S2状态为分钟高位可设置WHENS3=>NST<=S4;——S3状态为小时低位可设置WHENS4=>NST<=S1;——S4状态为小时高位可设置WHENOTHERS=>NST<=S0;ENDCASE;ENDPROCESS;PROCESSBEGINCASECSTISWHENS0=>SEC_EN<='1';MIN_EN1<='1';MIN_EN0<='1';HOUR_EN1<='1';HOUR_EN0<='1';SEL<='0';WHENS1=>SEC_EN<='0';MIN_EN1<='0';MIN_EN0<='1';HOUR_EN1<='0';HOUR_EN0<='0';SEL<='1';WHENS2=>SEC_EN<='0';MIN_EN1<='1';MIN_EN0<='0';HOUR_EN1<='0';HOUR_EN0<='0';SEL<='1';WHENS3=>SEC_EN<='0';MIN_EN1<='0';MIN_EN0<='0';HOUR_EN1<='0';HOUR_EN0<='1';SEL<='1';WHENS4=>SEC_EN<='0';MIN_EN1<='0';MIN_EN0<='0';HOUR_EN1<='1';HOUR_EN0<='0';SEL<='1';WHENOTHERS=>SEC_EN<='0';MIN_EN1<='0';MIN_EN0<='0';HOUR_EN1<='0';HOUR_EN0<='0';SEL<='0';ENDCASE;ENDPROCESS;ENDARCHITECTURE;小时模块〔秒钟,分钟模块类似〕本模块分为3个进程第一个进程的功能为转换时钟信号与设置信号〔KEY2〕,由时间控制模块传来的HOUR_SEL控制。第二个进程的功能为小时低位的计数和设置。第二个进程的功能为小时高位的计数和设置。并且考虑到了低位和高位的钳制。ARCHITECTUREBAHAVOFHOURISSIGNALHOURVALUE:STD_LOGIC_VECTOR<7DOWNTO0>:="00100011";SIGNALCLK_IN:STD_LOGIC;BEGINPROCESS——转换时钟信号与设置信号BEGINIFHOUR_SEL='0'THENCLK_IN<=HCLK;ELSECLK_IN<=HOUR_SET;ENDIF;ENDPROCESS;PROCESS——小时低位的计数和设置BEGINIFEN0='1'THENIFCLK_IN'EVENTANDCLK_IN='1'THENIFHOURVALUE<7DOWNTO4>="0010"THENIFHOURVALUE<3DOWNTO0>="0011"THENHOURVALUE<3DOWNTO0><="0000";ELSEHOURVALUE<3DOWNTO0><=HOURVALUE<3DOWNTO0>+'1';ENDIF;ELSIFHOURVALUE<3DOWNTO0><"1001"THENHOURVALUE<3DOWNTO0><=HOURVALUE<3DOWNTO0>+'1';ELSEHOURVALUE<3DOWNTO0><="0000";ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS——小时高位的计数和设置。并且考虑到了低位和高位的钳制BEGINIFEN1='1'THENIFCLK_IN'EVENTANDCLK_IN='1'THENIFEN0='1'THENIFHOURVALUE<3DOWNTO0>="0011"ORHOURVALUE<3DOWNTO0>="1001"THENIFHOURVALUE<7DOWNTO4>="0010"THENHOURVALUE<7DOWNTO4><="0000";ELSIFHOURVALUE<3DOWNTO0>="1001"THENIFHOURVALUE<7DOWNTO4><"0011"THENHOURVALUE<7DOWNTO4><=HOURVALUE<7DOWNTO4>+'1';ENDIF;ENDIF;ENDIF;——设置小时低位对高位钳制ELSIFHOURVALUE<3DOWNTO0><"0100"THENIFHOURVALUE<7DOWNTO4><"0010"THENHOURVALUE<7DOWNTO4><=HOURVALUE<7DOWNTO4>+'1';ELSEHOURVALUE<7DOWNTO4><="0000";ENDIF;ELSIFHOURVALUE<3DOWNTO0>>="0100"THENIFHOURVALUE<7DOWNTO4><"0001"THENHOURVALUE<7DOWNTO4><=HOURVALUE<7DOWNTO4>+'1';ELSEHOURVALUE<7DOWNTO4><="0000";ENDIF;ENDIF;ENDIF;ENDIF;ENDPROCESS;HOUR0<=HOURVALUE<3DOWNTO0>;HOUR1<=HOURVALUE<7DOWNTO4>;ENDARCHITECTURE;4、选择模块和闹钟报时模块第一个进程为24进制和12进制转换,当SW信号为1时,选择24进制时间输出,当SW信号为0时,将24进制时间转换为12进制时间输出。第二个进程为判断12进制是AM还是PM第三个进程为12进制是AM或PM数码管灯提示。第四个进程为闹钟报时与整点报时模块:当计时模块传来的时间和闹钟设置的时间相等时,闹钟提示灯闪烁,或者分钟模块传来是30或00时,闹钟提示灯闪烁。ARCHITECTUREBAHAVOFCHOOSEISSIGNALFLAG_AP:STD_LOGIC;BEGINPROCESSBEGINIFFLAG='1'THEN——闹钟时间输出MIN0<=AMININ0;MIN1<=AMININ1;HOUR0<=AHOURIN0;HOUR1<=AHOURIN1;HF0<=AH_FLASH0;HF1<=AH_FLASH1;MF0<=AM_FLASH0;MF1<=AM_FLASH1;ELSE——时钟时间输出MIN0<=MININ0;MIN1<=MININ1;HF0<=H_FLASH0;HF1<=H_FLASH1;MF0<=M_FLASH0;MF1<=M_FLASH1;IFSW='1'THENHOUR0<=HOURIN0;HOUR1<=HOURIN1;ELSEIFFLAG_H='0'THEN——24进制输出HOUR0<=HOURIN0;HOUR1<=HOURIN1;ELSE——24进制转换12进制时间输出IFHOURIN1&HOURIN0>="00010010"THENIFHOURIN0>="0010"THENHOUR1<=HOURIN1-"0001";HOUR0<=HOURIN0-"0010";ELSIFHOURIN0="0001"THENHOUR1<=HOURIN1-"0001";HOUR0<="1001";ELSIFHOURIN0="0000"THENHOUR1<=HOURIN1-"0001";HOUR0<="1000";ENDIF;ELSEHOUR1<=HOURIN1;HOUR0<=HOURIN0;ENDIF;ENDIF;ENDIF;ENDIF;ENDPROCESS;——判断12进制是AM还是PMPROCESSBEGINIFHOURIN1>="0001"ANDHOURIN0>="0010"THENFLAG_AP<='1';ELSEFLAG_AP<='0';ENDIF;ENDPROCESS;——12进制是AM或PM数码管灯提示PROCESSBEGINIFSW='1'THENHEX<="1111111";ELSEIFFLAG_AP='1'THENHEX<="0001100";ELSEHEX<="0001000";ENDIF;ENDIF;ENDPROCESS;——整点报时,半点报时,闹钟PROCESSBEGINIFORMININ1&MININ0="00000000"ORMININ1&MININ0="00110000"THENFLASH_FLAG<='1';ELSEFLASH_FLAG<='0';ENDIF;ENDPROCESS;ENDARCHITECTURE;5、显示模块HOURFLASH1,HOURFLASH0,MINFLASH1,MINFLASH0信号控制数码管的闪烁,当这些信号为1时,数码管暗,为0时,数码管显示数值。SECIN0,SECIN1,MININ0,MININ1,HOURIN0,HOURIN1为时间和闹钟显示选择以与闹钟模块传来的四进制数,每一个进程的作用就是将传来的四进制数译码为7进制数,传入实验板中,使数码管显示相应的数值。ARCHITECTUREBEHAVOFDISPISSIGNALREG7_0:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALREG7_1:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALREG7_2:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALREG7_3:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALREG7_4:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALREG7_5:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALREG7_6:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALREG7_7:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALREG7_8:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALREG7_9:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALREG7_NULL:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALLEDX:STD_LOGIC;BEGINREG7_0<="1000000";——数码管0REG7_1<="1111001";——数码管1REG7_2<="0100100";——数码管2REG7_3<="0110000";——数码管3REG7_4<="0011001";——数码管4REG7_5<="0010010";——数码管5REG7_6<="0000010";——数码管6REG7_7<="1111000";——数码管7REG7_8<="0000000";——数码管8REG7_9<="0010000";——数码管9REG7_NULL<="1111111";——不显示——译码器PROCESSBEGINIFEN='1'THENIFHOURFLASH1='1'THENHOUR1<=REG7_NULL;ELSECASEHOURIN1ISWHEN"0000"=>HOUR1<=REG7_0;WHEN"0001"=>HOUR1<=REG7_1;WHEN"0010"=>HOUR1<=REG7_2;WHEN"0011"=>HOUR1<=REG7_3;WHEN"0100"=>HOUR1<=REG7_4;WHEN"0101"=>HOUR1<=REG7_5;WHEN"0110"=>HOUR1<=REG7_6;WHEN"0111"=>HOUR1<=REG7_7;WHEN"1000"=>HOUR1<=REG7_8;WHEN"1001"=>HOUR1<=REG7_9;WHENOTHERS=>HOUR1<=REG7_NULL;ENDCASE;ENDIF;ELSEHOUR1<=REG7_1;ENDIF;ENDPROCESS;PROCESSBEGINIFEN='1'THENIFHOURFLASH0='1'THENHOUR0<=REG7_NULL;ELSECASEHOURIN0ISWHEN"0000"=>HOUR0<=REG7_0;WHEN"0001"=>HOUR0<=REG7_1;WHEN"0010"=>HOUR0<=REG7_2;WHEN"0011"=>HOUR0<=REG7_3;WHEN"0100"=>HOUR0<=REG7_4;WHEN"0101"=>HOUR0<=REG7_5;WHEN"0110"=>HOUR0<=REG7_6;WHEN"0111"=>HOUR0<=REG7_7;WHEN"1000"=>HOUR0<=REG7_8;WHEN"1001"=>HOUR0<=REG7_9;WHENOTHERS=>HOUR0<=REG7_NULL;ENDCASE;ENDIF;ELSEHOUR0<=REG7_4;ENDIF;ENDPROCESS;PROCESSBEGINIFEN='1'THENIFMINFLASH1='1'THENMIN1<=REG7_NULL;ELSECASEMININ1ISWHEN"0000"=>MIN1<=REG7_0;WHEN"0001"=>MIN1<=REG7_1;WHEN"0010"=>MIN1<=REG7_2;WHEN"0011"=>MIN1<=REG7_3;WHEN"0100"=>MIN1<=REG7_4;WHEN"0101"=>MIN1<=REG7_5;WHEN"0110"=>MIN1<=REG7_6;WHEN"0111"=>MIN1<=REG7_7;WHEN"1000"=>MIN1<=REG7_8;WHEN"1001"=>MIN1<=REG7_9;WHENOTHERS=>MIN1<=REG7_NULL;ENDCASE;ENDIF;ELSEMIN1<=REG7_4;ENDIF;ENDPROCESS;PROCESSBEGINIFEN='1'THENIFMINFLASH0='1'THENMIN0<=REG7_NULL;ELSECASEMININ0ISWHEN"0000"=>MIN0<=REG7_0;WHEN"0001"=>MIN0<=REG7_1;WHEN"0010"=>MIN0<=REG7_2;WHEN"0011"=>MIN0<=REG7_3;WHEN"0100"=>MIN0<=REG7_4;WHEN"0101"=>MIN0<=REG7_5;WHEN"0110"=>MIN0<=REG7_6;WHEN"0111"=>MIN0<=REG7_7;WHEN"1000"=>MIN0<=REG7_8;WHEN"1001"=>MIN0<=REG7_9;WHENOTHERS=>MIN0<=REG7_NULL;ENDCASE;ENDIF;ELSEMIN0<=REG7_8;ENDIF;ENDPROCESS;PROCESSBEGINIFEN='1'THENCASESECIN1ISWHEN"0000"=>SEC1<=REG7_0;WHEN"0001"=>SEC1<=REG7_1;WHEN"0010"=>SEC1<=REG7_2;WHEN"0011"=>SEC1<=REG7_3;WHEN"0100"=>SEC1<=REG7_4;WHEN"0101"=>SEC1<=REG7_5;WHEN"0110"=>SEC1<=REG7_6;WHEN"0111"=>SEC1<=REG7_7;WHEN"1000"=>SEC1<=REG7_8;WHEN"1001"=>SEC1<=REG7_9;WHENOTHERS=>SEC1<=REG7_NULL;ENDCASE;ELSESEC1<=REG7_2;ENDIF;ENDPROCESS;PROCESSBEGINIFEN='1'THENCASESECIN0ISWHEN"0000"=>SEC0<=REG7_0;WHEN"0001"=>SEC0<=REG7_1;WHEN"0010"=>SEC0<=REG7_2;WHEN"0011"=>SEC0<=REG7_3;WHEN"0100"=>SEC0<=REG7_4;WHEN"0101"=>SEC0<=REG7_5;WHEN"0110"=>SEC0<=REG7_6;WHEN"0111"=>SEC0<=REG7_7;WHEN"1000"=>SEC0<=REG7_8;WHEN"1001"=>SEC0<=REG7_9;WHENOTHERS=>SEC0<=REG7_NULL;ENDCASE;ELSESEC0<=REG7_4;ENDIF;ENDPROCESS;PROCESSBEGINIFFLAG='1'THENIFCLK'EVENTANDCLK='1'THENLEDX<=NOTLEDX;ENDIF;ELSELEDX<='0';ENDIF;ENDPROCESS;LED<=LEDX;ENDARCHITECTURE;实验版显示Key0为设置时间Key1为设置闹钟Key2为时间加Key3为移位Sw0=0显示学号sw0=1数字钟Sw1=0为12进制sw1=1为24进制Sw2=1为正常时钟sw2=0为加快的时钟1.学号显示2.24进制时间显示Sw2=1为正常时钟sw2=0为加快的时钟Sw1=0为12进制sw1=1为24进制Sw0=0显示学号sw0=1数字钟3.12进制时间显示Key0为设置时间Key3为移位Key2为时间加Key1为设置闹钟HEX7数码管在下午时为P4.24进制设置时间按下key0进入设置时间状态设置时间提示灯设置时间状态下ledg1亮5设置闹钟按下key1进入设置闹钟状态设置闹钟提示灯设置闹钟状态下ledg2灯亮6.与闹钟对应的时间闹钟提示灯7半点报时,整点报时整点报时提示灯半点报时提示灯七、结论经过几周EDA实验的学习,使我受益匪浅。这不仅增强了我对EDA设计的兴趣,更掌握了基本的电路设计 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 、方法以与技巧。具备了这些基本知识,为今后的自主学习奠定了良好的基础。同时通过本次课程设计,巩固了我们以前学过的专业知识,通过这次的程序设计,使我们对数字系统结构也有了更进一步的了解与认识,同时对eda技术,vhdl语言等系列知识都有了一定的了解与认识。使用eda技术开发页面的能力也有了提高,也使我们把理论与实践从正真意义上结合了起来,考验了我们的动手能力,查阅相关资料的能力,还有组织材料的能力。通过此次实践,我们从中可以找出自己知识的不足与欠缺,以便我们在日后的学习中得以改进与提高。经过本次设计使我们对大学四年期间所学习到的知识得以进一步实践,这将对我们走出校园走向社会走向工作岗位奠定坚实的基础。遇到的问题和改进此次设计不足之处是不能在12进制的状态下设置时间,只能切换回24进制显示才能设置时间,这是有待改进的地方。遇到的问题是模块的屏蔽问题:如在设置时间的时候计数器停止,保持原来的数字,解决方法是增加一个控制信号。
本文档为【VHDL数字钟报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xiangm
暂无简介~
格式:doc
大小:20MB
软件:Word
页数:27
分类:成人教育
上传时间:2022-02-19
浏览量:0