南理工EDA2实验报告 优秀 - 图文

更新时间:2024-07-07 23:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南京理工大学 EDA(Ⅱ)实验报告

——多功能数字钟

学院:

学号: 姓名:

指导老师: 2013年11月20日

摘要

本实验主要是所学的数字逻辑电路的知识的综合运用,借助QUARTUS Ⅱ软件和SmartSOPC实验箱对设计的数字钟系统进行仿真和调试。该数字钟系统不仅具有24小时计数、星期显示、校分校时和整点报时等基本功能,而且能设置闹钟、闹钟响铃、LED点阵显示、12/24小时模式切换等拓展功能。本系统按照模块设计思想,对每一个功能独立设计电路并封装,设计方法结合了原理图设计和VHDL语言设计,充分发挥各自优点,以得到性能完善的电路模块。

关键字:数字钟 QUARTUSⅡ VHDL SmartSOPC实验箱

Abstract

This experiment is a comprehensive application of the Digital Logic Circuit. With the help of QUARTUS Ⅱ software and SmartSOPC experiment box, the digital clock system can be designed successfully. This system is equipped with the extended functions of alarm clock setting, alarming, LED matrix displaying and 12 or 24 hours modes change except for the basic functions, namely, 24-hour counting, week displaying, hour check, minute check and time telling. This system consists of various modules, which are designed with the schematic method and VHDL language. The advantages of the two methods contributes to the consummate result of each module.

Keywords: Digital Clock Quartus II VHDL SmartSOPC

1

2

目录

摘要…………………………………………………………………………………………….1 目录…………………………………………………………………………………………….2 一、 正文…………………………………………………………………………………….3

1.1 设计要求说明………………………………………………………………………..3 1.2 系统工作原理………………………………………………………………………..3 1.3 子模块设计原理……………………………………………………………………..4 1.3.1 脉冲信号发生电路……………………………………………………………...4 1.3.2 二十四小时计时电路…………………………………………………………...7 1.3.3 快速校分校时电路……………………………………………………………...8 1.3.4 星期显示与调整电路…………………………………………………………...10 1.3.5 数码管显示电路…………………………………………………………….......11 1.3.6 整点报时电路……………………………………………………………...........12 1.3.7 闹钟设置电路……………………………………………………………...........13 1.3.8 闹钟响铃电路……………………………………………………………...........14 1.3.9 12/24小时模式切换电路…………………………………………………..........16 1.3.10 开关消颤电路………………………………………………………….............18 1.3.11 LED点阵显示电路…………………………………………………….............18 1.4 调试与仿真…………………………………………………………………………..21 1.5 编程下载……………………………………………………………………….…….22 二、结论…………………………………………………………………………….……………23 2.1 实验结果……………………………………………………………………….…….23 2.2 实验问题……………………………………………………………………….…….24 2.3 实验总结……………………………………………………………………….…….24 三、参考文献……………………………………………………………………….……………25 四、附录……………………………………………………………………….…………………25

3

一、正文

1.1 设计要求说明

本实验要求利用QuartusII软件设计一个数字钟,并下载到SmartSOPC实验系统中。该数字计时器,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等功能。 实验基本要求:

1、 能进行正常的时、分、秒计时功能; 2、 分别由六个数码管显示时分秒的计时;

3、 K1为系统时能开关,K2为系统清零开关,K3为系统校分开关,K4为系统校时开

关。

实验提高要求:

1、 时钟具有整点报时功能(当时钟计到59’53”时开始报时,在59’53”, 59’55”,59’

57” 时报时频率为500Hz,59’59”时报时频率为1KHz); 2、 时钟具有闹表设定功能,当时钟到设定时间时能够响铃。 3、 自由添加其他功能

1.2 系统工作原理

主电路是由脉冲信号发生电路利用分频器产生1Hz的时钟信号,该时钟信号驱动计时电

