您好,欢迎来到抵帆知识网。
搜索
您的当前位置:首页数字跑表

数字跑表

来源:抵帆知识网


清华大学 信息工程学院

课程设计报告书

题目: 数字跑表

课 程: 数字系统设计 专 业: 电子信息科学与技术

班 级: 学 号: 学生姓名: 指导教师:

2014年 6月 20日

目录

1简介 ............................................................................................................................................... 4

1.1任务的提出 ........................................................................................................................ 4 1.2方案论证 ............................................................................................................................ 4 2总体设计........................................................................................................................................ 5

2.1整体方案设计和功能分割 ................................................................................................ 5 2.2计时电路 ............................................................................................................................ 5 3详细设计及仿真 ............................................................................................................................ 7 3.1各功能模块的设计和实现 .................................................................................................... 7

3.1.1控制模块 ................................................................................................................ 7 3.1.2计时器模块 ........................................................................................................ 8 3.1.3时基分频器模块 .................................................................................................... 9 3.2软件设计 .......................................................................................................................... 10 4总结 ............................................................................................................................................. 11 5总程序.......................................................................................................................................... 12 参考文献......................................................................................................................................... 15

摘要

本设课程设计是基于FPGA的数字跑表的设计,利用VerilogHDL语言和QuartusII软件以及FPGA实验操作平台来实现的。本论文的重点是用硬件语言VerilogHDL来描述数字跑表,偏重于软件设计。大致内容是首先简单介绍了EDA的现状和前景VerilogHDL语言特点,应用平台FPGA,之后阐述了数字跑表的设计思想和大体的设计流程,最后进入本设计的核心设计部分,用VerilogHDL语言设计数字跑表电路,着重对各个模块进行了详细的分析和说明。

关键词:Verilog、HDL语言、QuartusII软件、数字秒表

1简介

1.1任务的提出

Verilog HDL语言是1983年GDA公司的Phil Moorby首创的,之后Moorby有设计了Verilog-XL仿真器获得很大成功,也使得Verilog HDL语言得到发展和推广。Verilog HDL语言是在C语言的基础上发展而来的。从语法结构上看,Verilog HDL继承和借鉴了C语言的很多语法,两者有许多的相似之处,但Verilog HDL作为一种硬件描述语言,还是有本质的区别。即可适于可综合的电路设计,也可胜任电路和系统的仿真;能在多层次上对所设计的系统加以描述,从开关级、门级,寄存器传输级到行为级等都可以担任,而且没规模;灵活多变的电路描述风格,可进行行为描述,也可进行结构描述等;应用十分的广泛。 QuartusⅡ软件是Atlera的CPLD/FPGA集成开发软件,具有完善的可视化设计环境,并具有标准的EDA工具接口,基于QuartusⅡ进行EDA设计开发需要以下步骤:设计输入、编译、仿真、编程与验证等。

根据设计要求,首先对数字跑表进行结构和功能的划分。计数器部分设三个输入端,分别为时钟输入(CLK),复位(CLR)和启动/暂停(PAUSE)按键。复位信号高电平有效,可对跑表异步清零;当启动/暂停键为低电平时,跑表开始计时,高电平时暂停,变低后在原来的数值基础上继续计数。然后计数器的每个位的值赋给六选一数据选择器,数据选择器选择的位值再赋给七段数码管译码器,这样就可以显示数字了。

1.2方案论证

本字跑表首先要从最低位的百分秒计数器开始,按照系统时钟进行计数。计数至100后向秒计数器仅为,秒计数器一百分秒计数器的进位位为时钟进行计数。计数至60后向分计数器进位,分计数器以秒计数器的进位位为时钟进行计数。 数字跑表巧妙地运用进位位作为时钟来 减少计数的位数。如果统一使用系统时钟作为计数时钟,那秒计数器将是一个6000进制的计数器,额分计数器将是一个3600000进制的计数器。这将极大的浪费FPGA的逻辑资源。而使用进位位作为计数时钟,只需要一个100进制的计数器和两个60进制的计数器。

在实际的设计中,为了是计数器更加简单,计数器使用高低位两个计时器来实现。100进制计数器分别是最高位10进制计数器,地位10进制计数器,60进制计数器分别是高6进制计数器,低位10进制计数器。这样整个数字跑表使用6个计数器来实现。

同时由于10进制计数器重复使用了5次,可以使用的模块实现十进制计数器,这样就可以通过模块复用来节省整个模块使用的资源。

数字跑表提供了清零为CLR和暂停位PAUSE,百分秒的时钟信号可以通过系统时钟分频提供。分频至1/100s,即可实现真实的时间计数。详细的时钟分频设计渎职可以参考相关的资料实现。

代码中端口信号的定义: CLK:时钟信号 CLR:异步复位信号 PAUSE:暂停信号

MSH、MSL:百分秒的高位和低位 SH、SL:秒信号的高位和低位

MH、ML:分钟信号的高位和低位

2总体设计

