燕山大学EDA课程设计电子日历

时间:2019-05-15 11:45:10下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《燕山大学EDA课程设计电子日历》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《燕山大学EDA课程设计电子日历》。

第一篇:燕山大学EDA课程设计电子日历

燕 山 大 学 EDA课程设计报告书

姓名: 班级: 学号: 日期:

一、设计题目:电子日历

二、设计要求

1.能显示年、月、日、星期,如01.11.08 6,星期日显示8 2.年、月、日、星期可调 3.不考虑闰年

三、设计思路

为实现本电路要求,采取模块电路设计方法。本电路系统主要 包括以下三大模块:

1.计数模块 2.控制模块 3.译码器显示模块

四、设计过程

1.计数模块 1)星期计数模块

由于星期日要显示8,一般芯片难以实现,可通过四个JKFF触发器设计而成。电路图如下:

波形仿真图如下:

2)天计数模块

通过两个74160芯片作计数电路和DFF作去毛刺电路设计而成,若没有去毛刺电路,在硬件仿真时,月计数会出现连续计两次的情况。由于不同月份有不同天数(31、30、28),故需要三个输入端(C31、C30、C28)选择计数的进制,同一时刻只能有一个有效(输入高电平)。电路图如下:

C30端有效时的波形仿真图如下:

3)月计数模块

通过两个74160芯片设计而成,电路图如下:

波形仿真图如下:

4)月计数对天计数的反馈模块

通过画真值表列出逻辑表达式,从而设计出如下电路:

波形仿真图如下:

5)年计数模块

通过两个74160芯片设计而成,为了实现可调,将年个位对十位的进位输出端C先到控制模块上。电路图如下:

波形仿真图如下:

2.控制模块

时钟脉冲经CP端输入,K、Kweek、Kday、Kmonth、Kyear1、Kyear2为手动控制端。K端输入高电平时为调节状态,输入低电平时为自动计数状态。电路图如下:

3.译码器显示模块

该模块由一个74160芯片、四个数据选择74151和译码驱动器7449组成。电路图如下:

4.总图

连接控制模块和计数模块。电路图如下:

该部分波形仿真图如下:

在其中可以发现,月比天滞后1.5个时钟周期(其中1个时钟周期是由于天计数模块的去毛刺电路产生的),年个位比月滞后0.5个时钟周期,年十位比年个位滞后0.5个时钟周期。由于时间有限,知识经验不足等限制,在答辩前仍未解决该问题。

再连接译码器显示模块。电路图如下:

接通电源时,K端要先输入高电平,把月调到非0,才能在K端输入低电平后正常计数。

五、总结

第二篇:燕山大学EDA课程设计数字跑表

一、设计题目及要求 设计题目:数字跑表

要求:1 具有暂停,启动功能;

具有重新开始功能; 用六个数码管分别显示百分秒,秒和分钟。

二、设计过程及内容 总体设计:

第一,对于要实现的暂停、启动和重新开始功能,需要有一个控制模块完成相关控制。第二由题意可知需要一个分频模块,将实验箱提供的频率转换为100HZ即数字跑表百分秒的频率。第三是计时模块,完成跑表的百分秒、秒和分钟的计时功能。第四由于实验箱提供的数码显示是扫描显示,这就需要一个选时模块。第五部分则是显示模块。详细设计过程:

根据要求,将设计分成五个模块:

1、控制模块:使跑表具有启动、暂停及重新开始的功能;

2、分频模块:将实验箱所提供的频率转换为设计题目所需要的100HZ的时钟脉冲;

3、计时模块:进行百分秒、秒、分的计时,并且将当前时间输出给选时模块;

4、选时模块:从计时器得到当前时间输出给显示模块;

5、显示模块:通过数码管显示时间。

总图如下:

仿真波形:

第一个模块:控制模块

控制模块主要运用了两个D触发器,输入到触发器的时钟信号CLK1频率为2.86Hz,对电路起到了防抖的功能。

START/STOP为启动暂停按钮,当跑表为START状态时CLK端为高电平,Q为1,时钟信号输出,当跑表为STOP状态时CLK端为低电平,Q为0,时钟信号不输出,从而实现开始和暂停的功能。与门可控制时钟信号是否被输出到下一级。

RESET端为全局清零按钮,接到控制模块和计时模块的清零端,负责将计数器清零。当RESET为低电平时,控制模块和总计数器模块清零,跑表重新开始工作。电路图如下:

仿真波形:

第二个模块:分频模块

为了将实验箱提供的1465HZ转换成实验需要的100HZ,我将74161接成15进制计数器,实现分频的功能,转换为100HZ的近似时钟信号。然后将输出的时钟接入到计时模块。电路图如下: 3

仿真波形:

第三个模块:计时模块

