FPGA可调数字时钟实验报告

合集下载

用fpga简易数字钟电路设计实验报告 概述及解释说明

用fpga简易数字钟电路设计实验报告 概述及解释说明

用fpga简易数字钟电路设计实验报告概述及解释说明1. 引言1.1 概述本实验报告旨在介绍使用FPGA(可编程门阵列)设计的简易数字钟电路。

数字钟是一种可以显示时间的时钟装置,广泛应用于日常生活和工业领域。

本文将详细讲解数字钟的设计原理、硬件要求、设计步骤以及实验的实现过程。

1.2 文章结构本文共分为五个部分,即引言、FPGA简易数字钟电路设计、实验实现过程、实验结果分析和结论与总结。

下面将对每个部分进行具体说明。

1.3 目的该实验旨在通过学习和操作FPGA,深入理解数字电路设计的基本原理和方法,并通过设计一个简易的数字钟电路来巩固所学知识。

通过本实验,我们还将探索数字钟电路的性能评估和可能的改进方向,并对未来发展方向进行展望。

同时,通过参与这个项目,我们也将获得一定的实践经验和技能提升。

2. FPGA简易数字钟电路设计:2.1 设计原理:在本次实验中,我们使用FPGA(现场可编程逻辑门阵列)来设计一个简易的数字钟电路。

FPGA是一种集成电路芯片,可依据用户需要重新配置其内部互连,从而实现不同的逻辑功能。

我们将利用FPGA的可编程性和强大的计算能力来实现数字钟的功能。

该数字钟电路主要由时钟模块、倒计时模块和显示模块组成。

时钟模块负责产生稳定而精确的脉冲信号作为系统的时基;倒计时模块通过对输入时间进行倒计时操作,并发出相应信号提示时间变化;显示模块用于将倒计时结果以数码管显示出来。

2.2 硬件要求:为了完成该设计,我们需要准备以下硬件设备:- FPGA开发板:提供了外部接口和资源,用于连接其他硬件设备并加载程序。

- 数码管:用于显示时间信息。

- 时钟源:提供稳定而精确的脉冲信号作为系统的时基。

2.3 设计步骤:以下是设计步骤的详细说明:1. 确定所需功能:首先明确数字钟需要具备哪些功能,例如12小时制还是24小时制、倒计时功能等。

2. 确定FPGA型号:根据设计需求和资源限制,选择适合的FPGA型号。

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

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

***大学电工电子实验报告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。

调时不需要控制秒钟,所以没有加模式选择按键。

FPGA数字钟报告大作业

FPGA数字钟报告大作业

FPGA课程设计实验报告题目:基于FPGA 的数字钟设计学院:电子信息学院专业:电子与通讯工程学号:*********姓名:***基于FPGA的数字钟设计一、功能介绍1.在七段数码管上具有时--分--秒的依次显示。

2.时、分、秒的个位记满十向高位进一,分、秒的十位记满五向高位进一,小时按24进制计数,分、秒按60进制计数。

3.整点报时,当计数到整点时扬声器发出响声。

4.时间设置:可以通过按键手动调节秒和分的数值。

此功能中可通过按键实现整体清零和暂停的功能。

5.LED灯循环显示:在时钟正常计数下,LED灯被依次循环点亮。

待增加功能:1.实现手动调节闹铃时间,在制定时间使扬声器发声。

2.实现微妙的快速计数功能,可实现暂停、保存当前时间、继续计数的功能。

二、设计方案本文数字钟的设计采用了自顶向下分模块的设计。

底层是实现各功能的模块,各模块由vhdl语言编程实现:顶层采用原理图形式调用。

其中底层模块包括秒、分、时三个计数器模块、按键去抖动模块、按键控制模块、时钟分频模块、数码管显示模块共7个模块。

设计框图如下:图一数字钟系统设计框图由图1可以清晰的看到数字钟系统设计中各功能模块间连接关系。

系统时钟50MHZ经过分频后产生1秒的时钟信号,1秒的时钟信号作为秒计数模块的输入信号,秒计数模块产生的进位信号作为分计数模块的输入信号,分计数模块的进位信号作为时计数模块的输入信号。

秒计数模块、分计数模块、时计数模块的计数输出分别送到显示模块。

由于设计中要使用按键进行调节时间,而按键的动作过程中存在产生得脉冲的不稳定问题,所以就牵扯到按键去抖动的问题,对此系统中设置了按键去抖动模块,按键去抖动模块产生稳定的脉冲信号送入按键控制模块,按键控制模块根据按键的动作对秒、分、时进行调节。

图二数字钟的顶层设计原理图三、设计过程由数字钟的顶层设计原理图可知:系统的外部输入即为系统的时钟信号CLK =50MHZ,系统的外部输出有蜂鸣器信号buzzer,LED显示信号LED[3..1]和shan(与按键去抖动模块的o3相连),数码管显示信号xianshi[7..0],数码管位选信号xuanze[7..0]。

FPGA实训报告——简易数字钟

FPGA实训报告——简易数字钟

桂林电子科技大学职业技术学院课题:FPGA实训专业:电子信息工程技术学号:姓名:目录关键词: (1)引言: (1)设计要求: (1)EDA技术介绍: (1)Verilog HDL简介: (1)方案实现: (2)工作原理: (2)总结: (3)结语: (3)程序设计: (4)数字钟关键词:EDA、Verilog HDL、数字钟引言:硬件描述语言HDL(Hardware Des-cription Language)是一种用形式化方法来描述数字电路和系统的语言。

目前,电子系统向集成化、大规模和高速等方向发展,以硬件描述语言和逻辑综合为基础的自顶向下的电路设计发放在业界得到迅猛发展,HDL在硬件设计领域的地位将与C和C++在软件设计领域的地位一样,在大规模数字系统的设计中它将逐步取代传统的逻辑状态表和逻辑电路图等硬件描述方法,而成为主要的硬件描述工具。