路计时,计时电路就是有多片模24或模60计数器级联组成,校分和校时信号和使能信号、清零信号通过组合逻辑电路(门电路)和输入到计数器的使能端和置数端,即能实现异步清零和异步快速校分功能。系统总的逻辑框图如图2-1.

图2-1 系统逻辑框图

显示电路由74138译码器、多线数据选择器、7447显示译码器和扫描电路组成,由于只用一块显示译码器,故需要扫描电路实现分时复用该芯片,扫描电路为模8计数器,即在一

4

个时刻,只有一位数(4bits)能被数据选择器选中并送至显示译码器,8片数码管中也只有一块被使能显示该位数值。经过模8计数器一个周期后,所有的数值均在对应的数码管上显示一次,当扫描电路的时钟信号足够快时,人眼由于视觉暂留的效果看到8个数码管同时在亮。该电路在完美实现显示功能前提下,大大节省了资源,提高了FPGA资源的利用率。 整点报时功能则是组合逻辑电路的应用之一,根据卡诺图方法,得到报时方程,然后用门电路将蜂鸣信号输出到蜂鸣器即能实现整点报时功能。

闹钟设定和响铃主要由两部分构成,一是闹钟设定以及显示电路,而是响铃电路。闹钟设定以及显示电路主要涉及到显示电路的复用问题,而设定电路则与计时电路类似,由模24和模60计数器构成。响铃电路则用到比较器,将计时电路的时、分和闹钟设定电路的时、分比较,二者相等的时候则输出蜂鸣信号,驱动蜂鸣器工作。

LED点阵电路主要是用VHDL语言编写,用汉字字库提取软件得到某个汉字的行列信息并转换为二进制,由于该实验箱的LED 16*16点阵模块是串入数据,并出显示,故还需编写一个并串转换电路,将刚才的汉字数据转换为串行数据输出到LED点阵数据输入端,同样采用的扫描显示原理,点阵电路每接收32个二进制数据,则将其按行显示,当扫描时钟足够快,16个周期后,就能将改字符完整的显示出来。

1.3 子模块设计原理

1.3.1 脉冲信号发生电路

该实验平台已经提供了48MHz的时钟频率,而计时电路所用的时钟是1Hz的信号,蜂鸣器蜂鸣信号也需要500和1000Hz的信号,故需要用分频电路对48MHz信号进行分频得到所需信号。为提高电路设计的简便性和准确性,该分频电路主要有二分频、三分频、十分频等电路模块组装而成:

二分频电路就是一个D触发器,其原理图电路见图3-1-1。

图3-1-1 二分频原理图电路

三分频电路则用到了74160计数器,利用74160的异步清零端,在0011时立即跳转回到0000,将第二位QB作为输出信号即实现三分频功能,其原理图见图3-1-2。

5

图3-1-2 三分频原理图电路

十分频电路类似于三分频电路,利用74163的同步置数端,为实现接近50%的占空比,将最高位QD作为输出端,0000~0100五种状态下输出为0,0100后跳转至1011,后面1011~1111五种状态下输出为1,这样就完美的实现了50%占空比的十分频功能,其原理图电路见图3-1-3。

图3-1-3 十分频原理电路图

在这三个基础的分频器电路基础上,将三个二分频电路和一个三分频电路级联即可得到24分频电路,将三个十分频电路级联即可得到1000分频电路,由于最终要实现48,000,000分频,在Quartus II 软件上仿真比较困难,故我们只有对每一块仿真,只要24、48、10分频电路均正确,则最终得到的总的分频电路是不会有问题的。24分频和10分频电路的仿真结果见图3-1-4和图3-1-5。

图3-1-4 24分频电路波形仿真图

6

图3-1-5 10分频电路波形仿真图

将各个模块成功设计后,我们便能得到最终的分频电路,原理电路图见图3-1-6。输入48MHz时钟信号后便能得到所需要的1Hz、2Hz、500Hz、1000Hz时钟信号。

图3-1-6 总分频电路