计时模块由一个100进制计数器和两个60进制计数器构成,从而实现百分秒向秒、秒向分的计数功能需求。100进制计数器和60进制计数器均采用两个74160,100进制采用并行进位方式,60进制采用整体置数方式。从100进制计数器和60进制计数器这三个输出端分别接出八个端口(百分秒、秒、分的个位及十位分别由四个二进制代码表示),将当前时间代码输送给选时模块,以实现时间的选择和显示。(百分秒个位:H0A,H0B,H0C,H0D;百分秒十位:H1A,H1B,H1C,H1D;秒个位:S0A,S0B,S0C,S0D;秒十位:S1A,S1B,S1C,S1D;分个位:M0A,M0B,M0C,M0D;分十位:M1A,M1B,M1C,M1D.)电路图如下:

仿真波形:

100进制计数器(count100): 仿真波形:

60进制计数器(count60):

仿真波形:

第四个模块:选时模块

选时模块由四个八选一数据选择器74LS151和一个地址选择器74LS161构成。

地址选择器74LS161接入一个1465 HZ的时钟信号,使能端和清零端接高电平,使其循环工作,产生的一组循环地址码接入到四个八选一数据选择器74LS151上,使其对地址相同的一组数据进行选择,产生四个二进制数CA,CB,CC,CD,即为数码管所要显示的数字的编码。同时,地址选择器74LS161产生一组循环地址码a、b、c,接到数码管的地址端,使其循环显示数字。

第一个74LS151上的输入端为百分秒、秒、分个位及十位的四位二进制的最低位(H0A, H1A ,S0A,S1A, M0A, M1A), 第二个74LS151上的输入端为百分秒、秒、分个位及十位的四位二进制的次低位(H0B,H1B ,S0B,S1B,M0B,M1B), 第三个74LS151上的输入端为百分秒、秒、分个位及十位的四位二进制的第二位(H0C,H1C ,S0C,S1C,M0C,M1C), 第四个74LS151上的输入端为百分秒、秒、分个位及十位的四位二进制的第一位(H0D,H1D ,S0D,S1D,M0D,M1D),通过这四个八位二进制数比较器74LS151选出同一组数(百分秒个位:H0A,H0B,H0C,H0D;百分秒十位:H1A,H1B,H1C,H1D;秒个位:S0A,S0B,S0C,S0D;秒十位:S1A,S1B,S1C,S1D;分个位:M0A,M0B,M0C,M0D;分十位:M1A,M1B,M1C,M1D)作为输出CA,CB,CC,CD,接到显示模块输入端。电路图如下:

仿真波形:

第五个模块:显示模块

显示模块采用BCD—七段显示译码器7448对实验板上数码管进行驱 动。由选时模块输出的显示数字编码CA,CB,CC,CD接至输入端A,B,C,D,使输出端产生七位译码连接到实验箱公共数据输入端ABCDEDG,从而显示出数据。电路图如下:

仿真波形:

三、设计结论

两周的课程设计很快就结束了,虽然时间很短,但是收获颇丰。通过这次课程设计,我学到了许多关于EDA的知识,学习到了很多EDA的实用功能,更重要的是锻炼了我的实践动手能力,使我深刻地认识到仅仅学习课本上的知识是远远不够的,要多思考,多实践,才能真正把学到的知识用到实际中,而且我也深刻认识到通信专业在各个领域是多么有用武之地,更加使我有了学习深造的动力。

在设计的过程中遇到诸多问题,一个接一个,总结下来还是软件没有学深刻,出了问题也不知道如何排查,波形图一直找不到自己想看到的,后来经过问同学和自己的总结才知道这个仿真的时间要足够长,才能看到自己所需要的部分。让我知道做一件事之前的准备工作是多么重要,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。遇到问题才去翻书查资料,这些都是我以后要改进的地方。

这次的EDA课程设计给了我一次非常重要也非常难得的实践机会,使我可以将平时课本上学习的理论知识应用于实际操作。设计过程多于我这个专业知识还不牢固的很困难,先前两天看了课本学习了软件,每个子模块和波形图出来的都比较顺利,但当做到总图的时候遇到了很多困难,经过询问老师后也都解决了。实验箱的部分比较顺利,由于粗心连错了线,频率也没选对,总之过程很艰难,但最终还是做出来了。最后感谢老师给与我这次宝贵的实践机会!

第三篇:数字电子EDA课程设计八音电子琴

燕山大学EDA课程设计

实验报告

院系:信息科学与工程学院

姓名:

班级:

学号:

日期:

[实验名称] 八音电子琴

[实验要求] 1.能发出1.2.3.4.5.6.7.i八个音

2.用按键作为键盘

3.C调至B调对应频率如下表

