logo资料库

多路彩灯控制器.doc

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
题目: 基于 FPGA 彩灯控制器 学院:电子信息工程学院 院系: 班级: 姓名: 学号: 指导老师: 日期:2010-12-15
引言: 21 世纪,电子技术迅猛发展,高薪技术日新月异。传统的设计方法正逐步退 出历史的舞台,取而代之的是基于 EDA 技术的芯片设计技术,它正在成为电子 系统设计的主流。大规模可编程器件现场可编程门阵列 FPGA 和复杂可编程逻辑 器件 CPLD 是当今应用最广泛的两类可编程专用集成电路。 近年来,EDA 技术高速发展使现代电子产品向着功能多样化,体积最小化, 功耗最低化的方向发展。 它与传统电子产品在设计上的显著优势就是:第一大量使用大规模可编程逻 辑器件,以提高产品性能,缩小产品体积,降低功耗。第二是广泛运用现代化计 算机技术,以提高电子设计自动化程度,缩短开发周期,提高产品的竞争力。 所以掌握这方面的应用极其重要,本题目就是基于 FPGA 这一技术完成实现 的。 众所周知,彩灯、流水灯、装饰灯等在日常生活和商业都有极其广泛的应用。 具有很高的商业价值和研究价值。而对于越来越变化多端要求极高的灯饰行业, 相对传统的单片机来说,FPGA 的性价比越来越高,功能强大,能轻松的完成对 彩灯的控制。 本题目基于 FPGA 技术设计彩灯控制器。初步实现了 FPGA 技术在灯饰行业 的简单应用,为深入提供了一些有价值的参考资料。 摘要:CPLD EDA 彩灯控制器 显示模块 时序模块 时钟信号 清零信号 输出信号 状态机 (一)题目任务: 设计一个十六路彩灯控制器,6 种花型循环变化,有清零开关,并且可以选 择快慢两种节拍。 (二)题目基本实现方案: 根据系统设计要求可知,整个系统共有三个输入信号:控制彩灯节奏快慢的 基 准 时 钟 信 号 CLK_IN , 系 统 清 零 信 号 CLR , 彩 灯 节 奏 快 慢 选 择 开 关 CHOSE_KEY;共有 16 个输出信号 LED[15..0],分别用于控制十六路彩灯。 据此,我们可将整个彩灯控制器 CDKZQ 分为三大部分:时序控制电路 SXKZ 和显示控制电路 XSKZ。 本题目还用原理图来完成顶层文件,对于比较简单的,子模块较少的题目, 建议顶层模块使用原理图,会比较直观。而对于比较复杂的,子模块较多的题目, 使用文本元件例化,会更简洁清晰。如用原理图完成顶层文件连线如图所示。 本题目是采用文本元件例化来完成的。
彩灯控制器的组成原理图 (三)VHDL 源程序 1,时序控制器:SXKZ 部分 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; architecture art of sxkz is signal cllk:std_logic; begin --库函数声明 --实体声明 --速度控制按钮 --输入时钟信号 --复位信号 --改变后的时钟信号 --结构体声明 process(clk_in,clr,chose_key)is variable temp:std_logic_vector(0 to 2); --进程 --定义一个变量 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; else --复位初始化 --按键按下,高速时 --输出时钟信号 T 为输入信号的 --8 倍 if temp="111" then temp:="000"; cllk<=not cllk; --按键没按下,低速时 --输出时钟信号 T 为输入信号的 --16 倍
else temp:=temp+'1'; end if; end if; end if; end process; clk<=cllk; end art; 生成的元器件符号 SYMBOL: 波形仿真: (输入信号) (输出波形) 2,显示控制器:XSKZ library ieee; use ieee.std_logic_1164.all; entity xskz is port( clk:in std_logic;
clr:in std_logic; led:out std_logic_vector(0 to 15) ); end entity; 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(0 to 15):="0001000100010001"; constant f2:std_logic_vector(0 to 15):="1010101010101010"; constant f3:std_logic_vector(0 to 15):="0011001100110011"; constant f4:std_logic_vector(0 to 15):="0100100100100100"; constant f5:std_logic_vector(0 to 15):="1001010010100101"; constant f6:std_logic_vector(0 to 15):="1101101101100110"; --定义一组彩灯的花式。 begin if clr='1' then current_state<=s0; elsif rising_edge(clk) then case current_state is --判断复位信号,有则复 --位状态为 0,否则等待 --时钟信号的上升沿 when s0=> flower<="0000000000000000"; 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; end architecture; 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; end architecture; 生成元器件符号:SYMBOL 波形仿真:
(输入信号) (输出波形) 3,彩灯控制器:CDKZ library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cdkz2 is port( clkin:in std_logic; clr:in std_logic; chose_key:in std_logic; led:out std_logic_vector(0 to 15) --实体 --端口定义
); end entity; architecture art of cdkz2 is component sxkz is port( chose_key:in std_logic; clk_in:in std_logic; clr:in std_logic; clk:out std_logic --结构体 --元件例化 sxkz --元件例化 xskz clk:in std_logic; clr:in std_logic; led:out std_logic_vector(0 to 15) --定义一个信号 u1:sxkz port map(chose_key,clkin,clr,s0); u2:xskz port map(s0,clr,led); ); end component sxkz; component xskz is port( ); end component xskz; signal s0:std_logic; begin end architecture; 彩灯控制器 SYMBOL: 波形仿真:
分享到:
收藏