集成电路课程实践报告基于verilog数字钟系统电路设计.doc
Wuhan University Of Technology 集成电路课程实践报告学 院: 信息工程学院 专 业: 物理电子学 课 题: 基于verilog数字钟系统电路设计指导老师: 吴友宇 2012年 1月 10日 目录 目录2摘要3关键词3Abstract3Key words3第1章 前言41.1概述41.2 课题设计基本内容41.2.1 课题设计技术要求41.2.2 课题设计结构5第2章 EDA与Verilog HDL简介72.1 EDA技术72.1.1 EDA技术特征72.1.2 EDA技术设计流程72.2 硬件语言描述(Verilog HDL)82.2.1 Verilog HDL设计方法介绍82.2.2 Verilog HDL设计方法优势82.2.3 数字IC设计流程9第3章 数字钟系统设计113.1 系统需求113.2 数字钟工作原理113.3 各组成模块原理123.3.1 主控电路模块143.3.2 分频电路模块143.3.3 时间以及设置模块163.3.4 整点报时模块173.3.5 显示扫描模块183.3.6 按键消抖模块18第4章 各组成模块软件设计以及仿真204.1 主控电路模块软件设计204.2 分频电路模块软件设计214.2.1分频模块仿真以及分析224.3 计时模块软件设计224.3.1 计时模块软件仿真以及分析244.4 整点报时模块软件设计254.4.1整点报时软件仿真以及分析264.5 显示扫描模块软件设计26第5章 数字钟设计总结285.1 引脚封装285.2 设计总结28摘要: 为了提高开发的效率,缩短其开发的时间,设计师逐渐转向可编程逻辑器件的开发。 本设计介绍了应用FPGA采用自顶向下的方法来设计数字钟的方案。设计时,系统实现采用硬件描述语言Verilog把系统电路按模块化方式进行设计,采用Quartus II6.0开发平台进行逻辑综合和时序仿真,并下栽到EPlC3T144C8芯片上进行验证,获得了预期的结果。关键词: FPGA 数字时钟 自顶向下 Verilog 语言Abstract:In order to enhance the development efficiency and reduce its time,designers gradually turn their attentions to the development of programmable logic devicesThis paper introduces the application of FPGA, uses top-down method to design digital clockWhen designingit first uses the Verilog language to edit each functional module, separately compiles and simulates under Quartus 6.0 ,then uses the top-level document to connect all functional modules,finally carries on the test in the experiment box,confirms that this design method is practical and feasible.Key words: FPGA digital clock top-down Verilog Language第1章 前言1.1概述数字钟给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如,定时报警、按时自动打铃、时间程序自动控制、定时广播、定 时启闭路灯、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启动等,所有这些,都是以钟表数字化为基础的。数字钟已成人们日常生活中必不可少的必备品,广泛用于个人,家庭以及车站,码头,剧场,办公室等公共场所,给人们的生活,学习,工作和娱乐带来了极大的方便。数字集成电路技术的迅速发展以及先进的石英技术的采用,使数字钟具有准确,性能稳定,携带方便等优点。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜,使用也方便,但鉴于数字钟电路的基本组成包含了数字电路的主要组成部分,因此进行数字钟的设计是必要的。1.2 课题设计基本内容1.2.1 课题设计技术要求1, 熟练掌握使用Quartus 6.0的使用;2, 掌握自顶向下的设计方法,掌握实现一个项目的设计步骤;3, 需要具有Verilog HDL语言编程知识和外围电路搭建技能;4, 掌握不同进制计数器及时钟控制电路的设计方法;5, 在顶层文件中完成对各个模块的连接;6, 能根据设计需求对设计电路进行功能仿真和测试;7, 掌握多功能数字钟的工作原理图;8, 熟悉并且熟悉软件和硬件调试方法;1.2.2 课题设计功能要求1, 能进行正常的时,分,秒计时功能,有6只数码管分别显示24小时,60分,60秒的十位和个位。如下图1-1小时分钟秒 图1-1 数码管显示时间2, 能利用按键实现“校时”,“校分”功能。3, 能利用扬声器(SPESKER)做整点报时(设置报时的时间为*,59,58,5750).4, 清零功能,reset为复位键,低电平时实现清零功能,高电平时正常计数。5, 用层次化设计方法设计该电路,用原理图输入设计各个功能模块。如图下面原理图所示1-2数字时钟整点报时模块秒计时模块分计时模块时计时模块时,分校时模块 图1-2 原理图模块1.2.3 课题设计结构 数字钟的逻辑结构主要包含分频器,六十进制计数器,二十四进制计数器,动态显示译码器,LED数码管显示,校验功能具有整点报时结构等等几个模块,图1- 3为数字钟的逻辑结构图。时钟分频器 时钟计数器电路时间设置(校验功能)动态译码电路LED数码管显示 图1-3 数字钟的逻辑结构图 其中计数器包含六十进制计数器和二十四进制计数器,分频器提供一个比较精确的1Hz的计时脉冲,时间设置环节提供时间的初始设置,动态显示的译码器提供将BCD代码译成数码管所需要的驱动信号,使LED数码管用十进制数字显示的BCD代码所表示的数值。第2章 EDA与Verilog HDL简介2.1 EDA技术2.1.1 EDA技术特征EDA技术是伴随着计算机,集成电路,电子系统设计的发展,经历了计算机辅助设计,计算机辅助工程设计和电子系统设计自动化三个阶段。EDA技术是在电子CAD技术基础上发展起来的计算机软件系统是指以计算机为工作平台。融合 应用电子技术、计算机技术、信息处理及智能化技术的最新成果进行电子产品的自动设计。电子设计自动化工程是近几年迅速发展起来的计算机软件、硬件、微电子交叉的现代电子设计学科,它是以EDA软件工具为开发环境,以硬件描述语言为设计语言,以可编程器件为实验载体,以专用集成电路(ASIC)、片上系统(SOC)芯片为器件目标,以电子系统设计为应用方向的电子产品自动化设计过程。利用EDA工具。 现代EDA技术是采用高级语言描述。具有系统级仿真和综合能力,它主要采用并行工程设计和自顶向下(Topdown)设计方法,其基本思想是从系统总体要求出发,分为行为描述、寄存器传输级描述、逻辑综合三个层次,将设计内容逐步细化,最后完成整体设计。这是一种全新的设计思想与设计理念。2.1.2 EDA技术设计流程 EDA技术是将传统的“电路设计硬件搭试调试焊接”模式变成“功能设计软件模拟编程下载”方式。设计人员只需要一台微机和相应的开发工具即可研制出各种功能的电路。EDA技术将电子产品设计软件编译,逻辑化简,逻辑综合,仿真优化,布局布线,逻辑适配,逻辑映射,编程下载,生成目标系统的全过程在计算机和在开发平台上自动处理完成。具体流程如图2-1所示 逻辑编译逻辑综合布局布线器件适配功能仿真下载编程目标系统设计输入设计指标 图2-1 EDA技术设计流程2.2 硬件语言描述(Verilog HDL)2.2.1 Verilog HDL设计方法介绍Verilog HDL是在1983年,由GDA(GateWay Design Automation)公司的PhilM oorby首创的。Phil Moorby后来成为Verilog-XL的主要设计者和Cadence公司 (CadenceDesign System)的第一个合伙人。在1984-1985年,Moorby设计出了第一个名为Verilog-XL的仿真器,1986年,他对Verilog HDL的发展又作出了另一个巨大贡献,即提出了用于快速门级仿真的XL算法。随着Verilog-HDL算法的成功,Verilog HDL语言得到迅速发展。1989年,Cadence公司收购了GDA公司,Verilog HDL语言成为Cadence公司的私有财产。1990年,Cadence公司决定公开Verilog HDL语言,于是成立ovl(open Verilog International)组织来负责促进Verilog HDL语言的发展。基于Verilog I-IDL的优越性,IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDLl364-1995,2001年发布了Verilog HDLl3642001标准。用Verilog来进行数字设计,设计者可以用它来进行各种级别的逻辑设计,可以用它进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件描述语言。据有关文献报道,目前在美国使用Verilog HDL进行设计的工程师大约有10多万人,全美国有200多所大学教授用Verilog硬件描述语言的设计方法。在我国台湾地区几乎所有著名大学的电子和计算机工程系都讲授Verilog有关的课程。2.2.2 Verilog HDL设计方法优势采用电路原理图输入法进行设计时,具有开发周期长、需要专门的设计工具、需手工布线等缺陷。而采用硬件描述语言进行设计时,由于硬件描述语言的标准化,可以很容易地把完成的设计移植到不同厂家的不同芯片中去,并在不同规模应用时可以较容易地作修改。这不仅是因为用硬件描述语言所完成的设计,它的信号位数是很容易改变的,可以很容易地对它进行修改,来适应不同规模的应用,在仿真验证时,仿真测试矢量还可以用同一种描述语言来完成,而且还因为采用硬件描述语言综合器生成的数字逻辑是一种标准的电子设计互换格式(EDIF)文件,独立于所采用的实现工艺。有关工艺参数的描述可以通过硬件描述语言提供的属性包括进去,然后利用不同厂家的布局布线工具,在不同工艺的 芯片上实现。采用硬件描述语言进行设计最大的优点是其与工艺无关性。这使得工程师在功能设计、逻辑验证阶段,可以不必过多考虑门级及工艺实现的具体细节,只需 要利用系统设计时对芯片的要求,施加不同的约束条件,即可设计出实际电路。 实际上这是利用了计算机的巨大能力在EDA工具的帮助下,把逻辑验证与具体工 艺库匹配、布线及时延计算分成不同的阶段来实现从而减轻了人们的繁琐劳动 目前最流行的硬件描述语言有两种,一种为之前介绍过的VerilogHDL,另一 种为VHDL,与VHDL相比Verilog的优势有以下一些 精简:在实现同样功能的情况下,比较两者的程序代码,Verilog语言仅需 要几乎VHDL语言的一半长度。一般来说,所谓的程序的可维护性往往与程序的 长短成反比。越长的程序除了维护不容易外,其出错的几率也往往比精简的程序 来得高。 易于学习:VerilogHDL的语法与C语言近似,对于已经学习过C语言的人 而言,可以快速地掌握Verilog的使用。 方便性:Verilog HDL定义了许多易于仿真的语法,如信号的提取,可以直接在顶层模块提取子模块的信号。如wire test=topmodulelmodule2test,这在仿真验证时是极为有用的。再如,信号的强制赋值和强制赋值的释放,这也是常常会用到的功能。而且这些功能VHDL语言并不具备。2.2.3 数字IC设计流程 随着现代集成电路制造工艺技术的改进,使得在一个芯片上集成数百万乃至数千万个器件成为可能。但很难设想仅由一个设计师独立设计如此大规模的电路而不出现错误。所以越来越多的设计者采用自顶向下(ToPDOWN)的思想进行 设计,即利用层次化、结构化的设计方法,一个完整的硬件设计任务首先由总设 计师划分为若干个可操作的模块,然后用Verilog HDL等硬件描述语言编制出相应的模型(行为的或结构的),通过仿真加以验证后,再把这些模块分配给下一层的设计师。这就允许多个设计者同时设计一个硬件系统中的不同模块,其中每个设计者负责自己所承担的部分;而由上一层设计师对其下层设计者完成的设计用行为级上层模块对其所做的设计进行验证。为了提高设计质量,如果其中有一部分模块可由商业渠道得到,可以购买它们的知识产权的使用权(IP核的重用),以节省时间和开发经费。 图2-2 为TOP-DOWN设计思想的示意图,以设计树的形式绘出。TOP-DOWN设计是从系统级开始,把系统划分为基本单元,然后再把每个基本单元划分为下 一层次的基本单元,一直这样做下去,直到可以直接用EDA元件库中的基本元件 来实现为止。对于设计开发整机电子产品的单位和个人来说,新产品的开发总是 从系统设计入手,先进行方案的总体论证、功能描述、任务和指标的分配。随着 系统变得越来越复杂和庞大,特别需要在样机问世之前,对产品的全貌有一定的 预见性。而随着IC设计EDA技术的发展和EDA设计工具的支持,TOP-DOWN 设计思想已成为IC设计的主流。系统设计 模块A 模块B 模块CA1A2A3B1B2C1C2. 图 2-2 TOP-DOWN 设计思想第3章 数字钟系统设计3.1 系统需求设计一个具有时,分,秒计时功能的电子钟电路。需求:1,准确计时,以数字形式显示时,分,秒的时间,小时按24小时制计时;2,具有校时,校分功能,校正输入脉冲频率为1Hz;3,具有仿广播电台整点报时的功能,及每逢59分51秒,53秒,55秒和57秒时,发出4声500Hz低音,在59分59秒时发出一声1kHz高音,持续时间均为1秒,最后一声高音结束的时刻恰好为正点时刻;4,具有定时闹钟功能(设闹钟时间为21:00:00)。外部分别输入频率为1Hz和1KHz方波信号,用于秒脉冲信号和闹钟信号;已完成的功能能实现时(24进制),分(60进制),秒(60进制)的计时功能;能用数码管显示时(24进制),分(60进制),秒(60进制)的计时数据;能实现“校时”“校分”功能;能实现整点报时功能。3.2 数字钟工作原理数字钟系统的工作原理是:向秒计数器提供秒脉冲信号,秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照24进制计数。计数器的输出经过译码器送显示器,显示时间。计时出现误差可以用校时电路进行校时,校分。在计时主体电路正确运行的情况下,进行功能外展,现实仿电台报时和闹钟功能。下面按照层次化设计方法划分数字钟的功能,如图3-1所示;数字钟可以划分三个功能模块:1 计时电路;2显示电路;3扩展电路。这些模块又可以分为更小的模块。计时电路包含校时电路和计数器两个部分。计数器的功能是完成小时,分钟,秒钟的计时,因此又继续分割成二十四进制和六十进制计数器;校时电路的作用是对小时和分钟的误差进行调整,可设置两个按键,分别给予控制。显示电路的作用是将计时电路产生的计时值在数码管上进行显示,通过七段译码后,驱动LED数码管,然后在计时电路正确的情况下实现两个扩展的功能。下面根据这些要求完成的数字钟各具体功能模块的设计,在调用这些模块构成顶层的数字钟系统如图3-1 数字钟功能划分层次图数字钟功能扩展闹钟仿电台报时计时电路显示电路校时电路计数器二十四进制小时计数器六十进制分计数器六十进制秒计数器 图3-1 数字钟功能划分层次图3.3 各组成模块原理 多功能数字钟有信号发生器,分频器,计时电路,译码电路,显示电路,校准电路和整点报时电路组成。如下图所示为顶层文件3-2-0 ;数字钟模块图3-2-1。 如图3-2-0 顶层文件原理图60进制秒计时器60进制分计时器24进制小时计时器分频模块分频模块系统晶振按键按键时,分,秒显示模块整点报时比较模块频率选择模 块数码管扬声器500Hz1Hz 图3-2-1 数字钟电路总体模块图 3.3.1 主控电路模块主控电路主要是用状态机控制校时,校分,以及闹钟模块;其模块流程图3-3所示:时钟主控电路模块校时模块校分模块闹钟整点报时模块 图3-3 主控电路模块流程图主控电路模块图:图3-4模块图 图3-4 主控电路模块图3.3.2 分频电路模块本时钟分频模块应用了计数原理,因为本试验箱使用的时钟频率为20MHZ,而我们的设计时分秒进步每一秒计数,也就是需要1Hz的频率;将20MHz时钟信号分频出1KHz,200Hz,1Hz的三种时钟信号;(1)1Hz的时钟信号主要作为秒表模块和时间动态位选模块的输入信号作为秒个位的调变频率。(2)200 Hz时钟信号主要作为闹钟模块和时间动态位选模块的输入时钟。作为时间调整时的扫描频率,同时也是作为秒表的输入时钟以达到精确计数。(3)1KHz主要用作时间动态位选模块的时钟输入信号主要作为数码管正常显示时的扫描频率。由此可看出在多功能数字钟的系统中,有秒表模块闹钟模块、时间动态位选模块均需要有不同频率的时钟信号输入,所以在设计多功能数字钟时。需要设置分频模块,将时钟输入的频率分割为IKHZ、IHZ和200HZ的不同频率,从 而使利用时钟信号对各个模块的控制更简便化也更直观化,调试更加方便有利于系统的整体实现。分频模块图: 图3-5 1Hz分频模块 图3-6 1KHz分频模块 图3-7 200Hz分频模块3.3.3 时间以及设置模块 时间以及设置模块主要完成时间的自动正常运行与显示,以及在相应的功能号下实现时间的调整与设置。对于时间模块,主要完成时间的自动增加与显示功能即为正常的自动模式运行,时间模块主要由秒自动计时子模块(counter_second),分自动计时模块(counter_mintue),小时自动计时模块(counter_hour)以及时间自动工作控制模块组成。时间设置模块主要完成对时间的设置相关的闪烁显示控制以及时间中的小时,分钟,秒得数据改变,它通过两个模块分别实现时间调整与设置过程中小时,分钟,秒的位选择和秒得数值选择。校准电路:校准电路有按键,按键消抖电路,校时控制电路,校分控制电路,秒清零电路组成。当校时按键ch按下时,计数器迅速递增(按2Hz脉冲),并且按24进制循环,计满23小时后回“00”;当校分按键cm按下时,计分器迅速递增(按秒脉冲),并且按60进制循环,计满59小时后回“00”;但不向“时”进位。当秒清零按键cs按下时,秒清零。其设置工作原理是当秒计数器达到59时,再来一个脉冲,秒计时器清零,秒进位信号为“1”向分计数器提供分秒冲,分计数器加“1”。当分计数器达到59时,并且秒计数器达到59时,再来一个秒脉冲,分,秒计数器清零,分进位信号为“1”向时计数器提供时秒冲,时计数器加“1”。当时计数器达到23时,分计数器达到59时,并且秒计数器到达59时,再来一个秒时钟脉冲,时分秒计数器清零。如下图3-8,3-9.3-10所示为时分秒设置模块图; 3-8 秒计时模块 3-9分计时模块 3-10 时计时模块3.3.4 整点报时模块 整点报时模块,当计时到达59分50秒开始报时,在59分50秒,52秒,54秒,56秒,58秒时鸣叫,鸣叫声频率为500Hz,达到59分60秒为最后一声正点报时,正点报时频率为1kHz。如下图3-11 图3-11 整点报时模块整点报时电路:当计时到达5950时开始报时,在5950, 5952,5954,5956,5958鸣叫,鸣叫声频率500Hz,当计时到达5960时最后一声整点报时,整点报时鸣叫声频率为1000Hz。3.3.5 显示扫描模块显示模块是时间,秒表等等数据用数码管显示的控制与数据传输模块,包含数据的传输以及BCD译码等等,其主要是用来对数据进行显示。如下图3-12所示显示扫描模块: 图3-12 扫描显示电路模块 3.3.6 按键消抖模块常用的非编码键盘,每个键盘都是一个常开开关电路。通常的按键所用开关为机器开关,当机器触点断开,闭合时,电压信号波形如图3-2所示。由于机器触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。前沿抖动键稳定后沿抖动图 3-2 按键抖动电压波形图第4章 各组成模块软件设计以及仿真4.1 主控电路模块软件设计 在整个数字钟的设计中有很多功能模块,如何实现对各个功能模块的控制与调整,就需要一个主体控制模块对各个分模块进行控制,主控模块的功能主要是通过输入信号实现对秒表显示,闹表模块和时间设置模块以及最后的七位数码显示模块的控制,在主控模块中分别设置了“1-4”个功能号,分别实现包含对时间显示与调整,闹钟显示与调整,秒表操作的控制。主控制模块各个输入端口分别为: 1.Set_clock 为闹钟显示设置使能端。2.LED_set 数码管设置使能端。3.LED_count数码管设置调整使能端。4Set_out 为时间自动显示使能端。主控制模块程序软件设计如下:module control(rst,clk,set,set_out,set_clock,LED_set,LED_clock,LED_count);input set,rst,clk;output reg set_out,set_clock,LED_set,LED_clock,LED_count;reg 1:0state;parameter S1=2'b00, S2=2'b01, S3=2'b10;/*S1为计时,S2为校时,S3为闹钟设定*/reg set_out_temp,set_clock_temp;always (posedge clk or posedge rst)beginif(rst)begin state<=S1; set_out_temp<=1; set_clock_temp<=0; endelsecase(state)S1: if(set)begin state<=S2; set_out_temp<=0; set_clock_temp<=0; end elsebegin state<=S1; set_out_temp<=1; set_clock_temp<=0; endS2:if(set)begin state<=S3;set_out_temp<=1; set_clock_temp<=1;endelsebegin state<=S2; set_out_temp<=0; set_clock_temp<=0;endS3:if(set)begin state<=S1; set_out_temp<=1; set_clock_temp<=0; endelsebegin state<=S3;set_out_temp<=1; set_clock_temp<=1;enddefault:begin state<=S1; set_out_temp<=1;set_clock_temp<=0;endendcaseset_out<=set_out_temp;set_clock<=set_clock_temp;LED_count<=set_out_temp;LED_set<=set_out_temp;LED_clock<=set_clock_temp;endendmodule4.2 分频电路模块软件设计 分频模块主要是将实验室的20MHz分频出1KHz,200Hz,1Hz的三种时钟信号,有秒表模块,闹钟模块,时间动态位选模块均需要有不同频率的时钟信号输入,所以在设计多功能数字钟时,需要设置分频模块。将时钟输入的频率分割成1KHz,200Hz,1Hz的不同频率;。分频模块软件设计如下:/分频计产生1kHzmodule freq_div(f_clk,f_rst,f_o_clk);input f_clk;input f_rst;output reg f_o_clk;parameter width=15;reg width-1:0clk_tmp;always (posedge f_clk or posedge f_rst)beginif(f_rst )clk_tmp<=0;else if(clk_tmp=12'd20000)clk_tmp<=12'd0;else clk_tmp=clk_tmp+1;endalways (posedge f_clk or posedge f_rst)beginif(f_rst)f_o_clk<=12'd0;else if(clk_tmp=12'd20000)f_o_clk<=f_o_clk;endendmodule其他的两个频率类似代码改变temp变量就可以得到200Hz,1Hz。4.2.1分频模块仿真以及分析(1)分频1kHz的分频器仿真波形如下图4-2-1。 图4-2-1 分频器1KHzf_clk 输入频率为20MHz,f_rst 为使能端,低电位有效;f_o_clk 输出频率为1KHz。分析系统提供的是20MHz的时钟脉冲信号,为了得到1Hz的时基脉冲,以及1kHz和200Hz的报时脉冲,首先将20MHz信号进行两万分频得到1kHz,再将1kHz的信号进行五分频得到200Hz,再将200Hz进行两百分频就得到1Hz;如图4-2-2两万分频百分频五分频十分频20M1kHz200Hz1hz 图4-2-2 分频器模块4.3 计时模块软件设计 对于时间模块,主要完成时间的自动增加与显示功能即为正常的自动模式运行,时间模块主要由秒自动计时子模块(counter_second),分自动计时模块(counter_mintue),小时自动计时模块(counter_hour)以及时间自动工作控制模块组成。计时模块软件设计如下:/60进制指数器秒钟进位module counter_60_sec(clk,rst,qh,ql,co);input clk,rst;output reg3:0qh;output reg3:0ql;output reg co;always (posedge clk or posedge rst)beginif(rst)begin qh=4'd0; ql=4'd0; endelse if(clk)begin if(ql=4'd9) begin ql<=4'd0; if(qh=4'd5) qh<=4'd0;else qh<=qh+1; end else ql<=ql+1; end endalways (ql or qh)beginif(ql=4'd0 && qh=4'd0) co<=1'b1; else co<=1'b0; endendmodule/60进制指数器分钟进位module counter_60_min(clk,rst,set,cm,qh,ql,co);input clk,rst,set,cm;output reg3:0qh;output reg3:0ql;output reg co;reg clk_tmp;always (set or cm or clk)beginif(set) clk_tmp<=clk; else clk_tmp<=cm;endalways ( posedge clk_tmp or posedge rst)beginif(rst) begin qh=4'd0;ql=4'd0;endelse if(clk_tmp)begin if(ql=4'd9) beginql<=4'd0;if(qh=4'd5)qh<=4'd0;else qh<=qh+1;endelse ql<=ql+1;end endalways (ql or qh)beginif(ql=4'd0 && qh=4'd0)co<=1'b1;else co<=1'b0; endendmodule/24进制指数器时进位module counter_24_hour(clk,rst,set,ch,qh,ql);input clk,rst,set,ch;output reg3:0qh;output reg3:0ql;reg clk_tmp;always (set or ch or clk)begin if(set) clk_tmp<=clk; else clk_tmp<=ch;endalways (posedge clk_tmp or posedge rst)beginif(rst)begin qh=4'd0; ql=4'd0; endelse if(clk_tmp)beginif(ql=4'd3 && qh=4'd2)begin ql<=4'd0; qh<=4'd0;endelse if(ql=4'd9)begin ql<=4'd0;if(qh=4'd4) qh<=4'd0; else qh<=qh+1; endelse ql<=ql+1;end endendmodule4.3.1 计时模块软件仿真以及分析(1)60进制指数器秒钟进位仿真波形如图(a)所示: (a) 秒模块仿真波形分析秒钟每一60进制进位,clk为1H z频率,co 为进位符号,在满足60时进位有高电平出现,rst为低电平有效;(2) 60进制指数器分钟进位仿真波形如图(b)所示: (b) 分模块仿真波形分析分钟每一60进位,co 代表是进位到时钟上去,有高电平出现。rst为低电平有效。(3) 24进制指数器时钟进位仿真波形如图(c)所示: (c) 时模块仿真波形4.4 整点报时模块软件设计整点报时模块,当计时到达59分50秒开始报时,在59分50秒,52秒,54秒,56秒,58秒时鸣叫,鸣叫声频率为500Hz,达到59分60秒为最后一声正点报时,正点报时频率为1kHz。整点报时模块软件设计如下:/整点报时模块module Hourly_Chime(clk,set,ql_sec,qh_sec,ql_min,qh_min,speaker);input clk,set;input 3:0ql_sec;input 3:0qh_sec;input 3:0ql_min;input 3:0qh_min;output reg speaker;reg width-1:0clk_tmp;parameter width=15;reg width-1:0freq;always (set or ql_sec or qh_sec or ql_min or qh_min)beginif(set)begin