音调 C(高音)B A G F E D C

频率(Hz)261.63x2 493.88 440.00 392.00 349.23 329.63 293.66 261.63 [实验电路设计] 1.命题分析

根据命题的要求,要使扬声器发音,需要在其输入信号端连接一个对应频率的方波信号.实验使用的信号源可以提供从几Hz到几兆Hz不等的信号频率,自然可以想到本实验命题的关键是一个具有相应分频比的分频器.考虑到硬件(按钮)在实际工作过程中会因元件的接触产生一些不可避免的抖动脉冲电平,会对实验造成影响,因此需要在按键接入线路中安装防抖动电路.2.设计过程

1>分频器

为了取得合适的电路复杂度和可接受的误差范围,分频器的时钟信号选取为器件所提供的JPCK—1(3MHz音频信号).然后通过计算,用时钟信号频率除以各发音频率,得到的分频比如下表:

分频比(16进

制)

5DEE 6384 6F84 7D62 8ADE 951C A760 BBDE

频率(Hz)高C:261.63x2 B:493.88 A:440.00 G:392.00 F:349.23 E:329.63 D:293.66 C:261.63 利用四片十六进制计数器74LS161就可以连接成适用的分频器.分频器连接完成后会产生一个预定频率的周期脉冲.但是实验要求的方波其占空比应该为1:1,因此在输出脉冲端加装一个T触发器,每次脉冲到达触发器的时候输出便会跳变电平,这就达到了驱动扬声器的条件.但是在应用了T触发器后输出方波的周期比预定的扩大了一倍,也就是说频率减至原来的二分之一.此时应重新选择时钟信号,令其为原来2倍即可.根据实验指导书,最终确定选择的时钟信号为6MHz.2>防抖动电路

利用D触发器的电压跟随特性可以用一个频率较低的时钟信号驱动,达到防止按键抖动的目的.电路较简单,见图3.图1.时钟分频电路(downway)

图2.CP为375K时上图的B4输出波形

由于设计的原因,本电路只能支持单音节输入.当同时键入两个以上的音阶时,分频比较小的(比较高的音阶)优先发声.图3.按键输入防抖动电路

3>电路组合

组合后的电路模块如图4.共有11个输入端和1个输出端.其中,CP_6M为整个电路的主频,使用电路板上的6MHz信号输出端;CP_1US为防抖动电路中触发器所使用的时钟,要求频率不高,选择电路板提供的CLK3-3(12Hz);KEYCa-B是电子琴的输入按键接口,依次是从低音到高音.Speaker是电路的输出端,接入扬声器,为其产生相应音阶的频率.实际电路如图4.连接完成后,对该电路进行仿真测试,如图5,令其CP_6M为6MHz,CP_1US为一个较低频率脉冲,设臵KEYB(音节B)为有效电平,在speaker上得到的输出频率为493,与实际音节的频率相同.图4.八音电子琴

图5.电子琴完成品的仿真波形

T触发器2分频电路

[硬件测试] [实习心得] 第一感觉,数字电子技术EDA实习很有意思.我们可以有充分的时间去思考怎么做出一个东西,这个东西的用处也许不大甚至几乎没有,但重要的是思考的过程:从它的用途总结出它的特性,从它的特性构思出它的原理,从原理到构建模型,再到模型的实现,利用已有的知识,可用的元件,最终组合出一个具有高度逻辑性的组合电路,这和我们小时候玩搭积木差不多.把积木一块块的搭成一座城堡,中间缺少任何一层甚至任何一块,城堡都可能会倒塌.同理,在我们构建命题所给的元器件时任何一个逻辑错误都可能是致命的,导致最后无法出现正确结果或者干脆不能用.因此,实习,有意思的同时还不能大意.这是一个锻炼逻辑思维和思维严谨性的极好的机会,我和我的同学们在这次工作中受益非浅.大家都积极思思考,查找资料,集思广益来解决现有的问题。在这个过程中我帮助了别人也得到了别人的帮助。

我在和别人研究问题的时候发现在所有题目当中,以分频器为基本的[八音电子琴]算是比较简单的,我很早就做完了.但是很多人的题目除了分频以外还要求臵数,可调,显示输出,以及产生相对复杂的多的时序,这让我觉得我做的快只是运气好,抽了个好签而已,同时我也了解到自己的不足之处.仍需努力.最后感谢老师们耐心的讲解和提点。

第四篇:燕山大学传感器课程设计(DOC)

目录

摘要

电涡流位移传感器设计

一、设计要求

二、总体设计方案

三、电涡流传感器的基本原理

3-1电涡流效应和传感器等效电路 3-2电涡流形成的范围

四、传感器的结构形式

五、测量电路及分析 5-1 测量电路 5-2 电路各单元分解

