EDA-数字秒表设计_第1页
EDA-数字秒表设计_第2页
EDA-数字秒表设计_第3页
EDA-数字秒表设计_第4页
EDA-数字秒表设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、电子设计自动化大作业题目数字秒表设计学院控制科学与工程学院班级自动化0803姓名学号二OO年五月十二日题目:数字秒表的设计一、设计要求:(1)数字秒表的计时精度是10ms;(2)复位开关可以在任何情况下使用,计时在计时过程中,只要按一下复位开关,计时器就清零,并做好下次计时的准备;(3)具有启/停开关,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关则停止计时。(4)数字秒表的计时范围是0秒59分秒,显示的最长时间为59分59秒二、总体设计:1、总体结构图时输入到CHOICE钟通过数据的2、各模块功能编码控制数1)SEL模块:将扫描信号输给选择(CHOICE膜块2)选择模块:按扫描信

2、号的指定选择输出3)3-8译码模块:通过SEL给的信号来控制8位数码管位的亮灭4)计时模块:分别对毫秒,秒,分计时5)显示模块:通过CHOICE1块的输出信号来控制三、单元模块设计1、模块名:sel模块设计r-,S-IBS-,!-BS-,-,中-B-TSH-r,!S"-TB->,,=,-sel;1ielkselout2.0gtiinst5.I(1)模块功能:CLK为扫描时钟脉冲,SELOU端不停的发出扫描到的信号(2)端口定义:CLK为信号输入端SELOUT2.0为选择到的信号输出(3)VHDLM程序libraryieee;useselisport(clk:instd_logi

3、c;selout:outstd_logic_vector(2downto0);endsel;architectureoneofselissignalcount:std_logic_vector(2downto0);beginprocess(clk)beginifclk'eventandclk='1'thenif(count="101")thencount<="000"elsecount<=count+1;endif;endif;endprocess;selout<=count;endone;(4)仿真结果说明:来

4、一个上升沿,SELOUT勺值增1,可以证明模块是正确的2、模块名:选择模块设计CHOICEabct1datal.0dat.a23,+0<-h_out3.5'dat.a313.*0datad3一R3.,o1dat.a63.0(1)模块功能:按扫描信号的指定选择输出(2)端口定义:a,b,c为控制信号;data13.0,data23.0,data33.0,data43.0,data53.0,data63.0分别是毫秒的低位,毫秒的高位,秒的低位,秒的高位,分的低位,分的高位的数据值;ch_out3.0为选择输出端。(3)VHDL®程序libraryieee;usechoic

