基于FPGA的多功能数字钟设计报告
基于FPGA多功能数字钟的设计

• 181•人类社会步入高速发展的电子时代,电子产品逐渐代替机械产品走入我们的生活。
随着科技的进步人们对电子产品的要求越来越高、传统产品已经不能满足人们的需求。
体积小、多功能、节能、环保开始成为了电子产品发展的新目标。
本文基于VHDL 语言,利用Quartus Ⅱ设计了一款多功能数字钟,内部包含秒表、闹钟、定时器、时钟四个模块。
经过实验仿真表明多功能数字钟能很好地满足生活中的各种需要。
本产品设计主要使用VHDL 语言描述了各个模块的功能来实现主要电路,最后在Quartus II 上完成了调试与仿真。
VHDL 语言实现电子设计,是一个以软件设计为主,器件配置相结合的过程,能从多个层次对数字系统进行设计,设计数字电路更为灵活方便,设计周期也可大大减小,提高了设计效率和可靠性。
我们需要的功能,在通过使用预先设计好的别的开关进一步让数字钟工作。
通过LED 显示屏可以看到数字。
本文通过软件Quartus II 9.0设计出各个模块并往开发板内写入程序实现我们想要的功能。
3 软件部分3.1 时钟部分时钟设计有三个要求第一,具有时、分、秒计数显示的功能,并以24h 循环计时。
第二,走时误差小于等于每天10s 。
第三,具有调节分钟、小时、秒以及清零的功能。
通常情况不需要让时钟停止工作,所以这部分模块就相当于实现了计数功能,对一直不断给入的1HZ 脉冲进行计数。
秒、分、时分了三个模块进行连接。
qw 是个基于FPGA多功能数字钟的设计大连理工大学城市学院 方润生 邓佳宁 于海霞图1 系统整体过渡模块,也是校正时间所用的模块。
校正时有两个开关,一个校正分、一个校正时。
如图2所示,qw 模块主要是为了实现调时功能。
实际工程中做了元件例化。
元件例化的主要作用是在大型项目的设计中许多底层文件需要反复使用,我们写好底层文件之后通过component 语句可以直接对底层文件进行调用方便了项目的设计。
3.2 闹钟闹钟在到达设置的时间时会发出持续一分钟的信号,可提前手动关闭。
基于FPGA的多功能数字时钟设计综述

流程说明:
1.工程师按照“自顶向下”的设计方法进行系统划分。
2.输入VHDL代码,这是设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。
3.将以上的设计输入编译成标准的VHDL文件。
4.进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。
第二章
2.1
FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称,与之相应的CPLD是复杂可编程逻辑器件(Complex Programmable Logic Device)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/FPGA。CPLD/FPGA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路。它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个数字系统。通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。使用CPLA/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。这些优点使得CPLA/FPGA技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言HDL的进步[1]。
5.利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。
多功能数字钟的FPGA实现设计报告 正文