六、实验数据及误差分析

参考文献

摘要

随着现代测量、控制盒自动化技术的发展,传感器技术越来越受到人们的重视。特别是近年来,由于科学技术的发展及生态平衡的需要,传感器在各个领域的作用也日益显著。传感器技术的应用在许多个发达国家中,已经得到普遍重视。在工程中所要测量的参数大多数为非电量,促使人们用电测的方法来研究非电量,及研究用电测的方法测量非电量的仪器仪表,研究如何能正确和快速的非电量技术。电涡流传感器已成为目前电测技术中非常重要的检测手段,广泛的应用于工程测量和科学实验中。

关键词:电涡流式传感器 传感器技术 电量非电量

电涡流位移传感器设计

一、设计技术要求

1、线性范围(mm):1

2、分辨率(um):1

3、线性误差:《3%

4、使用温度范围:-15~+80

二、总体方案设计

电涡流传感器能静态和动态地非接触、高线性度、高分辨力地测量被测金属导体距探头表面的距离。它是一种非接触的线性化计量工具。电涡流传感器能准确测量被测体(必须是金属导体)与探头端面之间静态和动态的相对位移变化。电涡流传感器以其长期工作可靠性好、测量范围宽、灵敏度高、分辨率高、响应速度快、抗干扰力强、不受油污等介质的影响、结构简单等优点。根据下面的组成框图,构成传感器。

根据组成框图,具体说明各个组成部分的材料:

(1)敏感元件:传感器探头线圈是通过与被测导体之间的相互作用,从而产生被测信号的部分,它是由多股漆包铜线绕制的一个扁平线圈固定在框架上构成,线圈框架的材料是聚四氟乙烯,其损耗小,电性能好,热膨胀系数小。

(2)传感元件: 前置器是一个能屏蔽外界干扰信号的金属盒子,测量电路完全装在前置器中,并用环氧树脂灌封。

(3)测量电路:本电路拟采用变频调幅式测量电路。

三、电涡流传感器的基本原理

1、电涡流效应和传感器等效电路

电涡流式传感器是利用电涡流效应,将位移、温度等非电量转化为阻抗的变化(或电感的变化,或Q值的变化)从而进行非电量电测的。

根据法拉第电磁感应定律,当传感器探头线圈通以正弦交变电流i1时,线圈周围空间必然产生正弦交变磁场H1,它使置于此磁场中的被测金属导体表面产生感应电流,即电涡流,如图2-2中所示。与此同时,电涡流i2又产生新的交变磁场H2;H2与H1方向相反,并力图削弱H1,从而导致探头线圈的等效电阻相应地发生变化。其变化程度取决于被测金属导体的电阻率ρ,磁导率μ,线圈与金属导体的距离x,以及线圈激励电流的频率f等参数。如果只改变上述参数中的一个,而其余参数保持不变,则阻抗Z就成为这个变化参数的单值函数,从而确定该参数的大小。

电涡流传感器的工作原理,如图2-2所示:

为了便于分析,把被测金属导体上形成的电涡流等效成一个短路环中的电流,这样就可以得到如图2-3所示的等效电路。

图中R1,L1为传感器探头线圈的电阻和电感,短路环可以认为是一匝短路线圈,其中R2,L2为被测导体的电阻和电感。探头线圈和导体之间存在一个互感M,它随线圈与导体间距离的减小而增大。U1为激励电压,根据基尔霍夫电压平衡方程式,上图等效电路的平衡方程式如下:

经求解方程组,可得I1和I2表达式:

由此可得传感器线圈的等效阻抗为:

从而得到探头线圈等效电阻和电感。

通过式(2-4)的方程式可见:涡流的影响使得线圈阻抗的实部等效电阻增加,而虚部等效电感减小,从而使线圈阻抗发生了变化,这种变化称为反射阻抗作用。所以电涡流传感器的工作原理,实质上是由于受到交变磁场影响的导体中产生的电涡流起到调节线圈原来阻抗的作用。

因此,通过上述方程组的推导,可将探头线圈的等效阻抗Z表示成如下一个简单的函数关系:

其中,x为检测距离;μ为被测体磁导率;ρ为被测体电阻率;f为线圈中激励电流频率。所以,当改变该函数中某一个量,而固定其他量时,就可以通过测量等效阻抗Z的变化来确定该参数的变化。在目前的测量电路中,有通过测量ΔL或ΔZ等来测量x ,ρ,μ,f的变化的电路。

3·2电涡流形成的范围

见资料

四、传感器的结构形式

电涡流传感器结构很简单,主要是由一个固定在框架上的扁平线圈组成。线圈是用多股其保险或银丝绕制而成,一般放在传感器的端部,线圈可绕在框架的槽内,也可用粘接剂粘在端部,下图为CEF1型涡流传感器。

