EDA设计论文

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IF(nreset='0')THEN qh<="0000"; ql<="0000"; ELSIF(clk 'EVENT AND clk='0')THEN if(load='1') then qh<=d(7 downto 4); ql<=d(3 downto 0); elsif(ci='1') then if(ql=9) then --将处条件更改为 “if(ql=9 or (qh=2 and ql=3)) then” 即可将该计数器变成模24计数器 ql<="0000"; if(qh=5) then qh<="0000"; else qh<=qh+1; end if; else ql<=ql+1; end if; end if; --end if_load END IF; --END IF_reset END PROCESS; END behave; 模60集成模块为: 模60仿真图形为:
分频器仿真图为:
2、计时器的设计: 计时器分为小时计时器,分计时器和秒计时器。其中小时计时器为 模24计数器,分和秒计时器为模60计数器。两计数器均具有异步清零, 同步置数的功能。该计数器用VHDL语言描述如下: --模60计数器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY cntm60 IS PORT (ci :in std_logic; --进位信号,输入 nreset :in std_logic; --清零信号(异步清零,低位有 效),输入 load :in std_logic; --置数使能端(同步置数,高位有 效),输入 d :in std_logic_vector(7 downto 0); --置数位,输 入 clk :in std_logic; --时钟信号(下降沿触发),输入 co :out std_logic; --进位信号, 输出 qh :buffer std_logic_vector(3 downto 0); --高位,输出 ql :buffer std_logic_vector(3 downto 0) --低位,输出 ); END cntm60; ARCHITECTURE behave OF cntm60 IS BEGIN co<='1' when (qh="0101" and ql="1001" and ci='1') else '0'; PROCESS(clk, nreset) BEGIN
begin if (reset='1')then n0:=0; n1:=0; n2:=0; n3:=0;
clk_out0<='0'; clk_out1<='0'; clk_out2<='0'; clk_out3<='0'; elsif falling_edge(clk_in)then if(n0<(count0/2))then clk_out0<='0'; n0:=n0+1; elsif(n0<count0)then clk_out0<='1'; n0:=n0+1; else n0:=0;
end if; --2KHz if(n1<(count1/2))then clk_out1<='0'; n1:=n1+1; elsif(n1<count1)then clk_out1<='1'; n1:=n1+1; else n1:=0; end if; --1KHz
if(n2<(count2/2))then clk_out2<='0'; n2:=n2+1; elsif(n2<count2)then clk_out2<='1'; n2:=n2+1; else n2:=0; end if; --2Hz if(n3<(count3/2))then clk_out3<='0'; n3:=n3+1; elsif(n3<count3)then clk_out3<='1'; n3:=n3+1; else n3:=0; end if; --1Hz end if; end process divide_clk; end architecture structure; 分频器集成模块图为:
无论是用原理图法输入还是用文本输入法实现的设计,当文件编译 通过之后,均可以生成一个与其文件名相同的逻辑符号。在以后的原理 图设计中,可将该文件以一个器的形式被调用。 2、实现控制开关支抖动功能: EDA实验系统提供的开关是机械开关,机械开关在接通或断开过程 中,通常会产生一串脉冲式的振动,在电路中会相应产生一串电脉冲, 若不采取措施,往往会使逻辑电路发生误动作,为了消除这种误动作, 需要设计一个去抖动电路。该模块的设计可采用原理图输入法,也可采 用文本输入法。 3、实现数字钟的校时、校分功能: 数字钟的校时和校分功能的原理相同,设计中可加入一选择模块, 该模块既可采用原理图法也可采用文本输入法实现。下面以校分为例说 明:分计数器计数脉冲有两个不同的来源,一个是秒的进位信号,还有 一个是快速校分信号(可以是1Hz或2Hz脉冲),根据分开关的不同状态 决定关入分计数器脉冲来源,以完成正常工作或快速校分功能。 4、实现数字钟的清零、保持功能: 数字钟的这两种功能,可利用已经双月刊去抖动处理的开关去控制 实现计时功能的计数器本身所带的使能端和清零端来实现。 5、实现数字钟的报时功能 数字钟的报时功能由两部分组成,一部分的作用的选择报时的时 间,一部分的作用是选择报时的频率。根据设计要求,数字钟在59分53 秒、59分55秒、59分57秒的报时鸣叫频率是1KHz,在59分59秒的鸣叫频 率是2KHz。报时所需的鸣叫信号可由2KHz的信号源提供,然后利用一个 二分频的分频器得到1KHz的信号。 6、考虑如何将闹时设置显示出来,即当选定闹时设置时,数码管将 显示闹时时间。 7、将数字钟的名功能模块级联,生成顶层电路,实现总体设计要 求。
I、正文
1、 设计要求说明: 1、 设计一个具有校时、校分,清零,保持和整点报时功能的数 字钟。 2、 对数字钟采用层次化的方法进行设计,要求设计层次清晰、 合理;构成整个设计的功能模块既可采用原理图输入法实 现,也可采用文本输入法实现。 3、 数字钟的具体设计要求具有如下功能:1)、数字钟最大计 显示23时59分59秒;2)在数字钟正常工作进可以对数字钟 进行快速校时和校分,即拨动开关K1可对小时进行校正,拨 动开关K2对分进行校正;3)在数字钟正常工作情况下,可 以对其进行不断复位,即拨动开关K3可以使时、分、秒显示 回零;4)保持功能是要求在数字钟正常工作情况下,拨动 开关K4可以使数字钟保持原有显示,停止计时;5)整点报 时是要求数字钟在每小时整点到来前进行鸣叫,鸣叫频率在 59分53秒、55秒、57秒时为1KHz,59分59秒时为2KHz;6)要 求所有的控制开关具有去抖动功能。 4、 对设计电路进行功能仿真。 5、 将仿真双月刊的逻辑电路下载到EDA实验系统,对其功能进 行验证。 2、 方案论证: 1、实现数字钟的计时功能: 通过分析数字钟的功能,知道该设计需要一个模为24的计数器构成 小时的计数,两个模为60的计数器实现分和秒的计数,三个计数器之间 构成进位关系,即计数器为分计数器提供计数脉冲信号,分计数器为时 计数器提供脉冲信号。从全局设计考虑计数器应具有使能端和异步清零 端。可以考虑用文本输入法实现这两种不同模的计数器。
Fra Baidu bibliotek
关键字:层次设计 多功能数字时钟 同步 整点报时 闹钟 VHDL语言
目录
I、 正 文……………………………………………………………………………… 4 一、设计要求说 明…………………………………………………………………4 二、方案论 证………………………………………………………………………4 三、各模块设计原 理………………………………………………………………6 1、分频器的设 计………………………………………………………………6 2、计时器的设 计………………………………………………………………8 3、校时(校分)模 块…………………………………………………………9 4、消颤电路模 块………………………………………………………………10 5、整点报时模 块………………………………………………………………11 6、动态显示模 块………………………………………………………………12 7、具有基本要求的数字钟的组 装……………………………………………15 8、闹钟模 块……………………………………………………………………16 四、具有闹钟功能的数字钟总装 图…………………………………………………20
五、编程下 载…………………………………………………………………………21 II、结 论……………………………………………………………………………… 22 III、参考文 献………………………………………………………………………22 IV、实验感 想…………………………………………………………………………23
3、校时(校分)模块: 校时(校分)模块相当于一个单刀双掷开关,当开关为“1”的时候 由下一级的进位作为时钟信号输入上一级的时钟输入端,当开关
三、各模块设计原理: 1、分频器的设计: 系统提供的频率为48MHz。而我们需要1Hz(时钟频率)、2Hz(校 时和校分频率)、1KHz(53秒、55秒、57秒报时频率)、2KHz(59秒报 时频率)。所以需要分别对其进行48M分频,24M分频,48K分频及24K分 频。主要的设计思想是,在程序中设置具有某范围(根据分频数确定) 的变量随时钟计数,前一半计数范围内使输出为‘0’,后一半 为‘1’即可。占空比为50%。该分频器用VHDL语言描述如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fenpin1 is port(clk_in,reset : in std_logic; clk_out0,clk_out1,clk_out2,clk_out3 :out std_logic); end fenpin1; architecture structure of fenpin1 is constant count0:integer:=24000; constant count1:integer:=48000; constant count2:integer:=24000000; constant count3:integer:=48000000; begin divide_clk:process(clk_in,reset) variable n0:integer range 0 to 23999; variable n1:integer range 0 to 47999; variable n2:integer range 0 to 23999999; variable n3:integer range 0 to 47999999;
多功能数字时钟的设计
摘要: 本文是基于QuartusII软件以及相应的实验平台完成的多功能数字计 时器实验,使我们清楚地了解到我们身边的数字表的功能是怎样实现 的。 设计时采用了层次设计思想,功能逐级递加。实验主要包含两个主 体----时钟基本功能电路、闹钟电路。 主体一:主要涉及模60与模24计数器、动态显示控制电路、分频器 主要整点报时电路, 这些电路都是以模块封装好的,以便其他电路调用。以计数器构成 计时部件,通过分频器分出的1HZ脉冲计时,调用动态显示电路显示, 通过整点报时电路控制蜂鸣器。在计数器级联时采用内部同步外部异步 的方式,但通过简单的改变达到了同步的效果而且比同步还可靠。显示 控制时为了节约资源采用动态原理。 主体二:主要涉及模60与模24计数器、显示控制电路、比较器。以 模60与模24计数器构成定时与存储电路,调用动态显示控制电路显示。 通过比较器对闹钟时刻与实际时间进行比较,同时控制蜂鸣器鸣叫。
相关文档
最新文档