Verilog HDL是工业和学术界的硬件设计者所使用的两种主要的HDL之一,另外一种是VHDL。

现在它们都已经成为IEEE标准。

两者各有特点,但Verilog HDL拥有更悠久的历史、更广泛的设计群体,资源也远比VHDL丰富,且非常容易学习掌握。

此次以Verilog HDL语言为手段,设计了多功能数字钟,其代码具有良好的可读性和易理解性。

设计要求:数字钟模块、动态显示模块、调时模块、到点报时模块等;必须有键防抖动功能。

可自行设计8位共阴数码管显示;亦可用FPGA实验平台EDK-3SAISE上的4位数管,但必须有秒指导灯。

EDA技术介绍:20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。

在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。

这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。

电子综合设计多功能数字钟报告

电子综合设计多功能数字钟报告

电子综合设计多功能数字钟报告报告内容如下:一、设计目的和原理多功能数字钟是一种能够显示时间,并具有闹钟、计时、倒计时等功能的电子设备。

本设计的目的是通过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设计与应用》数字时钟实验

《FPGA设计与应用》数字时钟实验

《FPGA设计与应用》数字时钟实验一、实验目的和要求
1.学习动态数码管的工作原理;
2.实现 FPGA 对四位动态数码管的控制;
3.熟悉模块化编程的操作流程。

二、实验内容
1.实现 FPGA 对四位动态数码管的控制,使其能够正常工作;2.基于eGo-1的数字钟设计与实现
三、实验要求
1、能够在实验板上实现数字时钟
四、操作方法与实验步骤
本实验的设计思路如下:
各模块实现方式:
分频
计数器
Hex2BCD
数码管动态显示
五、实验数据记录和处理实验代码如下:
设计文件:(部分)
仿真文件(部分):
约束文件(部分):
六、实验结果与分析
综合后生成的网表结构如下图所示:
仿真图像:
实物操作:
经过如上图代码的运行,实验要求的功能已基本实现,得出的实验结果与预期基本一致。

七、讨论和心得
这次实验用到了之前学习的动态数码管工作原理,将动态数码管与时钟相结合,对于每一位数码管来说,每隔一段时间点亮一次。

显示器的亮度通过导通电流,点亮时间和间隔时间的控制。

通过调整电流和时间参数,可以既保证亮度,又保证显示。

基于FPGA的数字电子钟的设计与实现

基于FPGA的数字电子钟的设计与实现

基于FPGA的数字电⼦钟的设计与实现背景:本实验所有结果基于Quartus II 13.1 (64-bit)实现,实验过程采⽤⾃下⽽上⽬录⼀、基本功能设计与思路基本功能:能实现秒、分钟、⼩时的计数,计数结果清晰稳定的显⽰在 6 位数码管上。

1、动态显⽰模块该模块主要功能是通过数码管的动态扫描实现 6 位数码管显⽰计数结果,本模块由扫描模块scan_cnt6,位选控制模块 dig_select,数据选择控制模块 seg_select 以及译码模块 decoder 构成扫描模块 scan_cnt6模块功能:产⽣ 位选控制端dig_select 和数据选择端 code_select 模块所需要的地址信息,扫描时钟决定位选信号和数据切换的速度。

设计思路:利⽤74390芯⽚(P160 TTL 双⼗进制异步计数器)构建⼀个模六计数器,就是6进制计数器,利⽤计数到6(110)时,“q2”和“q1”为⾼电平,产⽣ ⼀个复位信号,加到74390的⾼电平有效的异步清0端“1CLR”上,使计数器回0,从⽽实现模六计数。

设计结果:cnt6模块设计图波形仿真:(默认为时序仿真)cnt6模块波形仿真图位选模块 dig_select模块功能:在地址端的控制下,产⽣位选信号。

设计思路:利⽤74138芯⽚(3线-8线译码器),当选通端输⼊端G1为⾼电平,选通端输⼊端G2AN和G2BN为低电平时,将扫描信号cnt6的输出作为输⼊信号,dig[5..0]是译码输出,输出低电平有效。

设计结果:dig_select模块设计图波形仿真:dig_select模块波形仿真图数据选择模块 seg_select模块功能:输⼊ 6 组数据,每组数据 4bit,本模块完成在地址端的控制下从6 组数据当中选择 1 组输出。

设计思路:利⽤74151芯⽚(P91 8选1数据选择器),在控制输⼊端GN为低电平时,将扫描信号的选择下,分别选中D[5..0]对应的输⼊信号输出为Y。

fpga数字钟实训报告具有点报时按键调时功能

fpga数字钟实训报告具有点报时按键调时功能

桂林电子科技大学职业技术学院FPGA应用实训报告数字钟学院(系):电子信息工程系专业:电子信息工程技术学号:学生姓名:李建军指导教师:叶俊明目录摘要 (1)1 绪论 (1)2 课题背景 (2)2.1设计任务与要求 (2)2.2 设计目的 (3)2.3总体设计方案 (3)3 程序方案论证 (3)3.1分频方案论证 (3)3.1.1分频模块方案I (3)3.1.2分频模块方案II (3)3.2计时模块方案论证 (4)3.2.1计时模块方案I (4)3.2.2计时模块方案 II (5)3.3方案总结 (6)4 系统软件设计 (6)4.1程序流程图 (6)4.2计时模块 (6)4.3闹钟模块 (6)4.4显示模块 (7)5系统硬件设计 (8)5.1 FPGA的介绍 (8)5.1.1 FPGA概述 (8)5.1.2 FPGA基本结构? (8)5.2原理框图 (10)6调试 (11)6.1调时程序调试 (11)6.2闹钟程序调试 (11)总结 (12)致谢 (13)参考文献 (14)附录 (15)摘要数字钟是由振荡器、分频器、计数器、译码器、数码显示器等几部分组成。

