VHDL十六进制计数器Word格式文档下载.docx
《VHDL十六进制计数器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《VHDL十六进制计数器Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
![VHDL十六进制计数器Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-2/1/a835e3a0-7eac-404b-a3ab-64c6ed0c6f32/a835e3a0-7eac-404b-a3ab-64c6ed0c6f321.gif)
2013年1月2日
一、实验目的
1.进一步了解VHDL设计方法
2.熟悉数码管和LED的显示
二、实验所用仪器及元器件
1、计算机
2、QuartusII7.2(32-Bit)软件
3、EP2C5实验箱
三、实验内容
(1)、设计一个十六进制计数器,用一个数码管、8个彩灯循环显示计数状态。
(2)、有清零信号控制,按下后从零开始。
四、设计思路与过程
根据实验要求,需要实现在拨码开关或者按键的控制下实现十六进制计数器。
首先,确定输入输出变量:
输入:
拨码开关a:
清零;
时钟clk:
:
提供有效时钟沿;
输出SEL-LED:
8维向量b:
连接8个发光二极管。
输出SEL-DATA:
8维向量c:
连接数码管。
其次,确定电路工作状态
因为要实现计数十六进制计数器,所以首先要实现在时钟控制下实现计数;
还要考虑到清零信号;
再次,实现对计术状态的表示;
也就是让计数状态用数码管和LED显示出来。
五、VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
ENTITYcount16IS
PORT(
CLK5:
INSTD_LOGIC;
RST:
SEG_SEL:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
SEG_DA:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDcount16;
ARCHITECTUREBEHAVEOFcount16IS
SIGNALSHIFT_CNT,TEMP:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALCNT_VALUE:
BEGIN
PROCESS(CLK5)
BEGIN
IFRST='
1'
THENTEMP<
="
0000"
;
ELSIFCLK5'
EVENTANDCLK5='
THEN
IFTEMP="
1111"
TEMP<
ELSE
TEMP<
=TEMP+1;
ENDIF;
ENDIF;
ENDPROCESS;
SHIFT_CNT<
=TEMP;
SEG_SEL<
000"
PROCESS(SHIFT_CNT)
BEGIN
CASESHIFT_CNTIS
WHEN"
=>
SEG_DA<
=x"
3F"
LED<
00000001"
0001"
06"
00000010"
0010"
5B"
00000100"
0011"
4F"
00001000"
0100"
66"
00010000"
0101"
6D"
00100000"
0110"
7D"
01000000"
0111"
07"
10000000"
1000"
7F"
1001"
6F"
1010"
77"
1011"
7C"
1100"
39"
1101"
5E"
1110"
79"
71"
ENDCASE;
ENDPROCESS;
ENDBEHAVE;
六、实验QuarterII原理图:
七、实验过程
1、用QuartusII7.2打开已经写好的程序,编译,建立仿真文件,进行仿真。
2、打开计算机和EP2C5实验箱,用串口线连接好,打开电源。
3、为输入输出分配好引脚:
CLK5对应PIN145
RST对应PIN43
SEG_SEL[2to0]对应PIN141142143
SEG_DATA[7to0]对应PIN1441211108653
LED[7to0]对应PIN34333130151413
4、添加硬件,点击start;
观察实验现象;
仿真波形
仿真分析:
TEMP在时钟上升沿处计数,SEG_DATA[7to0],LED[7to0]显示对应
TEMP的值:
图中TEMP=0;
SEG_DATA[7to0]=00111111;
LED[7to0]=00000001;
引脚分配图
实验现象:
八、故障及问题分析
本次实验整体比较顺利,但仍旧出现了一个个问题:
开始时引脚分配有问题,没有找到与EP2C5有关的引脚,后来找到了。
其他未出现什么问题,顺利地完成了实验。
九、总结和结论
本学期EDA实验共完成了8次实验,分别完成了以下四项任务:
Ø
对实验板的熟悉;
对QuartusII7.2(32-Bit)的初步认识,并熟悉掌握其图形编译功能;
对QuartusII7.2(32-Bit)的进一步了解,初步结识VHDL语言,并用其实现了简单的计数器和译码器的功能,为最后一次实验打下基础;
进一步熟悉VHDL语言,并用其实现实际电路设计;
纵观四次实验,让我感触颇深的就是,预习对实验的重要性。
QuarterII对我们来说是一个全新的东西,一切操作都得从头来学,好在它的界面友善,操作简单易懂,只是在编写VHDL程序的时候,需要事先学习其语言习惯。
如果预习充分,就能很顺利地完成实验任务,还留有时间思考其它问题,完成额外的题目。
实验要想仿真并下载成功,需要注意的细节很多,如,引脚设置、输入变量的周期设置等。
在第三次实验时,我犯了个小错误——锁定引脚后没有让程序再运行compilation一遍,导致的结果就是,仿真完全正确,但下载到实验板上怎么就不能正确工作,白白耽误了很长时间。
所以按部就班的操作是很必要的。
实验中还有一些细节,在预习时并未注意,只有去实验室实际操作时才发现。
如第三次实验实现7段数码译码器并用数码显示管显示时,预习时,并不知道,通过用一个八维向量c来控制8个数码显示管亮的管子的数量;
再如第四次实验,预习的时候并不知道,板子上提供的时钟是50MHz,必须通过分频才能看清实验现象,就临场模仿书上例子做了分频器。
本学期的EDA实验,完成了理论与实验的结合,将一些很抽象的理论概念具体地体现出来,如,门的延迟对输出波形的影响,冒险现象的产生原因等等。
与此同时,我们学会了仿真工具QuarterII,初步掌握了VHDL语言,为理论学习提供了便利。
这些都使EDA的学习更具趣味性,同时更可以增强我们的动手动脑能力,从而达到学以致用的目的。