《EDA-数字秒表设计.pdf》由会员分享,可在线阅读,更多相关《EDA-数字秒表设计.pdf(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、电电 子子题题目目学学院院班班级级姓姓名名学学号号设设 计计 自自 动动 化化大大 作作 业业数字秒表设计数字秒表设计控制科学与工程学院控制科学与工程学院自动化自动化 08030803二 OO 一一年五月十二日题题 目:数字秒表的设计目:数字秒表的设计一、设计要求:一、设计要求:(1)数字秒表的计时精度是 10ms;(2)复位开关可以在任何情况下使用,计时在计时过程中,只要按一下复位开关,计时器就清零,并做好下次计时的准备;(3)具有启/停开关,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关则停止计时。(4)数字秒表的计时范围是 0 秒59 分秒,显示的最长时间为 59 分59 秒
2、二、总体设计:二、总体设计:1 1、总体结构图、总体结构图输入Sel模块选通过 3-8 译码时输入到 CHOICE 中钟控 制 选 择 模2 2、各模块功能、各模块功能通过数据的编码控制数1)SEL 模块:将扫描信号输给选择(CHOICE)模块2)选择模块:按扫描信号的指定选择输出3)3-8 译码模块:通过 SEL 给的信号来控制 8 位数码管位的亮灭4)计时模块:分别对毫秒,秒,分计时 5)显示模块:通过 CHOICE 模块的输出信号来控制三、单元模块设计三、单元模块设计1、模块名:sel 模块设计(1)模块功能:CLK 为扫描时钟脉冲,SELOUT 端不停的发出扫描到的信号(2)端口定义:
3、CLK 为信号输入端 SELOUT2.0为选择到的信号输出(3)VHDL 源程序library ieee;use sel is port(clk:in std_logic;selout:out std_logic_vector(2 downto 0);end sel;architecture one of sel is signal count:std_logic_vector(2 downto 0);begin process(clk)begin if clkevent and clk=1 then if(count=101)then count=000;else count=count+1
4、;end if;end if;end process;selout=count;end one;(4)仿真结果说明:来一个上升沿,SELOUT 的值增 1,可以证明模块是正确的。2、模块名:选择模块设计(1)模块功能:按扫描信号的指定选择输出(2)端口定义:a,b,c 为控制信号;data13.0,data23.0,data33.0,data43.0,data53.0,data63.0分别是毫秒的低位,毫秒的高位,秒的低位,秒的高位,分的低位,分的高位的数据值;ch_out3.0为选择输出端。(3)VHDL 源程序library ieee;use choice isport(a,b,c:in
5、std_logic;data1,data2,data3,data4,data5,data6:instd_logic_vector(3 downto 0);ch_out:out std_logic_vector(3 downto 0);end choice;architecture behave of choice issignal ch:std_logic_vector(2 downto 0);beginch(2)=c;ch(1)=b;ch(0)ch_outch_outch_outch_outch_outch_out null;end case;end process;end behave;(
6、4)仿真结果说明:abc的值递增,ch_out选择输出data1,data2,data3,data4,data5,data6 的值,证明模块是正确的3、模块名:3-8 译码模块设计(1)模块功能:通过 SEL 给的信号来控制 8 位数码管位的亮灭。(2)端口定义:输入端 SEL2.0值大小来选择输出 Q 的值输出端 Q7.0来控制灯哪位亮(3)VHDL 源程序LIBRARY ieee;use decode3_8 ISPORT(SEL:INstd_logic_vector(2 downto 0);Q:OUT std_logic_vector(7 downto 0);END decode3_8;A
7、RCHITECTURE a OF decode3_8 ISBEGINQ=when sel=0 else when sel=1 else when sel=2 else when sel=3 else when sel=4 else when sel=5 else ;END a;(4)仿真结果说明:Sel 的值递增,Q 的相应位会亮,证明模块是正确的。41 模块名:毫秒计时模块设计(1)模块功能:对毫秒位的计数(2)端口定义:clk 为信号时钟输入端 reset 为复位端 pause 为暂停端 co 为进位信号输出端 qh:毫秒信号的高位输出端 ql:毫秒信号的低位输出端(3)VHDL 源程序l
8、ibrary ieee;use m100 isport(clk:in std_logic;reset:in std_logic;pause:in std_logic;co:out std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0);end m100;architecture behave of m100 isbeginco=1 when(qh=1001 and ql=1001)else 0;process(clk,reset,pause)beginif(reset=0)t
9、henqh=0000;ql=0000;elsif(pause=0)then qh=qh;ql=ql;elsif(clkevent and clk=1)thenif(ql=1001)thenql=0000;if(qh=1001)thenqh=0000;else qh=qh+1;end if;else ql=ql+1;end if;end if;end process;end behave;(4)仿真结果说明:毫秒为 100 进制,高位和地位都是 10 进制,高位到 10 会有进位,可以证明模块的正确性模块名:秒计时模块设计(1)模块功能:对毫秒位的计数(2)端口定义:clk 为信号时钟输入端 r
10、eset 为复位端 pause 为暂停端 co 为进位信号输出端 qh:毫秒信号的高位输出端 ql:毫秒信号的低位输出端(3)VHDL 源程序library ieee;use m60_sec isport(reset:in std_logic;pause:in std_logic;ci:in std_logic;co:out std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0);end m60_sec;architecture behave of m60_sec isbeg
11、in co=1 when(qh=0101 and ql=1001 and ci=1)else0;process(reset,pause,ci)beginif(reset=0)thenqh=0000;ql=0000;elsif(pause=0)then qh=qh;ql=ql;elsif(cievent and ci=1)thenif(ql=1001)thenql=0000;if(qh=0101)thenqh=0000;else qh=qh+1;end if;else ql=ql+1;end if;end if;end process;end behave;(4)仿真结果说明:秒进制为 60 进
12、制,高位到 6 会有进位,低位为 10 进制,可以证明模块的正确性模块名:分计时模块设计(1)模块功能:对毫秒位的计数(2)端口定义:clk 为信号时钟输入端 reset 为复位端 pause 为暂停端 co 为进位信号输出端 qh:毫秒信号的高位输出端 ql:毫秒信号的低位输出端(3)VHDL 源程序library ieee;use m60_min isport(reset:in std_logic;pause:in std_logic;ci:in std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vec
13、tor(3 downto 0);end m60_min;architecture behave of m60_min isbeginprocess(reset,pause,ci)beginif(reset=0)thenqh=0000;ql=0000;elsif(pause=0)then qh=qh;ql=ql;elsif(cievent and ci=1)thenif(ql=1001)thenql=0000;if(qh=0101)then qh=0000;else qh=qh+1;end if;else qlq_showq_showq_showq_showq_showq_showq_showq
14、_showq_showq_shownull;end case;end process;end behave;(4)仿真结果说明:随着 adr 的值增加,q_show 输出相应的值,数码管相应的段会亮,证明模块是正确的四、四、数字秒表整体组装整体组装1 1、顶层原理图、顶层原理图1.工作情况输入信号经过分频器输给计时模块,计时模块的各位输给选择(CHOICE)模块,选择模块选择输出,再经过转码(BCD_7)模块控制数码管段的亮灭;输入信号的另一路经过分频器给扫描(SEL)模块,SEL 的输出信号一方面给 CHOICE 模块提供提供选择信号,另一方面又给译码器(decode3_8)模块提供译码信号
15、来控制灯位的亮灭。,pause 和reset 分别控制暂停和复位。2.模块间的连接关系:扫描(SEL)模块的输出端接译码(decode3_8)模块和选择(CHOICE)模块,计时模块接选择(CHOICE)模块,选择(CHOICE)模块将选到的信号给转码(BCD_7)模块控制数码管段的亮灭2 2、仿真结果、仿真结果说明:输入信号后,数码管会不停的被扫描,段和位会选择亮,可以证明模块的正确性管脚分配:管脚编号管脚定义153Clk50MHZ4Pause127reset86Wei787Wei688Wei593Wei494Wei395Wei298Wei199Wei0duan0hout3管脚编号管脚定义104duan1101duan2100duan385duan484duan583duan682dpclk分频器端的输入频率 f=50MHZpause计时模块的暂停输入端reset计时模块的复位输入端duan0.6数码管段的控制端wei7.0数码管位的控制端dp数码管的“.“接地箱子接上电源,下载即可运行,数码管会开始计时
限制150内