基于VHDL的八路彩灯控制器Word格式文档下载.docx
- 文档编号:3934739
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:19
- 大小:157.14KB
基于VHDL的八路彩灯控制器Word格式文档下载.docx
《基于VHDL的八路彩灯控制器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于VHDL的八路彩灯控制器Word格式文档下载.docx(19页珍藏版)》请在冰点文库上搜索。
10000000"
11000000"
S4="
11100000"
11110000"
11111000"
S7=”11111100”
S8=”11111110”S9="
11111111"
S10="
01111111"
S11="
00111111"
S12="
00011111"
S13="
00001111"
S14="
00000111"
S15=”00000011”
S16=”00000001”
CLR
当选择花样三时状态图如下:
S0=”ZZZZZZZZ”S1="
01000000"
00100000"
00010000"
00001000"
00000100"
S7=”00000010”
S8=”00000001”S9="
00000010"
0001000"
2.2总体框图
CLK
XUAN
3.模块设计
3.1分频器模块
--由于机器时钟周期太短,不能满足要求
--此模块实现分频,得到需要的时钟
LIBRARYIEEE;
USEIEEE.std_logic_1164.ALL;
USEIEEE.std_logic_unsigned.ALL;
ENTITYfenpinqiIS
PORT(
CLK:
INSTD_LOGIC;
--原机器时钟
CLR:
CLK1:
OUTSTD_LOGIC);
--分频后的时钟
ENDfenpinqi;
ARCHITECTUREARTOFfenpinqiIS
SIGNALCK:
STD_LOGIC;
BEGIN
PROCESS(CLK,CLR)IS
VARIABLETEMP:
STD_LOGIC_VECTOR(2DOWNTO0);
IFCLR='
1'
THEN
CK<
='
0'
;
TEMP:
="
000"
ELSIF(CLK'
EVENTANDCLK='
)THEN
IFTEMP="
111"
=NOTCK;
ELSE
=TEMP+'
ENDIF;
ENDPROCESS;
CLK1<
=CK;
ENDART;
3.2花样一模块
--用分频器分频后的时钟来显示花样实现
--从两边向中间亮,再从中间向两边亮;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYhy1IS
PORT(CLK1:
XUAN:
INSTD_LOGIC_VECTOR(1DOWNTO0);
LED1:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYhy1;
ARCHITECTUREARTOFhy1IS
TYPESTATEIS(S0,S1,S2,S3,S4,S5,S6);
--设计状态机,实现花样转换
SIGNALCURRENT_STATE:
STATE;
SIGNALLIGHT:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(CLR,CLK1,XUAN)IS--定义花样(1为灯亮,0为灯灭)
CONSTANTL1:
STD_LOGIC_VECTOR(7DOWNTO0):
CONSTANTL2:
CONSTANTL3:
CONSTANTL4:
CONSTANTL5:
CONSTANTL6:
IFXUAN="
01"
IFCLR='
CURRENT_STATE<
=S0;
ELSIF(CLK1'
EVENTANDCLK1='
CASECURRENT_STATEIS--状态机转换
WHENS0=>
LIGHT<
ZZZZZZZZ"
CURRENT_STATE<
=S1;
WHENS1=>
=L1;
=S2;
WHENS2=>
=L2;
=S3;
WHENS3=>
=L3;
=S4;
WHENS4=>
=L4;
=S5;
WHENS5=>
=L5;
=S6;
WHENS6=>
=L6;
ENDCASE;
ENDIF;
LED1<
=LIGHT;
3.3花样二模块
--实现淡入淡出效果
ENTITYhy2IS
LED2:
ENDENTITYhy2;
ARCHITECTUREARTOFhy2IS--设计状态机,实现花样转换
TYPESTATEIS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16);
CONSTANTL6:
CONSTANTL7:
11111100"
CONSTANTL8:
11111110"
CONSTANTL9:
CONSTANTL10:
CONSTANTL11:
CONSTANTL12:
CONSTANTL13:
CONSTANTL14:
CONSTANTL15:
00000011"
CONSTANTL16:
00000001"
10"
CASECURRENT_STATEIS--状态机转换
=S7;
WHENS7=>
=L7;
=S8;
WHENS8=>
=L8;
=S9;
WHENS9=>
=L9;
=S10;
WHENS10=>
=L10;
=S11;
WHENS11=>
=L11;
=S12;
WHENS12=>
=L12;
=S13;
WHENS13=>
=L13;
=S14;
WHENS14=>
=L14;
=S15;
WHENS15=>
=L15;
=S16;
WHENS16=>
=L16;
LED2<
3.4花样三模块
--用分频器分频后的时钟来显示花样实现
--从左至右逐个亮,在从右到左逐个亮
ENTITYhy3IS
LED3:
ENDENTITYhy3;
ARCHITECTUREARTOFhy3IS--设计状态机,实现花样转换
TYPESTATEIS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14);
11"
LED3<
3.5顶层设计
--将以上几个模块整合起来,实现八路彩灯的花样控制
ENTITYcaidengIS
PORT(CLK:
LED:
ENDENTITYcaideng;
ARCHITECTUREARTOFcaidengIS
COMPONENTfenpinqi--对分频器模块进行定义
PORT(
ENDCOMPONENTfenpinqi;
COMPONENThy1--对花样一模块进行定义
XUAN:
ENDCOMPONENThy1;
COMPONENThy2--对花样二模块进行定义
ENDCOMPONENThy2;
COMPONENThy3--对花样三模块进行定义
ENDCOMPONENThy3;
SIGNALS:
--定义中间变量
SIGNALL1:
SIGNALL2:
SIGNALL3:
U1:
fenpinqiPORTMAP(CLK,CLR,S);
--对分频器模块进行例化
U2:
hy1PORTMAP(S,CLR,XUAN,L1);
--对花样一模块进行定义
U3:
hy2PORTMAP(S,CLR,XUAN,L2);
--对花样二模块进行例化
U4:
hy3PORTMAP(S,CLR,XUAN,L3);
--对花样三模块进行例化
LED<
=L1WHENXUAN="
ELSE--让LED显示选定的花样
L2WHENXUAN="
L3;
4.仿真图
4.1分频器仿真波形
CLK为输入,是机器时钟。
上升沿有效
CLR为输入,是异步复位端,当为高电平时有效,CLK1保持状态
CLK1为输出,是分频后得到的我们需要的时钟,周期是原时钟的十六倍
4.2花样一仿真波形
CLK1为输入,是分频后得到的时钟
CLR为输入,是异步复位端,当为高电平时有效
XUAN是输入,进行选择花样.此时选择的是花样一
LED1是输出,用来显示花样实现从两边向中间亮,再从中间向两边亮,运行结果正确
4.3花样二仿真波形
XUAN是输入,进行选择花样.此时选择的是花样二
LED1是输出,用来显示花样实现淡入淡出效果,运行结果正确
4.4花样三仿真波形
LED1是输出,用来显示花样从左至右逐个亮,在从右到左逐个亮,运行结果正确
4.5总体仿真波形
CLK为输入,是原机器时钟
XUAN是输入,进行选择花样,依次选择花样一,花样二,花样三
LED1是输出,用来显示花样,运行结果正确
5.心得体会
本次设计的课题是彩灯控制器的设计,当拿到这个课题的时候经过分析就知道关键是状态机和分频器的使用,分频的方法有很多种,对于同一种功能的实现,用VHDL可以采用多种方式进行描述,每种方式之间各有优劣,本次设计只采用了其中较简单的一种,应尽量用最简洁的语言写出所需功能的程序。
通过这次课程设计对EDA技术有了更进一步的熟悉,VHDL语言和C语言等其他语言还是有很大的区别。
VHDL是EDA技术的重要组成部分,其具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化、结构化设计方面,表现了强大的生命力和应用潜力。
其主要的也是最大的优点就在于设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。
在实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 八路 彩灯 控制器