振荡电路:主要用来产生时间标准信号,因为时钟的精度主要取决于时间标准信号的频率及稳定度,所以采用石英晶体振荡器。

分频器:因为振荡器产生的标准信号频率很高,要是要得到“秒”信号,需一定级数的分频器进行分频。

计数器:有了“秒”信号,则可以根据60秒为1分,24小时为1天的制,分别设定“时”、“分”、“秒”的计数器,分别为 60进制,60进制,24进制计数器,并输出一分,一小时,一天的进位信号。

译码显示:将“时”“分”“秒”显示出来。

将计数器输入状态,输入到译码器,产生驱动数码显示器信号,呈现出对应的进位数字字型。

由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路可以对分和时进行校时。

另外,计时过程要具有报时功能,当时间到达整点时开始响,蜂鸣器不停地响1分钟后不响。

fpga数字钟实训报告(具有8点报时,按键调时功能).

fpga数字钟实训报告(具有8点报时,按键调时功能).

桂林电子科技大学职业技术学院FPGA应用实训报告数字钟学院(系):电子信息工程系专业:电子信息工程技术学号: 1212220217学生姓名:李建军指导教师:叶俊明目录摘要 (2)1 绪论 (3)2 课题背景 (4)2.1设计任务与要求 (4)2.2 设计目的 (4)2.3总体设计方案 (4)3 程序方案论证 (5)3.1分频方案论证 (5)3.1.1分频模块方案I (5)3.1.2分频模块方案II (5)3.2计时模块方案论证 (6)3.2.1计时模块方案I (6)3.2.2计时模块方案 II (6)3.3方案总结 (7)4 系统软件设计 (7)4.1程序流程图 (7)4.2计时模块 (8)4.3闹钟模块 (8)4.4显示模块 (8)5系统硬件设计 (9)5.1 FPGA的介绍 (9)5.1.1 FPGA概述 (9)5.1.2 FPGA基本结构 (9)5.2原理框图 (11)6调试 (12)6.1调时程序调试 (12)6.2闹钟程序调试 (12)总结 (13)致谢 (14)参考文献 (15)附录 (16)摘要数字钟是由振荡器、分频器、计数器、译码器、数码显示器等几部分组成。

振荡电路:主要用来产生时间标准信号,因为时钟的精度主要取决于时间标准信号的频率及稳定度,所以采用石英晶体振荡器。

分频器:因为振荡器产生的标准信号频率很高,要是要得到“秒”信号,需一定级数的分频器进行分频。

计数器:有了“秒”信号,则可以根据60秒为1分,24小时为1天的制,分别设定“时”、“分”、“秒”的计数器,分别为 60进制,60进制,24进制计数器,并输出一分,一小时,一天的进位信号。

译码显示:将“时”“分”“秒”显示出来。

将计数器输入状态,输入到译码器,产生驱动数码显示器信号,呈现出对应的进位数字字型。

由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路可以对分和时进行校时。

另外,计时过程要具有报时功能,当时间到达整点时开始响,蜂鸣器不停地响1分钟后不响。

数字钟课程设计实验报告

数字钟课程设计实验报告

数字钟课程设计实验报告
实验名称:数字钟课程设计实验
实验目的:设计并制作一款数字钟,学习数字电路的基本构成及工作原理,并深入掌握Verilog 语言的设计和仿真技术。

实验原理:数字钟由时钟电路、驱动电路、显示电路三部分组成。

时钟电路以晶体振荡器为基础,产生高精度的基准时钟信号;驱动电路通过将时钟信号分频、选择和转换,来控制数字显示管的亮灭和数字显示内容;显示电路则将数字经过解码、整合,转换成人类可以识别的时间。

实验步骤:
1. 选择合适的FPGA芯片和数字显示管,根据其接口特点,确定各部分电路的 Pin Assignment。

2. 采用Verilog语言,编写时钟电路模块,实现一个基于晶体振荡器的高精度时钟信号。

3. 编写驱动电路模块,根据时钟信号,实现数字显示管LED的闪烁。

4. 编写显示电路模块,把数码管的8个数字位置写入代码中,并将显示电路模块与时钟电路模块和驱动电路模块相连接。

5. 通过FPGA仿真,进行数字钟模块的验证和测试。

6. 将程序下载到FPGA芯片中,并进行实际调试测试。

实验结果:
本实验设计的数字钟可以按照设定时间进行准确的数字显示,且易于调整时钟的显示时间。

数字钟在 FPGS 上实现良好,实验结果满意。

实验总结:
通过本实验,学习了数字电路的基本构成及工作原理,并深入掌握了Verilog语言的设计和仿真技术。

对于数字电路的实际应用,我有了更加深入的认识。

同时,对于FPGA的开发和调试过程也有了初步的了解,掌握了相关的基本操作和流程。

fpga数字钟实验总结

fpga数字钟实验总结

fpga数字钟实验总结
FPGA数字钟实验总结:
本次FPGA数字钟实验旨在设计并实现一个基于FPGA的数字时钟。

通过该实验,我掌握了以下几个方面的知识和技能。

首先,我学会了使用FPGA开发工具进行电路设计和编程。

我使用了一种特定的硬件描述语言(HDL),如Verilog或VHDL,来描述时钟电路的功能和行为。

通过学习和实践,我能够熟练地使用FPGA开发工具创建和编辑代码。

其次,我了解了数字时钟的基本原理和组成部分。

数字时钟通常由时钟芯片、计数器、显示器和控制电路组成。

我学会了如何使用FPGA来实现这些功能,并通过编程控制时钟的显示方式和计时功能。

在实验过程中,我还学会了时序设计和逻辑电路的基本概念。

