放光二極管走马灯电路设计与实现.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
放光二極管走马灯电路设计与实现

放光二极管走马灯电路设计与实现 班级: 姓名: 学号: 一.实验目的 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 is port( clk:in std_logic; set,a:in std_logic; q :out std_logic_vector(7 downto 0) ); end zoumadeng1; architecture light of zoumadeng1 is type 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 to signal clk_out :std_logic; signal flag :f; begin p1:process(clk_out,a,set) begin if set = 1 then state1 = s0; state2 = s0; else if clk_outevent and clk_out =1 then if a = 0 then if flag = f1 then

文档评论(0)

sfkl + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档