5、eisport(a,b,c:instd_logic;data1,data2,data3,data4,data5,data6:instd_logic_vector(3downto0);ch_out:outstd_logic_vector(3downto0);endchoice;architecturebehaveofchoiceissignalch:std_logic_vector(2downto0);beginch(2)<=c;ch(1)<=b;ch(0)<=a;process(ch)begincasechiswhen"000"=>ch_out<

6、;=data1;when"001"=>ch_out<=data2;when"010"=>ch_out<=data3;when"011"=>ch_out<=data4;when"100"=>ch_out<=data5;when"101"=>ch_out<=data6;endcase;endprocess;endbehave;(4)仿真结果VtfUM0tfiKf4Hm中Wk。q一岫t+4w餐p1»时*iilftlS1r9nd*an

7、a工HHID皿xJDS*m口THIun!clxh310SmyEKEElimmi犀AM1NI4;一EVCM®"T"一i«nJt-i>Tn"i$iMB3也i-DncEl0h>.<meTOIr9pm1HI事t«Lh-HH-(1帆心J0mrib)3t曲的Mli说明:abc的值递增,ch_out选择输出data1,data2,data3,data4,data5,data6的值,证明模块是正确的3、模块名:3-8译码模块设计:decode38SEL2.OQ7.-0(1)模块功能:通过SEL给的信号来控制8位数码管位的亮灭。(2)

8、端口定义:输入端SEL2.0值大小来选择输出Q的值(3) VHDL®程序LIBRARYieee;usedecode3_8ISPORT(SEL:INstd_logic_vector(2downto0);Q:OUTstd_logic_vector(7downto0);ENDdecode3_8;ARCHITECTUREaOFdecode3_8ISBEGINQ<=""whensel=0else""whensel=1else""whensel=2elsewhensel=3else""whensel=4else

9、""whensel=5elseENDa;说明:Sel的值递增,Q的相应位会亮,证明模块是正确的(4)仿真结果4. 1模块名:毫秒计时模块设计Ml00cUcco;resetqli9,.O',pauseq23*.0i;Xij(1)模块功能:对毫秒位的计数(2)端口定义:clk为信号时钟输入端reset为复位端pause为暂停端co为进位信号输出端qh:毫秒信号的高位输出端ql:毫秒信号的低位输出端(3)VHDL®程序libraryieee;usem100isport(clk:instd_logic;reset:instd_logic;pause:instd_l

10、ogic;co:outstd_logic;qh:bufferstd_logic_vector(3downto0);ql:bufferstd_logic_vector(3downto0);endm100;architecturebehaveofm100isbeginco<='1'when(qh="1001"andql="1001")else'0'process(clk,reset,pause)beginif(reset='0')thenqh<="0000"ql<=&quo

11、t;0000"elsif(pause='0')thenqh<=qh;ql<=ql;elsif(clk'eventandclk='1')thenif(ql="1001")thenql<="0000"if(qh="1001")thenqh<="0000"elseqh<=qh+1;endif;elseql<=ql+1;endif;endif;endprocess;endbehave;(4)仿真结果说明:毫秒为100进制,高位和地位都是1

12、0进制,高位到10会有进位,可以证明模块的正确性模块名:秒计时模块设计一一M60-SEC:二:resetHaus&:CX(1)模块功能:对毫秒位的计数(2)端口定义:clk为信号时钟输入端reset为复位端pause为暂停端co为进位信号输出端qh:毫秒信号的高位输出端ql:毫秒信号的低位输出端(3) VHDL®程序libraryieee;usem60_secisport(reset:instd_logic;pause:instd_logic;ci:instd_logic;co:outstd_logic;qh:bufferstd_logic_vector(3downto0);

13、ql:bufferstd_logic_vector(3downto0);endm60_sec;architecturebehaveofm60_secisbeginco<='1'when(qh="0101"andql="1001"andci='1')else'0'process(reset,pause,ci)beginif(reset='0')thenqh<="0000"ql<="0000"elsif(pause='0'

14、)thenqh<=qh;ql<=ql;elsif(ci'eventandci='1')thenif(ql="1001")thenql<="0000"if(qh="0101")thenqh<="0000"elseqh<=qh+1;endif;elseql<=ql+1;endif;endif;endprocess;endbehave;(4)仿真结果说明:秒进制为60进制,高位到6会有进位,低位为10进制,可以证明模块的正确性模块名:分计时模块设计(1)模块功能

15、:对毫秒位的计数(2)端口定义:clk为信号时钟输入端reset为复位端为进位信号输出端coqh:毫秒信号的高位输出端ql:毫秒信号的低位输出端(3)VHDL®程序libraryieee;usem60_minisport(reset:instd_logic;pause:instd_logic;ci:instd_logic;qh:bufferstd_logic_vector(3downto0);ql:bufferstd_logic_vector(3downto0);endm60_min;architecturebehaveofm60_minisbeginprocess(reset,pa

16、use,ci)beginif(reset='0')thenqh<="0000"ql<="0000"elsif(pause='0')thenqh<=qh;ql<=ql;elsif(ci'eventandci='1')thenif(ql="1001")thenql<="0000"if(qh="0101")thenqh<="0000"elseqh<=qh+1;endif;elseql&

17、lt;=ql+1;endif;endif;endprocess;endbehave;(4)仿真结果二二一说明:高位为6进制,低位为10进制,ci为脉冲信号,当ql=9的时候,qh在下一时刻会增1,可以证明模块的正确性5、模块名:显示模块设计(1)模块功能:通过CHOICER块的输出信号来控制(2)端口定义:adr是选择模块结果的输入端q_show是控制数码管段亮的输出端(3)VHDL®程序libraryieee;port(adr:instd_logic_vector(3downto0);q_show:outstd_logic_vector(6downto0);endBCD_7;arc

18、hitecturebehaveofBCD_7isbeginprocess(adr)begincaseadriswhen"0000"=>q_show<="1111110"when"0001"=>q_show<="0110000"when"0010"=>q_show<="1101101"when"0011"=>q_show<="1111001"when"0100"=>

19、q_show<="0110011"when"0101"=>q_show<="1011011"when"0110"=>q_show<="1011111"when"0111"=>q_show<="1110000"when"1000"=>q_show<="1111111"when"1001"=>q_show<="1111011"whenothers=>null;endcase;endprocess;endbehave;(4)仿真结果说明:随着adr的值增加,q_show输出相应的值,数码管相应的段会亮,证明模块是正确的四、数字秒表整体组装1、顶层原理图1.

温馨提示

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

评论

0/150

提交评论