数电实验报告发光二极管走马灯电路设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京邮电大学
数字电路与逻辑设计实验
实验报告
实验名称:发光二极管走马灯电路设计与实现
学院:
班级:
姓名:
学号:
任课老师:
实验日期:
成绩:
一.实验名称和实验任务要求
实验名称:发光二极管走马灯电路设计与实现
实验目的:⑴进一步了解时序电路描述方法;
⑵熟悉状态机的设计方法。
实验任务要求:
设计并实现一个控制8个发光二极管亮灭的电路,仿真验证其功能,并下载到实验板测试。
⑴单点移动模式:一个点在8个发光二极管上来回的亮;
⑵幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后
再向中间点灭,依次往复。
二.设计思路和过程
设计实现过程:⑴设计的电路拥有两种功能,所以设定d_in控制
输出实现两种功能,规定当d_in=0时,实现单
点移动模式;当d_in=1时,实现幕布式。同时,
时序电路中钟控是必不可少的,所以引入clk_in
来实现钟控。最终需输出在实验板上的8个发光
二极管上验证,所以输出f需设定为8端口输出,
如:f:out std_logic_vector(7 downto 0)。
⑵单点移动模式的实现:来一个时钟沿,实现一次
变化。单点移动模式需实现发光二极管来回亮,
所以需定义一个16变量的数据类型。利用
CASE-WHEN语句实现状态的转移。状态转移
。
⑶幕布式的实现:需实现发光二极管从中间两个点,
同时向两边依次点亮直至全亮,然后再向中间点
灭,往复。需要8变量数据类型,利用单点式中
信号类型定义给状态转移。状态转移需满足:
三.VHDL程序
发光二极管走马灯电路VHDL程序:
四.仿真波形图
发光二极管走马灯电路的仿真波形图:
五.仿真波形图分析
⑴单点移动模式功能的仿真波形图分析:
由波形可见,当控制信号d_in=0时,输出的8个端口依次出现正脉冲,波形呈现阶梯状,代表一个发光的点在8个发光二极管上来回的亮,实现了功能要求;
⑵幕布式功能的仿真波形图的分析:
当控制信号d_in=1时,输出的8个端口出现正脉冲的时间与
脉冲的长度呈现“中间宽,两头窄”的形状,先是中间的两个灯亮,接下来是中间四个灯亮,接下来是中间六个灯亮,两旁两个灯不亮,最后全亮,接着中间六个灯亮,两旁两个灯不亮,继而循环下去,实现了幕布式的点灯方式。由图可知,该电路实现了要求的逻辑。六.故障及问题分析
⑴开始设计时想到用计数器实现,导致全用case语句实现当设计电路,但是仿真是发现:不论是单点移动式还是幕布式只能实现单方向的移动,而无法进行反方向的移动。最后,查阅书籍决定改为引入类型定义语句,利用类型第一语句来完成实验,所以引进了16个信号数据类型进行状态转移。
⑵电路拥有两个功能,不能同时将这两个功能实现,所以需引进控制信号来控制功能的实现。
⑶引入时钟,控制状态的变化,此次的时钟的周期不用分频器来分频,利用实验板上先用的低频率时钟,可以实现发光二极管的状态变化。
⑷实验的程序设计基本上问题不大,主要是要熟练掌握IF-THEN, CASE-WHEN语句等。
七.总结和结论
这学期的数字电路与逻辑设计实验在这一周结束了。这学期学了一门新课程,接触了关于课程的实验,我发现理论联系实际,实验验证理论的方法令人感到很满足。每次做实验都会期待这次的电路设计自己会做出一个什么东西出来。实验课结束了,回顾这几周的实验,
现在的我可以很高兴的说:现在自己已经基本上掌握了数字电路的设计了。
这几周的数字逻辑电路设计实验,我明白了一个重要的道理:进行实验,理论分析是十分重要的一环,只有逻辑分析透彻无误了,才能用语言进行描述,进而用硬件实现。这几次实验让我对VHDL这样一门硬件描述语言有了更加深刻的认识。
同时,我也明白了做任何实验之前预习的要求是极为重要的。做好预习工作,不仅可以减少实验课上应无知而浪费的时间,还可以更深入的明白仿真实验所蕴含的原理。
总的来说,数字逻辑电路与设计实验课对我的帮助真的很大。我更加深刻的理解了理论课上老师所教授的知识,同时对于自己能够将理论知识运用到实验中感到十分高兴,相信下学期的数字逻辑电路与设计实验将会带给我更多新奇与经验。