ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:156.76KB ,
资源ID:9552688      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9552688.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于VHDL的八路彩灯控制器.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于VHDL的八路彩灯控制器.docx

1、基于VHDL的八路彩灯控制器1.任务需求 22. 总体设计 22.1 各个花样的状态图 22.2总体框图 43. 模块设计 43.1分频器模块 43.2花样一模块 53.3花样二模块 63.4花样三模块 83.5顶层设计 104. 仿真图 114.1分频器仿真波形 114.2花样一仿真波形 114.3花样二仿真波形 124.4花样三仿真波形 134.5总体仿真波形 135.心得体会 146.参考文献 151.任务需求现今生活中,市场上未能吸取顾客的注意,高出各式各样的方法,其中彩灯的装饰便是其中非常普遍的一种。使用彩灯即可起装饰宣传作用,又可以现场气氛,城市也因为众多的彩灯而变得灿烂辉煌。VH

2、DL语言作为可编程逻辑器件的标准语言描述能力强,覆盖面广,抽象能力强,在实际应用中越来越广泛。在这个阶段,人们开始追求贯彻整个系统设计的自动化,可以从繁重的设计工作中彻底解脱出来,把精力集中在创造性的方案与概念构思上,从而可以提高设计效率,缩短产品的研制周期。整个过程通过EDA工具自动完成,大大减轻了设计人员的工作强度,提高了设计质量,减少了出错的机会。要求设计一个8路彩灯控制器,要求彩灯可以演示以下花型:(1)从两边向中间亮,再从中间向两边亮;(2)实现淡入淡出效果(3)从左至右逐个亮,在从右到左逐个亮;2. 总体设计2.1 各个花样的状态图当选择花样一时状态图如下:S0=”ZZZZZZZZ

3、” S1=10000001 S2=01000010 S3=00100100 S4=00011000 S5=00100100 S6=01000010CLR 当选择花样二时状态图如下: S0=”ZZZZZZZZ” S1=00000000 S2=10000000 S3=11000000S4=11100000 S5=11110000 S6=11111000 S7=”11111100”S8=”11111110” S9=11111111 S10=01111111 S11=00111111S12=00011111 S13=00001111 S14=00000111 S15=”00000011”S16=”00

4、000001” CLR 当选择花样三时状态图如下:S0=”ZZZZZZZZ” S1=10000000 S2=01000000 S3=00100000S4=00010000 S5=00001000 S6=00000100 S7=”00000010”S8=”00000001” S9=00000010 S10=00000100 S11=00001000S12=0001000 S13=00100000 S14=01000000 CLR 2.2总体框图 CLK XUAN 3. 模块设计3.1分频器模块 -由于机器时钟周期太短,不能满足要求 -此模块实现分频,得到需要的时钟LIBRARY IEEE; US

5、E IEEE.std_logic_1164.ALL;USE IEEE.std_logic_unsigned.ALL;ENTITY fenpinqi ISPORT( CLK:IN STD_LOGIC; -原机器时钟 CLR:IN STD_LOGIC; CLK1:OUT STD_LOGIC); -分频后的时钟END fenpinqi;ARCHITECTURE ART OF fenpinqi ISSIGNAL CK:STD_LOGIC; BEGIN PROCESS(CLK,CLR)IS VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN IF CLR=

6、1 THEN CK=0; TEMP:=000; ELSIF(CLKEVENT AND CLK=1)THEN IF TEMP=111 THEN TEMP:=000; CK=NOT CK; ELSE TEMP:=TEMP+1; END IF; END IF; END PROCESS; CLK1=CK;END ART;3.2花样一模块 -用分频器分频后的时钟来显示花样实现 -从两边向中间亮,再从中间向两边亮;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY hy1 IS PORT(CLK1:IN STD_LOGIC; CLR:IN STD_LOGIC;

7、XUAN:IN STD_LOGIC_VECTOR(1 DOWNTO 0); LED1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY hy1;ARCHITECTURE ART OF hy1 IS TYPE STATE IS(S0,S1,S2,S3,S4,S5,S6); -设计状态机,实现花样转换 SIGNAL CURRENT_STATE:STATE; SIGNAL LIGHT:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CLR,CLK1,XUAN)IS -定义花样(1为灯亮,0为灯灭) CONSTANT L1:

8、STD_LOGIC_VECTOR(7 DOWNTO 0):=10000001; CONSTANT L2:STD_LOGIC_VECTOR(7 DOWNTO 0):=01000010; CONSTANT L3:STD_LOGIC_VECTOR(7 DOWNTO 0):=00100100; CONSTANT L4:STD_LOGIC_VECTOR(7 DOWNTO 0):=00011000; CONSTANT L5:STD_LOGIC_VECTOR(7 DOWNTO 0):=00100100;CONSTANT L6:STD_LOGIC_VECTOR(7 DOWNTO 0):=01000010; B