CEF1型框架用聚四氟乙烯制成,线圈绕在框架的槽内,其性能见下表。表略

根据设计参数要求,CEF1-1000型传感器。

图3 涡流传感器

五、测量电路及分析

5-1测量电路

测量电路的任务就是把位移x的变化变换为电压或频率的变化。可以用三种类型的测量电路:电桥电路,谐振电路,正反馈电路。目前所用的谐振电路有三种类型:定频调幅式、变频调幅式与调频式。

本次设计拟采用变频调幅式(调频调幅式)测量电路。

变频调幅式测量电路

该电路的核心是一个电容三点式振荡器,传感器线圈是震荡回路的一个电感元件。这种电路的测量原理是:当无被测导体时,回路谐振于f0,此时Q值最高,所以对应的输出电压U0最大。当非软磁材料制成的被测导体靠近传感器时,谐振峰右移,谐振频率增高为f1,谐振曲线由于Q值降低,而显得“矮胖”。所以这时对应的输出电压U1将降低。当被测导体进一步靠近传感器线圈时,谐振频率增高为f2,输出电压降为U2···。

当被测导体是软磁材料时,则随被测导体靠近线圈,谐振频率降低为f1,f2···,输出电压也由U0依次降为U1,U2···。这时得到的一组谐振曲线如图所示。

5-2电路各单元分解

这个测量电路由三部分组成,即

(1)电容三点式振荡器(西勒振荡器)其作用是将位移变化引起的振荡回路的Q值变化转化成高频载波信号的幅值变化。为使电路具有较高的效率而自行起振,电路采用自给偏压的办法。适当选择振荡管的分压电阻的比值,可使电路静态工作点处于甲乙类。

从变频调幅式测量电路图可分析出线圈震荡电流由其中的西勒振荡电路提供。下图为西勒振荡电路。

西勒震荡电路图 图2

西勒振荡器是一种改进型的电容反馈振荡器,它是克拉波电路的改进电路。这种电路频率稳定性高。因为可通过C4改变振荡频率,且接入系数不受C4影响,所以在整个波段中振荡

振幅比较平稳。真两点使西勒电路的频率能在比较宽的范围内调节。西勒振荡电路的频率为

f1/2LC。

