logo资料库

多路彩灯控制器的设计与分析.docx

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
多路彩灯控制器的设计与分析 一、系统设计要求 今需设计一个十六路彩灯控制器,六种花型循环变化,有清零 开关,并且选择快慢两种节拍。 硬件描述语言(HDL)是相对于一般的计算机软件语言而言的。 HDL 是用于设计硬件电子系统的计算机语言,他描述电子系统的 逻辑功能,电路结构和连接方式。设计者可以用 HDL 程序来描述 所希望的电路系统,规定其结构特征和电路的行为方式,然后利 用综合器和适配器将此程序变成控制 FPGA 和 CPLD 内部结构,并 实现相应逻辑功能的门级或更底层的结构网表文件和下载文件。 VHDL 主要用于描述数字系统的结构,行为,功能和接口。与其他 的 HDL 语言相比,VHDL 具有更强的行为描述能力,从而决定了它 成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是 避开具体的器件结构。从逻辑行为上描述和设计大规模电子系统 的重要保证。EDA 功能强大,描述能力强,可移植性好研制周期 短.成本低等特点,本课题以 Alter 公司提供的 Max+Plus 为平台, 设计一个可变速的彩灯控制器,可以在不修改硬件电路的基础上, 仅通过更改软件就能实现任意修改花型的编程控制方案,实现 16 只 LED 以 6 种花型和两种速度循环变化显示,而且设计非常方便, 设计的电路保密性。 二、课程设计目的 1.进一步掌握数字电路课程所学的理论知识。 2.了解数字电路设计的基本思想和方法,学会科学分析和解决问题。 3.熟悉几种常用集成数字芯片,并掌握工作原理,进一步学会使用 其进行电路设计。 4.培养独立思考的能力和动手操作的能力。 三、总体设计步骤
1,设计思路 用 VHDL 进行设计,首先应该理解,VHDL 语言是一种全方位硬 件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设 计层次。应充分利用 VHDL 自顶向下的设计优点以及层次化的设计 概念,层次概念对于设计复杂的数字系统是非常有用的,它使得 我们可以从简单的单元入手,逐渐构成庞大而复杂的系统。 首先进行系统模块的划分,规定每一个模块的功能以及各模块 之间的接口,最终设计方案分为三大模块:16 路花样彩灯显示器. 时序控制器,整个电路系统,从而达到控制彩灯闪烁速度的快慢和 花型的变换。 自动控制多路彩灯按预设的花型进行转换;花型种类不少于三种; 花型自拟分别用快慢两种节拍实现花型变换 选择:用可编辑逻辑 器实现 二、设计方案的设计 根据题目实际要求,经过分析与思考,拟定以下两种方案: 方案一:总体分为三个模块。第一块实现花型的演示,第二种实现 花型的控制及节拍控制;第三块实现时钟信号的产生。 时钟信号电 路 花型控制电 路 显示电路
方案二;有三个模块,第一个是时钟控制模块,第二个是花型控 制模块,第三个是整体模块。 时钟控制电路 花型控制电路 总体控制电路 四、总体设计的选择 两种方案比较第二种方案相对简单。这样其优点在于:设计思想 比较简单元件种类使用比较少,并且方便连接电脑。由于种种原因, 我选择连线少的,操作简单容易连接和调试的设计方案。 五.总体设计的选择 1 设计原理 时序控制电路 SXKZ 根据输入信号 CKL –IN,CLK,CHOSE _KEY 产生符合一定要求的,供显示控制电路 XSKZ 使用的控制时钟信号, 而显示控制电路 XSKZ 则根据时序控制电路 SXKZ 输入的控制时钟 信号,输出 6 种花型循环变化的,控制 16 路彩灯工作的控制信号, 这些控制信号加上驱动电路一起控制彩灯工作。 2,系统设计方案根据系统设计方案可知,整个系统共三个输入信号; 控制彩灯快慢的基准时钟信号 CLK -IN,系统清零信号 CLK,彩灯 节拍快慢选择开关 CHOSE_KEY;共有 16 个输出信号 LED,分别控 制 16 路彩灯。 在设计过程中将整个彩灯控制电路分为两大部分;时序控制电路和 显示控制电路,整个系统组成如下图。
pin_name2 pin_name pin_name3 INPUT VCC INPUT VCC INPUT VCC SXKZ CLK CHOSE_KEY CLK_IN CLR inst XSKZ CLK CLR inst1 LED[15..0] OUTPUT pin_name4 六.功能模块 1.时序控制电路的 VHDL 源程序 --SXKZ.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SXKZ IS PORT ( CHOSE_KEY: IN STD_LOGIC; CLK_IN: IN STD_LOGIC; CLR: IN STD_LOGIC; CLK: OUT STD_LOGIC); END ENTITY SXKZ ; ARCHITECTURE ART OF SXKZ IS SIGNAL CLLK : STD_LOGIC; BEGIN PROCESS(CLK_IN,CLR,CHOSE_KEY)IS VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN IF CLR='1' THEN CLLK<='0';TEMP:="000"; ELSIF RISING_EDGE(CLK_IN) THEN IF CHOSE_KEY='1' THEN IF TEMP="011" THEN TEMP:="000"; CLLK<=NOT CLLK; ELSE TEMP:=TEMP+'1'; END IF; TEMP="111" THEN TEMP:="000"; CLLK<=NOT CLLK; ELSE TEMP:=TEMP+'1'; ELSE IF END IF; END IF; END IF; END PROCESS; CLK<=CLLK; END ARCHITECTURE ART;
时序控制电路 SXKZ 的仿真图如下 2.显示控制电路系统的 VHDL 源程序 --XSKZ.VHD LIBRARY IEEE; USE IEEE.std_logic_1164.all; ENTITY XSKZ IS PORT ( ); CLK : IN STD_LOGIC; CLR : IN STD_LOGIC; LED : OUTSTD_LOGIC_VECTOR(15 DOWNTO 0) END ENTITY XSKZ;
ARCHITECTURE ART OF XSKZ IS TYPE STATE IS (S0,S1,S2,S3,S4,S5,S6); SIGNAL CURRENT_STATE:STATE; SIGNAL FLOWER:STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN PROCESS (CLR, CLK)IS CONSTANT F1:STD_LOGIC_VECTOR(15 DOWNTO 0):="0001000100010001"; CONSTANT F2:STD_LOGIC_VECTOR(15 DOWNTO 0):="1010101010101010"; CONSTANT F3:STD_LOGIC_VECTOR(15 DOWNTO 0):="0011001100010011"; CONSTANT F4:STD_LOGIC_VECTOR(15 DOWNTO 0):="0100100100010100"; CONSTANT F5:STD_LOGIC_VECTOR(15 DOWNTO 0):="1001010010100101"; CONSTANT F6:STD_LOGIC_VECTOR(15 DOWNTO 0):="1101101101100110"; BEGIN IF CLR = '1' THEN CURRENT_STATE <= S0; ELSIF RISING_EDGE(CLK) THEN CASE CURRENT_STATE IS
WHEN S0=> FLOWER<="ZZZZZZZZZZZZZZZZ"; CURRENT_STATE<=S1; WHEN S1=> FLOWER<=F1; CURRENT_STATE<=S2; WHEN S2=> FLOWER<=F2; CURRENT_STATE<=S3; WHEN S3=> FLOWER<=F3; CURRENT_STATE<=S4; WHEN S4=> FLOWER<=F4; CURRENT_STATE<=S5; WHEN S5=> FLOWER<=F5; CURRENT_STATE<=S6; WHEN S6=> FLOWER<=F6; CURRENT_STATE<=S1; END CASE; END IF; END PROCESS; LED<=FLOWER;
分享到:
收藏