相比较于原理图设计,用VHDL语言设计分频电路则方便地很多,而且稍加改动便能得到所需的分频电路,由此可见VHDL语言设计的优越性——简单方便、更容易实现。通用的分频电路VHDL语言为: library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity vhdldiv is

generic( N1:integer:=48; M1:integer:=24); port(

clki:in std_logic; en:in std_logic; clko:out std_logic );

end entity;

architecture d of vhdldiv is

signal count :integer range 0 to N1; begin

process(clki,en,count) begin

if en='1' then

if rising_edge(clki) then

7

if count=N1-1 then count<=0; else count<=count+1; end if; end if; end if;

end process;

clko<='1' when count

当中N1为分频后一个周期包含的CLK数量,M1为一个周期中为高电平的CLK数量。将其分装后,稍微修改M1、N1后即可以随意使用。封装结果和实际应用见图3-1-7.

图3-1-7 VHDL编写分频器封装结果和实际应用

1.3.2 二十四小时计时电路

二十四小时计时电路主要分三块:时、分、秒,分别为模24和模60计数器,每个计数器均由两块74160BCD码计数器组成,分别对应两位数字的十位和个位。计数器分别有时钟输入端CLK、异步清零端CLR、使能端EN和计满进位端Qc。模60和模24计数器的原理图电路见图3-2-1和图3-2-2.

图3-2-1 模60计数器原理图电路

8

图3-2-2 模24计数器原理图电路

对两电路分别进行波形仿真发现成功实现计数、使能、清零和进位功能。两种电路的波形仿真结果分别见图3-2-3和3-2-4.

图3-2-3 模60计数器波形仿真结果

图3-2-4 模24计数器波形仿真结果

在此基础上,将模24和两块模60级联就能得到基本的计时电路。原理电路图见图3-2-5.

图3-2-5 基本计时电路

1.3.3 快速校分校时电路

快速校分(时)电路主要涉及到两个问题:一是校分(时)开关打开后分(时)电路使能计数,其他模块暂停计数;二是,校分(时)开关打开后,分(时)电路时钟信号为2Hz。 问题一通过基本的门电路就能实现,mincheck、houcheck分别为校分、校时开关信号,nmincheck、nhoucheck分别为校分、校时开关取反信号,secc、minc分别为秒钟计满进位信号,当总使能信号为高,校分、校时开关为低时,秒钟正常计时;当校分开关为高或者秒钟计满进位,且未校时时,分钟使能计时;当校时开关为高或者分钟计满进位,且未校分时,时钟使能计时。实现电路见图3-3-1.

9

图3-3-1 校时校分使能电路

问题二亦通过基本门电路实现。利用与门实现频率选择功能,校分(时)信号为高时,2Hz信号被选通,1Hz信号被屏蔽;校分(时)信号为低时则相反。再将2路信号用或门输出到时或分的时钟端,则实现快速校分(时)功能。实现电路见图3-3-2.

图3-3-2 快速校分(时)时钟选择电路

对电路进行封装后进行波形仿真,以快速校时为例,观察波形结果可以发现:当校时信号为高电平时,时的高低两位以2Hz的速度计数,秒和分则暂停计数,当校时信号又恢复为低电平时,计数电路又恢复为正常的1Hz计数。仿真结果见图3-3-3.

10

图3-3-3快速校时电路波形仿真结果

1.3.4 星期显示与调整电路

星期计数电路类似于1.3.2二十四小时计时电路,首先设计一个模7计数器,其使能信号来自于时的进位溢出信号,每24个小时,模7计数器计数一次。原理图电路见图3-4-1.

图3-4-1 模7计数器原理图电路

为了贴近现实习惯,星期只有一到七,故在0111时,下一个时钟同步置数为0001,即星期一。电路波形仿真结果见图3-4-2.

图3-4-2 模7计数器波形仿真结果

将校星期信号和小时计满进位信号或之后作为模7计数器的使能端,则能实现星期计数和校星期功能。实现电路见图3-4-3.