1.设计任务及指标1.1设计任务能进行正常的时、分、秒计时功能,分别由6只数码管显示24小时、60分、60秒。
按下试验箱上的某个按键时,计时器迅速递增,并按24小时循环,计到23小时后再回到00。
按下试验箱上的某个按键时,计分器迅速递增,并按60分循环,计到59分后再回到00。
利用试验箱上的扬声器可以实现整,当计时到达59分50秒时开始报时,在59分50秒、52秒、54秒、56秒、58秒时鸣叫,鸣叫声频率为500HZ,整点报时频率可定义为1KHZ.1.2设计要求运用顶层设计思路设计好各个底层文件(VHDL代码),对各个底层文件进行功能仿真;采用原理图或者文本方法来实现顶层文件的设计,对顶层文件进行功能真仿真。
在顶层文件功能仿真正确之后,把顶层文件下载到实验箱的FPGA里边去,验证电路功能是否正确。
具体时间用6位数码管来显示,具有整点报时功能1.3 功能拓展实现数字钟的闹铃功能。
2.方案比较与选择方案一:系统直接采用1HZ脉冲作为作为时钟输入信号。
数码管采用静态显示。
时间调整采用具有预置功能的计数器。
报时为频率512Hz脉冲,并引入1024Hz脉冲进行整点报时。
方案二:系统采用1024HZ脉冲作为作为时钟输入信号。
数码管采用动态扫描显示。
时间调整采用一个数据选择器,以一个按键作为控制端。
当调整按键按下时,选择比较高的频率作为计数器计数信号作为输入信号,加快计数的速度,以此达到时间调整的效果。
图一方案二时钟流程方案比较:对于方案一,因为系统需要1024Hz和512Hz的脉冲驱动蜂鸣器,并且在快速调整时间是也需要比1Hz快的脉冲,故需要采用另外的脉冲输入,增加管脚资源开支和外部资源。
实现具有预置功能的计数器比较复杂,并且预置输入端需要多个端口。
数码管采用静态显示也会增加管脚的开销。
对于方案二,因为采用1024Hz的脉冲,能够通过分频得到多种频率的脉冲,因而可以实现单一脉冲信号输入即可完成快速调整时间和采用数码管动态扫描显示,节省管脚资源和外部资源。
基于FPGA多功能数字钟的设计

3、状态转换功能模块
该模块实现电路各状态之间的转换功能,若仅完成基本功能,系统 应包含4个状态,分别为正常计时、对秒位进行设置、对分位进行设置 和对小时位进行设置。若完成扩展功能,还可增加其他状态。这部分可 以用脉冲键输入进行切换,也可以用拨动开关进行切换。根据所选择的 切换方式,自行编写程序。
4、校时功能模块
此模块主要在状态切换到设置时,可以将时、分、秒位设置成需要的 数值,此功能可以由脉冲键输入完成。
5、译码功能模块
此模块功能将计数器产生的数值,通过编译,形成对应七段数码 管显示格式的编码。七段数码管的a-g对应实验箱上的主要引脚为 O50-O56。
6、LED显示模块
本模块使用实验箱上的8个数码管进行显示,为动态显示法,需采用 扫描的方式进行显示。此方法对于扫描频率有一定的要求,在设计时需 考虑采用那个频率作为扫描信号。8个数码管的扫描信号对应实验箱上的 引脚为SO58-SO65。
四、系统仿真
将每个模块编译成功后,进行仿真测试,若仿真结果符合设计 要求,再配置输入输出引脚,若不符合,请返回修改程序,直至仿 真结果合格。将仿真结果截图,记录至设计报告中。
精品课件!
精品课件!
五、硬件验证
将编译通过、仿真结果正确且引脚信息配置正确的程序下载至 实验箱的FPGA中,硬件验证设计是否符合要求。
2、计时功能模块
计时模块需对时、分、秒进行计数,其中小时位为24进制,分 钟和秒钟位为60进制。可以用一段程序对时、分、秒进行连续计数, 也可以对时、分、秒的高位和低位分别计数。注意,如果采用连续 计数方式,因为每位显示时有高位和低位之分,所以需将十进制数 据用BCD码进行转换后,才能输出到七段数码管上显示。
此电子钟分两种工作状态: 1、正常计时的状态; 2、设置时间的状态。
基于XilinxFPGA的数字钟设计

