北京邮电大学数电实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京邮电大学
数字电路与逻辑设计实验
发光二极管走马灯的电路设计与实现实验报告
学院:信息与通信工程学院
班级:27
姓名:付莹
学号:
班内序号:23
【实验目的】
(1)进一步了解时序电路描述方法;
(2)熟悉状态机的设计方法。
【实验所用仪器及元器件】
(1)计算机;
(2)直流稳压电源;
(3)数字系统与逻辑设计实验开发板。
【实验任务要求】
设计并实现一个控制8个发光二极管亮灭的电路,仿真验证其功能,并下载到实验板测试。
(1)单点移动模式:一个点在8个发光二极管上来回的亮
(2)幕布式:从中间两个点,同时向两边依次点亮直到全亮,然后再向中间点灭,依次往复。
【实验设计思路及过程】
(1)设计思路
实验要求有两个,一个是单点移动模式,一个是幕布式。通过CASE-WHEN 语句实现走马灯的变化。分别定义一个8个变量的数据类型
和一个13变量的数据类型,表示一个周期内的灯的变化,并设计一个变
量在两种状态间进行切换。此时,需要把所有状态罗列到case-when中
去。
(2)VHDL代码
LIBRARY IEEE;
USE ABC IS
PORT(
A,CLK,RESET:IN STD_LOGIC;
DENG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ABC;
ARCHITECTURE A OF ABC IS
TYPE STATE_TEMP is(s0,s1,s2,s3,s4,s5,s6,s7);
TYPE STATE_TEMP1 is(s0,s1,s2,s3,s4,s5,s6,s7,s00,s01,s02,s03,s04,s05);
signal STATE:STATE_TEMP;
signal STATE1:STATE_TEMP1;
BEGIN
PROCESS(CLK,RESET)
BEGIN
IF RESET='1' THEN
DENG<="00000000";
ELSIF(CLK'EVENT AND CLK='0')THEN
IF A='0'THEN --KAIMUSHI
CASE STATE1 IS
WHEN s0 => STATE1<=s1;DENG<="";
WHEN s1 => STATE1<=s2;DENG<="01000000";
WHEN s2 => STATE1<=s3;DENG<="00100000";
WHEN s3 => STATE1<=s4;DENG<="00010000";
WHEN s4 => STATE1<=s5;DENG<="00001000";
WHEN s5 => STATE1<=s6;DENG<="00000100";
WHEN s6 => STATE1<=s7;DENG<="00000010";
WHEN s7 =>STATE1<=s00;DENG<="00000001";
WHEN s00=>STATE1<=s01;DENG<="00000010";
WHEN s01=>STATE1<=s02;DENG<="00000100";
WHEN s02=>STATE1<=s03;DENG<="00001000";
WHEN s03=>STATE1<=s04;DENG<="00010000";
WHEN s04=>STATE1<=s05;DENG<="00100000";
WHEN s05=>STATE1<=s0;DENG <="01000000";
END CASE;
ELSE
CASE STATE IS
WHEN s0 => STATE<=s1;DENG<="00011000";
WHEN s1 => STATE<=s2;DENG<="00111100";
WHEN s2 => STATE<=s3;DENG<="01111110";
WHEN s3 => STATE<=s4;DENG<="";
WHEN s4 => STATE<=s5;DENG<="01111110";
WHEN s5 => STATE<=s6;DENG<="00111100";
WHEN s6 => STATE<=s7;DENG<="00011000";
WHEN s7 => STATE<=s0;DENG<="00000000";
END CASE;
END IF;
END IF;
END PROCESS;
END A;
【仿真波形及分析】
1.仿真波形(1)单点移动式
(2)幕布式
(3)复位信号
2.波形分析
(1)单点移动式
由图可以看出,当A为0时程序实现单点移动功能,如图所示DENG[7]开始亮,之后依次为DENG[6], DENG[5], DENG[4], DENG[3], DENG[2],
DENG[1], DENG[0],然后DENG[1]也开始亮,依此类推,实现了功能要求
(2)幕布式
由图可以看出,当A为1时,如图所示,先是中间的两个灯DENG[4], DENG[5]亮,然后扩展到四个灯亮DENG[3]至DENG[6]亮,接下来是DENG[2]~DENG[7]亮,最后全亮,接着DENG[2]~DENG[7]亮,继而循环下去。
从而实现功能。
(3)复位功能
由图三可以看出,RESET实现了在两种状态下实现异步复位的功能。
【本实验总结与结论】
本次实验中,开始自己是把幕布式中直接用case-when语句编写,发现有状态重合,如“00011000出现两次,这是不允许的,因此想到定义一个8个变量的数据类型,因此来控制灯的周期变化,此后编译通过。同时在实验过程中,很感谢老师支持我的错误,即敏感信号表中多加入了A,同时也清楚了敏感量表的用途。实验教材的清晰语言,也使我了解到更多的知识。
在看到自己的实验成果展现在实验板上,对于能够把自己所学的东西应用到实物上面,感觉到自豪与骄傲,对数字电路都产生了极大的兴趣。【参考文献】
[1]数字电路与逻辑设计实验教程,北京:北京邮电大学电路中心,2011
[2]数字电路与逻辑设计,北京:北京邮电大学出版社,2009