由于时钟电路需要精确的时序控制,我学会了如何设计和优化时钟电路的时序路径,以确保电路的正常运行和准确计时。

此外,我还学会了如何使用开发板上的按钮和开关等外部输入
设备来控制时钟的设置和调整功能。

通过编程,我能够实现时钟的
时间调整、闹钟设置等功能,并通过显示器将相应的信息展示出来。

最后,在实验过程中,我也遇到了一些挑战和问题。

例如,时
钟的精确性和稳定性是一个重要的考虑因素,我需要注意时钟信号
的抖动和噪声问题。

此外,时钟的显示方式和格式也需要根据实际
需求进行设计和调整。

通过本次FPGA数字钟实验,我不仅巩固了对数字电路和FPGA
开发的理论知识,还提高了实际操作和问题解决能力。

这个实验为
我今后在数字电路设计和嵌入式系统开发方面的学习和工作奠定了
坚实的基础。

基于FPGA定时闹钟实验报告

基于FPGA定时闹钟实验报告

西南科技大学电工学,电子技术学生实验报告课程名称FPGA技术课程设计实验课题定时闹钟班级电子0902指导老师龙惠民评分实验小组2012年4月25日实验课题:定时闹钟实验时间:2012年4月16日—4月30日实验小组成员:一.设计要求设计一个具有系统时间设置和带闹钟功能的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)闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声;二.设计流程1.顶层设计顶层设计结构2.各模块原理根据顶层设计结构,初步将定时闹钟分为分频器,计时模块,显示模块,闹钟模块。

(1).计时模块包括秒计时子模块(sec),分计时子模块(min),时计时模块(hour),以及主控子模块(control)。

其工作原理:为妙计时子模块送1HZ脉冲,但秒计数达60时,秒计数器清零,秒进位信号为‘1’,并作为分计数器的时钟信号。

每产生一个秒进位信号,分计数器加‘1’。

同样,分计数达60时,计数器清零,并产生一个分进位信号,作为时的时钟信号,每产生一个分进位信号,时计数器加1,当计数器达24时,计数器清零。

基于FPGA:电子钟的设计报告

基于FPGA:电子钟的设计报告

电子钟的设计报告姓名:< >组别:< >专业班级:< >目录目录 (1)一、数字钟的设计要求 (2)二、顶层设计 (2)三、模块 (3)1.顶层模块 (3)2.分频器模块 (4)3.按键消抖模块 (4)4.计时模块 (5)5.显示模块 (6)6.报时和闹钟模块 (6)四、系统调试及运行结果分析 (7)1、硬件调试 (7)2、软件调试 (8)3、调试过程及结果 (8)(1)显示模块调试 (8)(2)时间系统模块调试 (9)五、总结 (9)一、数字钟的设计要求设计一个具有时、分、秒计时第二电子钟电路,按24小时制记时。

要求:1、准确计时,以数字形式显示时、分、秒的时间;2、具有分、时校正功能,校正输入脉冲频率为1Hz;3、具有仿广播电台整点报时的功能,即每逢59分51秒、53秒、55秒及57秒时,发出4声500Hz低音,在59分59秒时发出一声1kHz高音,它们的持续时间均为1秒。

最后一声高音结束的时刻恰好为正点时刻。

4、具有定时闹钟功能,且最长闹铃时间为一分钟。

要求可以任意设置闹钟的时、分;闹铃信号为500Hz和1kHz的方波信号,两种频率的信号交替输出,且均持续1S。

设置一个停止闹铃控制键,可以停止输出闹铃信号。

二、顶层设计采用自顶向下的设计方法,首先根据数字时钟的功能要求进行顶层设计和分析,用FPGA实现系统的计时、显示驱动、按键输入处理、仿广播电台整点报时的功能。

根据实训平台的硬件资源情况,输入信号包括时钟输入和按键输入,其中系统时钟由实训平台核心板50MHz晶振提供,拨码开关作为校时、闹钟时间设置和复位的信号输入,输出信号包括峰鸣器控制输出、8位动态数码管位选和段选控制输出。

数字电字时钟系统主要有分频器模块、按键消抖模块、计时模块、整点报时和闹铃模块和显示驱动模块构成。

三、模块1.顶层模块如下图所示。

2.分频器模块分频器模块的主要功能是为其他模块提供时钟信号。

基于FPGA的数字钟设计-华中科技大学电子线路实验报告

基于FPGA的数字钟设计-华中科技大学电子线路实验报告

基于FPGA的数字钟设计Your Name一、实验目的1.了解数字钟的功能要求及设计方法;2.了解CPLD/FPGA的一般结构及开发步骤;3.熟悉用FPGA器件取代传统的中规模集成器件实现数字电路与系统的方法。

二、实验要求1.以数字形式显示时、分、秒的时间;2.小时计数器为同步24进制;3.要求手动校时、校分;4.任意闹钟;5.小时为12/24进制可切换;6.报正点数(几点响几声)。

三、实验内容1.系统模块框图2.时间校准模块时间校准模块可由两位控制信号控制当前校准状态。

3.时分秒计数模块时分秒计数模块由60进制秒计数器、60进制分计数器和24进制时计数器组成。

时分秒的计数器具有复位和计数功能。

其中CR为复位信号,当CR为0时,时分秒的计数器清0,EN为使能信号,EN为1时开始计时,EN为0则暂停计时。

分秒时的进位通过外部组合逻辑实现。

4.显示模块计时模块产生的BCD码通过编写的CD4511功能模块转换为数码管的显示信号。

5.分频模块开发板的系统时钟为50MHz,产生1Hz的CP信号需要一个模为25M的计数器分频得到1Hz的CP信号。