9、EGIN IF XUAN=01 THEN IF CLR=1 THEN CURRENT_STATE LIGHT=ZZZZZZZZ; CURRENT_STATE LIGHT=L1; CURRENT_STATE LIGHT=L2; CURRENT_STATE LIGHT=L3; CURRENT_STATE LIGHT=L4; CURRENT_STATE LIGHT=L5; CURRENT_STATE LIGHT=L6; CURRENT_STATE=S1; END CASE; END IF; END IF; END PROCESS; LED1=LIGHT;END ART;3.3花样二模块 -用分频器分

10、频后的时钟来显示花样实现 -实现淡入淡出效果LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY hy2 IS PORT(CLK1:IN STD_LOGIC; CLR:IN STD_LOGIC; XUAN:IN STD_LOGIC_VECTOR(1 DOWNTO 0); LED2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY hy2;ARCHITECTURE ART OF hy2 IS -设计状态机,实现花样转换 TYPE STATE IS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S

11、11,S12,S13,S14,S15,S16); SIGNAL CURRENT_STATE:STATE; SIGNAL LIGHT:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CLR,CLK1,XUAN)IS -定义花样(1为灯亮,0为灯灭) CONSTANT L1:STD_LOGIC_VECTOR(7 DOWNTO 0):=00000000; CONSTANT L2:STD_LOGIC_VECTOR(7 DOWNTO 0):=10000000; CONSTANT L3:STD_LOGIC_VECTOR(7 DOWNTO 0):=11000000;

12、CONSTANT L4:STD_LOGIC_VECTOR(7 DOWNTO 0):=11100000; CONSTANT L5:STD_LOGIC_VECTOR(7 DOWNTO 0):=11110000; CONSTANT L6:STD_LOGIC_VECTOR(7 DOWNTO 0):=11111000; CONSTANT L7:STD_LOGIC_VECTOR(7 DOWNTO 0):=11111100; CONSTANT L8:STD_LOGIC_VECTOR(7 DOWNTO 0):=11111110; CONSTANT L9:STD_LOGIC_VECTOR(7 DOWNTO 0)

13、:=11111111; CONSTANT L10:STD_LOGIC_VECTOR(7 DOWNTO 0):=01111111; CONSTANT L11:STD_LOGIC_VECTOR(7 DOWNTO 0):=00111111; CONSTANT L12:STD_LOGIC_VECTOR(7 DOWNTO 0):=00011111; CONSTANT L13:STD_LOGIC_VECTOR(7 DOWNTO 0):=00001111; CONSTANT L14:STD_LOGIC_VECTOR(7 DOWNTO 0):=00000111; CONSTANT L15:STD_LOGIC_

14、VECTOR(7 DOWNTO 0):=00000011; CONSTANT L16:STD_LOGIC_VECTOR(7 DOWNTO 0):=00000001; BEGIN IF XUAN=10 THEN IF CLR=1 THEN CURRENT_STATE LIGHT=ZZZZZZZZ; CURRENT_STATE LIGHT=L1; CURRENT_STATE LIGHT=L2; CURRENT_STATE LIGHT=L3; CURRENT_STATE LIGHT=L4; CURRENT_STATE LIGHT=L5; CURRENT_STATE LIGHT=L6; CURRENT

15、_STATE LIGHT=L7; CURRENT_STATE LIGHT=L8; CURRENT_STATE LIGHT=L9; CURRENT_STATE LIGHT=L10; CURRENT_STATE LIGHT=L11; CURRENT_STATE LIGHT=L12; CURRENT_STATE LIGHT=L13; CURRENT_STATE LIGHT=L14; CURRENT_STATE LIGHT=L15; CURRENT_STATE LIGHT=L16; CURRENT_STATE=S1; END CASE; END IF; END IF; END PROCESS; LED

16、2=LIGHT;END ART;3.4花样三模块 -用分频器分频后的时钟来显示花样实现 -从左至右逐个亮,在从右到左逐个亮LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY hy3 IS PORT(CLK1:IN STD_LOGIC; CLR:IN STD_LOGIC; XUAN:IN STD_LOGIC_VECTOR(1 DOWNTO 0); LED3:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY hy3;ARCHITECTURE ART OF hy3 IS -设计状态机,实现花样转换 TYPE STATE

17、 IS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14); SIGNAL CURRENT_STATE:STATE; SIGNAL LIGHT:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CLR,CLK1,XUAN)IS -定义花样(1为灯亮,0为灯灭) CONSTANT L1:STD_LOGIC_VECTOR(7 DOWNTO 0):=10000000; CONSTANT L2:STD_LOGIC_VECTOR(7 DOWNTO 0):=01000000; CONSTANT L3:STD_LOGIC

18、_VECTOR(7 DOWNTO 0):=00100000; CONSTANT L4:STD_LOGIC_VECTOR(7 DOWNTO 0):=00010000; CONSTANT L5:STD_LOGIC_VECTOR(7 DOWNTO 0):=00001000; CONSTANT L6:STD_LOGIC_VECTOR(7 DOWNTO 0):=00000100; CONSTANT L7:STD_LOGIC_VECTOR(7 DOWNTO 0):=00000010; CONSTANT L8:STD_LOGIC_VECTOR(7 DOWNTO 0):=00000001; CONSTANT