基于FPGA的多功能数字钟一、设计题目基于Xilinx FPGA的多功能数字钟设计二、设计目的1.掌握可编程逻辑器件的应用开发技术——设计输入、编译、仿真和器件编程;2.熟悉一种EDA软件使用;3.掌握Verilog设计方法;4.掌握分模块分层次的设计方法;5.用Verilog完成一个多功能数字钟设计;6.学会FPGA的仿真。
三、设计内容设计实验项目九多功能电子钟✧功能要求:利用实验板设计实现一个能显示时分秒的多功能电子钟,具体要求为:基本功能:1)准确计时,以数字形式显示时、分、秒,可通过按键选择指示当前显示时间范围模式;2)计时时间范围 00:00:00-23:59:593)可实现校正时间功能;4)可通过实现时钟复位功能:00:00:00扩展功能:1)定时报:时间自定(不要求改变),闹1分钟(1kHz)---利用实验板LED或外接电路实现。
2)仿广播电台正点报时:XX:59:[51,53,55,57(500Hz);59(1kHz)] ---利用实验板LED或外接电路实现。
3)报整点时数:XX:00:[00.5-XX.5](1kHz),自动、手动---利用实验板LED或外接电路实现。
4)手动输入校时;5)手动输入定时闹钟;6)万年历;7)其他扩展功能;✧设计步骤与要求:1)计算并说明采用Basys2实验板时钟50MHz实现系统功能的基本原理。
2)在Xilinx ISE13.1 软件中,利用层次化方法,设计实现模一百计数及显示的电路系统,设计模块间的连接调用关系,编写并输入所设计的源程序文件。
3)对源程序进行编译及仿真分析(注意合理设置,以便能够在验证逻辑的基础上尽快得出仿真结果)。
4)输入管脚约束文件,对设计项目进行编译与逻辑综合,生成下载所需.bit类型文件。
5)在Basys2实验板上下载所生成的.bit文件,观察验证所设计的电路功能。
四、总体设计思路主体分为分频模块,正常时间模块(包含两个模60计数器和一个模24计数器子模块),闹钟模块(分为一个模60计数器模块,一个模24计数器模块,四个比较器模块),电台报时模块,数码管显示模块(分为模式选择模块,片选信号及扫描程序模块,和译码模块)。
电子综合设计多功能数字钟报告

电子综合设计多功能数字钟报告报告内容如下:一、设计目的和原理多功能数字钟是一种能够显示时间,并具有闹钟、计时、倒计时等功能的电子设备。
本设计的目的是通过FPGA实现一个多功能数字钟的功能,以实现时间的显示和闹钟的设置功能。
二、设计方案和实现1.硬件设计方案:本设计使用FPGA作为主控芯片,使用七段数码管作为显示器,通过与FPGA的IO口连接来实现时间的显示功能。
同时,使用按键作为输入进行功能的选择和设置。
2.硬件连接:将FPGA的IO口连接到七段数码管的控制端,通过IO口输出相应的数字信号来控制数码管的亮灭。
将按键连接到FPGA的IO口,通过IO口输入按键的信号。
此外,还需要连接一个晶振电路来提供时钟信号。
3.软件设计方案:本设计使用VHDL语言进行程序设计,通过状态机来实现多功能数字钟的功能。
具体实现包括时间的显示、闹钟的设置和启动、计时和倒计时功能的实现。
通过按键的输入来切换不同的状态,实现不同功能的切换和设置。
4.软件实现具体步骤:(1)定义状态机的状态,包括时间显示、闹钟设置、计时和倒计时等状态。
(2)在时间显示状态下,通过FPGA的IO口输出相应的数字信号来控制七段数码管的亮灭,实现时间的显示。
(3)在闹钟设置状态下,通过按键的输入来设置闹钟时间,并将设置好的时间保存在寄存器中。
(4)在计时和倒计时状态下,通过按键的输入来实现计时和倒计时功能,并通过七段数码管的显示来实时显示计时和倒计时的时间。
以下为本设计的完整程序代码:```vhdl--时钟频率--定义状态signal state : state_type;--定义时钟、按键和数码管信号signal clk : std_logic;signal key : std_logic_vector(1 downto 0);signal seg : std_logic_vector(6 downto 0);--闹钟时间寄存器signal alarm_hour_reg : std_logic_vector(5 downto 0);signal alarm_min_reg : std_logic_vector(5 downto 0);--计时和倒计时寄存器signal count_up_reg : std_logic_vector(23 downto 0); signal count_down_reg : std_logic_vector(23 downto 0); signal count_down_flag : std_logic := '0';beginclock : processbeginwhile true loopclk <= '0';wait for 10 ns;clk <= '1';wait for 10 ns;end loop;end process;key_scan : process(clk)beginif rising_edge(clk) thenkey <= key_scan_func; -- 按键扫描函数end if;end process;fsm : process(clk, key)beginif rising_edge(clk) thencase state isif key = "10" then -- 第一个按键按下state <= set_alarm;elsif key = "01" then -- 第二个按键按下state <= count_up;end if;when set_alarm =>seg <= set_alarm_func; -- 闹钟设置函数if key = "00" then -- 两个按键同时按下elsif key = "01" then -- 第一个按键按下state <= count_up;end if;when count_up =>seg <= count_up_func; -- 计时函数if key = "00" then -- 两个按键同时按下elsif key = "10" then -- 第二个按键按下state <= count_down;count_down_flag <= '1';end if;when count_down =>seg <= count_down_func; -- 倒计时函数if key = "00" then -- 两个按键同时按下count_down_flag <= '0';elsif key = "01" then -- 第一个按键按下state <= count_up;count_down_flag <= '0';end if;end case;end if;end process;--数码管信号和显示模块的连接display : entity work.seg_displayport mapclk => clk,seg => segend architecture;```四、总结与展望通过FPGA实现多功能数字钟的设计,在硬件和软件的配合下,实现了时间的显示和闹钟的设置功能。
基于FPGA的多功能数字时钟设计

