数字跑表课程设计_第1页
数字跑表课程设计_第2页
数字跑表课程设计_第3页
数字跑表课程设计_第4页
数字跑表课程设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录

一:设计目的.............................................2

二:设计方案.............................................2

1.方案论证..........................................2

2.模块电路设计......................................2

3.计时电路..........................................3

4.计数器模块........................................3

5.数字跑表的流程图..................................3

6.控制信号的作用...................................4

三:设计总体框图.........................................5

四:硬件电路设计与程序设计..............................6

1.设计思路.........................................6

2.控制模块..........................................6

3.十进制计数模块....................................6

4.六进制计数模块....................................7

5.数码管扫描模块....................................7

6.七段译码显示模块..................................8

五:程序设计如下.........................................8

六:编译仿真及硬件测试..................................14

1.编译仿真..........................................14

2.顶层设计图.......................................15

3.仿真后得到如下仿真波形图.........................15

七.硬件实验调试.......................................16

1.开始计时..........................................16

2.暂停..............................................16

3.清零..............................................17

八.实验心得及体会.....................................18

九.参考文献.............................................18

一:设计目的

(1)学会利用QuartusH和所学的数字电路知识,搭建复杂一点的数字电路

或系统。

⑵学会使用EDA的程序语言FPGA/CPLD设计数字跑表,设计主要包括

功能分析、方案设计和电路测试几个步骤。

二:设计方案

1.方案论证

数字跑表设三个输入端,分别为时钟输入(CLK),复位(CLR),启动、

暂停按键(PUSE)o复位信号高电平有效,可对跑表异步清零;当启动、暂

停键为低电平时跑表开始计时,为高电平时暂停,变低后在原来的数值根底

上继续计数。数字跑表的结构示意图如下:

》百分秒

CLK

CLR

数字跑表秒

PAUSE

》分

图1跑表示意图

2•模块电路设计

数字跑表实际上为计数器,数据选择器,七段数码管译码器等模块构成,

核心模块应为计数器,其次为暂停控制和清零控制。

3.计时电路

计时电路又分为百分秒计时电路、秒计时电路和分计时电路三个模块。

百分秒计时电路是一个100进制的计数器,以100Hz输入信号作为计数时钟,

其进位信号作为秒计数电路的计数时钟,当秒计数器计满时,产生的进位信

号又作为分计数电路的计数时钟。电路的暂停和复位信号用于控制计时的开

始、停止和清零。

4,计数器模块

数字跑表的计时器功能是,当PAUSE为低电平时开始计数,百分秒低位

自加一,加到九时归零,百分秒高位自加一,加到九时归零,且向秒位发出

一个高电平,秒低位自加一,加到九时归零,秒高位自加一,加到五时归零,

且向分位发出一个高电平,分低位自加一,加到六时系统清零。

5.数字跑表的流程图

数字跑表主要由计时器,七段数码管译码器组成。流程框图如下图。

图2程序流程图

三:设计总体框图

图3设计总体框图

四:硬件电路设计与程序设计

1.设计思路

数字秒表电路计时范围的要求为0.0「1小时、即59分59.99秒,所以这

就需要获得一个比拟精确的计时基准信号,此基准佶号可以由CPLD/FPGA试

验箱提供的频率具体设定分频器。分频器在实验中显得很重要,因为如果分

频的要求达不到,便会出现诸如缺少数字位、计时不精确等实验现象。六进

制计数器针对10秒和10分位,十进制针对0.01秒、0.1秒、1秒和1分位,这

是根据不同的计数进位而设定的。电路还需要一个扫描电路,对每一位的计

时结果进行不断的扫描,扫描的速度要大于输入信号的频率,防止出现扫描

滞后、显示的结果不是当前结果的现象。扫描的同时还需要一个位码电路。

位码电路的作用是将数字秒表的各位选中,以便七段数码管的显示。

2,控制模块

为了方便控制所有计数模块清零和使能功能需要设计一个控制模块,所

以该模块的功能就是控制什么时候发出置零信号和使能信号来控制计数器

工作。

其模块图如下列图所示:

KONGZHI

CLKCLCT

>-RESETENT

o

Clk为开始/暂停功能按钮(下降沿有效),初次按下它C1C(控制计数

器清零)为低电平,en(使计数器计数)为高电平;再次按下它时,clc保