2.1整体方案设计和功能分割

根据设计要求,对数字跑表进行结构和功能的划分。计数器部分设三个输入端,分别为时钟输入(CLK),复位(CLR)和启动/暂停(PAUSE)按键。复位信号高电平有效,可对跑表异步清零;当启动/暂停键为低电平时,跑表开始计时,基于FPGA的数字跑表的设计 高电平时暂停,变低后在原来的数值基础上继续计数。然后计数器的每个位的值赋给六选一数据选择器,数据选择器选择的位值再赋给七段数码管译码器,这样就可以实现显示当前数字。

按照自顶而下的设计方法数字跑表的功能分割,如下图:

功能分割图

2.2计时电路

计时电路的作用是计时,计时的一般方法是对时钟脉冲进行计数。本设计在外部提供了1kHzs时钟,计时精度是1ms。根据精度要求,需要设计分频器,对时钟信号进行10分频,产生周期为10ms的时基信号。

时基信号由时基分频器模块产生。

显示电路的作用是将计时值显示在数码管上。计时电路产生的计时值通过BCD/七段译码后,驱动LED七段数码管。计时显示电路存在一个方案选择的问题,即采用并行显示还是扫描显示,这关系到器件的资源利用。

并行显示同时驱动6个数码管,它需要同时对6组BCD数据进行译码并输出6组LED七段驱动信号,需要较多的内部逻辑和I/O资源。以ispLSI器件为例,驱动6个数码管的7个显示段,共需要42(7*6)个I/O引脚;另外还需要6个BCD/七段译码器,共需要12(6*2)

个GLB。

采用扫描显示则每次只驱动一位数据,各位数据轮流进行显示;如果是扫描的速度足够快,由于人眼存在视觉残留现象,看不到闪烁。扫描显示的资源少。 设计中采用扫描显示的方式,由于是扫描显示每次只有一位视觉进行译码和输出,所以可以共享BCD/七段译码器和七段驱动信号输出引脚。同样用ispLSI器件实现,数码管七段驱动信号需要7个输出引脚,另外还要6个位驱动信号,共需要13个I/O引脚。扫描显示电路可以继续分割为BCD译码器和数据选择器两个子模块。

下面确定模块之间的接口关系,各模块的接口信号说明如下:

计时控制器:计时控制器的输入信号时启动、暂停、和清零信号。为了方便,将启动和暂停功能设置在同一个案件上;按一次是启动,按第二次是暂停,按第三次则是继续,以此类推。所以计时控制器共有两个开关输入信号,记启动/暂停和清零。计时器的输出信号为计数允许/保持信号和清零信号。

计时电路:计时电路的输入信号为1kHz时钟、计时允许/保持信号和清零信号;输出为10ms,100ms,s,min的计时数据。它的下一级模块的接口信号如下: 1、时基电路大的输入信号频率为1kHz,输出时钟周期为10ms。

2、计数器的输入信号为计数允许信号、清零信号和1kHz时钟,输出为10ms,100ms,s,min的计时数据。

显示电路:显示电路的输入信号为计时器的10ms,100ms,s,min计时数据。输出为七段译码驱动信号和位选择信号。

3详细设计及仿真

3.1各功能模块的设计和实现

自顶而下完成各层次的设计描述,数字跑表可以划分为5个功能模块:顶层模块、计时模块、时基分频器模块、数据选择模块、数码管显示模块。本设计中部分模块都用原理图和VerilogHDL语言两种方法设计。以VerilogHDL语言设计为主。 顶层模块 顶层模块只说明功能的分配、内部功能块和对外接口关系,功能模块实际的逻辑功能和具体的实现由下一层模块描述。

3.1.1控制模块

RESET端为全局清零按钮,接到控制模块和计时模块的清零端,负责将计数器清零。当RESET为低电平时,控制模块和总计数器模块清零,跑表重新开始工作。与门可控制时钟信号是否被输出到下一级。START_STOP为启动\\暂停按钮,当跑表为START状态时CLK端为高电平,QA为1,时钟信号输出,当跑表为STOP状态时CLK端为低电平,QA为0,时钟信号不输出,从而实现开始和暂停的功能。 电路图如下:

仿真波形:

3.1.2计时器模块

PAUSE为低电平时开始计数,百分秒低位自加一,加到九时归零,百分秒高位自加一,加到九时归零,且向秒位发出一个高电平,秒低位自加一,加到九时归零,秒高位自加一,且向分位发出一个高电平,分低位自加一,加到九时清零,且向分高位发出一个高电平,分高位自加一,加到六时清零。PAUSE为低电平时暂停。电路图如下:

仿真波形:

100进制计数器(count100):

仿真波形:

60进制计数器(count60):

仿真波形:

3.1.3时基分频器模块

时基分频器要求对1kHz的时钟(此设计的输入时钟信号)分频,产生100Hz(10ms)时基信号输出,此时基信号即为计时器的输入信号。基分频器可由十进制计时器设计。电路图如下所示:

