网站大量收购独家精品文档,联系QQ:2885784924

放光二极管走马灯电路设计与实现..docx

放光二极管走马灯电路设计与实现..docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
放光二极管走马灯电路设计与实现.

放光二极管走马灯电路设计与实现班级: 姓名: 学号: 一.实验目的1.进一步了解时序电路描述方法2.熟悉状态机的设计方法二.实验所用仪器及元器件1.计算机;2.直流稳压电源;3.数字系统与逻辑设计实验开发板。三.实验内容设计并实现一个控制8个发光二极管亮灭的电路,仿真验证其功能,并下载到实验板测试。1.单点移动模式:一个点在8个发光二极管上来回的亮2.幕布式:从中间两个点,同时向两边依次点亮直到全亮,然后再向中间点灭,依次往复。四.设计思路第一题设了两个状态type all_state is(s0,s1,s2,s3,s4,s5,s6,s7)和 type f is(f1,f0),其中all_state 表示灯亮的状态,f表示灯向左亮与向右亮的不同状态。第二题按照题目要求对输出q进行控制即可。即用case-when语句。当a为0时为单点移动式, a为1时为幕布式移动,。最后下载的时候把输出q和8个灯对应,a和一个可以在0和1之前切换的按钮对应,clk引脚为18.。 仿真时要注意设置仿真时间轴,100us左右。保存波形文件时,文件名要与工程名一致。设置复位的时间要合理。既要看到复位的效果,又不能影响到正常的波形分析,而且复位信号不能为周期。 仿真波形为其中仿真总时间为100us,前50us a = 0,即进行的是单点移动的仿真,由图知,q[1]~q[7]交替出现高电平,然后q[7]~q[1]又交替出现高电平,所以可见程序实现了一个点在8个发光二极管上来回的亮的功能。后50us a = 1,即进行幕布式的仿真:由图知,先是中间的两个灯q[3], q[4]亮,下一下阶段是q[2], q[3], q[4], q[5]亮,接下来是q[1], q[2], q[3], q[4], q[5], q[6]亮,最后全亮,接着q[0],q[7]灭,继而循环下去。高电平从中间依次向两边扩展,全亮后又从边缘依次两个两个变为低电平,依次往复。因此满足题目从中间两个点,同时向两边依次点亮直到全亮,然后再向中间点灭,依次往复的要求。五.实验中所遇到的问题及解决方法这次实验学习的是状态机的设计,遇到的问题主要有两个。第一,刚开始编第一个题目时,对于一个点在8个发光二极管上来回的亮理解有误,一开始把题目的意思当成了,第一个灯到第八个灯依次亮后,再从第一个灯到第八个灯依次亮,但后来觉得应该是第一个灯到第八个灯依次亮后,再从第八个灯到第一个灯依次亮,所以便在程序设置一个变量flag,用于标志灯向左依次亮还是向右依次亮。第二.我本来是将两个小题写成了两个程序,但后来发现应该是放在一个里,所以又设置了一个输入变量a, a为0时为单点移动式, a为1时为幕布式移动。六.心得体会通过对书本例题的学习与研究,顺利地完成了实验的要求,了解状态机的使用方法,虽然在编写程序时对题目的理解产生了一些错误,但后来都被自己一一改正。在对程序一遍一遍的进行修正时,感觉自己对状态机以及VHDL语言的理解更进了一步。因为这是本学期最后一次数电实验,所以我觉得很惋惜,我很喜欢这种软硬件结合的方式,这让我在软件编程时对下载的结果产生了很大的期待,也因此激发了我编程的兴趣。所以很期待下学期的数电实验。附 VHDL源代码library ieee;use ieee.std_logic_1164.all;entity zoumadeng1 isport(clk:in std_logic;set,a:in std_logic;q :out std_logic_vector(7 downto 0));end zoumadeng1;architecture light of zoumadeng1 istype all_state is(s0,s1,s2,s3,s4,s5,s6,s7);type f is(f1,f0);signal state1,state2 :all_state;signal temp :integer range 0 tosignal clk_out :std_logic;signal flag :f;beginp1:process(clk_out,a,set)beginif set = 1 thenstate1 = s0;state2 = s0;elseif clk_outevent and clk_out =1 thenif a = 0 thenif flag = f1 thencase state1 iswhen s0 = state1 = s1; q =when s1 = state1 = s2; q =when s2 = state1 = s3; q =when s3 = state1 = s

您可能关注的文档

文档评论(0)

s4as2gs2cI + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档