11

图3-4-3 星期计数和校星期电路

1.3.5 数码管显示电路

显示电路由74138译码器、多线数据选择器、7447显示译码器和扫描电路组成,由于只用一块显示译码器,故需要扫描电路实现分时复用该芯片,扫描电路为模8计数器,即在一个时刻,只有一位数(4bits)能被数据选择器选中并送至显示译码器,8片数码管中也只有一块被使能显示该位数值。经过模8计数器一个周期后,所有的数值均在对应的数码管上显示一次,当扫描电路的时钟信号足够快时,人眼由于视觉暂留的效果看到8个数码管同时在亮。该电路在完美实现显示功能前提下,大大节省了资源。实现电路见图3-5-1。

图3-5-1 数码管显示电路

这当中scan模块为模8计数器,用于选通4bits信息和使能对应的数码管,其原理图电路见图3-5-2.

12

图3-5-2 模8计数器

Mux7to1为4bits 7选1数据选择器,根据计数器所提供的地址,选择指定一块数码管的4bits数据,其实现电路见图3-5-3.

图3-5-3 4bits 7选1数据选择器电路

1.3.6 整点报时电路

根据实验要求,电路每小时进行一次报时,从59分53秒开始报时,每隔一秒发一声,共三声低音、一声高音。即59分53秒、59分55秒、59分57秒为低音,59分59秒为高音。实际上,需要在某一时刻报时,就将该时刻输出为“1”的信号作为触发信号,选通报时脉冲信号,进行报时即可。

对于这一要求,我们可以列一张表来形象的看出这一性质:

13

时刻 59分53秒 59分55秒 59分57秒 59分59秒 分十位 0101 0101 0101 0101 分个位 1001 1001 1001 1001 秒十位 s8s7s6s5 0101 0101 0101 0101 秒个位 s4s3s2s1 0011 0101 0111 1001 m8m7m6m5 m4m3m2m1 音高 低 低 低 高 频率 约500Hz 约500Hz 约500Hz 约1000Hz 对于分的十位个位和秒的十位,在鸣响的时候给出的信号应该是一样的。所以公示中有共同项m7m5m4m1s7s5,剩下的就是考虑秒个位的区别在s1为1时,s3,s2中有一个为1即发出500HZ的低声鸣响,在s4为1时发出1000HZ的高声鸣响。因此,总结得出公式为:

F?m7m5m4m1s7s5s1s2f3?s3f3?s4f4

其中F为最后要传到扬声器中的信号,即输出端beep,f3为500Hz信号,f4为1Kz的信号。实现电路见图3-6-1.

图3-6-1 整点报时电路

1.3.7 闹钟设置电路

闹钟设定和响铃主要由两部分构成,一是闹钟设定以及显示电路,而是响铃电路。闹钟设定以及显示电路主要涉及到显示电路的复用问题,而设定电路则与计时电路类似,由模24和模60计数器构成。

闹钟设定电路较简单,类似于计时电路,原理图电路如图3-7-1.

图3-7-1 闹钟设定电路

为实现数码管复用,显示设定的闹钟时间,加入数码管显示数据选择电路,外部封装和连接如图3-7-2.

14

一行(LDA)。主板上16*16LED点阵电路如图3-11-1。

图3-11-1 16*16LED点阵电路图

电路中的COM13(LATTICE_COM)是对外的逻辑分析仪测试点和接口,这些信号并没有连接到相应的FPGA引脚,因此要对LED点阵操作必须通过连线操作。

利用图3-11-2所示的汉字字库提取软件可以得到所需汉字的按行、列的16*16位的十六进制信息,再用十六进制转二进制软件即能得到所需汉字信息的二进制信息,以用于后面的VHDL程序的设计。

图3-11-2 汉字字库提取软件运行界面

得到汉字字符信息后根据16*16点阵显示原理,便可以设计显示代码,测试代码如下: library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity matrix is

20