'C1'C2C3C''C4''''CCCCCCCCCC10;2C2Ci 122331式中。其中,1当C3C1及C3C2时,振荡频率为

f012L(C3C4),与受输入输出电容(包括闲散电容)影响的C1与 C2无关,因此提高了振荡频率的稳定性。

西勒振荡电路的振荡频率可以通过改变C4来调整。因覆盖系数大,易调整,频率稳定度高,实际应用较多。

C3比克拉波电路取值大!故频率

西勒振荡等效电路图 图3

上图为在实际应用中的西勒电路改进型,在实际应用中可用可调电感,而可调电容换成固定电容。在大多数电视机中大多采用西勒振荡电路。此时的振荡频率为

f1/2LC。

(2)检波器 检波器由检波二极管和派形滤波器组成,采用派形滤波器可适应电流变化较大,而又要求波纹很小的情况,可获得平滑的波形。检波器的作用是将高频载波中的测量信息不失真的取出。

LC滤波器在二极管之后如图所示,LC滤波电路

由于二极管有单向导通性,因此有部分正弦波经由二极管,而形成半波正弦波。在通过下部LC低通滤波器滤去交流分量。从而输出直流分量

(3)射极跟随器 由于射随器具有输入阻抗高、输出阻抗低,并有良好的跟随特性等优点,所以用来作为输出极以获得尽可能大的不失真输出幅度。

第五篇:EDA课程设计

考试序号:28

自动打铃系统设计说明书

学 生 姓 名:周文江

号:14112502521

专 业 班 级:1102

报告提交日期:2013.11.26

湖 南 理 工 学 院 物 电 学 院

目录

一、题目及要求简介……………3 1.设计题目…………………3 2.总体要求简介……………3

二、设计方案说明……………3

三、系统采用器件以及模块说明………3 1.系统框图…………4 2.选择的FPGA芯片及配置………4 3.系统端口和模块说明…………5

四、各部分仿真结果………5

五、调试及总结………6

六、参考文献……7

七、附录………7

一、题目及要求简介

1、设计题目

设计一个多功能自动打铃系统

2、总体要求简介

① 基本计时和显示功能(24小时制显示),包括:

1.24小时制显示 2.动态扫描显示; 3.显示格式:88-88-88 ② 能设置当前时间(含时、分)③ 能实现基本打铃功能,规定:

06:00起床铃,打铃5s

二、设计方案说明

本次设计主要采用Verilog HDL硬件描述性语言、分模块法设计的自动打铃系统。由于这次用的开发板提供的是50M晶振。首先要对时钟进行分频,当计时到2FA_F07F时完成1s分频,通过计时到60s产生分钟进位信号,再通过60分钟产生时钟进位信号。最后通过6个寄存器对时分秒进行锁存最终输出到8个数码管上完成显示。当显示时钟和默认闹钟时钟相等时,驱动打铃模块。通过key_mode,key_turn,key_change查看闹钟,时钟显示,调整时钟。

三、系统采用器件以及模块说明

1.系统框图如下:

:下如图框统系

2.选择的FPGA芯片及配置:本次系统设计采用的FPGA芯片是Alter公司生产的Cyclone II EP2C8Q208C8。该芯片是208个管脚,138个IO,并且具有两个内部PLL,而且内嵌乘法器,8K的逻辑门,资源相当丰富。完成这次自动打铃系统的设计总共消耗250个LE单元,22个IO口,131个寄存器。经过综合后,本系统最高能实现145M的运行速度。通过Quartus II 软件观察到内部的RTL图如下

3.系统端口和模块说明

(1)分频部分

分频器的作用是对50Mhz的系统时钟信号进行分频,得到频率为1hz的信号,即为1S的计时信号。

(2)按键部分

按键key_mode--0为显示计时,1为闹钟显示,2为调整时间。按键key_turn—0为调整小时,1为调整分钟。按键key_change—每按一次加1(3)计时部分

通过sec_L,sec_H,min_L,min_H,hour_L,hour_H 6个寄存器对时分秒进行锁存然后送入数码管显示

(4)闹钟模块

当设定的闹钟时间和数码管上显示的时间相等时驱动闹钟,完成打铃,持续时间5s。

(5)数码管显示模块

显示模块是由8个位选8个段选构成的显示模块,利用人眼的余晖效果完成动态扫描,显示时间。

四、各部分仿真结果

测试文件如下:

module clock_tb;reg sysclk,rst_b;reg key_mode,key_turn,key_change;wire buzzer;

wire [7:0] led_sel,led_data;clock I_clock(.sysclk(sysclk),.rst_b(rst_b),.key_mode(key_mode),.key_change(key_change),.key_turn(key_turn),.buzzer(buzzer),.led_sel(led_sel),.led_data(led_data));initial begin sysclk = 1'b1;rst_b = 1'b0;//复位信号

#30 rst_b = 1'b1;end always #10 sysclk = ~sysclk;//输入的系统时钟,20ns的周期 endmodule

五、调试及总结

本次课程设计总共花费了四天左右的时间,设计了自动打铃系统。通过这次的设计更加熟悉了对EDA技术的了解和认识,在中也发现许多不足的地方。使用了自顶而下的设计方法,使得设计更加的简单和明了。在调试过程中,有些代码的设计不规范性,导致时序相当缓慢,甚至编译综合都会报错。在不断的修改下,发现时序电路和组合逻辑最好分开写,这样便于查错,和修改代码。毕竟Verilog HDL语言不同于C语言,不能以软件的思想来设计,而是要利用电路的思想来编程,这样可以更好的节省资源,使得时序也比较的简单明了。在以后的学习及程序设计当中,我们一定要倍加小心,在程序出现不正常运行的情况下要耐心调试,尽量做到精益求精。

最后通过这次EDA方面的课程设计,提高了我们对EDA领域及通信电路设计领域的认识,有利于培养我们在通信电路EDA方面的设计能力。有利于锻炼我们独立分析问题和解决问题的能力。

六、文献参考

[1].王金明、左自强 编,《EDA技术与Verilog设计》科学出版社

2008.8 [2].杜慧敏、李宥谋、赵全良 编,《基于Verilog的FPGA设计基础》 西安电子科技大学出版社 2006.2 [3].韩彬 编,《从零开始走进FPGA世界》杭州无线电爱好者协会出版社 2011.8.20

七、附录(实物图及源码)

module clock(//Input

sysclk,rst_b,key_mode,key_change,key_turn,//Output

buzzer,led_sel,led_data);

input sysclk,rst_b;//sysclk--global system clock,rst_b--global reset signal input key_mode;//mode choose.0--Timing function.1--Alarm clock function.2--adjust function input key_turn;//choose adjust minute or hour input key_change;//count add 1 output buzzer;//device buzzer output [7:0] led_sel;//led tube bit choose

output [7:0] led_data;//led_tube 8 bit data choose

parameter init_hour = 8'h12;parameter init_min = 8'h59;parameter init_sec = 8'h50;//initial time :12:59:50 parameter init_alarm_hour = 8'h06;parameter init_alarm_min = 8'h30;//initial alarm time : 06:30:0 parameter Count_1s = 28'h2FA_F07F;//count time 1s;

reg [7:0] sec;reg [7:0] min;reg [7:0] hour;reg [3:0] min_L;//minute low 4 bit reg [3:0] min_H;//minute high 4 bit reg [3:0] hour_L;//hour low 4 bit reg [3:0] hour_H;//hour high 4 bit reg [23:0] key_time;//press key away shake reg key_mode_n;//press key_mode next state reg key_change_n;//press key_change next state reg key_turn_n;//press key_turn next state wire key_mode_press;//sure Button press key_mode wire key_turn_press;//sure button press key_turn wire key_change_press;//sure button press key_change

always @(posedge sysclk)key_mode_n <= key_mode;assign key_mode_press =(!key_mode)&&(key_mode_n);always @(posedge sysclk)key_turn_n <= key_turn;assign key_turn_press =(!key_turn)&&(key_turn_n);always @(posedge sysclk)key_change_n <= key_change;assign key_change_press =(!key_change)&&(key_change_n);

always @(posedge sysclk or negedge rst_b)begin if(!rst_b)key_time <= 24'h0;else if(key_time!= 24'h0)

key_time <= key_time + 24'h1;else if((key_time == 24'h0)&&(key_mode_press || key_change_press || key_turn_press))key_time <= key_time + 24'h1;

end

reg [1:0] mode_num;//key mode..0--Timing function.1--Alarm clock function.2--adjust function always @(posedge sysclk or negedge rst_b)begin if(!rst_b)mode_num <= 2'b00;else if(mode_num == 2'h3)mode_num <= 2'h0;else if(key_mode_press &&(key_time == 24'h0))

mode_num <= mode_num + 2'h1;end

always @(*)begin if(mode_num == 2'h1)begin

min = init_alarm_min;hour = init_alarm_hour;end else begin

min = {min_H,min_L};hour = {hour_H,hour_L};end end

reg fm;//choose turn hour or minute always @(posedge sysclk or negedge rst_b)begin if(!rst_b)fm <= 1'b0;else if(key_turn_press &&(mode_num == 2'h2)&&(key_time == 24'h0))

fm <= ~fm;end

reg [27:0] time_cnt;///count time reg [27:0] time_cnt_n;//count time next state always @(posedge sysclk or negedge rst_b)begin if(!rst_b)time_cnt <= 28'h0;else time_cnt <= time_cnt_n;end

always @(*)begin if(time_cnt == Count_1s)time_cnt_n <= 28'h0;else if(mode_num!= 2'h0)time_cnt_n <= time_cnt;else time_cnt_n <= time_cnt + 28'h1;end

reg [3:0] sec_L;//second low 4 bit reg [3:0] sec_H;//second high 4 bit wire sec_cb;//second carry bit signal assign sec_cb =(sec_L == 4'h9)&&(sec_H == 4'h5);always @(posedge sysclk or negedge rst_b)begin if(!rst_b)begin

sec_L <= init_sec[3:0];sec_H <= init_sec[7:4];end else if((sec_L == 4'h9)&&(sec_H!= 4'h5)&&(time_cnt == Count_1s))begin

sec_L <= 4'h0;sec_H <= sec_H + 4'h1;end else if(sec_cb &&(time_cnt == Count_1s))begin

sec_L <= 4'h0;sec_H <= 4'h0;end else if(time_cnt == Count_1s)

sec_L <= sec_L + 4'h1;end

wire min_cb;//minute carry bit signal assign min_cb =(min_L == 4'h9)&&(min_H == 4'h5);always @(posedge sysclk or negedge rst_b)begin if(!rst_b)begin

min_L <= init_min[3:0];min_H <= init_min[7:4];end else if((sec_cb)&&(min_L!=4'h9)&&(time_cnt == Count_1s))

min_L <= min_L + 4'h1;else if((sec_cb)&&(min_L == 4'h9)&&(min_H!= 4'h5)&&(time_cnt == Count_1s))begin

min_L <= 4'h0;min_H <= min_H + 4'h1;end else if((sec_cb)&&(min_cb)&&(time_cnt == Count_1s))begin

min_L <= 4'h0;min_H <= 4'h0;end else if((fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time == 24'h0)&&(min_L!= 4'h9))

min_L = min_L + 4'h1;else if((fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time ==

24'h0)&&(min_L == 4'h9)&&(min_H!=4'h5))begin

min_L = 4'h0;min_H = min_H + 4'h1;end else if((fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time == 24'h0)&&(min_L == 4'h9)&&(min_H ==4'h5))begin

min_L = 4'h0;min_H = 4'h0;end end

always @(posedge sysclk or negedge rst_b)begin if(!rst_b)begin

hour_L <= init_hour[3:0];hour_H <= init_hour[7:4];end else if((sec_cb)&&(min_cb)&&(hour_L!= 4'h9)&&(hour_H!= 4'h2)&&(time_cnt == Count_1s))

hour_L <= hour_L + 4'h1;else if((sec_cb)&&(min_cb)&&(hour_L!= 4'h3)&&(hour_H == 4'h2)&&(time_cnt == Count_1s))

hour_L <= hour_L + 4'h1;else if((sec_cb)&&(min_cb)&&(hour_L == 4'h9)&&(hour_H!= 4'h2)&&(time_cnt == Count_1s))begin

hour_L <= 4'h0;hour_H <= hour_H + 4'h1;end else if((sec_cb)&&(min_cb)&&(hour_L == 4'h3)&&(hour_H == 4'h2)&&(time_cnt == Count_1s))begin

hour_L <= 4'h0;hour_H <= 4'h0;end else if((!fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time == 24'h0)&&(hour_L!= 4'h9)&&(hour_H!=4'h2))

hour_L <= hour_L + 4'h1;else if((!fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time == 24'h0)&&(hour_L!= 4'h3)&&(hour_H ==4'h2))

hour_L <= hour_L + 4'h1;else if((!fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time == 24'h0)&&(hour_L == 4'h9)&&(hour_H!=4'h2))begin

hour_L <= 4'h0;hour_H <= hour_H + 4'h1;end else if((!fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time ==

24'h0)&&(hour_L == 4'h3)&&(hour_H ==4'h2))begin

hour_L <= 4'h0;hour_H <= 4'h0;end end

wire buzzer_en;assign buzzer_en =(init_alarm_min == {min_H,min_L})&&(init_alarm_hour == {hour_H,hour_L});

led_tube I_led_tube(.sysclk(sysclk),.rst_b(rst_b),.scan_time(24'h1F090),.data0({1'h1,sec_L}),.data1({1'h1,sec_H}),.data2({1'h1,4'hA}),.data3({1'h1,min[3:0]}),.data4({1'h1,min[7:4]}),.data5({1'h1,4'hA}),.data6({1'h1,hour[3:0]}),.data7({1'h1,hour[7:4]}),.led_data(led_data),.led_sel(led_sel));buzzer I_buzzer(.sysclk(sysclk),.rst_b(rst_b),.buzzer_en(buzzer_en),.buzzer(buzzer));endmodule

下载燕山大学EDA课程设计电子日历word格式文档
下载燕山大学EDA课程设计电子日历.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    EDA 课程设计

    《电子系统设计自动化》课程设计报告 学 院: 机电工程学院 题 目: 数字时钟电路设计 课 程: 《电子系统设计自动化》课程设计 专业班级: 电信10级2 班 学生姓名: 刘星 秦玉杰 王......

    《EDA课程设计》

    《EDA课程设计》 课程设计题目: 基于单片机的温湿度采集系统 姓 名: xxx 学班时地 号:xxxx 级: xxxx 间:2014.4.21~ 2013.5.5 点: xxxxx 指 导老师: xxxxx 目录 一、电路原理......

    eda课程设计5篇

    数字钟 一、 设计要求 设计一个数字钟,具体要求如下: 1、 具有时、分、秒计数显示功能,以24小时循环计时。 2、 具有清零、校时、校分功能。 3、 具有整点蜂鸣器报时以及LED花......

    EDA数字钟课程设计

    课 程 设 计 报 告 设计题目:用VHDL语言实现数字钟的设计 班 级:电子1002班 学 号:20102625 姓 名:于晓 指导教师:李世平、李宁 设计时间:2012年12月摘要 数字钟是一种用数字电路......

    eda课程设计心得体会

    eda课程设计心得体会 写心得体会是困扰很多人的问题,心中有很多想法,想说却不知道怎么写下来。下面本栏目搜集了eda课程设计心得体会,欢迎查看,希望帮助到大家。 eda课程设计心......

    EDA课程设计时钟

    EDA课程设计姓名:学号:班级:自动化设计题目多功能数字钟电路设计设计任务及要求多功能数字钟应该具有的功能有:显示时—分—秒、小时和分钟可调等基本功能。整个钟表的工作应该......

    《EDA课程设计》教学大纲

    设计四 拔河游戏机 1、 设计一个能进行拔河游戏的电路。 2、 电路使用15个(或9个)发光二极管,开机后只有中间一个发亮,此即拔河的中心点。 3、 游戏双方各持一个按钮,迅速地、......

    EDA课程设计论文

    目录 一、 摘要 二、 概述 2.1目的与要求 2.2实验仪器与设备 2.3实验注意事项 2.4设计环境 三、 实验内容 四、4位加法器设计实现过程 4.1元件选择 4.2编辑半加器的原理图......