四、具体代码1.顶层模块(clock.v)module SHOW_CTRL(MODE,SHOW_MODE,CP,Hour,Minute,Second,SHOW1,SHOW2);input CP,MODE,SHOW_MODE;input[7:0]Hour,Minute,Second;output[7:0]SHOW1,SHOW2;reg[7:0]SHOW1,SHOW2;always@(MODE,SHOW_MODE) beginif((MODE==0)&&(SHOW_MODE==0))begin SHOW2<=Minute[7:0];SHOW1<=Hour[7:0]; endelse if((MODE==0)&&(SHOW_MODE==1))begin SHOW2<=Second[7:0];SHOW1<=Minute[7:0]; endelse if((MODE==1)&&(SHOW_MODE==0))begin SHOW2<=Minute[7:0];SHOW1<=Hour[7:0]; endelse if((MODE==1)&&(SHOW_MODE==1))begin SHOW2<=Second[7:0];SHOW1<=Minute[7:0]; endendendmodule2.分频模块(clk_div.v)module clk_div(clk_50M,clk_1);input clk_50M;output reg clk_1;reg [8:0]count;always @(posedge clk_50M)beginif(count>8'd25)beginclk_1=~clk_1;count=0;endelsecount<=count+1;endendmodule3.模60计数器模块(counter60.v)module counter60(EN,CP,nCR,QoH,QoL);input EN,CP,nCR;output [3:0]QoH,QoL;reg [3:0]QoH,QoL;always@(posedge CP) beginif(~nCR) beginQoH<=4'b0000;QoL<=4'b0000; endelse if(~EN) beginQoH<=QoH;QoL<=QoL; endelseif(QoH==4'b0101&&QoL==4'b1001)beginQoH<=4'b0000;QoL<=4'b0000;endendelse if(QoH<4'b0110&&QoL<4'b1001){QoH,QoL}<={QoH,QoL+4'b0001};else if(QoH<4'b0110&&QoL==4'b1001){QoH,QoL}<={QoH+4'b0001,4'b0000};endendmodule4.模24计数器模块(counter24.v)module counter24(nCR,EN,CP,CntH,CntL);input CP,nCR,EN;output[3:0] CntH,CntL;reg [3:0]CntH,CntL;reg CO;always@(posedge CP or negedge nCR) beginif(~nCR) {CntH,CntL}<=8'h00;else if(~EN) {CntH,CntL}<={CntH,CntL};else if((CntH>2)||(CntL>9)||((CntH==2)&&(CntL>=3))){CntH,CntL}<=8'h00;else if((CntH==2)&&(CntL<3))begin CntH<=CntH; CntL<=CntL+1'b1; end else if(CntL==9) begin CntH<=CntH+1'b1; CntL<=4'b0000; endelse begin CntH<=CntH; CntL<=CntL+1'b1; endendendmodule5.显示模块(HEX2LED.v)module HEX2LED(HEX,SEG);input[3:0] HEX;output[7:0] SEG;wire[3:0] HEX;reg[6:0] SEG;always@(HEX)begincase(HEX)4'h0: SEG = 7'b0000001;4'h1: SEG = 7'b1001111;4'h2: SEG = 7'b0010010;4'h3: SEG = 7'b0000110;4'h4: SEG = 7'b1001100;4'h5: SEG = 7'b0100100;4'h6: SEG = 7'b0100000;4'h7: SEG = 7'b0001111;4'h8: SEG = 7'b0000000;4'h9: SEG = 7'b0000100;default: SEG = 7'b0000001;endcaseendendmodule五、仿真截图(仿真秒时分计时及其数码管显示,仿真环境为vivado 2018.3)秒计时仿真分计时仿真时计时仿真如下图所示为分校准仿真,当Amin分校准位为1时分开始随着CP信号的频率以1秒加1的步进变动。

基于FPGA实现多功能数字钟和交通灯的实习报告

基于FPGA实现多功能数字钟和交通灯的实习报告

数字系统课程实习报告设计题目:基于FPGA实现多功能数字钟和交通灯的设计院系:信息工程学院专业班级:通信112姓名:学号:指导教师:刘艳昌设计时间:2013年六月河南科技学院信息工程学院目录1设计任务与要求 (3)2系统设计总体方案 (3)3数字时钟各模块电路具体实现 (3)3.1 时钟分频模块 (3)3.2模式选择模块 (4)3.3时钟模块 (5)3.4 显示模块 (10)3.5 电子时钟原理图 (12)4 交通灯各模块电路具体实现 (13)4.1 交通灯原理图 (13)4.2主干道控制(time1) (13)4.3次干道控制(time2) (14)4.4 灯显控制(light) (15)5 总结 (15)参考文献 (16)1设计任务与要求数字电子时钟:(1)基本的要求:实现时、分、秒的显示(2)具有校时校分功能(3)具有整点报时功能(选做)(4)具有闹铃功能(选做)交通灯:(1)主干道:45秒绿灯,5秒黄灯,25秒红灯(2)次干道:50秒红灯,20秒绿灯,5秒红灯(3)时间可调(选做)2系统设计总体方案2.1 数字时钟总体设计2.2 交通灯总体设计3数字时钟各模块电路具体实现3.1分频模块由50MHz的输入频率分离10Hz(用于时钟脉冲)、1KHz(数码管扫描脉冲)、gaoyin_1KHz(整点报时高音频率)、diyin_500Hz(整点报时低音频率)的不同频率。

