一.实验目的
1.学习Quartus Ⅱ/ISE Design Suite软件的基本使用方法。
2.熟悉GW48系列或其他EDA实验开发系统的基本使用方法。
3.学习VHDL基本逻辑电路的综合设计应用。
二.实验内容
设计并调试好一个计时范围为0.01 s~1 h的数字秒表,并用GW48系列或其他EDA实验开发系统进行硬件验证,具体包括系统结构设计、VHDL程序设计、程序仿真与分析、逻辑综合分析、硬件逻辑验证等内容。
三.实验条件
开发软件:Quartus II
实验设备:GX-BICE-EDA/SOPC实验开发系统
芯片:北京革新GX-BICE-EDA/SOPC(EP3C55-FBGA484)
四.实验设计
总体设计:编写底层文件十进制计数器的源程序CNT10.VHD和六进制计数器的源程序CNT6.VHD,编写分频器的源程序CLKGEN.VHD,动态扫描的源程序CTRLS.VHD,动态计数的源程序DISPLAY.VHD,,由模块构成顶层电路数字秒表的源程序TIMES.VHD,其中底层和顶层电路均采用VHDL文本输入。
1、用4个CNT10和2个CNT6来表示数字进位,利用分频器进行分频
2、利用分频器对输入进行分频,将3M频率的进行分频至所需要的频率100HZ,因为要求为0.01~1h的数字秒表,所以要先获得周期为1/100的计数脉冲。利用四个CNT10和两个CNT6进行计数,利用动态扫描和动态计数的方式在数码管上显示,可以动态的显示数字变化,达到我们日常的秒表的功能。
图2 原理图
五.实验步骤
- 分析:利用quartus软件编写底层源程序:编写底层文件十进制计数器的源程序CNT10.VHD和六进制计数器的源程序CNT6.VHD,编写分频器的源程序CLKGEN.VHD,动态扫描的源程序CTRLS.VHD,动态计数的源程序DISPLAY.VHD,数字秒表的源程序DTTIMES.VHD
2、文件及工程的建立,用VHDL文件编辑好各个模块的源程序,工程编译观察工程是否实现
图5.1 编译程序结果图
3、工程仿真,建立仿真文件,观察仿真结果
对CLKGEN仿真:
图5.2 CLKGEN波形仿真图
对TIMES进行波形仿真:
图5.3 TIMES波形仿真图
4、芯片管脚的锁定:
选择硬件相关的芯片EP3C55F484并对程序进行引脚锁定,对应给的常用的引脚锁定图进行锁定。选择好按键和时钟的引脚锁定,其数码管以常用的进行锁定。
图5.4 引脚锁定图
5. 逻辑综合结果,查看程序RTL仿真图,熟悉整体电路状态。
图5.5 程序RTL视图
6. 编程下载及验证,硬件验证功能是否实现
六.实验分析
- CNT6源代码分析
和CNT10代码类似,略有修改,就是进位的数值。CNT10是10进制0-9便会产生一个进行信号,而CNT6是计数从0-5便会产生一个进位信号
图6.1 CNT6部分代码
2. DISPLAY源代码分析
DISPLAY的代码是动态显示模块,其中为了达到0.01s~1h的效果,本次需要使用六个数码管显示数字,其中两个数码管对应是3号和6号数码管显示点或者其他来达到数字秒表的效果,其中就涉及到数码管驱动代码的调整;本次实验需要使用六个数码管显示数字,为了显示数字秒表的效果,3号和6号数码管以1111来控制,表现形式为小数点,当1111时对应下面数码管数字显示驱动代码的10000000,在数码管中表示g那个数码管点亮则显示成为了点;其他六个数码管正常显示,其中两个是逢六进一;SEL仍充当数字选择器的作用;SEG是数码管显示驱动端,分别接a-g,共阴极,高电平有效
图6.2 DISPLAY部分代码
图6.3 数码管数字显示代码
3. 分频器CLKGEN波形仿真分析
为了使得在波形仿真中能看到波形变化,于是将分频常数设为30,可以由图看出CLK上升沿来到第30的时候,CLKGEN跳变一次,达到分频器的作用;硬件部分要实现是100Hz,对应3M的信号输入,所以需要30000分频,即30000个CLK上升沿NEWCLK就出现一个跳变,然而当我们用软件仿真的时候根本看不到30000个输入信号的上升沿,所以我们需要减小分频系数,但是注意在硬件时候我们需要30000分频。
图6.4 CLKGEN波形仿真图
4. 顶层文件TIMES波形仿真分析
由仿真的波形可以看出,3F代表六个数码管能点亮,COM表示数码管公共端;ENA为使能端,CLR为清零信号;其中CLK2的周期要大于等于8倍的CLK1,数码管要八个,需要八个都能点亮的状态,如果周期小于8倍会出现动态显示的效果,达不到我们所需要的数字秒表效果。
图6.5 TIMES波形仿真图
5. RTL仿真分析
从RTL图看出整个电路的整体状态,可以看出信号从CLK1进入分频器输入100Hz的信号,以0.01s的最小单元进行计数,CNT6一个在第四位和第六位,0.01s—0.1s—1s—6s—60s—360s,可以实现0.01s—1h的数字秒表
图6.6 程序RTL视图
七.实验总结
数字秒表设计要依据现实分析,先设计十进制计数器的源程序CNT10.VHD和六进制计数器的源程序CNT6.VHD,完成0.01s—0.1s—1s—6s—60s—360s秒表,后编写分频器的源程序CLKGEN.VHD,动态扫描的源程序CTRLS.VHD,动态计数的源程序DISPLAY.VHD,,由模块构成顶层电路数字秒表的源程序TIMES.VHD,完成数字秒表设计。