持为低电平,en跳变为低电平,如此重复循冰。Reset为清零按钮(下降沿

有效),无论何时按下它时,clc跳变为高电平,en变为低电平,以到达使计

数器清零的目的。

3.十进制计数模块

此模块的功能就是完成十进制的计数功能,同时输出进位信号。

其模块图如下列图所示:

CNC1。

>—CLKDROUTC3..<3]

X-RSTCOUT-X

X-EN

Clk为时钟信号输入端,rst为计数器清零端(高电平有效),en为计数

器使能端(高电平有效);daout为数据输出端,cout为进位信号输出端。

4.六进制计数模块

此模块的功能就是完成六进制的计数功能,同时输出进位信号。

CNT6

>-CL.KDAOUT[:.O]

RSTCOUT

X-EN

其端口功能同十进制计数模块,在次不再重复诉说。

5.数码管扫描模块

该模块的功能是选择各个计数端口来的数据,当相应的数据到来时,数

据选择器选择数据后输出给七段译码器,同时输出位选信号,再接入到实验

箱上的8字数码显示电路上就可显示了。

其模块图如下列图所示:

XUANZE

CUK

MSECXE3..0]

MSEC2E3..O]DAOUTC3..O]

SECXC3..O]SEL[2.・O]

SEC2[3..O]

MINUTEXC3..O]

MINUTE2C3.•O]

Clk为时钟信号输入端,msecl……minute2是各个计数端口来的数据的

输入端,deout为数据选择器选择数据后输出端,sei为位选信号输出端。

6.七段译码显示模块

该模块的功能就是把输入的四位二进制数据转换为七段数码管的显示

编码,再输入到七段数码管中显示出数据。

其模块图如下列图所示:

DECL7s

.6LED7S16..

五:程序设计如下

分频计的源程序代码

LIBRARYIEEE;

USEIEEE.STDLOGIC1164.ALL;

ENTITYFPIS

PORT(CLK;INSTD_LOGIC;

NEWCLK:OUTSTD_LOGIC);

ENDFP;

ARCHITECTUREARTOFFPIS

SIGNALCNTER:INTEGERRANGE0TO10#29999#;

BEGIN

PROCESS(CLK)IS

BEGIN

IFCLKEVENTANDCLK='「THEN

IFCNTER=10#29999#THENCNTER<=0;

ELSECNTER〈二CNTER+1;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CNTER)IS

BEGIN

IFCNTER=10#29999#THENNEWCLK<=(1,;

ELSENEWCLK<='0';

ENDIF;

ENDPROCESS;

ENDART;

六进制计数器的源程序代码

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYTN6IS

PORT(CLK:INSTD_LOGIC;

CLR:INSTD.LOGIC;

ENA:INSTD_LOGIC;

CQ:OUTINTEGERRANGEOTO15;

CARRY_OUT:OUTSTD_LOGIC);

ENDTN6;

ARCHITECTUREARTOFTN6IS

SIGNALCQI:INTEGERRANGEOTO15;

BEGIN

PROCESS(CLK,CLR,ENA)IS

BEGIN

IFCLR='1*THENCQI<=0;

ELSIFCLK'EVENTANDCLK=TTHEN

IFENA=TTHEN

IFCQI<5THENCQI<=CQI+1;

ELSECQI<=0;ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CQI)IS

BEGIN

IFCQI=5THENCARRY_OUT<=T;

ELSECARRY_OUT<=,0';ENDIF;

ENDPROCESS;

CQ<=CQI;

ENDART;

十进制计数器源程序代码

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYTN1()IS

PORT(CLK:INSTD.LOGIC;

CLR:INSTD_LOGIC;

ENA:INSTD_LOGIC;

CQ:OUTINTEGERRANGEOTO15;

CARRY_OUT:OUTSTD_LOGIC);

ENDTN10;

ARCHITECTUREARTOFTNIOIS

SIGNALCQI:INTEGERRANGEOTO15;

REGIN

PROCESS(CLK,CLR,ENA)IS

BEGIN

IFCLR='1'THENCQI<=();

ELSIFCLKEVENTANDCLK=TTHEN

IFENA=TTHEN

IFCQI<9THENCQI<=CQI+1;

ELSECQI<=0;ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CQI)IS

BEGIN

IFCQI=9THENCARRY_OUT<=T;

