FPGA电子秒表综合实验报告

一、   实验名称:

      用VHDL实现基于FPGA的电子秒表

二、   实验目的:

1.      掌握基本的VHDL语言,可以实现简单的程序编写

2.      对系统设计原理、单元电路设计方法及仿真技术有所了解

3.      学会使用ISE软件与Modelsim仿真软件

三、   实验内容:

(一)   实验任务:

实验任务

(二)   电路设计:

?  分频器:对晶体振荡器产生的时钟信号进行分频,产生时间基准信号;

?  计数器:对时间基准脉冲进行计数,完成计时功能;

?  数据锁存器:锁存数据使显示保持暂停;

?  控制器:控制计数器的运行、停止以及复位,产生锁存器的时能信号;

?  扫描显示与控制电路:包括扫描计数器、数据选择器和七段译码器,控制八个                                  数码管以扫描方式显示记时结果;

?  按键消抖电路:消除按键输入信号抖动的影响,输出单脉冲。

QQ图片20131010160853.jpg

四、   实验仪器与软件

1.ISE软件,界面如下

未命名1

该软件编程步骤:创建工程项目;设计输入;功能仿真;设计综合;设计实现;生

成编程文件;配置目标器件。

2..Modelsim软件,界面如下:

未命名2

3.FPGA实验电路板:

未命名3

五、   实验过程:

1.      程序编写

该程序采用采用嵌套结构编写,先设计一个主程序,然后再分步写出分频器、按键消抖、按键控制、计数器、锁存器、扫描显示几个子模块。首先设置了clk,start_stop,split_reset三个输入变量,分别表示时钟信号、开始停止控制以及分段复位控制;另设置了display,dig,ncs三个输出变量,分别表示显示输出,位选和接地。

2.  显示电路部分:

七段显示译码器中小数点位由于都设置为‘1’,所以都不亮,按键控制由于管脚设置的约束,kye-1代表开始停止,key-2代表分段复位。

六、   实验结果

1.分频器的作用是把48Mhz的晶振信号分频为1khz的标准时钟信号,分给按键消抖、            计数器、锁存器和扫描显示部分作为时钟输入。

分频器仿真:

未命名8

2.按键控制电路的作用是由按键输入信号,输出计数器的使能、清零信号,和锁存器的使能信号,以此来控制计数器的运行、停止和清零,还有锁存器的运行和停止。用case语句将3个输出的初始状态state按照输入的不同,转换到下个状态new_state。然后写另一个进程,当标准时钟信号到来时,把处理完的信号new_state赋给state作为输出。状态图如下:

状态图

按下开始停止键,将开始停止控制键设置为‘1‘,开始计时,保持1000ns后松开开始键,计时仍在进行中,延续1ms。

未命名9

    再次按下开始停止键,保持1000ns后松开,此时暂停计时,保持1ms。

未命名10

再按下分段复位键复位,保持1000ns后松开,此时处于复位状态,延续1ms。未命名11

最后再开始计时,1ms后按下分段复位键分段,保持1000ns后松开,此时仍在计时只是在数码显示管上不显示走秒,1ms后再按下此键,则正常计时。

未命名12

3.计数器是秒表的核心部分,作用是对时钟信号进行计数,输出各位的计数结果,从而完成计时功能。计数器有3个输入:100hz的时钟信号、清零、使能,6个结果输出q1,q2,q3,q4,q5,q6。由于共需要输出的计数结果为6个:十毫秒、百毫秒、秒、十秒、分、十分,而其中十秒和十分为6进制,其他为10进制,故需4个10进制计数器和2个6进制计数器按顺序级联。计数器部分电路图如下:

未命名210进制计数器是由模10的加法器和触发器组成,原理同分频器,只是在加法器中用if语句设定了只有当进位输入信号为‘1’时,加法器才进行加1的工作,否则不加1而直接把state赋给new_state。在触发器中还设置了清零输入clr的功能,即在clr=‘1’时,将state的所有位全变0。最后对进位输出进行定义:只有当进位输入carry_in=‘1’而且state=9的时候,进位输出carry_out=‘1’,由此把6个计数器级联起来。6进制计数器的设计只需把10进制计数器的模10改为模6即可,但输出的计数结果信号必须仍为4位,将输出位数统一起来,减少后面的麻烦。

仿真结果如下:

q1代表10ms位,当q1计数到9时进一位。

未命名1

q2代表100ms位,当q2计数到9时进一位。

未命名3

q3代表秒个位,当q3计数到9时进一位。

未命名4

q4代表秒十位,当q4计数到5时进一位。

未命名5

q5代表个分位,当q5计数到9时进一位。未命名6

54.锁存器的作用是把数据锁存使显示保持暂停。有6个由计数器出来的输入,和6个输出,还有一个使能端。其原理很简单,就是一个触发器,当使能信号=‘1’时,触发器工作,把计数器的6个输出d1-d6赋给另外6个变量q1-q6,作为显示部分的输入;而当使能信号=‘0’时,不作任何赋值,也就是使显示部分的输入信号保持不变,产生显示保持暂停的效果。结构如右图:

5.显示译码部分的作用是控制8个数码管以扫描的方式显示计数输出结果。由6个由锁存器出来的输入,2个输出,一个时钟输入组成。扫描计数器是一个模8计数器,产生扫描信号,同时也是选择8个数码管的信号。数据选择器根据扫描信号来控制6个计数结果的轮流输出,另外还有两个输出为横杠。七段译码器是将输入的bcd码转换成控制数码管中的7段LED的信号,显示数字0-9以及横杠。

先将d1—d6分别设为1,2,3,4,5,6。由下面的仿真结果,dig为2,5时,表示横杠位,对应七段译码管显示为“11111101”; dig为0时,选择d1输出,输出结果“10011111”,同设置的d1为1一致;dig为1时,选择d2输出,输出结果“00100101”,同设置的d2为2一致;dig为3时,选择d3输出,输出结果“00001101”,同设置的d3为3一致;dig为4时,选择d4输出,输出结果“10011001”,同设置的d4为4一致;dig为6时,选择d5输出,输出结果“01001001”,同设置的d5为5一致;dig为7时,选择d6输出,输出结果“01000001”,同设置的d1为1一致。

未命名7

七、实验结论

   本实验通过用VHDL程序编写,在ise软件中综合,并用modelsim软件仿真,最后下载到FPGA实验板上实现了秒表的功能,测试了程序的正确性。

八、实验心得

   通过本次试验,收获良多,学会了如何运用VHDL语言编写程序,基本掌握了运用modelsim软件进行仿真,以及设计组合和时序电路的方法,进一步丰富了自己编程方面的知识,为以后的工作打下了基础。

 

第二篇:60s电子秒表综合性实验报告

重庆交通大学

信息科学与工程学院

综合性实验报告

姓    名:   X   X    学   号XXXXXXXXXX

班    级:                                

实验项目名称:     60s电子秒表          

实验项目性质:      设计性实验           

实验所属课程:    数字电子技术基础       

实验室(中心):              XXXX            

指 导 教 师 :              XXX            

实验完成时间:    2011    12    01 


 

一、实验目的

1.熟悉计数器的工作原理及特点;

2.学习设计N进制加法计数器的方法;

3.掌握电子秒表的设计方法。

二、实验内容及要求

1.实验内容:

    用两片74161芯片和一些门电路设计一个60秒的电子秒表,熟悉计数器的工作和特点,并观察实际电路工作情况。

2.实验要求:

1)自己设计一个60秒的电子秒表;

2)完成实验报告,附上电路图及仿真结果;

3)总结数字电路设计的一般方法,掌握常见的数字电路设计的软件;

4)总结电子秒表的设计方法。

三、实验原理

1、          原理:

根据实验要求可知,秒表的低位是10进制,高位是6进制,使74161处于计数状态,分别用与非门反馈到74161中的RD'端,当低位达到1001的时候,低位显示9,下一个状态为0,而向高位进1,则通过与门将低位输出端为1001的信号反馈到控制高位的74161的EP.ET端,使得芯片2(控制高位的)的状态翻转一次,最终在显示译码器上观察到60的秒表。

2、          原理图:

四、实验仪器、材料

1、数字逻辑电路实验箱       1个    

2、74161芯片               2片

3、7401、7408芯片        各1片

实验过程及原始记录(含原理图及必要的计算)

1、          实验仿真图:

如图电子秒表低位每次计数到9秒,与非门便有效使74161置零,所以下一个脉冲就会从0开始重新计数;当然此时与门也生效,使高位74161处于计数状态,下一个脉冲就会开始计数,由于高位74161只在与门电路生效时才处于计数状态,所以高位只在低位处于9之后有机会计数;当然高位已经将0110之后的状态置零使其为六进制,这样一来电路就会合作完成60s的循环以完成实验的要求。

2、          实验结果及分析

1)          实验结果:

当电路接入脉冲时,电路开始工作,电子秒表开始工作,开始计数。从00开始,低位每经过10s便置零,高位每经过6s便置零,直到59秒结束,等到下一个脉冲到来的时候,电子秒表又从00开始到59秒,以此循环。

2)          实验分析:

从00开始计时,低位的开始实现计数器功能,当达到9时,即1001的时候,将输出为1的端口通过与非门和与门分别反馈给芯片1的LD'端和芯片2的EP.ET端,使得高位进1,当高位ET.EP端为1的时候,高位实现计数器功能,最后使得秒表显示59,等到下一个CP到来,计数器归零,秒表开始从新计数。

六、实验体会

通过此次实验

1、          学会了电子秒表的设计方法及N进制计数器的设计方法;

2、          熟悉了计数器的工作原理及特点;

3、          更加熟悉了protues仿真软件的应用;

4、          激发了对数字电路的学习兴趣。

相关推荐