eda课程设计彩灯控制器解读.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文档。上传文档
查看更多
电子设计自动化大作业 题 学 班 学 姓 目 院 级 号 名 彩灯控制器的设计 电气* ********** ******** O 一二年十月三-一日 彩灯控制器的设计 一、 彩灯控制器的设计要求 设计能让一排彩灯(8只)自动改变显示花样的控制系统,发光二极管可作为彩灯 用。控制器应有两种控制方式: (1) 规则变化。变化节拍有0. 5秒和0. x秒两种,交替出现,每种节拍可有 4种花样,各执行一或二个周期后轮换。 (2) 随机变化。无规律任意变化。 二、 彩灯控制器的设计原理 本次彩灯控制器的设计包含几个主要模块, 一是彩灯显示和扬 声器的时序控制部分, 二是 发光二极管的动态显示和数码管的动态 显示,本次设计中,二者的显示同步变化;三是扬声 器的控制部分< 流程图如下所示: 数码管 动态显 示 控序分频1 控序分频1 灯时部分频 -衫器制1分 图1彩灯控制器的设计流程图 彩灯控制器的设计核心主要是分频器的使用, 显示部分的设计较 简易。分频的方法有很 多种,本次设计之采用了其中较简易的一种, 通过计数器的分频,将控制器外接的频率分为 几个我们预先设定的 值。当计数器达到预先设定的值, 即产生一个上升沿, 从而实现分频。 扬声器通过不同的频率控制发出不同的声音。 同样发光二极管和数 码管的显示速度也由其中 分出来的一种频率控制(控制显示频率在 1~4 之间为宜) 。通过使能端的控制可以控制不同 的数码管显示预 先设定的图案,数码管依次显示的图案为 AA、BB CC并随着发光 二极 管同步动态显示。 AA 为自左向右显示, BB 为自右向左显示, CC 从二边向中间再由中间向 二边发散显示。 与此同时, 显示不同的 花型时扬声器发出不同的声音,代表不同的花型。本 次设计还带有 复位功能,通过复位可以使彩灯控制器恢复到最初的状态。 三、程序设计和分析 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; 建立设计库和标准程序包 实体部分: entity pan is port(clk:in std_logic; clr:in std_logic; speak:out std_logic; led7s1:out std_logic_vector(6 downto 0); led7s2:out std_logic_vector(7 downto 0); led_selout:outstd_logic_vector(7downto led_selout:out std_logic_vector(7 downto 0); end entity; 其中 clk led7s1 接 selout 接实体名为 pan, 定义端口,输入端口为 clk 和 clr , 接脉冲信号, clr 接复位端;输出 端口 speak 接扬声器, 数码管的七段显示部分, 其中 clk led7s1 接 selout 接 结构体部分: architecture one of pan is signal s: std_logic_vector(4 downto 0); signal clk1:std_logic; signal clk2:std_logic; signal clk3:std_logic; 定义 4 个信号, cq,cllk1,clk2,clk3. process(clk) variable a:std_logic_vector(5 downto 0); begin if clr=1 then clk1=0; else if clkevent and clk=1then if a=110010then a:=000000; clk1=1; else a:=a+1; clk1=0; end if; end if; end if; end process; 以上程序为第一次分频,为 50 分频,当 clk 发生变化,使 a 从 000000 变化到 110010 时 产生一个上升沿 clk1 。如果 a 没有 变化到 110010 则 a 继续自加,直到 110010 为止产生下一 个上升 沿。 process(clk) variable b:std_logic_vector(4 downto 0); begin if clr=1 then clk2=0; 复位信号 else if clkevent and clk=1then if b=11001then b:=00000; clk2=1; else b:=b+1; clk2=0; e nd if; end if; end if; end process; 以上程序为对 clk 进行 25 分频

文档评论(0)

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

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

1亿VIP精品文档

相关文档