代码:module fenpin( clk,clk_1Hz,clk_2Hz,clk_4Hz,clk_10Hz,clk_1KHz,clk_6MHz,clk_gaoyin_1KHz,clk_diyin_500Hz);input clk;outputclk_4Hz,clk_6MHz,clk_gaoyin_1KHz,clk_diyin_500Hz,clk_1Hz,clk_2Hz,clk_10Hz,clk_1KHz;regclk_4Hz,clk_6MHz,clk_gaoyin_1KHz,clk_diyin_500Hz,clk_1Hz,clk_2Hz,clk_10Hz,clk_1KHz;reg [27:0]count1,count2,count3,count4,count5,count6,count7,count8;always@ (posedge clk )begincount1=count1+1'b1;if(count1==24999999) begin clk_1Hz=~clk_1Hz; count1=0;endcount2=count2+1'b1;if(count2==12499999) begin clk_2Hz=~clk_2Hz; count2=0;endcount3=count3+1'b1;if(count3==2499999) begin clk_10Hz=~clk_10Hz; count3=0;endcount4=count4+1'b1;if(count4==24999) begin clk_1KHz=~clk_1KHz; count4=0;endcount5=count5+1'b1;if(count5==6249000) begin clk_4Hz=~clk_4Hz; count5=0;endcount6=count6+1'b1;if(count6==4) begin clk_6MHz=~clk_6MHz; count6=0;endcount7=count7+1'b1;if(count7==24999) begin clk_gaoyin_1KHz=~clk_gaoyin_1KHz; count7=0;endcount8=count8+1'b1;if(count5==50000) begin clk_diyin_500Hz=~clk_diyin_500Hz; count8=0;end endendmodule3.2 模式选择模块输入高电平有效,未接受信号时输出M=0;接受到第一个高电平信号时M=1; 接受到第二个高电平信号时M=2; 接受到第三个高电平信号时M=3; 接受到第四个高电平信号时M=4;代码:module moshi(Clk,M);input Clk;//input res;output [2:0] M;reg[2:0] M;always@(posedge Clk)beginM = M + 1;if(M == 5)M = 0;endendmodule该模块仿真图图一模式选择仿真图3.3时钟模块该模块包括:时钟、校时、闹钟、整点报时四部分。

FPGA实验报告_4

FPGA实验报告_4

FPGA课程设计报告专业班级: 13电信1班学号: ************ 姓名:***指导老师:**实验日期:2015.11.27—2015.12.18文华学院信息学部多功能数字钟电路设计一、设计题目多功能数字钟电路的分层次设计7二、设计要求技术指标设计一个具有时、分、秒计时的电子钟电路,按24小时制计时。

三、设计分析在设计一个比较复杂的数字电路或系统时,通常采用自上而下和自下而上的设计方法。

在自上而下设计中,先定义顶层模块,然后再定义顶层模块中用到的子模块。

而在自下而上设计中,底层的各个子模块首先被确定下来,然后将这些子模块组合起来构成顶层模块。

将电路分为不同层次和多个模块分别进行设计,然后将这些模块组合起来实现电路逻辑功能,这种方法通常被称为分层次的电路设计。

工作原理:振荡器产生的稳定的高频脉冲信号,作为数字钟的时间基准,再经分频器输出标准秒脉冲。

秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照24进制规律计数。

计数器的输出送译码显示电路,即可显示出数码(时间)。

计时出现误差时可以用校时电路进行校时和校分。

仿电台报时和定时闹钟为扩展电路,只有在计时主题电路正常运行的情况下才能进行功能扩展。

虚线框内的部分用Verilog HDL进行描述,然后用FPGA/CPLD 实现,译码显示电路用中规模IC实现,振荡器由集成电路定时器555与RC电路组成1kHz的多谐振荡器。

四、设计步骤①多功能数字钟主体电路逻辑设计:采用自下而上的设计方法,首先定义数字钟下层的各个模块,再调用这些模块组合成顶层的数字钟电路。

1.模24计数器的Verilog HDL设计小时计数器的计数规律为00-01-…-09-10-11-…-22-23-00…,即在设计时要求小时计数器的个位和十位均按8421BCD码计数。

//文件名:counter24.v(BCD计数:0~23)module counter24(CntH,CntL,nCR,EN,CP);input CP,nCR,EN; //分别为计时脉冲CP、清0信号、nCR和使能信号EN output [3:0] CntH,CntL; //计时计数器的十位和个位输出信号reg [3:0] CntH,CntL; //输出为8421BCD码always @(posedge CP or negedge nCR)beginif(~nCR) {CntH,CntL}<=8'h00; //异步清零else if (~EN) {CntH,CntL}<={CntH,CntL}; //对使能信号无效的处理else if ((CntH>2)||(CntL>9)||((CntH==2)&&(CntL>=3))){CntH,CntL}<=8'h00; //对小时计数器出错的处理else if ((CntH==2)&&(CntL<3)) //进行20-23计数begin CntH<=CntH; CntL<=CntL+1'b1;endelse if (CntL==9) //小时十位级的计数begin CntH<=CntH+1'b1; CntL<=4'b0000;endelse //小时个位的计数begin CntH<=CntH; CntL<=CntL+1'b1;endendendmodule2.模60计数器的Verilog HDL设计分和秒计数器的计数规律为00-01-…-09-10-11-…-58-59-00…,可见个位计数器从0~9计数,是一个十进制计数器;十位计数器则从0~5计数,是一个六进制计数器。

数字时钟系统实验报告

数字时钟系统实验报告

数字时钟系统设计7段数码管译码显示一、实验目的作为熟悉实验箱后的第一个实验,本实验继续帮助同学们进一步熟悉试验箱和开发软件QuartusII,实验结合下载到实验箱的操作,定会帮助同学们更加熟悉EDA实验流程和方法,为后续实验打下基础。

利用FPGA开发软件QuartusII,熟悉其原理图方式的设计方法,简单VHDL程序模块化,原理图连结的方式,实现7段数码管译码显示。

二、实验内容建立工程,理解和编写实验中的VHDL程序,然后把每个简单的VHDL 程序(Create Symbol Files For Current File)作为一个模块,在原理图输入中引入,最后把原理图设置成顶层文件,模拟仿真,下载到FPGA中观看数码管循环译码显示。