仿真波形:

3.2软件设计

以上分析了数字跑表的功能和性能参数要求,确定了数字跑表的主要功能块、内部连接关系及I/O关系,各模块的连接如下图所示。

4总结

这一次的设计给了我很深的体会,感觉自己学的东西的实用的地方。以前总是觉得自己学的知识都只是纸上谈兵,这一次的数字跑表的设计让我学到了很多。在上HDL的实验的时候,我们做的实验也做过数字跑表,但是那是用单片机做的,连线什么的也简单,我的主要工作知识编程而已。而这一次我做的数字跑表用的是HDL的知识,没有用到程序的部分,也实现了用单片机同样的功能。感觉自己以前学的知识还有很多不足的地方,思维被局限在很小的范围里,而这一次的设计也开拓了我的眼光,让我了解。其实知识都是想通的很多地方都可以联系起来,让我在课堂之外也能学到很多的知识,而且自己一个人完成一项事情的乐趣也是不错的。然而在这一次的学习中,我也感到了自己的很多不足,自己学知识在以前是不扎实的,也缺乏把知识都联系到一起的能力,这一次的设计对我自己而言是很重要的一次体验。在我设计数字钟的过程中,也很多地方是不足的,我只是设计了一个能实现基本功能的数字钟而已,和现在市场上的数字钟在功能上是有很多差距的。可以说片这一次设计的体验对我而言是很重要的,也为我以后的毕业设计做了一个很好的铺垫,给了我更多的信心。

5总程序

CLR: 为异步复位信号; PAUSE: 为暂停信号; MSH,MSL:百分秒的高位和低位; SH,SL: 秒信号的高位和低位; MH,ML: 分钟信号的高位和低位。*/

module paobiao(clk,clr,seg,pause,msh,msl,sh,sl,mh,ml,ss,clk1); input clk,clr,clk1; input pause;

output[3:0] msh,msl,sh,sl,mh,ml,ss; reg[3:0] msh,msl,sh,sl,mh,ml;

reg cn1,cn2;//cn1为百分秒向秒的进位,cn2为秒向分的进位

output [7:0]seg;// seg是数码段选择;wei是选择需要显示的数码管 reg [7:0]seg; reg[3:0]coder;

reg[15:0]count; reg[2:0]ss;

//百分秒计数进程,每计满100,cn1产生一个进位1 always@(posedge clk or posedge clr) begin

if(clr)begin//异步复位

{msh,msl}<=8'h00; cn1<=0; end

else if(!pause) //PAUSE为0时正常计数,为1时暂时计数 begin

if(msl==9) begin msl<=0; if(msh==9)

begin msh<=0;cn1<=1;end else msh<=msh+1; end else begin

msl<=msl+1;cn1<=0; end end end

//秒计数进程,每计满60,cn2产生一个进位 always@(posedge cn1 or posedge clr) begin

if(clr) begin //异步复位

{sh,sl}<=8'h00;

cn2<=0; end

else if(sl==9) //低位是否为9 begin sl<=0;

if(sh==5) begin sh<=0;cn2<=1;end else sh<=sh+1; end else

begin sl<=sl+1;cn2<=0;end end

//分钟计数进程,每计满60,系统自动清零 always@(posedge cn2 or posedge clr) begin

if(clr)begin

{mh,ml}<=8'h00; end //异步复位 else if(ml==9)

begin ml<=0;

if(mh==5) mh<=0 else mh<=mh+1; end

else ml<=ml+1; end

//数据选择器

always@(posedge clk1) begin

if(ss>3'd7) ss<=1'b0;

else ss<=ss+1'b1; end

always@(posedge clk1) begin

case(ss)//选择需要的显示数据 3'd5:coder<=msl;

3'd4:coder<=msh; 3'd3:coder<=sl;

3'd2:coder<=sh; 3'd1:coder<=ml; 3'd0:coder<=mh; 3'd6:coder<=3'd0; 3'd7:coder<=3'd0; endcase

end

//七段数码管译码器

always@(coder)//译码...把值赋给数码管显示 begin

case(coder)

4'd0:seg=7'b00111111;// 4'd1:seg=7'b00000110;//

4'd2:seg=7'b01011011; 4'd3:seg=7'b01001111; 4'd4:seg=7'b01100110; 4'd5:seg=7'b01101101; 4'd6:seg=7'b01111101; 4'd7:seg=7'b00000111; 4'd8:seg=7'b01111111; 4'd9:seg=7'b01101111; endcase end Endmodule

参考文献

[1] 朱如琪. FPGA设计实践教程[M].北京: 科学出版社,2009.

[2] 王金明. 数字系统设计与Verilog HDL[M]. 北京:电子工业出版社,2010. [3] 黄智伟. FPGA系统设计与实践[M]. 北京: 电子工业出版社,2008.

[4] 李宥谋. 基于Verilog的FPGA设计基础[M]. 西安: 西安电子科技大学出版社,2009

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务