




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA(II) 多功能数字钟目 录一 设计说明1I功能说明1II功能简介1二总体方案分析 3三 各子模块设计原理 3 I脉冲分频模块 3 II.时钟计时模块(包含校定和清零功能) 4 III显示控制电路7 IV.显示模块和计时模块结合 11V.整点报时模块 11VI.闹钟模块 13四 调试与仿真 17 I.脉冲发生模块 17 II计时电路 18III.仿真 18五收获与体会19六附录 20一 设计说明I功能说明:设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进行手动调节以校时间,每逢整点,产生报时音报时。系统框图如图1-1所示: 图1-1 多功能数字钟系统框图II功能简介此设计问题可分为主控电路、计数器模块和扫描显示三大部,主控电路中各种特殊功能的实现设计问题的关键。用两个电平信号A、B进行模式选择,AB=00为模式0,系统为计时状态;AB=01为模式1,系统为手动校时状态;AB=10为模式2,系统为闹钟设置状态。设置一个cd信号,当cd=00时,表示在手动校对时,选择调整时部分;当cd=01时,表示在手动校对时,选择调整分钟部分;。当cd=10时,表示在手动校对时,选择调整秒部分设置一个change信号,在手动校时或闹钟设置模式下,每按一次,计数器加1。设置一个reset信号,当reset=0时,整个系统复位;当reset=1时,系统进行计时或其他特殊功能操作。设置一个闹钟设置信号reset1,当reset1=1时,对闹钟进行设置,当reset1=0时,关闭闹钟信号。设置一个E信号,当E=0时,表示在手动校对时,选择调整时部分;当E=1时,表示在手动校对时,选择调整分钟部分设置状态显示信号(连发光二极管):LD_alert指示是否设置了闹铃功能;LD_h指示当前调整的是小时信号;LD_m指示当前调整的是分钟信号。当闹钟功能设置后(LD_alert=1),系统应启动一个比较电路,当计时与预设闹铃时间相等时,启动闹铃声,直到关闭闹铃信号有效。整点报时部分由分和秒计时同时为0(或60)启动,与闹铃共用一个扬声器驱动信号out。系统计时时钟为clk=1Hz,选择另一时钟clk_lk=1kHz作为产生闹铃声、报时音的时钟信号。主控电路状态表如表1-1所示。硬件系统示意图如图1-2所示。表 1-1 数字钟主控电路状态表模式选择秒、分、时计数器秒冲输出状态备注resetreset1A BturnLD_hLD_mLD_alert0xx xxx000系统复位1x0 0xclk000系统计时1x0 10change=分计数器加1010手动校时1x0 11change=时计数器加1100111 00change=分计数器加1011设置闹钟111 01change=时计数器加110110x xxx000关闭闹钟图1-2 数字钟硬件系统示意图二 总体方案分析:整个电路有三大主体电路:1. 控制电路,2.脉冲电路,3,功能电路时钟电路首先要有输入脉冲,由于平台提供了脉冲发生器,就省去了脉冲发生器的设计,这里我们只需要设计一个分频器,得到我们需要的频率。时钟的计时范围是00:00:00-23:59:59,所以我们需要设计模六十和模二十四的计数器组成时钟计时电路。为了显示当前时钟时间,我们需要一个显示电路。校分、校时、清零电路只需要输入一些控制信号给时钟计时电路即可,当然这些控制信号是由开关提供的。要实现整点报时功能,一个报时控制电路是必不可少的。这是只含基本功能的时钟电路所包含的子电路。为了实现我们加入的闹钟功能,我们需要一个闹钟时间设定电路;闹钟时间保持电路;比较电路;蜂鸣器控制电路;闹表时间显示电路。因为我们只含有一个数码显示器,一般状态下显示的是时钟,所以我们需要一个显示模式切换电路。三 各子模块设计原理I脉冲分频模块平台提供给我们的是48Mhz的脉冲,由于电路的需要,我们要把48Mhz的脉冲分频得到1Khz(蜂鸣器、动态显示)、1hz(时钟计数)的脉冲。分频器的总电路图:图7II.时钟计时模块数字钟的计时电路包括秒位、分位、时位三部分。其中秒位与分位均为60进制计时,时位为24进制计时。这样我们只需设计模60和模24两种计数器即可。秒向分进位,分向时进位,这样把两个模60和一个模24计数器级联就可以得到时钟的计时电路。a模60计数器电路图:图9为了防止冒险我们采用同步的方法设计计数器(1、同步时钟;2、同步置数)。把进位信号送入使能端ENT(高电平有效),当第一片计数到1001(9)时,ENT端变成高电平,但74160是上升沿触发的,此时clk无上升沿第二片不计数,当CLK的上升沿到来,第一片回到0000状态,第二片计数器的值增加1。第一片要设计为模10计数器,第二片要设计成模6计数器,因为74160本身就是模10计数器,所以第一片不要加别的控制电路。第二片我们把Qc、Qa与非起来送入同步置数端LDN,当第二片的计数值为0101(5)时,LDN端低电平,但74160是同步置数的而且是上升沿有效,此时无上升沿不置数,当CLK的上升沿到来第一片会到0000状态,第二片置数为0000,这样计数器就实现了00000000-01011001的计数范围。与外部的联系我们设置了6个端口,一个输出端(进位信号),五个输入端(保持、清零、脉冲切换、脉冲一、脉冲二),下面对6个端口一一分析:保持:我们把开关接到ENP端正常状态开关低电平,信号经过非门变成高电平,送入ENP(高电平有效)端,当开关变成高电平时,ENP端变成低电平,使能端无效此时停止计数,从而达到保持的目的。、清零:与保持端相似。脉冲1、脉冲2、脉冲切换开关:当脉冲切换开关为低电平时CLK2与其与后为低电平,其非与CLK1与后还是CLK1,两个与门的结果或起来为CLK1,当脉冲切换开关为高电平时,同样的分析此时选中CLK2 进位端:把Q1a、Q1d、Q2c、Q2a与非后当做进位信号,及计数值为01011001(59)时进位。为什么选用非信号在总时钟电路时在分析。b.模24计数器电路图:图11其基本思路与模60相差无几,差别只是在置数时不同,第一片在020连个阶段不要置数自己回0,但计到23时要置为0,需要外部控制电路。所以我们要把Q1b、Qa1、Q2b(0010001123)与非起来,把此信号作为置数信号。封装后如下:图 12c.时钟计数电路(包含控制电路)图 13计数电路:脉冲由分频器提供,外部的总电路采用的是异步计数法(但达到了同步的效果),把进位信号连接起来。秒位芯片CLC1接1HZ脉冲CLC2不接,分位芯片CLC1接秒位的进位信号脉冲CLC2接2HZ脉冲-用于校分,时位芯片CLC1接分位的进位信号脉冲CLC2接2HZ脉冲-用于校时。由于进位信号是经过非后送出的,所以未到进位数值时为高电平,当达到进位制时低电平。当秒位为058时,SCI为高,当秒位为59时,SCI为低,此时出现下降沿,分的计数器不计数,当秒位由59变为0时,SCI又变为高电平,出现上升沿,触发分位的计数器,分位计数器加1,从而达到与同步计数方法相同的效果,而且不会出现冒险,这也就是为什么把原来的进位信号非后再送出的原因,分向秒进位分析方法相同。控制电路:总共有三个外接开关-清零、校分、校时。由于校分和校时切换的是脉冲开关的颤抖可能被芯片误认为是计数脉冲,从而造成不稳定,所以在这两个开关上加了防抖动装置(D触发器)。图 14时钟端接的是2HZ脉冲,D触发器的功能是输入端是什么输出端便是什么,但需要上升沿去触发,没有上升沿即使输入端改变输出端也不变,当按下开关时发生颤抖(很短暂)这时无上升沿,输出端不改变,当开关稳定后而且上升沿也到来了输出端改变。为了达到消颤的目的同时又不造成开关的延时这里我们引入的脉冲是2HZ。清零:把开关直接接到三个计数器芯片的清零端即可。校分:开关值接到分位的K,为了达到校分时其他的保持这里还要把开关的值接到其他两个芯片的保持信号输入端。校时:同校分的原理一样。由于秒位在校分和校时时都要保持,所以要把两个保持信号或其来。III显示控制电路结构图:图15电路图:图16电路原理:本电路完成的是动态显示,动态显示不同于以往的静态显示,所谓静态显示,即每一个数码管由单独的七段显示译码器驱动,如要显示N位数,必需用N个七段显示译码器。和静态显示不同,动态显示使用数据选择器的分时复用功能,将任意多位数码管的显示驱动,由一个七段显示译码器来完成。这样即节省了器件,又提高了效率。主体是一个24选4的数据选择器,路选信号是由一个模8计数器提供的,这样在一个周期里空余两个路选信号,由于用的是动态原理,信号停留时间很短一个周期1/1000秒,这样人眼根本看不出。24选4的输出送到7447段译码器,以便在数码管上显示相应数值。模8计数器的输出同时送到位选控制电路,由一个74138译码器构成,以便在任意时间只有一个位有效,这样在任意的一个时间段里由7447提供段显信号,74138提供位显信号,从而达到动态显示的目的。这里只有24选4芯片是自己设计的,其他的软件都提供了。a.24选4数据选择器的设计这里我们是自己依据实验参考书里的mux数据选择器的VHDL语句编写的。语句如下:library ieee;use ieee.std_logic_1164.all;/声明库entity MUX24 is port (SL1,SL2,SL3,SL4:in std_logic; SH1,SH2,SH3,SH4:in std_logic; ML1,ML2,ML3,ML4:in std_logic; MH1,MH2,MH3,MH4:in std_logic; HL1,HL2,HL3,HL4:in std_logic; HH1,HH2,HH3,HH4:in std_logic; A1,A2,A3 :in std_logic; D1,D2,D3,D4 :out std_logic);/定义输入输出端口end MUX24;architecture P of MUX24 is SIGNAL SL:std_logic_vector(3 downto 0); SIGNAL SH:std_logic_vector(3 downto 0); SIGNAL ML:std_logic_vector(3 downto 0); SIGNALMH:std_logic_vector(3 downto 0); SIGNALHL:std_logic_vector(3 downto 0); SIGNALHH:std_logic_vector(3 downto 0); SIGNALD:std_logic_vector(3 downto 0);SIGNAL SEL:std_logic_vector(2 downto 0);/定义数组范围 begin SL=SL1&SL2&SL3&SL4;SH=SH1&SH2&SH3&SH4;ML=ML1&ML2&ML3&ML4;MH=MH1&MH2&MH3&MH4;HL=HL1&HL2&HL3&HL4;HH=HH1&HH2&HH3&HH4;SEL=A1&A2&A3; /把相应的数值赋给对应的数组 with SEL select /用SEL的值作为选择信号 D=SL when 000, /SEL(即输入A1、A2、A3)为000时输出秒低位 SH when 100, ML when 010, MH when 110, HL when 001, HH when 101, 0000 when others; D1=D(3) ; /把数组D的值赋给对应的输出端口 D2=D(2); D3=D(1); D4Device”,点击“Device and Pin Option”,选择“Unused Pins”页中“Reserve all unused pins:”选项中的“As input tri-stated”选项,将未用引脚设为三态输入,重新编译。点击工具栏上的 (Programmer)按钮,点击“Hardware Setup”按钮,在“Currently selected hardware”中选择“ByteBlasterLPT1”。最后选择要下载的文件,点击“Start”即可下载程序。下载完毕即可在模拟试验箱上观察结果。五 收获与体会通过本次实验,我知道了自己许多知识的不足,同时也知道了许多操作的不熟练,在软件应用上有很大的不足,让我对许多知识重新熟悉,巩固。同时训练了我的组织,整合能力,我们的能力与知识同时得到提升,课设对我们的考核是多方面的,让我们的能力与知识多方面得到提升,我们也对自己的知识与能力更加深入的了解,我们的不足就会暴露出来,在课设过程中得到改进。实验是对耐心的考验,特别是在出错时锻炼了自己的耐力,是对自己的一种提升。希望可以把实验改成开放新实验,老师介绍完实验设备和软件,然后由学生自由发挥。凭自己的创造力设计出自己中意的作品。这样不但会增加学生的积极性而且会照顾到不同层次的学生。参 考 文 献1 蒋立平.数字电路. 北京:兵器工业出版社,2008.72 南京理工大学电子技术中心.EDA设计实验指导书.3万隆.EDA技术及应用.北京.清华大学出版社,2011.104王新.EDA技术与虚拟实验.徐州.中国矿业大学出版社,2007,.2六 附录Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_arith.all;Use ieee.std_logic_unsigned.all;Entity vhdl1 is Port(clk :in std_logic;-时钟输入change:in std_logic;-时间调节输入 Reset,reset1,A,B,C,D,E:in integer range 0 to 1;-复位与控制输入 ld_h,ld_m,ld_alert :inout integer range 0 to 1;-状态显示 Led :out std_logic_vector(3 downto 0); -整点报时led显示 Display :out std_logic_vector(6 downto 0); -七段码管显示输出 spk ,out1 :out std_logic;-整点报时声音信号输出 Seg_sel :buffer std_logic_vector(2 downto 0);-七段码管扫描驱动End vhdl1;Architecture behave of vhdl1 is Signal disp_temp :integer range 0 to 15; -显示数据缓存 Signal disp_decode : std_logic_vector(6 downto 0);-译码数据缓存 Signal sec1,sec10 :integer range 0 to 9; Signal min1,min10 :integer range 0 to 9; Signal hour1,hour10 :integer range 0 to 9; Signal music_count : std_logic_vector(2 downto 0);-报时时钟计数器 Signal clk_count1 : std_logic_vector(13 downto 0);-产生1hz时钟的分频计数器 Signal clk_count10 : std_logic_vector(13 downto 0); -产生1khz时钟的分频计数器 Signal clk1hz : std_logic; -1hz秒计数缓存 Signal clk1khz : std_logic; -1khz秒计数缓存 Signal led_count : std_logic_vector(2 downto 0); -led计数缓存 Signal led_display : std_logic_vector(3 downto 0); -led指示灯信号输出 Begin Process(clk)Begin -产生1hz时钟信号If(clkevent and clk=1)thenIf(clk_count11000)thenClk_count1=clk_count1+1;ElseClk_count1=00000000000001;End if;End if;End process;Clk1hz=clk_count1(13); Process(clk1hz,reset) -时分秒计数与系统复位 BeginIf(reset=0)then-系统复位ld_h=0;ld_m=0;ld_alert=0;Sec1=0;Sec10=0;Min1=0;Min10=0;hour1=0;hour10=0;elsif(clk1hzevent and clk1hz=1)thenif(changeevent and change=1)thenif(A=0 and B=1 )then -模式1if(C=0 and D=0 )then -调整时if(hour1=9)thenhour1=0;hour10= hour10+1;elsif(hour10=2 and hour10=3)thenhour1=0;hour10=0;elsehour1=hour1+1;end if;elsif(C=0 and D=1)then -调整分钟if(min1=9)thenmin1=0;if(min10=5)thenmin10=0;elsemin10=min10+1;end if;elsemin1=min1+1;end if;elsif(C= 1 and D= 0 )thenif(sec1=9)then -调整秒sec1=0;if(sec10=5)thensec10=0;elsemin10= sec10+1;end if;elsemin1= sec1+1;end if;elsif(A=0 and B=0)then -模式0if(sec1=9)thensec1=0;if(sec10=5)thensec10=0;if(min1=9)thenmin1=0;if(min10=5)thenmin10=0;if(hour1=9)thenhour1=0;hour10=hour10+1;elsif(hour10=2 and hour1=3)thenhour1=0;hour10=0;elsehour1=hour1+1;end if;elsemin10=min10+1;end if;elsemin1=min1+1;end if;elsesec10=sec10+1;end if;elsesec1= sec1+1;end if;end if;end if;end if;end if;end process; Process(clk)Begin -产生1khz时钟信号If(clkevent and clk=1)thenIf(clk_count101)thenClk_count10=clk_count10+1;ElseClk_count10=00000000000001;End if;End if;End process;Clk1khz=clk_count1(13); Process(clk1khz) -设置闹钟 Beginif(clk1khzevent and clk1khz=1)thenif(A=1 and B=0)thenif(reset1=1)thenif(change event and change=1)thenld_alert=1;if(E=1)THENld_h=1;if(hour1=9)thenhour1=0;hour10= hour10+1;elsif(hour10=2 and hour10=3)thenhour1=0;hour10=0;elsehou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑方案设计找工作简历
- 国庆酒店充值活动方案策划
- 商场健康服务咨询方案
- 福建洁净车间施工方案
- 咨询方案策划
- 药厂企业安全培训课件
- 学校管理经验交流会校长发言:匪性、雅性、刚性、柔性
- 广州开业活动方案咨询
- 天心区营销方案设计
- 2025年英语四六级阅读理解真题模拟试卷:下半月备考攻略
- 零配件追溯管理办法
- 行政执法应诉培训课件
- 【2025年】北京京剧院招聘考试笔试试卷【附答案】
- (2025年标准)禁止学生早恋协议书
- 智能会计应用课件
- 2025年日语能力测试N1级试卷:真题模拟分析与预测模拟试题
- GB/T 45958-2025网络安全技术人工智能计算平台安全框架
- 三方委托付工程款协议书
- 学校课后延时服务费分配细则
- 2025年化工自动化控制仪表考试题模拟考试题库及答案
- 2025中煤电力有限公司总部及所属企业招聘16人笔试参考题库附带答案详解(10套)
评论
0/150
提交评论