实验六循环彩灯.docx
- 文档编号:24473697
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:12
- 大小:177.62KB
实验六循环彩灯.docx
《实验六循环彩灯.docx》由会员分享,可在线阅读,更多相关《实验六循环彩灯.docx(12页珍藏版)》请在冰豆网上搜索。
实验六循环彩灯
实验六
8路彩灯控制实验
实验报告
实验6彩灯控制实验
1.设计8路彩灯控制电路,并用MAXPLUS进行仿真,将结果下载到实验箱中,测试电路的正确性。
要求:
设计一个8路彩灯控制电路,实现8位LED每隔1秒全亮、全灭、逐个点亮,延时间隔可由外部增和减按键进行调节,同时将延时间隔显示在数码管上。
注:
其中彩灯的样式可以自己进行定义
注意:
外部时钟信号由实验箱的信号源提供,需要设计相应的分频电路进行分频,以获得1Hz的时钟信号
2.应包含VHDL源程序,详细的设计报告,对程序,仿真结果,实验箱运行结果(图片贴到报告中)进行详尽的分析
一、实验分析
1、彩灯动作:
逐个点亮(自左向右)——至全亮——全灭——全亮——全灭——逐个点亮,时间间隔1S,可通过按键进行调节。
2、本实验由四个模块组成:
四频率输出分频器,四选一频率选择器,彩灯控制器和数字频率计。
四选一频率选择器从分频器中选择不同频率的时钟信号输送到彩灯控制器,从而达到控制彩灯闪烁速度的快慢的变换。
控制过程如下图:
1)rst为低电平复位信号,为低电平时,8盏灯保持全灭的状态;输入信号为一个时钟信号,经过分频器分频之后产生频率不同的四个时钟信号。
2)频率选择器可以通过按键输入高电平脉冲来实现四种频率的循环选择。
3)彩灯控制模块实现多彩灯花样循环的控制,时间间隔有频率选择器的输出频率决定。
2、VHDL源程序
1、四频率输出分频器
根据要求有4种速度的变化,而只有一个输入的时钟信号,所以要对输入的时钟信号进行分频,本次设计采用了二分频、四分频、八分频和16分频得到4种频率信号。
二分频VHDL代码如下。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYfen2IS
PORT(clk,rst:
INstd_logic;
clk1:
OUTstd_logic);
ENDfen2;
ARCHITECTUREbehavOFfen2IS
BEGIN
PROCESS(clk,rst)
VARIABLEq1:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFrst='0'THEN
q1:
=(OTHERS=>'0');
ELSIFclk'eventANDclk='1'THEN
IFq1<"0001"THENq1:
=q1+1;
ELSEq1:
=(OTHERS=>'0');
ENDIF;
ENDIF;
IFq1="0001"THENclk1<='1';
ELSEclk1<='0';
ENDIF;
ENDPROCESS;
ENDbehav;
四频率输出分频器如下图:
模块元件符号如下图:
时序仿真图:
2、四选一频率选择器
四选一频率选择器控的功能是从分频器中选择不同的时钟信号送给彩灯控制器,实现彩灯闪烁频率的变化,VHDL代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitysixuanyiis
port(f_choose,rst,clk1,clk2,clk3,clk4:
instd_logic;
z:
outstd_logic);
endsixuanyi;
architecturebehaveofsixuanyiis
signals:
std_logic_vector(1downto0);
begin
one:
process(f_choose)
begin
ifrst='0'thens<="00";
elsiff_choose'eventandf_choose='1'then
s<=s+1;
endif;
endprocessone;
two:
process(s,clk1,clk2,clk3,clk4)
begin
casesis
when"00"=>z<=clk1;
when"01"=>z<=clk2;
when"10"=>z<=clk3;
when"11"=>z<=clk4;
whenothers=>z<=null;
endcase;
endprocesstwo;
endbehave;
模块元件符号如下图:
f_choose为频率选择端,每输入一次高脉冲,频率便改变一次,可以通过按键输入高脉冲来实现四种频率的循环选择。
时序仿真图如下:
3、彩灯控制器
彩灯动作:
逐个点亮(自左向右)——至全亮——全灭——全亮——全灭——逐个点亮,时间间隔1S,可通过按键进行调节。
彩灯控制器电路是整个设计的核心,它控制整个设计的输出效果也就是图案的样式变化。
其中用1代表灯亮,用O代表灯灭,由0,1按不同的规律组合代表不同的灯光图案,同时使其选择不同的频率,以实现多种图案及多种频率的花样功能显示。
该程序充分证明了用VHDL设计电路的灵活性,即可以通过改变程序中输出变量的位数来改变彩灯的数目。
彩灯动作:
逐个点亮(自左向右)——至全亮——全灭——全亮——全灭——逐个点亮,时间间隔1S,可通过按键进行调节。
VHDL源程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYcaidengIS
PORT(clk,rst:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
END;
ARCHITECTUREhuayangOFcaidengIS
SIGNALs:
std_logic_vector(4DOWNTO0);
BEGIN
PROCESS(s,clk)
BEGIN
IFrst='0'THENs<="00000";
ELSIFclk'eventANDclk='1'THEN
IFs="11111"THEN
s<="00000";
ELSEs<=s+1;
ENDIF;
CASEsIS
WHEN"00000"=>q<="10000000";
WHEN"00001"=>q<="11000000";
WHEN"00010"=>q<="11100000";
WHEN"00011"=>q<="11110000";
WHEN"00100"=>q<="11111000";
WHEN"00101"=>q<="11111100";
WHEN"00110"=>q<="11111110";
WHEN"00111"=>q<="11111111";
WHEN"01000"=>q<="00000000";
WHEN"01001"=>q<="11111111";
WHEN"01010"=>q<="00000000";
WHEN"01011"=>q<="10000000";
WHEN"01100"=>q<="11000000";
WHEN"01101"=>q<="11100000";
WHEN"01110"=>q<="11110000";
WHEN"01111"=>q<="11111000";
WHEN"10000"=>q<="11111100";
WHEN"10001"=>q<="11111110";
WHEN"10010"=>q<="11111111";
WHEN"10011"=>q<="00000000";
WHEN"10100"=>q<="11111111";
WHEN"10101"=>q<="00000000";
WHENOTHERS=>NULL;
ENDCASE;
ENDIF;
ENDPROCESS;
END;
模块元件符号如下:
仿真时序图如下:
4、数字频率计
部分源代码如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYDF_meterIS
PORT(start:
INSTD_LOGIC;
clk:
INSTD_LOGIC;
clk1:
INSTD_LOGIC;
yy1:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
w1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDDF_meter;
ARCHITECTUREbehaveOFDF_meterIS
SIGNALb1,b2,b3,b4,b5,b6,b7:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALBCD:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALSCO:
integerrange0to49999999;
SIGNALSSCO:
integerrange0to49999999;
SIGNALEN,bclk:
STD_LOGIC;
SIGNALSSS:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALBCD0,BCD1,BCD2,BCD3:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
SECOND:
PROCESS(clk)
BEGIN
IFstart='1'THENSCO<=0;
ELSIFclk'eventANDclk='1'THEN
IFSCO<49999999THENSCO<=SCO+1;
ELSESCO<=49999999;
ENDIF;
ENDIF;
IFSCO<49999999ANDstart='0'THENEN<='1';
ELSEEN<='0';
ENDIF;
ENDPROCESS;
and2:
PROCESS(EN,clk1)
BEGIN
bclk<=clk1ANDEN;
ENDPROCESS;
ENDbehave;
模块元件符号:
5、顶层文件原理图:
时序仿真图:
由时序仿真图可知,此设计符合实验要求,在上述顶层文件原理图中,F_CHOODS输出端接数字频率计的clk1端,数字频率计的YY1端接数码管,以实现通过按键调节时间间隔,并在数码管上显示出来。
4、编辑引脚
完成引脚锁定:
重新编译使之生效
五、编程下载并进行仿真
按要求下载程序,连接线路进行实验验证。
观察仿真结果与工作状态表是否完全一致,实验箱显示结果是否符合符合实验目的的要求。
若不一致,重新进行实验设计。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 循环 彩灯