




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA技术课程大作业设计题目:数字秒表设计姓名:学号:姓名:学号:姓名:学号:专业班级:级通信工程2013年1月2日数字秒表设计1.设计背景和设计方案要求1.1设计背景经过一个学期对《EDA技术实用教程》的学习,已经初步掌握了一些较为简单的EDA应用实例。本次实验我小组选择的课题是《数字秒表设计》。任务安排1.2设计原理和结构秒表功能秒表的显示范围是00:00:00-59:59:99,显示精度为1ms,其拥有可控的自动报警功能〔可通过蜂鸣器控制模块的clk端选择计数一小时后报时或者不报时,如想要报时那么接通clk端,反之clk端断开,选择报时那么计数到达一小时后蜂鸣器会响一声,否那么蜂鸣器不响,〕、可控的启动功能〔通过计数器的start端口来控制计数器的启动,也即控制数字秒表的启动〕及数字秒表清零功能〔通过控制计数器清零端来实现,当清零端为高电平时,计数器清零,也即数字秒表清零,否那么秒表正常计数〕。秒表结构秒表的物理结构比拟简单,它主要由十进制计数器、六进制计数器、数据选择器、显示译码器蜂鸣器等组成。此外,秒表还需有一个启动信号、清零信号及报时信号,以便实现对秒表的控制和有效应用〔启动和清零信号及报时信号由使用者给出,设计时主要任务是将此外界信号的功能准确的通过数字秒表表达出来,也即,当使用者给出启动信号时数字秒表能够正常启动,上面已经给出,启动和清零的功能是通过将此信号送给计数器来实现的〕。
设计思路十进制计数器clk端接石英晶体振荡器,选择振荡频率为1000HZ。那么振荡一秒钟之后,十进制计数器进位输出端输出100个高电平信号,每个高电平信号表示s,也即10ms。然后将10ms的信号接到下一个十进制计数器的clk端,那么10个此信号之后,输出一个高电平信号,也即每个高电平信号表示1010=100ms。依此类推,通过选择不同的计数器,在进位输出端可分别得到10ms、100ms、1s、10s等进位信号。与此同时,为了使计数器记录的数字在七段显示器上显示出来,计数器除了有进位输出端之外还应该有BCD码输出端,以便连接显示译码器。由于数字秒表有6块七段显示器,那么理应要有6块与之对应的显示译码器。但是在工程中,为了节约本钱一般只用一块显示译码器,此译码器由控制器控制输入〔输入信号为各个译码器的BCD码输出端〕,间接控制输出。也就是说数字秒表各个显示器不是一直在显示着,而是各个显示器交替显示,只是由于控制器扫描频率足够大,人眼分辨不出这种交替显示,误以为是一直显示着。1.2.4系统组成框图如图1.1所示。数字秒表数字秒表计时输入石英晶体振荡器计时电路显示电路分频电路计数器六进制计数器扫描电路七段译码器十进制计数器图1.1系统组成框图2.方案实施2.1子程序设计六进制计数器useieee.std_logic_unsigned.all;entitycount6isport(clk,clr,start:instd_logic;daout:outstd_logic_vector(3downto0);图2.1cout:outstd_logic);endcount6;……六进制计数器VHDL语言描述详见附件。将VHDL文本文件在Quartus上编译仿真〔为了仿真,需要将此VHDL文件设置为工程文件〕,仿真结果如图2.2所示。然后新建blocksymbolfile,接着选择菜单filecreate/updatecreatesymbolfilesforcurrentfile将VHDL文件转换成symbol文件,以便在顶层文件设计中调用。转换成功后要保存并命名〔命名与VHDL文件命名规那么相同,要与实体名保持一致〕。六进制计数器symbol文件如图2.1所示,clk为时钟信号、clr为清零端〔clr为高电平时计数器清零〕、start为使能信号〔start为1时计数器正常计数,否那么计数器不工作〕、daout[3..0]BCD码输出端口、cout为进位输出端口。图2.2六进制计数器仿真波形十进制计数器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitycount10isport(clr,start,clk:instd_logic;图2.3cout:outstd_logic;daout:bufferstd_logic_vector(3downto0));endcount10;………十进制计数器VHDL语言描述详见附件。将VHDL文本文件在Quartus上编译仿真,仿真结果如图2.4所示。然后按照上述步骤将VHDL文件转换成symbol文件并保存。十进制计数器symbol文件如图2.3所示,端口功能描述参照六进制计数器。图2.4十进制计数器仿真波形蜂鸣器控制电路libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityalarmisport(clk,I:instd_logic;q:outstd_logic);图2.5endalarm;……蜂鸣器控制电路VHDL语言描述详见附件。将此VHDL文本文件在Quartus上编译仿真,仿真结果如图2.6〔表示假设接通clk,那么当I为高电平且clk为上升沿时q输出高电平,也即蜂鸣器响一声,随后当下一个clk上升沿到来,由于此时I为零,q输出低电平,也即蜂鸣器在计数到达一小时时报时一声〕和图2.7〔表示假设接通clk端,那么每一次I输入高电平,也即每当计数器计到一小时那一刻q都对应一个高电平,即每当计数到达一小时,都会报时〕所示。然后按照上述步骤将VHDL文件转换成symbol文件并保存。蜂鸣器控制电路symbol文件如图2.5所示。图2.6蜂鸣器控制电路图2.7蜂鸣器控制电路显示译码器libraryieee;useieee.std_logic_1164.all;entitydeledis图2.8port(num:instd_logic_vector(3downto0);led:outstd_logic_vector(6downto0));enddeled;……显示译码器VHDL语言描述详见附件。将此VHDL文本文件在Quartus上编译仿真,仿真结果如图2.9所示。然后按照上述步骤将VHDL文件转换成symbol文件并保存。蜂鸣器控制电路symbol文件如图2.8所示。由于输入端信号为BCD码,而且一位BCD码只能表示十进制数的0—9,因此当输入为1010—1111时〔十进制对应的是10—15〕,无对应的译码输出,即输出为零,这也是编程决定的。图2.9显示译码器数据选择器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityseltimeisport(clr,clk:inbit;dain0,dain1,dain2,dain3,dain4,dain5:instd_logic_vector(3downto0);sel:outstd_logic_vector(2downto0);daout:outstd_logic_vector(3downto0));endseltime;……图2.10数据选择器VHDL语言描述详见附件。将此VHDL文本文件在Quartus上编译仿真,仿真结果如图2.11所示。然后按照上述步骤将VHDL文件转换成symbol文件并保存。蜂鸣器控制电路symbol文件如图2.10所示。为了方便观察,我将输入设置成了单一的数值,实际上每个输入都是BCD码,这一点读者要明白!由仿真结果可以清晰的看出,当clk出现上升沿时,daout输出端就会发生转变,且转变周期为6,在一个变化周期内,六个输入数值依次输出。sel输出目的是选择七段显示器〔由于有6块显示器,且一个时钟周期内只有一个显示,显然要选择在某一个时钟周期内哪个显示器显示,至于如何通过sel输出的2值信息来控制显示器,那么需要用到一个非时序逻辑电路,这里不做过多说明〕,即当sel=1时对应于1的显示器显示,其它5个显示器不显示。将clk端接入足够高的振荡频率波形,也即显示器显示频率足够高,这样人眼看去完全看不出闪烁,就如同电灯一样,电灯的显示频率为50Hz,人眼已经完全感觉不到其闪烁。图2.11数据选择器2.2顶层文件设计为了建立顶层文件调用子程序模块,必须建立一个原理图编辑窗口。选择菜单filesnewblockdiagram/schematicfile,然后将其设置为新的工程,并将所有的子程序添加到此工程中,然后保存并命名。建立工程后,在新翻开的原理图编辑窗口双击鼠标,添加各个子模块,然后将子模块按照中的设计思路连接起来,得到数字秒表原理图文件,如图2.12所示。图2.12数字秒表原理图3.结果及结论将顶层文件编译,然后仿真,设置适宜的clk及endtime,并将start端置1,得到仿真波形图,如图3.1、3.2、3.3所示〔由于仿真时间长,为了清楚的观察各个波形,故需要多个图形展示。为了便于判断译码是否准确,在图3.3中参加daout输出端,将图3.3与图2.9比照可知,译码准确〕。观察各个输出波形可知,6个10min之后进位为1h,6个10s之后进位为1min,设计到达目的。但是由于1h的clk端接的脉冲周期为10min,意味着1h的高电平信号持续时间为10min,也即蜂鸣器将会持续响10min,这一点不太符合使用习惯,需要改良〔改良的方法读者可以自己思考〕。图3.1数字计数器仿真图3.2数字计数器仿真图3.3数字技术器仿真4.参考文献[1]潘松.黄继业.《EDA技术实用教程VHDL版〔第四版〕》.北京:科学出版社,2023年12月[2]阎石.《数字电子技术根底〔第五版〕》.北京:高等教育出版社,2006年5月5.附件六进制计数器useieee.std_logic_unsigned.all;entitycount6isport(clk,clr,start:instd_logic;daout:outstd_logic_vector(3downto0);cout:outstd_logic);endcount6;architecturebehaveofcount6issignaltemp:std_logic_vector(3downto0);beginprocess(clk,clr)beginifclr='1'thentemp<="0000";cout<='0';elsifclk'eventandclk='1'thenifstart='1'theniftemp>="0101"thentemp<="0000";cout<='1';elsetemp<=temp+1;cout<='0';endif;endif;endif;endprocess;daout<=temp;endbehave;十进制计数器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitycount10isport(clr,start,clk:instd_logic;cout:outstd_logic;daout:bufferstd_logic_vector(3downto0));endcount10;architecturebehaveofcount10isbeginprocess(clr,start,clk)beginifclr='1'thendaout<="0000";elsif(clk'eventandclk='1')thenifstart='1'thenifdaout="1001"thendaout<="0000";cout<='1';elsedaout<=daout+1;cout<='0';endif;endif;endif;endprocess;endbehave;蜂鸣器控制电路libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityalarmisport(clk,I:instd_logic;q:outstd_logic);endalarm;architecturearofalarmissignalq0:std_logic;beginprocess(clk)beginifclk'eventandclk='1'thenifi='0'thenq0<='0';elsifi='1'thenq0<='1';elseq0<='0';endif;endif;endprocess;q<=q0;endar;显示译码器libraryieee;useieee.std_logic_1164.all;entitydeledisport(num:instd_logic_vector(3downto0);led:outstd_logic_vector(6downto0));enddeled;architectureaofdeledisbeginprocess(num)begincasenumiswhen"0000"=>led<="0111111";when"0001"=>led<="0000110";when"0010"=>led<="1011011";when"0011"=>led<="1001111";when"0100"=>led<="1100110";when"0101"=>led<="1101101";when"0110"=>led<="1111101";when"0111"=>led<="0100111";when"1000"=>led<="1111111";when"1001"=>led<="1101111";whenothers=>led<="0000000";endcase;endprocess;enda;数据选择器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityseltimeisport(clr,clk:inbit;dain0,dain1,dain2,dain3,dain4,dain5:instd_logic_vector(3downto0);sel:outstd_logic_vector(2downto0);daout:outstd_logic_ve
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 购买玉米合同范本
- 风管机合同范本
- 环保理念在办公环境中的应用实践
- 神经康复技术的国际发展趋势与启示
- 签订宣传合同范本
- 维修 设计合同范本
- Ro-23-9358-生命科学试剂-MCE
- LPK-26-hydrochloride-生命科学试剂-MCE
- EP4-receptor-agonist-3-生命科学试剂-MCE
- CGP52608-生命科学试剂-MCE
- 铁路道岔知识课件
- 自考公共关系学课件
- 森林害虫防治方法课件
- 《国际金融》课件国际金融导论
- 各种el34名胆电子管评测
- 超分子化学-杯芳烃课件
- 车标识别 课讲义件课件
- 一年级下学期安全教育教案
- 送达地址确认书(样本)
- 甘肃省酒泉市各县区乡镇行政村村庄村名明细
- 压力容器考试审核考试题库(容标委-气体协会联合)
评论
0/150
提交评论