VHDL十六进制计数器.docx

上传人:b****8 文档编号:8819457 上传时间:2023-02-01 格式:DOCX 页数:10 大小:1.24MB
下载 相关 举报
VHDL十六进制计数器.docx_第1页
第1页 / 共10页
VHDL十六进制计数器.docx_第2页
第2页 / 共10页
VHDL十六进制计数器.docx_第3页
第3页 / 共10页
VHDL十六进制计数器.docx_第4页
第4页 / 共10页
VHDL十六进制计数器.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

VHDL十六进制计数器.docx

《VHDL十六进制计数器.docx》由会员分享,可在线阅读,更多相关《VHDL十六进制计数器.docx(10页珍藏版)》请在冰豆网上搜索。

VHDL十六进制计数器.docx

VHDL十六进制计数器

徐州工程学院信电工程学院

可编程器件及应用实验

 

课题名称

设计一个十六进制计数器

姓名

王旭辉20100504144

赵永发20100504133

谢臻20010504121

杨红艳20100504111

学号

院、班级

10电信1班

专业

电子信息科学与技术

指导教师

贾燕玲

 

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:

INSTD_LOGIC;

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:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(CLK5)

BEGIN

IFRST='1'THENTEMP<="0000";

ELSIFCLK5'EVENTANDCLK5='1'THEN

IFTEMP="1111"THEN

TEMP<="0000";

ELSE

TEMP<=TEMP+1;

ENDIF;

ENDIF;

ENDPROCESS;

SHIFT_CNT<=TEMP;

SEG_SEL<="000";

PROCESS(SHIFT_CNT)

BEGIN

CASESHIFT_CNTIS

WHEN"0000"=>SEG_DA<=x"3F";LED<="00000001";

WHEN"0001"=>SEG_DA<=x"06";LED<="00000010";

WHEN"0010"=>SEG_DA<=x"5B";LED<="00000100";

WHEN"0011"=>SEG_DA<=x"4F";LED<="00001000";

WHEN"0100"=>SEG_DA<=x"66";LED<="00010000";

WHEN"0101"=>SEG_DA<=x"6D";LED<="00100000";

WHEN"0110"=>SEG_DA<=x"7D";LED<="01000000";

WHEN"0111"=>SEG_DA<=x"07";LED<="10000000";

WHEN"1000"=>SEG_DA<=x"7F";LED<="00000001";

WHEN"1001"=>SEG_DA<=x"6F";LED<="00000010";

WHEN"1010"=>SEG_DA<=x"77";LED<="00000100";

WHEN"1011"=>SEG_DA<=x"7C";LED<="00001000";

WHEN"1100"=>SEG_DA<=x"39";LED<="00010000";

WHEN"1101"=>SEG_DA<=x"5E";LED<="00100000";

WHEN"1110"=>SEG_DA<=x"79";LED<="01000000";

WHEN"1111"=>SEG_DA<=x"71";LED<="10000000";

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的学习更具趣味性,同时更可以增强我们的动手动脑能力,从而达到学以致用的目的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1