7.利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。
8.在适配完成后,产生多项设计结果:(a)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(b)适配后的仿真模型;(c)器件编程文件。根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求。
1.CLB是FPGA的主要组成部分。图2-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变量的逻辑函数。
基于FPGA多功能数字钟设计

《电子实习2》基于FPGA多功能数字钟设计姓名:…学号:….班级:….指导教师:….提交日期:2012 年 3 月EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL和C语言在FPGA实验板上设计一个电子数字钟,总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数模块、处理器及外设模块,并且使用QuartusII运用VHDL语言对分频和计数两个模块进行硬件电路设计和电路波形仿真,该设计采用自顶向下、在QuarnlsⅡ开发平台下实现数字钟的设计、下载和调试。
本设计采用的VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级这三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。
ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器;而FPGA是特殊的ASIC芯片,与其它的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。
在控制系统中,键盘是常用的输入设备,系统应当根据键盘的输入来完成相应的功能。
因此,按键信息输入是与软件结构密切相关的过程。
根据键盘结构的不同,采用不同的编码方法,但无论有无编码以及采用什么样的编码,最后都要转换成为相应的键值,以实现按键功能程序的转移。
[1]钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些都是以钟表数字化为基础的。
因此研究数字钟以及扩大其应用有着非常现实的意义。
1 前言 (1)2 总体方案设计 (X)2.1 项目设计要点……………………………………………………2.2 方案论述……………………………………………………………2.3 软件介绍……………………………………………………………2.4 芯片介绍……………………………………………………………3 单元电路设计…………………………………………………………3.1 分频模块设计………………………………………………………3.2 计时功能模块设计…………………………………………………4 系统功能及功能仿真…………………………………………………4.1 系统功能……………………………………………………………4.2功能仿真……………………………………………………………各个模块的仿真波形5 设计总结……………………………………………………………6 参考文献……………………………………………………………附录:完整实验程序1.前言现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
***大学电工电子实验报告EDA技术基础设计报告多功能数字钟设计电子信息科学与技术年 月 日多功能数字钟设计一.任务解析用Verilog硬件描述语言设计数字钟,实现:1、具有时、分、秒计数显示功能,以二十四小时循环计时。
2、具有调节小时,分钟的功能。
3、具有整点报时同时LED灯花样显示的功能。
4、【发挥】三键(模式选择,加,减)调整,数码管闪烁指示功能。
5、【发挥】增加闹钟任意设定功能,时间精确到分。
二.方案论证第2页,共19页三.重难点解析1、模式选择键的设计//模式选择键。
有5个模式,m0为正常走钟;m1为调分;m2为调时;m3为闹钟调分;m4为闹钟调时。
module mode_key(key,clr,m);input key,clr;output [2:0]m;reg [2:0]m;always @(posedge key or negedge clr) beginif(!clr) m=0;else if(m==4) m=0;else m=m+1;endendmodule2、数字钟秒钟计数设计module cnt60_sec(clk,clr,q,c);input clk,clr;output [6:0]q;output c;reg [6:0]q;reg c;always @(posedge clk or negedge clr) beginif(!clr) begin q=0;c=0;endelse if(q[3:0]==9) begin q[3:0]=0;if(q[6:4]==5) begin q[6:4]=0; c=1;endelse q[6:4]=q[6:4]+1;end第3页,共19页else begin q[3:0]=q[3:0]+1;q[6:4]=q[6:4];c=0;endendendmodule、秒钟计数模块就是一个60的计数器,计数到59的时候清零,进位加1。
调时不需要控制秒钟,所以没有加模式选择按键。
波形仿真如下:3、数字钟分钟计数设计module cnt60_min(clk,clr,c,up,down,m,q);input clk,clr,up,down;input [2:0]m;output [6:0]q;output c;reg [6:0]q;reg c;wire clka,clkb,clkc,clkd,nclk;assign clka = clk||up||down;LCELL AA(clka,clkb);//信号延迟LCELL BB(clkb,clkc);//信号延迟LCELL CC(clkc,clkd);//信号延迟LCELL DD(clkd,nclk);//信号延迟always @(posedge nclk or negedge clr) begin第4页,共19页if(!clr) begin q=0;c=0;endelse beginif((clk&&(m==0))||(up&&(m==1))) beginif(q[3:0]==9) begin q[3:0]=0;if(q[6:4]==5) begin q[6:4]=0; c=1;endelse q[6:4]=q[6:4]+1;endelse begin q[3:0]=q[3:0]+1;q[6:4]=q[6:4];c=0;end endif(down&&(m==1)) beginif(q[3:0]==0) beginif(q[6:4]==0) begin q[6:4]=5;q[3:0]=9;endelse begin q[6:4]=q[6:4]-1; q[3:0]=9;end endelse q[3:0]=q[3:0]-1;endendendendmodule分钟计数模块也是一个60的计数器,计数到59的时候清零,进位加1。
因为要计时要控制分钟位,模块加上了模式选择按键,普通计数和加键减键按下UP加1,按下DOWN 减1都可以改变分钟的数,所以条件语句中加上了模式选择功能。
波形仿真如下:第5页,共19页4、数字钟小时计数设计module cnt24_hour(clk,clr,up,down,m,q);input clk,clr,up,down;input [2:0]m;output [5:0]q;reg [5:0]q;wire clka,clkb,clkc,clkd,nclk;assign clka=clk||up||down;LCELL AA(clka,clkb);//信号延迟LCELL BB(clkb,clkc);//信号延迟LCELL CC(clkc,clkd);//信号延迟LCELL DD(clkd,nclk);//信号延迟always @(posedge nclk or negedge clr) beginif(!clr) q=0;else beginif((clk&&(m==0))||(up&&(m==2))) beginif(q[5:4]<2) beginif(q[3:0]<9) q[3:0]=q[3:0]+1;else begin q[3:0]=0;q[5:4]=q[5:4]+1;endendelse beginif(q[3:0]<3) q[3:0]=q[3:0]+1;else q=0;end第6页,共19页endif(down&&(m==2)) beginif(q[3:0]==0) beginif(q[5:4]==0) begin q[5:4]=2; q[3:0]=3; endelse begin q[5:4]=q[5:4]-1; q[3:0]=9; endendelse begin q[5:4]=q[5:4]; q[3:0]=q[3:0]-1; endendendendendmodule小时计数模块相当于是一个24的计数器,计数到23的时候清零,进位加1。
因为要计时要控制小时位,模块加上了模式选择按键,普通计数和加键减键按下UP加1,按下DOWN减1都可以改变小时的数,所以条件语句中加上了模式选择功能。
波形仿真如下:5、数字钟闹钟调分设计module nz_Tfen(up,down,m,q);input up,down;input [2:0]m;output [6:0]q;第7页,共19页reg [6:0]q;wire clka,clkb,clkc,clkd,nclk;assign clka = up||down;LCELL AA(clka,clkb);//信号延迟LCELL BB(clkb,clkc);//信号延迟LCELL CC(clkc,clkd);//信号延迟LCELL DD(clkd,nclk);//信号延迟always @(posedge nclk ) beginif(up&&(m==3)) beginif(q[3:0]==9) begin q[3:0]=0;if(q[6:4]==5) q[6:4]=0;else q[6:4]=q[6:4]+1;endelse begin q[3:0]=q[3:0]+1;q[6:4]=q[6:4];endendif(down&&(m==3)) beginif(q[3:0]==0) beginif(q[6:4]==0) begin q[6:4]=5;q[3:0]=9; endelse begin q[6:4]=q[6:4]-1; q[3:0]=9; endendelse q[3:0]=q[3:0]-1;endendendmodule第8页,共19页关于闹钟调分设计,就是在选择模式3的的情况下,按下UP加1,按下DOWN减1。
6、数字钟闹钟调时设计module nz_Tshi(up,down,m,q);input up,down;input [2:0]m;output [5:0]q;reg [5:0]q;wire clka,clkb,clkc,clkd,nclk;assign clka=up||down;LCELL AA(clka,clkb);//信号延迟LCELL BB(clkb,clkc);//信号延迟LCELL CC(clkc,clkd);//信号延迟LCELL DD(clkd,nclk);//信号延迟always @(posedge nclk ) beginif(up&&(m==4)) beginif(q[5:4]<2) beginif(q[3:0]<9) q[3:0]=q[3:0]+1;else begin q[3:0]=0;q[5:4]=q[5:4]+1;endendelse beginif(q[3:0]<3) q[3:0]=q[3:0]+1;else q=0;end第9页,共19页endif(down&&(m==4)) beginif(q[3:0]==0) beginif(q[5:4]==0) begin q[5:4]=2; q[3:0]=3;endelse begin q[5:4]=q[5:4]-1; q[3:0]=9;end endelse begin q[5:4]=q[5:4]; q[3:0]=q[3:0]-1; endendendendmodule关于闹钟调时设计,就是在选择模式4的的情况下,按下UP加1,按下DOWN减1。
7、蜂鸣器buzzer的设计module buzzer(qf,qs,qff,qss,keynz,out);input [6:0]qf;input [5:0]qs;input [6:0]qff;input [5:0]qss;input keynz;output out;reg out;always @(1) beginif(keynz)if((qff[3:0]==qf[3:0])&&(qff[6:4]==qf[6:4])&&(qss[3:0]==qs[3:0])&& (qss[5:4]==qs[5:4]))out=1;第10页,共19页else out=0;endendmodule蜂鸣器的设计,我做了一个闹钟的开关keynz,如果当闹钟开关keynz为1的时候,闹钟功能打开。
在模式3、4下调整好闹钟时间后,正常走钟的时间与闹钟设定的时间相同的时候,out输出的led灯就点亮。
8、调时间闪烁分频设计module div_clkshan(clk,ck);input clk;output ck;reg [23:0]cnt;reg ck;always @(posedge clk) beginif(cnt<10000000) cnt=cnt+1;else begincnt=0;ck=!ck;endendendmodule调时间时,对应调整的位数开始闪烁。