port(clk,clr,en:in std_logic;

dotout:out std_logic_vector(31 downto 0); selout:buffer std_logic_vector(3 downto 0)); end matrix;

architecture m of matrix is begin

process(clk) begin

if clr='1' then dotout<=\else if en='1' then if clk'event and clk='1'

then if selout=15 then selout<=\ else selout<=selout+1; end if; case selout is

when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when others=>dotout<=null; end case; end if; end if; end if;

end process; end m;

该代码是测试显示“南”字,但是最终的调试结果并不成功,由于行列数据输入顺序颠倒的问题,显示出来的字颠倒了90°,结果如图3-11-2.

21

图3-11-2 16*16LED点阵调试结果

1.4 调试与仿真

虽然之前的分模块设计前都经过仔细的理论论证,但实际的电路总会存在着或大或小的问题或者缺陷,如果不分模块调试仿真、确保每个模块的正确性,那将在最终编程下载中出现问题将很难检查到问题。在上面1.3节中每一个模块的原理和设计说明后面均已经加入的该模块的波形仿真结果,通过研究输入和输出波形的逻辑关系可以验证各模块的各个功能的设计成功与否。

对于最基本的电路——基本计时电路,经过反复调试、修改,最终得到功能正确的电路,其内部模块设计见1.3.2节,下图4-1和4-2分别为基本计时电路的外部封装情况和波形仿真结果

图4-1 基本计时电路封装图

22

图4-2 基本计时电路波形仿真结果

由于软件调试仿真功能有限,其他功能——显示、闹钟仍需下载至实验箱中调试验证。

1.5 编程下载

下载前最后一步就是分配管脚,对照SmartSOP实验箱的管脚分配说明书,我们给所需输

入输出端分配管脚,如图5-1所示。

图5-1 电路管脚分配表

23

最后点击Tools->Programmer->Start,成功下载到FPGA中。实验箱最终的显示结果如图5-2所示。拨动开关K1、K2、K3、K4、K5、K6、K7、K8也成功实现清零、快速校分、快速校时、校星期、闹钟设定显示、闹钟设时、闹钟设分、12/24小时显示模式切换的功能。故本次实验结果是比较成功的。

图5-2 最终显示结果

二、结论

2.1 实验结果

不论是波形仿真结果还是实验箱实际调试结果都是符合设计要求的。

(1) 在一般情况下能准确的按照1Hz的速度从00:00:00到23:59:59计时,能准确进位

和清零,并经过24个小时星期数加1;

(2) 拨动清零开关K1,时分秒恢复到0,星期数恢复到1,表示星期一;

(3) 拨动保持开关K2、3,当全为1时,时分秒全部暂停计数,显示结果稳定地停在所

需的时间点出;

(4) 拨动校分开关K2,分显示位以2Hz的速度计数,时、秒暂停计数; (5) 拨动校时开关K3,时显示位以2Hz的速度计数,分、秒暂停计数; (6) 拨动校星期开关K4,星期显示位以1Hz的速度计数;

(7) 拨动闹钟设定显示开关K5,为0时,数码管显示数字钟的时间值,为1时,数码

管显示设定的闹钟时间值;

(8) 拨动闹钟设时开关K6,闹钟时以1Hz的速度计数; (9) 拨动闹钟设分开关K7,闹钟分以1Hz的速度计数;

(10) 拨动小时模式开关K8,为0时,以24小时模式显示,为1时,以12小时模式显

示;

(11) 系统具有整点报时功能,当时钟计到59’53”时开始报时,在59’53”, 59’55”,59’

57” 时报时频率为500Hz,59’59”时报时频率为1KHz;

(12) 系统具有闹钟响铃功能,当时钟的时分和设定的闹钟时分一样时,蜂鸣器按照设定

的旋律响铃。

(13) LED点阵能正常工作,但是由于串入数据的行列信息排练问题,LED点阵未能显

24

本文来源:https://www.bwwdw.com/article/87i.html

Top