ELSECARRY_OUT<=,0,;ENDIF;

ENDPROCESS;

CQ<=CQI;

ENDART;

扫描电路的源程序代码

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STDLOGICUNSIGNED.ALL;

ENTITYSCANIS

PORT(scanclk:instd_logic;

count!,Count2,count3,count4,count5,count6:instd_logic_VECTOR(3

DOWNTO0);

S:OUTSTD_LOGIC_VECTOR(2DOWNTO0);

DOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO()));

ENDENTITYSCAN;

ARCHITECTUREDATAFLOWOFSCANIS

SIGNALSS:STD_L0GIC_VECT0R(2DOWNTO0);

BEGIN

PROCESS(scanclk)

begin

IF(scanclk'EVENTANDscanclk二T)THEN

IF(SS=',101',)THEN

SS<=,,000,';

ELSE

SS<=SS+1;

ENDIF;

ENDIF;

ENDPROCESS;

S<=SS;

DOUT<=COUNT1WHENSS=,'OOOnELSE

COUNT2WHENSS="001"ELSE

COUNT3WHENSS=H010"ELSE

COUNT4WHENSS="011”ELSE

COUNT5WHENSS=H100"ELSE

COUNT6;

ENDDATAFLOW;

位码选择电路的源程序代码

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYYIMAIS

PORT(INP:INSTD_LOGIC_VECTOR(2DOWNTO0);

OUTP:OUTBIT_VECTOR(7DOWNTO0));

ENDYIMA;

ARCHITECTUREARTOFYIMAIS

BEGIN

OUTP(0)<=TWHENINP="OOO"ELSEO;

OUTP(1)<=TWHENINP=”0()1”ELSEO;

OUTP(2)v=TWHENINP=n010HELSEr0,;

OUTP(3)<=TWHENINP="011"ELSE'O';

OUTP(4)v=TWHENINP=n100HELSE'O';

OUTP(5)<=4'WHENINP="10r'ELSEr0,;

OUTP(6)<=*1'WHENINP="110"ELSE'O';

OUTP(7)<=,rWHENINP="111"ELSE'O';

ENDART;

七位数码管显示电路的源程序代码

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDELEDIS

PORT(NUM:INSTD_LOGIC_VECTOR(3DOWNTO0);

A,B,C,D,E,F,G:OUTSTD.LOGIC);

ENDDELED;

ARCHITECTUREARTOFDELEDIS

SIGNALLED:STD_LOGIC_VECTOR(6DOWNTO0);

BEGIN

PROCESS(NUM)

BEGIN

CASENUMIS

WHEN“0000"=>LED<="1111110”;

WHEN"000lu=>LED<="0110000";

WHEN“0010”=>LED<=”1101101”;

WHENn00ir'=>LED<="1111001”;

WHEN“0100"=>LED<="0110011”;

WHEN"OlOr1=>LED<="1011011”;

WHEN,,0110"=>LED<="1011111";

WHEN"01IT'=>LED<="11lOOOO*';

n

WHENl000"=>LED〈二"1111111”;

WHEN“1001”=>LED〈二"1111011”;

WHEN”10100=>LED<="1110111”;

WHENn10H"=>LED<="0011111”;

WHEN"1100"=>LED<="1001110";

WHEN'UlOl"=>LED<="0111101”;

WHEN"lllO1'=>LED<=n100IHT';

WHENOTHERS=>LED<=n1000111**;

ENDCASE;

ENDPROCESS;

A<=LED(6);B<=LED(5);C<=LED(4);D<=LED(3);E<=LED(2);F<=LED(1);G<

=LED(0);

ENDART;

六:编译仿真及硬件测试

L编译仿真

当完成了以上秒表系统各个模块的VHDL设计,就可以使用QuartusII对

本设计进行编译和仿真。首先使用文本编辑器输入本设计的所有模块的源程

序,先对各个模块进行编译和仿真,当所有模块全部编译通过和仿真功能正

确后,就可以利用图形编辑工具完成顶层设计,其设计图如顶层设计图所示。

然后再对图形编辑器编辑出的顶层设计图进行全程编译,通过之后就可以进

行系统的整体仿了。其中各个模块的仿真已在模块设计中完成,在此从略,

下面只说明系统的整体仿真。

2.顶层设计图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论