




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学通信工程应用技术设计报告课程设计任务书学生姓名: 戴 聪 专业班级: 通信1003班 指导教师: 郭志强 工作单位: 信息工程学院 题目:设计一个具有系统时间设置和带闹钟功能的24小时计时器中的应用课程设计内容和要求(1)计时功能:4位LED数字时钟对当前时间的小时和分钟进行显示,显示的最长时间为23小时59分。(2)设置并显示新的闹钟时间:用户先按“set”键,再用数字键“0”“9”输入时间,然后按“alarm”键确认。在正常计时显示状态下,用户直接按下“alarm”键,则已设置的闹钟时间显示在显示屏上。(3)设置新的计时器时间:用户先按“set”键,再用数字键“0”“9”输入新的时间,然后按“time”键确认。在输入过程中;输入的数字在显示屏上从右到左依次显示。例如,用户要设置新的时间 12:00,则按顺序输入“l”,“2”,“0”,“0”键,与之对应,显示屏上依次显示的信息为:“1”,“12”;“120”,“1200”。如果用户在输入任意几个数字后较长时间内,例如5秒,没有按任何键,则计时器恢复到正常的计时显示状态。(4)闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声;(5) 开发软件建议用quartus II,有条件的下载到FPGA开发板上进行验证,条件受限的,可以用quartus进行仿真时间安排1根据设计任务,分析电路原理,确定实验方案2天2根据实验条件进行电路的测试,并对结果进行分析7天3撰写课程设计报告1天指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日1目录摘要1Abstract21 FPGA简介31.1 FPGA概述31.2 FPGA基本结构31.3 FPGA系统设计流程51.4 FPGA开发编程原理62 总体设计思想82.1 基本原理82.2 设计框图83 数字钟总体设计93.1分频模块93.2 时钟主控制模块93.3 显示模块103.3 整体电路图113.4 整体RTL图114 仿真结果134.1 分频模块134.2 计数模块134.3 闹钟144.4 调整时钟154.5 显示电路155 心得及体会166 参考文献17I摘要本设计为一个多功能的数字钟,具有时、分、秒计数显示功能,以24小时循环计数;具有时间调整、闹钟以及整点报时功能。本设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计文件,在quartus II工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于FPGA的数字钟。系统主芯片采用EP2C8Q208C8,由时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,由按键输入进行数字钟的调整、闹钟的设置及响铃。关键词 :数字钟;硬件描述语言;VHDL;FPGAAbstract The design is a multi-functional digital clock with minutes, seconds count display function to the 24-hour cycle; have time to adjust, alarm and hourly chime function.EDA technology in the design, hardware description language VHDL system logic description means design documents, in quartus II tools software environment, using the top-down design approach, various basic modules work together to build a FPGA-based digital clock.The system main chip EP2C8Q208C8, clock module, control module, timer module, data decoding module, display and timekeeping module. Download the verification procedures designed by compilation and simulation on a programmable logic device, this system can be completed, the stars, and seconds are displayed, adjustment performed by the key input digital clock, alarm settings and ring.Keywords : digital clock; hardware description language; VHDL; FPGA 1 FPGA简介1.1 FPGA概述FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称,与之相应的CPLD是复杂可编程逻辑器件(Complex Programmable Logic Device)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。CPLD/PGFA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路。它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个数字系统。通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。使用CPLA/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。这些优点使得CPLA/FPGA技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言HDL的进步。1.2 FPGA基本结构FPGA具有掩膜可编程门阵列的通用结构,它由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。这3种可编程电路是:可编程逻辑模块(CLB-Configurable Logic Block)、输入/输出模块(IOB-I/O Block)和互连资源(IRInterconnect Resource)。可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。1.CLB是FPGA的主要组成部分。图1.1是CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G 、F和H。G有4个输入变量G1、G2、G3和G4;F也有4个输入变量F1、F2、F3和F4。这两个函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数。逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G和F,而另一个输入信号是来自信号变换电路的输出H1。这个函数发生器能实现3输入变量的各种组合函数。这3个函数发生器结合起来,可实现多达9变量的逻辑函数。CLB中有许多不同规格的数据选择器(四选一、二选一等),通过对CLB内部数据选择器的编程,逻辑函数发生器G、F和H的输出可以连接到CLB输出端X或Y,并用来选择触发器的激励输入信号、时钟有效边沿、时钟使能信号以及输出信号。这些数据选择器的地址控制信号均由编程信息提供,从而实现所需的电路结构。CLB中的逻辑函数发生器F和G均为查找表结构,其工作原理类似于ROM。F和G的输入等效于ROM的地址码,通过查找ROM中的地址表可以得到相应的组合逻辑函数输出。另一方面,逻辑函数发生器F和G还可以作为器件内高速RAM或小的可读写存储器使用,它由信号变换电路控制。CLBCLBCLBCLBCLBBCLBCLBCLBCLBCLBCLBCLBCLBBCLBCLBCLB可编程开关矩输入输出模块互连资源图1.1 CLB基本结构2.输入/输出模块IOB。IOB提供了器件引脚和内部逻辑阵列之间的连接。它主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成。每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先送入输入缓冲器。缓冲器的输出分成两路:一路可以直接送到MUX,另一路经延时几纳秒(或者不延时)送到输入通路D触发器,再送到数据选择器。通过编程给数据选择器不同的控制信息,确定送至CLB阵列的I1和I2是来自输入缓冲器,还是来自触发器。当IOB控制的引脚被定义为输出时,CLB阵列的输出信号OUT也可以有两条传输途径:一条是直接经MUX送至输出缓冲器,另一条是先存入输出通路D触发器,再送至输出缓冲器。IOB输出端配有两只MOS管,它们的栅极均可编程,使MOS管导通或截止,分别经上拉电阻接通Vcc、地线或者不接通,用以改善输出波形和负载能力。3.可编程互连资源IR。可编程互连资源IR可以将FPGA内部的CLB和CLB之间、CLB和IOB之间连接起来,构成各种具有复杂功能的系统。IR主要由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。1.3 FPGA系统设计流程一般说来,一个比较大的完整的项目应该采用层次化的描述方法:分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实现,这就是TOP DOWN(自顶向下)的设计方法。目前这种高层次的设计方法已被广泛采用。高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。CPLD/FPGA系统设计的工作流程如图1.2所示。图1.2 CPLD/FPGA系统设计流程流程说明:1.工程师按照“自顶向下”的设计方法进行系统划分。2.输入VHDL代码,这是设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。3.将以上的设计输入编译成标准的VHDL文件。4.进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。5.利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。6.利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。一般的设计,也可略去这一步骤。7.利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。8.在适配完成后,产生多项设计结果:(a)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(b)适配后的仿真模型;(c)器件编程文件。根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求。最后将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片CPLD/FPGA中。1.4 FPGA开发编程原理硬件设计需要根据各种性能指标、成本、开发周期等因素,确定最佳的实现方案,画出系统框图,选择芯片,设计PCB并最终形成样机。CPLD/FPGA软件设计可分为两大块:编程语言和编程工具。编程语言主要有VHDL和Verilog两种硬件描述语言;编程工具主要是两大厂家Altera和Xilinx的集成综合EDA软件(如MAX+plusII、QuartusII、Foundation、ISE)以及第三方工具(如FPGA Express、Modelsim、Synposys SVS等)。具体的设计输入方式有以下几种:1.HDL语言方式。HDL既可以描述底层设计,也可以描述顶层的设计,但它不容易做到较高的工作速度和芯片利用率。用这种方式描述的项目最后所能达到的性能与设计人员的水平、经验以及综合软件有很大的关系。2.图形方式。可以分为电路原理图描述,状态机描述和波形描述3种形式。电路原理图方式描述比较直观和高效,对综合软件的要求不高。在图形的方式下定义好各个工作状态,然后在各个状态上输入转换条件以及相应的输入输出,最后生成HDL语言描述,送去综合软件综合到可编程逻辑器件的内部。由于状态机到HDL语言有一种标准的对应描述方式,所以这种输入方式最后所能达到的工作速度和芯片利用率主要取决于综合软件;波形描述方式是基于真值表的一种图形输入方式,直接描述输入与输出的波形关系。这种输入方式最后所能达到的工作速度和芯片利用率也是主要取决于综合软件。 2 总体设计思想2.1 基本原理闹钟系统的电路是由一个二十四进制计数器和两个六十进制计数器组成的,能够分别对时、分、秒进行计时。秒计数器的计数时钟CLK为1Hz的标准信号。当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开始计时。当闹钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号。时、分、秒的计时结果通过4个数码管来动态显示。当闹钟处于计时状态时,三个计数器允许计数;当闹钟处于定时状态时,可以设定时和分;当计时到所设定的时刻时,驱动扬声器发出蜂鸣声。2.2 设计框图图2.1 数字钟的一般组成框图3 数字钟总体设计3.1分频模块晶体振荡器是构成数字式时钟的核心,振荡器的稳定度及频率的精度决定了数字钟计时的准确程度,它保证了时钟的走时准确及稳定。石英晶体的选频特性非常好,只有某一频率点的信号可以通过它,本设计中我们采用50M晶振,其它频率段的信号均会被它所衰减,而且,振荡信号的频率与振荡电路中的R、C元件的数值无关。因此,这种振荡电路输出的是准确度极高的信号。然后再利用分频电路,将其输出信号转变为秒信号,其组成框图如图3.1。图3.1 秒信号产生电路框图该模块完成全局时钟信号分频输出1KHz、4Hz的三种时钟信号,逻辑框图如图3.2所示。图3.2 分频模块框图3.2 时钟主控制模块该模块将分频后的信号控制时钟的正常走动,以及在相应的功能间的转换,包括闹钟功能和时间调整功能。时间模块模块分为两个小模块:时间计数模块、时间设置模块;闹铃模式主要也有两个小模块构成,即闹铃时间设置模块,具体的闹铃设置时间精确到分钟,以及闹铃响时设置模块。此模块的逻辑框图如3.3所示。图3.3 主控模块框图3.3 显示模块数码管led显示需7位2进制码,采用程序译码方式,通过switch语句将要显示的一个十进制数据进行转换。3.4 数码管原理图数码管显示模块主要是将主控时钟模块的相关输出信号送给数码管和流水灯进行显示,但是数码管是动态扫描过程,其扫描的周期要足够的小才能真正不被人眼识别出来是动态扫描的过程。动态扫描电路将计数器输出的8421BCD码转换为数码管所需要的逻辑状态,并且输出数码管的片选信号和位选信号。所谓动态扫描显示方式是在显示某一位LED显示块的数据的时候,让其它位不显示,然后再显示下一位数据,同时关闭其它显示模块。这样做可以使每一个显示块显示与自己相对应的数据。只要保证每一位显示的时间间隔不要太大,利用人眼的视觉暂留现象,就可以造成各位数据同时显示的假象。此模块框图如图3.5所示。该模块的输入端口clk是频率为50MHZ的时钟信号,需要对其进行分频为较低的信号才可以作为扫描的频率,输出端口sel为控制的位选信号,data输出的是段选信号。图3.5 显示模块框3.3 整体电路图图3.6 总体电路图3.4 整体RTL图图3.7 RTL电路图4 仿真结果4.1 分频模块本系统使用的晶体振荡器电路给数字钟提供一个频率稳定准确的50MHz的方波信号,其输出至分频电路。经分频后输出4HZ的信号CLK4hz、1KHZ用于报时模块的输入信号。该模块的时序仿真图如图4.1所示,满足设计要求。图4.1 分频模块仿真图4.2 计数模块模块功能为正常计时,即每秒钟读一次数,秒表加1,秒计时满60进1给分计时,分计时满60进1给小时计时,小时计时满24清零。从功能上讲分别为模60计数器,模60计数器和模24计数器。秒时钟的仿真波形图如图4.2所示,在mode为0的情况下,时钟正常走动,在秒钟为59后,秒钟回0,分钟进1,仿真图满足设计的要求。图4.2 秒、分仿真波形秒、分、时都是八位的输出,具体的时序如下图所示图4.3 秒分时内部时序图4.4 秒内部时序4.3 闹钟模块功能为设置闹铃的分钟和小时,先按mode,使其为1,设置的时候由turn控制调整分钟及调整小时之间的切换,其中led3亮表示调整的是分钟,而led5亮表示调整的是时钟,每按一次change,所调整的计数器加1,分钟计数器满60清零,小时计数器满24清零。闹钟设置成功时会点亮led8,每次按mode,当其为1时,会显示设置的闹钟时间。4.5 闹钟设置波形如图所示,mode为1时,秒钟停止走动,turn为低电平期间,hour的值随着change的下降沿加一,在turn为高电平时,min的值随change的下降沿加一。然后再将mode调回0,时钟走到所定的时间,闹钟铃音响,闹钟音为持续20秒的急促的“滴滴滴”声,此时若按住change键,会屏蔽闹钟音。图4.6 闹钟响铃波形图4.7 被change屏蔽的报时波形4.4 调整时钟模块功能为修正分钟和小时时间以及秒钟的精确调整清零。由turn控制调整分钟和调整小时之间的切换,每按一下change所调整的计数器加1,分钟计数器满60清零,小时计数器满24清零;秒种的精确调整清零具体为在正常计时的情况下,长时间按住turn,即可使秒钟清零,进行精确调时。图4.8 调整时钟波形4.5 显示电路动态扫描电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且输出数码管的片选信号和位选信号。所谓动态扫描显示方式是在显示某一位LED显示块的数据的时候,让其它位不显示,然后在显示下一位的数据,同时关闭其他显示块。这样做可以使每一个显示块显示与自己相对应的数据。只要保证每一位显示的时间间隔不要太大,利用人眼的视觉暂留的现象,就可以造成各位数据同时显示的假象。一般每一位的显示时间为110ms。动态扫描逻辑框图如图4.10所示。该模块的输入端口DISCLK是频率为500HZ的扫描时钟,故每一位显示的时间为2ms,需要扫描8个数码管,故显示间隔为20ms。由分频模块提供;输出端口DATA6.0动态输出扫描的数据;端口SEL2.0输出数码管的片选信号。图4.9 动态扫描逻辑框图5 心得及体会在此次的数字钟设计过程中,更进一步地熟悉有关数字电路的知识和具体应用。学会了利QuarterII软件进行原理图的绘制,硬件描述语言Verilog HDL的编写,程序的仿真等工作。并能根据仿真结果分析设计的存在的问题和缺陷,从而进行程序的调试和完善。在设计电路中,往往是先仿真后连接实物图,但有时候仿真和电路连接并不是完全一致的,例如在对具体模块的仿真的过程中,往往没有考虑到整体设计的层面以及与上下模块接口的设计。再加上器件对信号的延时等问题,实际下载到实验箱上后会出现一系列的问题,因此仿真图和电路连接图还是有一定区别的。本次简易电子钟设计实验,对于Verilog语言的学习与应用,可以说是一次很好的锻炼机会,在设计过程中,汲取了诸多经验教训,深刻体会到一个小小的错误可能会给整个程序所带来的严重后果。所以,在以后的学习及程序设计当中,我们一定要倍加小心,在程序出现不正常运行的情况下要耐心调试,尽量做到精益求精。此次的数字钟设计重在于按键的控制和各个模块代码的编写,虽然能把键盘接口和各个模块的代码编写出来,并能正常显示,但对于各个模块的优化设计还有一定的缺陷和不足。总的来说,通过这次的设计实验更进一步地增强了实验的动手能力,对数字钟的工作原理也有了更加透彻的理解。在本设计调试过程中遇到了一些问题,当程序下载到实验箱上后,数码管显示全部为零,计数器不工作,经分析得知程序中的总的清零信号保持有效状态,改动程序后计数器开始计数。当秒时钟计数到59时变0时,分计数模块滞后计数,考虑的器件的延时,将程序中秒的进位信号提前1秒。在检测按键时,由于有些按键控制是秒时钟同步的,所以控制起来显得梢慢些,但是工作正常,能满足实际的需要。仿真结果中出现很多毛刺时,将控制信号的周期调大后,毛刺变得不那么明显,可见是由于控制信号周期过小导致仿真软件出现的误差。这次课程设计终于顺利完成了,对给过我帮助的所有同学和指导老师表示忠心的感谢!6 参考文献1 崔葛,基于FPGA的数字电路系统设计,西安电子科技大学出版社,20082 王开军,姜宇柏,面向CPLD/FPGA的VHDL设计,机械工业出版社,20073 毕满清,电子技术实验与课程设计,机械工业出版社,20054 吕思忠,数子电路实验与课程设计,哈尔滨工业大学出版社,20015 谢自美,电子线路设计、实验、测试,华中理工大学出版社,2003附录分频模块Verilog HDL程序如下:module fenpin(clk,clk4Hz,clk1000Hz);input clk;output reg clk4Hz;output reg clk1000Hz;reg 25:0count1;always (posedge clk)begin if(count112500000)begin count1=12500000/2)begin count1=count1+1;clk4Hz=1;end else begin count1=count1+1; clk4Hz50000)begin count2=25000)begin count2=count2+1; clk1000Hz=1;end else begin count2=count2+1; clk1000Hz=0;endendendmodule主控模块Verilog HDL程序如下:/*clk:时钟信号,频率4Hz; clk_1k:产生闹铃声、报时音的时钟信号,频率1000Hz; mode:功能控制信号;为0:计时功能; 为1:闹铃功能; 为2:手动校对功能; turn:在手动校对时,选择是调整时间,还是分钟,若长时间按住该键,可使秒信号清零,用于精确调时; change:手动调整时,每按一次,计数器加1,如果长按,则连续快速加1;用于快速调时和定时;hour,min,sec:时,分,秒显示信号; alert:扬声器驱动信号;用于产生闹铃音和报时音;闹铃音为持续20秒的急促的“嘀嘀嘀”音 ,若按住“change”键,可屏蔽该闹铃音;整点报时音为“嘀嘀嘀嘀嘟”四短一长音;LD_alert:接发光二极管,指示是否设置了闹钟功能; LD_hour:接发光二极管,指示当前调整的是小时信号; LD_min: 接发光二极管,指示当前调整的是分钟信号。*/module clock(clk,clk_1k,mode,change,turn,alert,hour,min,sec, LD_alert,LD_hour,LD_min);input clk,clk_1k,mode,change,turn;output alert,LD_alert,LD_hour,LD_min;output7:0 hour,min,sec;reg7:0 hour,min,sec,hour1,min1,sec1,ahour,amin;reg1:0 m=2,fm,num1,num2,num3,num4;reg1:0 loop1,loop2,loop3,loop4,sound;reg LD_hour,LD_min;reg clk_1Hz,clk_2Hz,minclk,hclk;reg alert1,alert2,ear;reg count1,count2,counta,countb;wire ct1,ct2,cta,ctb,m_clk,h_clk;always (posedge clk)/ear 信号用于产生或屏蔽声音beginclk_2Hz=clk_2Hz; /clk_2HZ频率2HZ if(sound=3) begin sound=0; ear=1; endelsebegin sound=sound+1; ear=0; endendalways (posedge clk_2Hz) /由2Hz 的输入时钟产生1Hz 的时基信号clk_1Hz2) m=0; else m=m+1; endalways (posedge turn)fm=fm;always /该进程产生count1,count2,counta,countb 四个信号begincase(m)2: begin if(fm)begin count1=change; LD_min,LD_hour=2; endelsebegin counta=change; LD_min,LD_hour=1; end count2,countb=0;end1: begin if(fm)begin count2=change; LD_min,LD_hour=2; endelsebegin countb=change; LD_min,LD_hour=1; end count1,counta=2b00;enddefault: count1,count2,counta,countb,LD_min,LD_hour=0;endcaseendalways (negedge clk)/如果长时间按下“change”键,则生成“num1”信号用于连续快速加1(loop1)if(count2) beginif(loop1=3) num1=1;elsebegin loop1=loop1+1; num1=0; endendelse begin loop1=0; num1=0; endalways (negedge clk) /产生num2 信号(loop2)if(countb) beginif(loop2=3) num2=1;elsebegin loop2=loop2+1; num2=0; endendelse begin loop2=0; num2=0; endalways (negedge clk)if(count1) begin /num3if(loop3=3) num3=1;elsebegin loop3=loop3+1; num3=0; endendelse begin loop3=0; num3=0; endalways (negedge clk)if(counta) begin /num4if(loop4=3) num4=1;elsebegin loop4=loop4+1; num4=0; endendelse begin loop4=0; num4=0; endassign ct1=(num3&clk)|(!num3&m_clk); /ct1 用于计时、校时中的分钟计数assign ct2=(num1&clk)|(!num1&count2); /ct2 用于定时状态下调整分钟信号assign cta=(num4&clk)|(!num4&h_clk); /cta 用于计时、校时中的小时计数assign ctb=(num2&clk)|(!num2&countb); /ctb 用于定时状态下调整小时信号always (posedge clk_1Hz) /秒计时和秒调整进程if(!(sec18h59)|turn&(!m)beginsec1=0; if(!(turn&(!m) minclk=1;end/按住“turn”按键一段时间,秒信号可清零,该功能用于手动精确调时else beginif(sec13:0=4b1001)begin sec13:0=4b0000; sec17:4=sec17:4+1; endelse sec13:0=sec13:0+1; minclk=0;endassign m_clk=minclk|count1;always (posedge ct1) /分计时和分调整进程beginif(min1=8h59) begin min1=0; hclk=1; endelse beginif(min13:0=9)begin min13:0=0; min17:4=min17:4+1; endelse min13:0=min13:0+1; hclk=0;endendassign h_clk=hclk|counta;always (posedge cta) /小时计时和小时调整进程if(hour1=8h23) hour1=0;else if(hour13:0=9)begin hour17:4=hour17:4+1; hour13:0=0; endelse hour13:0=hour13:0+1;always (posedge ct2) /闹钟定时功能中的分钟调节进程if(amin=8h59) amin=0;else if(amin3:0=9)begin amin3:0=0; amin7:4=amin7:4+1; endelse amin3:0=amin3:0+1;always (posedge ctb) /闹钟定时功能中的小时调节进程if(ahour=8h23) ahour=0;else if(ahour3:0=9)begin ahour3:0=0; ahour7:4=ahour7:4+1; endelse ahour3:0=ahour3:0+1;always /闹铃功能if(min1=amin)&(hour1=ahour)&(amin|ahour)&(!change)/若按住“change”键不放,可屏蔽闹铃音if(sec18h20) alert1=1; /控制闹铃的时间长短else alert1=0;else alert1=0;always /时、分、秒的显示控制case(m)3b00: begin hour=hour1; min=min1; sec=sec1; end/计时状态下的时、分、秒显示3b01: begin hour=ahour; min=amin; sec=8hzz; end/定时状态下的时、分、秒显示3b10: begin hour=hour1; min=min1; sec8h54)|(!(min1|sec1)if(sec18h54) alert2=ear&clk_1k; /产生短音else alert2=!ear&clk_1k; /产生长音else alert2=0;endendmodule显示模块Verilog HDL程序如下:module display(clk,hour,minute,second,sel,data)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国华能越南公司招聘面试高频词汇与模拟题解析
- 2025年初级体育场馆管理面试指南与常见问题解答
- 2025年制香师考试高频考点梳理与模拟试题详解
- 护理课件进修汇报材料
- 2025年比特币投资项目合作计划书
- 吉林省松原市前郭县王府镇蒙古族学校、洪泉乡中学2025-2026学年上学期九年级期初考试暨第一次联考试卷 数学试卷 (含简单答案a)
- (新)高中数学高考一轮复习正弦定理和余弦定理复习课教学设计
- 抗生素的使用原则课件
- 小车考试新题及答案
- 2025年分步重复光刻机合作协议书
- 安保技能活动方案
- 殡仪服务站可行性研究报告
- 普通鱼缸买卖协议书
- T/CECS 10360-2024活毒污水处理装置
- 2026届高职单招考试大纲英语词汇(音标版)
- 临床护理文书书写规范课件
- 非法宗教班会课件
- 《电子商务基础(第二版)》课件 第六章 电子商务客户服务
- 寄生虫课件 吸虫学习资料
- 2025变压器中性点直流偏磁监测装置
- 2025第三届全国技能大赛竞赛(装配钳工赛项)省选拔赛考试题库(含答案)
评论
0/150
提交评论