FPGA数字秒表设计Word下载.docx
- 文档编号:18166647
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:9
- 大小:269.58KB
FPGA数字秒表设计Word下载.docx
《FPGA数字秒表设计Word下载.docx》由会员分享,可在线阅读,更多相关《FPGA数字秒表设计Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
本文就是基于计算机电路的时钟脉冲信号、状态控制等原理设计出的数字秒表[1]。
秒表在很多领域充当一个重要的角色。
在各种比赛中对秒表的精确度要求很高,尤其是一些科学实验。
他们对时间精确度达到了几纳秒级别。
2设计要求
(1)能对0秒~59分59.99秒范围进行计时,显示最长时间是59分59秒;
(2)计时精度达到0.01s;
(3)设计复位开关和启停开关,复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。
设计由控制模块、时基分频模块,计时模块和显示模块四部分组成。
各模块实现秒表不同的功能
3数字秒表设计的目的
本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,对计算机系统中时钟控制系统进一步了解,掌握状态机工作原理,同时了解计算机时钟脉冲是怎么产生和工作的。
在掌握所学的计算机组成与结构课程理论知识时。
通过对数字秒表的设计,进行理论与实际的结合,提高与计算机有关设计能力,提高分析、解决计算机技术实际问题的能力。
通过课程设计深入理解计算机结构与控制实现的技术,达到课程设计的目标。
如上图所示,计时控制器的作用是控制计时。
计时控制器的输入信号是启动,暂停和清零。
为符合惯例,将启动和暂停功能设置在同一个按键上,按一次是启动,按第二次是暂停,按第三次是清零。
所以计时控制器共有2个开关输入信号,即启动/暂停和清零信号。
计时电路的输入信号、计数允许,保持和清零信号,输出为10Om、s1s和
min的计时数据。
时基分频器是一个分频器,产生100ms周期的脉冲.用于计时电路时钟信号。
显示电路为动态扫描电路。
用以显示min、1s,100ms信号。
5各模块实现
计时模块的作用是针对计时过程进行控制。
计时控制模块可用俩个按钮来完成秒表的启动、停止和复位。
时钟分频模块的作用把输入时钟信号变为分频输出信号。
计时模块执行计时功能,计时方法和计算机一样是对标准时钟脉冲计数。
它是由十进制计数器和六进制计数器构成,其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。
计时显示电路的作用是将计时值在LED数码管上显示出来。
计时电路产生的值经过BCD七段译码后,驱动LED数码管。
计时显示电路的实现方案采用扫描显示。
6仿真演示
7实验结果演示
5、程序
(1)分频模块:
modulefengpin(CLK,CLK1,CLK2);
//输入50MHz,输出分频到1Hz
inputCLK;
outputCLK1,CLK2;
regCLK1,CLK2;
reg[24:
0]counter1;
//中间变量counter定义为寄存器型
0]counter2;
parameterN1=500000;
//50_000_000;
parameterN2=2500;
always@(posedgeCLK)
begin
counter1<
=counter1+1'
b1;
//
if(counter1==N1/2-1)
CLK1<
=~CLK1;
counter1<
=0;
endcounter2<
=counter2+1'
//if(counter2==N2/2-1)begin
CLK2<
=~CLK2;
counter2<
end
endmodule
(2)六进制计数器:
moduleCNT6(CLK,RST,EN,CQ,DOUT);
inputCLK,EN,RST;
output[3:
0]DOUT;
outputCQ;
reg[3:
0]Q1;
regCQ;
assignDOUT=Q1;
always@(posedgeCLKornegedgeRST)begin
if(!
RST)Q1<
elseif(EN)
if(Q1<
5)Q1<
=Q1+1'
elseQ1<
=3'
b0000;
always@(Q1)
if(Q1==4'
h5)CQ=1'
b0;
elseCQ=1'
(3)十进制计数器:
moduleCNT10(CLK,RST,EN,CQ,DOUT);
inputCLK,EN,RST;
output[3:
outputCQ;
reg[3:
regCQ;
9)Q1<
=4'
always@(Q1)if(Q1==4'
h9)CQ=1'
elseCQ=1'
(4)二十四进制计数器:
moduleCNT24(CLK,RST,EN,COUT);
output[7:
0]COUT;
reg[7:
if(COUT[7:
4]!
=2)
if(COUT[3:
0]==4'
b1001)
COUT[7:
4]<
=COUT[7:
4]+4'
b0001;
COUT[3:
0]<
else
4];
=COUT[3:
0]+4'
b0001
b0011)
译码结果
case(count)
//选择扫描显示数据3'
d0:
disp_dat=d[31:
28];
//第一个数码管3'
d1:
disp_dat=d[27:
24];
//第二个数码管3'
d2:
disp_dat=4'
ha;
//第三个数码管3'
d3:
disp_dat=d[19:
16];
//第四个数码管3'
d4:
disp_dat=d[15:
12];
//第五个数码管3'
d5:
hb;
//第六个数码管3'
d6:
disp_dat=d[7:
//第七个数码管3'
d7:
disp_dat=d[3:
0];
//第八个数码管
//选择数码管显示位3'
dig_r=8'
b01111111;
//选择第一个数码管显示3'
b10111111;
//选择第二个数码管显示3'
b11011111;
//选择第三个数码管显示3'
b11101111;
//选择第四个数码管显示3'
b11110111;
//选择第五个数码管显示3'
b11111011;
//选择第六个数码管显示3'
b11111101;
//选择第七个数码管显示3'
b11111110;
//选择第八个数码管显示endcase
always@(disp_dat)begin
case(disp_dat)
//七段译码4'
h0:
seg_r=8'
hc0;
//显示04'
h1:
hf9;
//显示1
4'
h2:
ha4;
//显示24'
h3:
hb0;
//显示34'
h4:
h99;
//显示44'
h5:
h92;
//显示54'
h6:
h82;
//显示64'
h7:
hf8;
//显示74'
h8:
h80;
//显示84'
h9:
h90;
//显示94'
ha:
hbf;
//显示a4'
hb:
//显示b/*4'
hc:
hc6;
//显示c4'
hd:
ha1;
//显示d4'
he:
h86;
//显示e4'
hf:
h8e;
//显示f*/
6、原理图:
7、引脚定义:
8、实验总结
本系统设计用了现在EDA设计手段,基于FPGA采用VHDL语言编程实现数字秒
表的设计。
运用层次化设计方法,完成各电路模块的连接。
本数字秒表可用于体育比赛,计时精度大于1/100S,计时器能显示1/100S的时间,计时器的最长计时时间为1小时,显示的最长时问为59分59.99秒。
系统具有简单、工作稳定可靠等优点.具有一定的实际意义。
开始做设计时总是会犯一些错误,只有经过不停的改错不停的编译得到正确的程序说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。
在编程时,我充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一个模块的进行调就可以了,充分体现了结构化编程的优势。
在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。
但在验证过程中,也遇到了许许多多的困难,其结论与预期间的差距,其功能键复位、暂停,第一次按下去时为暂停,第二次为清零。
但使用时并没出现,第一次按下去时暂停了,但却不能正常显示;
当第二次按时却不能出现清零的状态。
在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。
用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法在数字系统设计中发挥越来越重要的作用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 数字 秒表 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)