三、实验原理VHDL程序原理实验程序用VHDL语言编写,利用开发软件QuartusII完成编译,完成本实验,主要有3部分参考程序,分别是系统时钟分频程序(int_div.vhd)、加法计数器程序(cnt4b.vhd),还有转换译码程序(decl7s.vhd)。

系统时钟分频程序,实验箱的系统时钟频率为48Mhz,通过设置分频模块,对系统时钟进行了48 000 000分频,得到1Hz的信号频率,通过分频输出后,频率降低,1Hz频率时,周期为一秒,得到1Hz的秒脉冲,一秒一个跳变,从而使得7段数码管的每一个跳变眼睛都能够清晰地分辨出来。

加法计数器程序,在工作频率作用下,每个频率周期进行一次加一操作,使得4位二进制数循环输出(0000到1111),每输出一个4位的二进制数据信号,分别对应数码管0 ~ 9、A ~ F的16个数据,并且循环显示,让变化的顺序和结果循环展示,方便验证观察。

转换译码程序,在对应加法计数器输出的4位二进制信号下,经逻辑译码转换,每一组4位的二进制信号输入都对应一组8位的高低电平信号输出,对应数码管0 ~ 9、A ~ F每个状态下的8个发光二极管的发光状态,使数码管在每个状态下都有相应、直观的显示输出在数码管上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验要求1、用vhdl编程,实现10进制计数器2、用vhdl编程,实现60进制计数器3、用vhdl编程,实现数字时钟,时、分、秒、毫秒分别显示在数码管上。

4、实现可调数字时钟的程序设计,用按键实现时、分、秒、毫秒的调整。

二、实验原理用VHDL,行为级描述语言实现实验要求。

思路如下:1、分频部分:由50MHZ分频实现1ms的技术,需要对50MHZ采取500000分频。

2、计数部分:采用低级影响高级的想法,类似进位加1的思路。

对8个寄存器进行计数,同步数码管输出。

3、数码管输出部分:用一个拨码开关控制显示,当sw0=0时,四位数码管显示秒、毫秒的计数。

当sw0=1时,四位数码管显示时、分得计数。

4、调整部分:分别用四个按键控制时、分、秒、毫秒的数值。

先由一个开关控制计数暂停,然后,当按键按下一次,对应的数码管相对之前的数值加1,,通过按键实现时间控制,最后开关控制恢复计数,完成时间调整。

5、整个实现过程由一个文件实现。

三、实验过程各个引脚说明:Clk:50MHZSW:数码管切换,SW=’0’时,数码管显示为秒,毫秒。

SW=’1’时,数码管显示为时,分。

SW1:暂停与启动。

SW1=’0’时,时钟启动,SW=’1’时,时钟暂停。

SW2:时钟调整接通按钮,当SW2=’0’时,不进行调整,当SW=’1’时,通过按键调整时间。

