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