19、L9:STD_LOGIC_VECTOR(7 DOWNTO 0):=00000010; CONSTANT L10:STD_LOGIC_VECTOR(7 DOWNTO 0):=00000100; CONSTANT L11:STD_LOGIC_VECTOR(7 DOWNTO 0):=00001000; CONSTANT L12:STD_LOGIC_VECTOR(7 DOWNTO 0):=00010000; CONSTANT L13:STD_LOGIC_VECTOR(7 DOWNTO 0):=00100000; CONSTANT L14:STD_LOGIC_VECTOR(7 DOWNTO 0):=01

20、000000; BEGIN IF XUAN=11 THEN IF CLR=1 THEN CURRENT_STATE LIGHT=ZZZZZZZZ; CURRENT_STATE LIGHT=L1; CURRENT_STATE LIGHT=L2; CURRENT_STATE LIGHT=L3; CURRENT_STATE LIGHT=L4; CURRENT_STATE LIGHT=L5; CURRENT_STATE LIGHT=L6; CURRENT_STATE LIGHT=L7; CURRENT_STATE LIGHT=L8; CURRENT_STATE LIGHT=L9; CURRENT_ST

21、ATE LIGHT=L10; CURRENT_STATE LIGHT=L11; CURRENT_STATE LIGHT=L12; CURRENT_STATE LIGHT=L13; CURRENT_STATE LIGHT=L14; CURRENT_STATE=S1; END CASE; END IF; END IF; END PROCESS; LED3=LIGHT;END ART;3.5顶层设计 -将以上几个模块整合起来,实现八路彩灯的花样控制LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY caideng IS PORT(CLK:IN STD_LO

22、GIC; CLR:IN STD_LOGIC; XUAN:IN STD_LOGIC_VECTOR(1 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY caideng;ARCHITECTURE ART OF caideng IS COMPONENT fenpinqi -对分频器模块进行定义 PORT( CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; CLK1:OUT STD_LOGIC); END COMPONENT fenpinqi; COMPONENT hy1 -对花样一模块进行定义 PORT(CLK

23、1:IN STD_LOGIC; CLR:IN STD_LOGIC; XUAN:IN STD_LOGIC_VECTOR(1 DOWNTO 0); LED1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END COMPONENT hy1; COMPONENT hy2 -对花样二模块进行定义 PORT(CLK1:IN STD_LOGIC; CLR:IN STD_LOGIC; XUAN:IN STD_LOGIC_VECTOR(1 DOWNTO 0); LED2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END COMPONENT hy2; COMPON

24、ENT hy3 -对花样三模块进行定义 PORT(CLK1:IN STD_LOGIC; CLR:IN STD_LOGIC; XUAN:IN STD_LOGIC_VECTOR(1 DOWNTO 0); LED3:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END COMPONENT hy3;SIGNAL S:STD_LOGIC; -定义中间变量SIGNAL L1:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL L2:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL L3:STD_LOGIC_VECTOR(7 DOWNTO

25、0); BEGIN U1:fenpinqi PORT MAP(CLK,CLR,S); -对分频器模块进行例化 U2:hy1 PORT MAP(S,CLR,XUAN,L1); -对花样一模块进行定义 U3:hy2 PORT MAP(S,CLR,XUAN,L2); -对花样二模块进行例化 U4:hy3 PORT MAP(S,CLR,XUAN,L3); -对花样三模块进行例化 LED=L1 WHEN XUAN=01 ELSE -让LED显示选定的花样 L2 WHEN XUAN=10 ELSE L3;END ART;4. 仿真图4.1分频器仿真波形CLK为输入,是机器时钟。上升沿有效CLR为输入,是异

26、步复位端,当为高电平时有效,CLK1保持状态CLK1为输出,是分频后得到的我们需要的时钟,周期是原时钟的十六倍4.2花样一仿真波形CLK1为输入,是分频后得到的时钟CLR为输入,是异步复位端,当为高电平时有效XUAN是输入,进行选择花样.此时选择的是花样一LED1是输出,用来显示花样实现从两边向中间亮,再从中间向两边亮,运行结果正确4.3花样二仿真波形CLK1为输入,是分频后得到的时钟CLR为输入,是异步复位端,当为高电平时有效XUAN是输入,进行选择花样.此时选择的是花样二LED1是输出,用来显示花样实现淡入淡出效果,运行结果正确4.4花样三仿真波形CLK1为输入,是分频后得到的时钟CLR为

27、输入,是异步复位端,当为高电平时有效XUAN是输入,进行选择花样.此时选择的是花样二LED1是输出,用来显示花样从左至右逐个亮,在从右到左逐个亮,运行结果正确4.5总体仿真波形CLK为输入,是原机器时钟CLR为输入,是异步复位端,当为高电平时有效XUAN是输入,进行选择花样,依次选择花样一,花样二,花样三LED1是输出,用来显示花样,运行结果正确5.心得体会 本次设计的课题是彩灯控制器的设计,当拿到这个课题的时候经过分析就知道关键是状态机和分频器的使用,分频的方法有很多种,对于同一种功能的实现,用VHDL可以采用多种方式进行描述,每种方式之间各有优劣,本次设计只采用了其中较简单的一种,应尽量用最简洁的语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1