最新EDA技术:实验10-彩灯控制器设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
when 2=>output<=in3;
when 3=>output<=in4;
when others=>null;
end case;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY xzq4_1 IS
PORT
(
rst:in std_logic;
inp:in integer range 0 to 3;
in1,in2,in3,in4
: In std_logic;
output );
: OUT
6
顶层设计
7
8
附录---VHDL程序
----------------------------------------------分频器模块-----------------------------------------
-- MAX+plus II VHDL Template
-- Clearable loadable enablable counter
EDA技术:实验10-彩灯控制器 设计与实现
周四实验:彩灯控制器设计与实现
基本任务与要求:
功能与要求: ➢设计并实现一彩灯控制器,要有多种花型变化(至少 设计4种);多种花型可以自动变换,循环往复;彩灯变 换的快慢节拍可以选择;彩灯控制器具有清零开关。 ➢4种花色(4种花样可分别为:①彩灯从右到左,然后从 左到右逐次闪烁。②彩灯从右到左点亮,然后从左到右 逐次依次熄灭,全亮全灭。③彩灯两边同时亮1个逐次 向中间移动再散开。④彩灯两边同时亮2个,2亮2灭) 的彩灯控制系统。
end process p3;
p4:process(clk,rst)
variable d:integer range 0 to 20;
begin
12
if rst='1' then clk_10<='0';
----- 复位信号控制部分
else
if clk'event and clk='1'then
if d>=9 then
variable a:integer range 0 to 20;
begin
9
if rst='1' then
clk_4<='0';
----- 复位信号控制部分
else
if clk'event and clk='1'then
if a>=3 then
a:=0;
clk_4<='1';
else
a:=a+1;
d:=0;
clk_10<='1';
else
d:=d+1;
clk_10<='0';
end if;
end if;
end if;
end process p4;
end cd;
13
----------------------------------------------4选1选择器---------------------------------------
4
4种频率,4种花色。
4种花色如何实现? 4种花色(4种花样可分别为:①彩灯从右到左,然
后从左到右逐次闪烁。②彩灯从右到左点亮,然后从 左到右逐次依次熄灭,全亮全灭。③彩灯两边同时亮1 个逐次向中间移动再散开。④彩灯两边同时亮2个,2 亮2灭。 花色控制还是可以通过计数器来实现。 4种频率如何实现? 可以通过分频器电路+动态扫描电路来实现。
if clk'event and clk='1'then
if b>=5 then
b:=0;
clk_6<='1';
else
b:=b+1;
clk_6<='0';
end if;
end if;
end if;
end process p2;
p3:process(clk,rst)
variable c:integer range 0 to 20;
begin
11
if rst='1' then
clk_8<='0';
----- 复位信号控制部分
else
if clk'event and clk='1'then
if c>=7 then
c:=0;
clk_8<='1';
else
c:=c+1;
clk_8<='0';
end if;
end Biblioteka Baiduf;
end if;
2
设计分析
实用彩灯控制系统设计,可分成两个设计: 一是1种频率,1种花色; 二是4种频率,4种花色。
3
1种频率,1种花色
如何实现? 做一个计数器,当每计一个数,使
输出变换一下。花色要求:彩灯OUT1~ OUT8,8个LED从右到左,然后从左到 右逐次点亮。因此,只要每计一个数, 就点亮一个灯就可以实现。
std_logic
END xzq4_1; ARCHITECTURE a OF xzq4_1 IS
BEGIN PROCESS (rst,inp) BEGIN
if(rst='1') then output<='0';
else
case inp is
when 0=>output<=in1;
when 1=>output<=in2;
5
简单举例
设计一个彩灯控制器,使彩灯(LED管)能连 续发出四种以上不同的显示形式,随着彩灯显 示图案的变化,发出不同的音响。 彩灯的设计采用分模块来完成的,包括分频器 、计数器、选择器、彩灯控制器。其中彩灯控 制器是用来输出不同的花样,彩灯控制器的输 出则是用一个32进制的计数器来控制,扬声器 的输出时用不同的频率来控制,所以用了一个 集成分频器来使输入的频率被分为几种不同的 频率,不同频率的选择性的输出则是用一个4 选一的选择器来控制。
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY fenpinqi IS
PORT
(
clk,rst : IN
std_logic;
clk_10,clk_4,clk_6,clk_8
: OUT std_logic
);
END fenpinqi; ARCHITECTURE cd OF fenpinqi IS begin p1:process(clk,rst)
clk_4<='0';
end if;
end if;
end if;
end process p1;
p2:process(clk,rst)
variable b:integer range 0 to 20;
begin
10
if rst='1' then
clk_6<='0';
----- 复位信号控制部分
else