KEY0:毫秒调整,按一次实现+1功能KEY1:秒调整,按一次实现+1功能KEY2:分调整,按一次实现+1功能KEY3:时调整,按一次实现+1功能Q0;第一个数码管Q1; 第二个数码管Q2: 第三个数码管Q3: 第四个数码管1、源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity paobiao isport(clk,sw,key0,key1,key2,key3,sw1,sw2:in std_logic;q0:out std_logic_vector(6 downto 0);q1:out std_logic_vector(6 downto 0);q2:out std_logic_vector(6 downto 0);q3:out std_logic_vector(6 downto 0));end paobiao;architecture behave of paobiao issignal cntt1 :integer range 0 to 10;signal cntt2 :integer range 0 to 10;signal cntt3 :integer range 0 to 10;signal cntt4 :integer range 0 to 6;signal cntt5 :integer range 0 to 10;signal cntt6 :integer range 0 to 10;signal cntt7 :integer range 0 to 10;signal cntt8 :integer range 0 to 6;signal cntttt1 :integer range 0 to 10;signal cntttt2 :integer range 0 to 10;signal cntttt3 :integer range 0 to 10;signal cntttt4 :integer range 0 to 6;signal cntttt5 :integer range 0 to 10;signal cntttt6 :integer range 0 to 10;signal cntttt7 :integer range 0 to 10;signal cntttt8 :integer range 0 to 6;beginprocess (clk)--,key0,key1,key2,key3)variable cnt :integer range 0 to 500000;--variable cnt9 :integer range 0 to 3000000000;variable cnt1 :integer range 0 to 10;variable cnt2 :integer range 0 to 10;variable cnt3 :integer range 0 to 10;variable cnt4 :integer range 0 to 6;variable cnt5 :integer range 0 to 10;variable cnt6 :integer range 0 to 10;variable cnt7 :integer range 0 to 10;variable cnt8:integer range 0 to 6;beginif(clk'event and clk='1') thenif(sw1='0') thenif(cnt>=2) thencnt:=0;cnt1:=cnt1+1;if (cnt1=10) thencnt1:=0;cnt2:=cnt2+1;if(cnt2=10) thencnt1:=0;cnt2:=0;cnt3:=cnt3+1;if(cnt3=10) thencnt1:=0;cnt2:=0;cnt3:=0;cnt4:=cnt4+1;if(cnt4=6) thencnt1:=0;cnt2:=0;cnt3:=0;cnt4:=0;cnt5:=cnt5+1; if (cnt5=10) thencnt5:=0;cnt6:=cnt6+1;if(cnt6=6) thencnt5:=0;cnt6:=0;cnt7:=cnt7+1;if(cnt7=4) thencnt5:=0;cnt6:=0;cnt7:=0;cnt8:=cnt8+1;if(cnt8=3) thencnt5:=0;cnt6:=0;cnt7:=0;cnt8:=0;end if;end if;end if;end if;end if;end if;end if;end if;else cnt:=cnt+1;end if;if(sw2='0') thencntt1<=cnt1;cntt2<=cnt2;cntt3<=cnt3;cntt4<=cnt4;cntt5<=cnt5;cntt6<=cnt6;cntt7<=cnt7;cntt8<=cnt8;elsecnt1:=cntttt1;cnt2:=cntttt2;cnt3:=cntttt3;cnt4:=cntttt4;cnt5:=cntttt5;cnt6:=cntttt6;cnt7:=cntttt7;cnt8:=cntttt8;cntt1<=cnt1;cntt2<=cnt2;cntt3<=cnt3;cntt4<=cnt4;cntt5<=cnt5;cntt6<=cnt6;cntt7<=cnt7;cntt8<=cnt8;end if;end if;end if;end process;process (key0)variable cnttt1 :integer range 0 to 10; variable cnttt2 :integer range 0 to 10; beginif(key0'event and key0='0') thencnttt1:=cnttt1+1;if(cnttt1=10) thencnttt1:=0;cnttt2:=cnttt2+1;if(cnttt2=10) thencnttt2:=0;end if;end if;cntttt1<=cnttt1;cntttt2<=cnttt2;end if;end process;process (key1)variable cnttt3 :integer range 0 to 10; variable cnttt4 :integer range 0 to 10; beginif(key1'event and key1='0') thencnttt3:=cnttt3+1;if(cnttt3=10) thencnttt3:=0;cnttt4:=cnttt4+1;if(cnttt4=6) thencnttt4:=0;end if;end if;cntttt3<=cnttt3;cntttt4<=cnttt4;end if;end process;process(key2)variable cnttt5 :integer range 0 to 10; variable cnttt6 :integer range 0 to 10; beginif(key2'event and key2='0') thencnttt5:=cnttt5+1;if(cnttt5=10) thencnttt5:=0;cnttt6:=cnttt6+1;if(cnttt6=6) thencnttt6:=0;end if;end if;cntttt5<=cnttt5;cntttt6<=cnttt6;end if;end process;process(key3)variable cnttt7 :integer range 0 to 10; variable cnttt8 :integer range 0 to 10; beginif (key3'event and key3='0') thencnttt7:=cnttt7+1;if(cnttt7=4) thencnttt7:=0;cnttt8:=cnttt8+1;if(cnttt8=3) thencnttt8:=0;end if;end if;cntttt7<=cnttt7;cntttt8<=cnttt8;end if;end process;--end if;--end process;process(cntt1,cntt5)beginif(sw='0') thencase cntt1 iswhen 0=>q0<="1000000";when 1=>q0<="1111001";when 2=>q0<="0100100";when 3=>q0<="0110000";when 4=>q0<="0011001";when 5=>q0<="0010010";when 6=>q0<="0000010";when 7=>q0<="1011000";when 8=>q0<="0000000";when 9=>q0<="0010000";when others=>q0<=NULL;end case;elsecase cntt5 iswhen 0=>q0<="1000000";when 1=>q0<="1111001";when 2=>q0<="0100100";when 3=>q0<="0110000";when 4=>q0<="0011001";when 5=>q0<="0010010";when 6=>q0<="0000010";when 7=>q0<="1011000";when 8=>q0<="0000000";when 9=>q0<="0010000";when others=>q0<=NULL;end case;end if;end process;process(cntt2,cntt6)beginif(sw='0') thencase cntt2 iswhen 0=>q1<="1000000";when 1=>q1<="1111001";when 2=>q1<="0100100";when 3=>q1<="0110000";when 4=>q1<="0011001";when 5=>q1<="0010010";when 6=>q1<="0000010";when 7=>q1<="1011000";when 8=>q1<="0000000";when 9=>q1<="0010000";when others=>q1<=NULL;end case;elsecase cntt6 iswhen 0=>q1<="1000000";when 1=>q1<="1111001";when 2=>q1<="0100100";when 3=>q1<="0110000";when 4=>q1<="0011001";when 5=>q1<="0010010";when 6=>q1<="0000010";when 7=>q1<="1011000";when 8=>q1<="0000000";when 9=>q1<="0010000";when others=>q1<=NULL;end case;end if;end process;process(cntt3,cntt7)beginif(sw='0') thencase cntt3 iswhen 0=>q2<="1000000";when 1=>q2<="1111001";when 2=>q2<="0100100";when 3=>q2<="0110000";when 4=>q2<="0011001";when 5=>q2<="0010010";when 6=>q2<="0000010";when 7=>q2<="1011000";when 8=>q2<="0000000";when 9=>q2<="0010000";when others=>q2<=NULL;end case;elsecase cntt7 iswhen 0=>q2<="1000000";when 1=>q2<="1111001";when 2=>q2<="0100100";when 3=>q2<="0110000";when 4=>q2<="0011001";when 5=>q2<="0010010";when 6=>q2<="0000010";when 7=>q2<="1011000";when 8=>q2<="0000000";when 9=>q2<="0010000";when others=>q2<=NULL;end case;end if;end process;process(cntt4,cntt8)beginif(sw='0') thencase cntt4 iswhen 0=>q3<="1000000";when 1=>q3<="1111001";when 2=>q3<="0100100";when 3=>q3<="0110000";when 4=>q3<="0011001";when 5=>q3<="0010010";when others=>q3<=NULL;end case;elsecase cntt8 iswhen 0=>q3<="1000000";when 1=>q3<="1111001";when 2=>q3<="0100100";when 3=>q3<="0110000";when 4=>q3<="0011001";when 5=>q3<="0010010";when 6=>q3<="0000010";-- when 7=>q3<="1011000";-- when 8=>q3<="0000000";--when 9=>q3<="0010000";when others=>q3<=NULL;end case;end if;end process;end behave;2、原理图如下:3、功能仿真如下1、秒、毫秒计数仿真2、分、时计数仿真注释:由于仿真时间限制,小时不能显示。

相关文档
最新文档