数电实验四论文Word格式.docx
- 文档编号:19669094
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:11
- 大小:95.74KB
数电实验四论文Word格式.docx
《数电实验四论文Word格式.docx》由会员分享,可在线阅读,更多相关《数电实验四论文Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
五.仿真波形及分析9
1.仿真波形9
①实验任务19
②实验任务2-I10
3.波形分析10
①实验任务110
六.故障及问题分析10
1.频率设置问题10
2.触发设置问题11
七.本实验总结与结论11
一.实验目的
1.掌握VHDL语言的语法规范,掌握时序电路描述方法
2.掌握多个数码管动态扫描显示的原理及设计方法
二.实验所用仪器及元器件
1.计算机
2.直流稳压电源
3.数字系统与逻辑设计实验开发板
三.实验任务要求
1.用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0,1,2,3,4,5这六个不同的数字图形到六个数码管上,仿真下载验证其功能。
2.用VHDL语言设计并实现六个数码管滚动显示电路。
(选作了第一项)
I.循环滚动,始终点亮6个数码管,左出右进。
状态为:
012345-123450-234501-345012-450123-501234-012345
四.实验设计思路及过程
1.实验原理
多个数码管动态扫描显示,是将所有的数目管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环依次点亮多个数码管,利用人眼的视觉停留现象,只要扫描频率大于50HZ,人将不能看到闪烁现象。
当闪烁显示的发光二极管闪烁频率较高时,我们将观察到持续点亮的现象。
同理,当多个数码管依次显示,当切换速度足够快时,我们将观察到所有数码管都是同时在显示。
一个数码管要稳定显示,频率要大于50HZ,那么6个数码管则需要50*6=300HZ以上,才能看到稳定显示。
CAT0~CAT5是数码管选通控制信号,分别对应于6个共阴极数码管的公共端,当CATn=’0’时,数码管被点亮。
因此,通过控制CAT0~CAT5便可以控制6个数码管循环依次点亮。
2.设计思路
设计时序电路,输入时钟经过一个分频器,产生2kHz的扫描信号作为时钟,驱动计数器工作。
选用模值为6的计数器,通过一个3线至6线译码器,产生段码,依次控制6个LED的亮灭,使得某一时刻有且仅有一个LED点亮,同时产生对应的,将点亮的LED数码管赋值显示为相应的数码予以显示。
由于扫描频率较高,6位LED数码管序列将显示持续稳定的0至5的数码。
3.系统框图
A.实验任务1
B.实验任务2-I
4.2KHz
25KHz
50MHz
5Hz
4.VHDL代码
底层文件2K分频器:
--2kHz分频器
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydiv_2kis
port(clk_in:
instd_logic;
clk_out:
outstd_logic);
end;
architectureaofdiv_2kis
signalcnt:
integerrange0to999;
signalclk_tmp:
std_logic;
begin
process(clk_in)
begin
if(clk_in'
eventandclk_in='
1'
)then
ifcnt=999then
cnt<
=0;
clk_tmp<
=notclk_tmp;
else
=cnt+1;
endif;
endif;
endprocess;
clk_out<
=clk_tmp;
--SCAN_LED:
LED动态扫描
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYLEDIS
PORT(CLK:
INSTD_LOGIC;
SG:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
BT:
OUTSTD_LOGIC_VECTOR(5DOWNTO0));
END;
ARCHITECTUREarcOFLEDIS
componentdiv_2k
port(clk_in:
clk_out:
endcomponent;
SIGNALCNT6:
INTEGERRANGE0TO6;
SIGNALA:
INTEGERRANGE0TO5;
SIGNALclk_tmp:
STD_LOGIC;
BEGIN
u1:
div_2kportmap(clk_in=>
CLK,clk_out=>
clk_tmp);
P1:
process(CNT6)
CASECNT6IS--3线至6线译码器
WHEN0=>
BT<
="
011111"
;
A<
=0;
--A为位码
WHEN1=>
101111"
=1;
WHEN2=>
110111"
=2;
WHEN3=>
111011"
=3;
WHEN4=>
111101"
=4;
WHEN5=>
111110"
=5;
WHENOTHERS=>
NULL;
ENDCASE;
ENDPROCESSP1;
P2:
process(clk_tmp)
IFclk_tmp'
EVENTANDclk_tmp='
THEN--实现模6计数器
CNT6<
=CNT6+1;
ifCNT6=5then
=0;
endif;
ENDIF;
ENDPROCESSP2;
P3:
process(A)
CASEAIS--实现数码管的显示功能
SG<
1111110"
;
WHEN1=>
0110000"
1101101"
WHEN3=>
1111001"
0110011"
WHEN5=>
1011011"
ENDPROCESSP3;
ENDarc;
代码说明:
通过分频器输入产生选通脉冲,控制0至5号LED数码管依次亮灭,同时使用数码显示信号使得数码管显示相应数码。
实现时通过连接引入分频信号,通过数据选择器选择数码管。
计数器信号触发数据选择器,赋值给位码触发数码管显示数码。
最终实现动态扫描显示数字序列。
ENTITYLED2IS
PORT(CLK:
BT:
END;
ARCHITECTUREarcOFLED2IS
componentdiv_2k
port(clk_in:
clk_out:
endcomponent;
SIGNALCNT6:
SIGNALA:
SIGNALCOUNT:
INTEGERRANGE0TO5001;
SIGNAlFLAG:
INTEGERRANGE0TO6;
SIGNAlFLAG_A:
SIGNALclk_tmp:
u1:
BEGIN
CASECNT6IS
WHEN0=>
BT<
--3线至6线译码器
WHEN2=>
WHEN4=>
WHENOTHERS=>
ENDCASE;
ENDPROCESSP1;
IFclk_tmp'
CNT6<
ifCNT6=5then
IF(FLAG=6)THEN--设置标志
FLAG<
IFCOUNT=5000THEN--相当于另一个时钟
COUNT<
--计数周期为5000
FLAG<
=FLAG+1;
--当记满5000时左移动一位
ELSE
=COUNT+1;
--不满5000继续计数
ENDIF;
ENDPROCESSP2;
BEGIN
FLAG_A<
=((A+FLAG)mod6);
--使用求余运算实现移位
CASEFLAG_AIS--实现数码管的显示功能
ENDPROCESSP3;
代码主体和实验任务1中一致,基本思想也一致。
为实现移位,关键改动为新增一个计数器,技术周期远远大于扫描周期,这样,在一个大的计数周期内,对于要显示的6位数码进行动态扫描(和实验任务1中相同),显示出6种移位状态中的一种;
在下一个大的周期内,利用FLAG标志,并使用求余运算将显示位的数码移位,比如,大的计数周期为0时,FLAG为0,显示“012345”六位数码,大的周期为1时,FALG为1,此时各位求余(即FLAG_A求余)对应的数码为123450,显示的数码也就为“123450”。
以此类推,实现循环移位。
五.仿真波形及分析
1.仿真波形
①实验任务1
②实验任务2-I
3.波形分析
由波形可见,随着时钟模六计数的不断重复,0至5号LED数码管依次打开,其余管熄灭,同时,数码管显示数字从0至5依次出现,两者保持同步,即n号管亮时显示的数码为n。
这样每计数6次循环依次,可知仿真结果正确。
当扫描速度很快时,人眼将能看到持续稳定的0至5号数码显示。
在实验室实际测试时,下载到电路板测试成功,完成实验任务。
由波形可见,随着大计数周期的增加,依次产生012345-123450-234501-345012-450123-501234-012345……,这样便实现了循环移位。
实验室实测时,加大COUNT值为5000,观察到稳定持续的周期循环移位的数码显示,完成实验任务。
六.故障及问题分析
1.频率设置
当频率设置过高时,计数周期将大大增加,每个周期内的扫描次数也增加,但考虑到人眼的分辨能力,频率只需大于300Hz即可,过大将增大系统开销,故采用2kHz分频器。
刚开始COUNT值设置较小,导致在50MHz的时钟输入下滚动速度较快,后来经计算增大COUNT值到5000时,数字滚动的速度比较合适。
2.触发问题
初始编写代码时,误将COUNT计数器放入p3进程中,导致触发逻辑错误,大周期计数不工作,显示数码不能移位。
后将模6和模5000两个计数器同时放入p2进程,统一使用一个时钟边沿触发,这样符合了同步时序电路设计的基本思想,触发正确,显示数码才正常移位。
七.本实验总结与结论
1.经过逻辑分析,编写VHDL代码,然后调试,进行波形仿真,最后下载到实验板实现,一系列工序之后,成功实现了本实验要求的任务1和选作了任务2-I。
2.进行数字电路实验,理论分析是十分重要的一环,只有逻辑分析透彻无误了,才能用语言进行描述,进而用硬件实现。
所以说,开始实验之前我们应该事先理清系统的架构,画好系统框图,标好输入输出端口,这样在编写程序的时候思维才能比较清晰,不容易出错。
3.经过这次实验,我初步具备了设计较复杂的多模块的逻辑电路的能力,这使我把理论与实际联系了起来,增强了我的动手操作能力,为下学期的数电综合实验打下了基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 论文