EDA大三课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一,课件
今需设计一个十六路彩灯控制器,6种花型循环变化,有清零开关,并且可以选择快慢两种节拍。
根据系统设计要求可知,整个系统共有三个输入信号:控制彩灯节奏快慢的基准时钟信号CLK_IN,系统清零信号CLR,彩灯节奏快慢选择开关CHOSE_KEY;共有16个输出信号LED[15..0],分别用于控制十六路彩灯。
据此,我们可将整个彩灯控制器CDKZQ分为两大部分:时序控制电路SXKZ 和显示控制电路XSKZ,整个系统的组成原理图如图2.1所示。
2.3.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(2DOWNTO0);
BEGIN
IF CLR='1'THEN--当CLR='1'时清零,否则正常工作
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;
--当CHOSE_KEY='1'时产生基准时钟频率的1/4的时钟信号,否则产生基准时钟--频率的1/8的时钟信号
ELSE
IF TEMP="111"THEN
TEMP:="000";
CLLK<=NOT CLLK;
ELSE
TEMP:=TEMP+'1';
END IF;
END IF;
END IF;
END PROCESS;
CLK<=CLLK;
END ARCHITECTURE ART;
2.3.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:OUT STD_LOGIC_VECTOR(15DOWNTO0));
END ENTITY XSKZ;
ARCHITECTURE ART OF XSKZ IS
TYPE STATE IS(S0,S1,S2,S2,S4,S5,S6);
SIGNAL CURRENT_STATE:STATE;
SIGNAL FLOWER:STD_LOGIC_VECTOR(15DOWNTO0);
BEGIN
PROCESS(CLR,CLK)IS
CONSTANT F1:STD_LOGIC_VECTOR(15DOWNTO0):="0001000100010001";
CONSTANT F2:STD_LOGIC_VECTOR(15DOWNTO0):="1010101010101010";
CONSTANT F2:STD_LOGIC_VECTOR(15DOWNTO0):="0011001100110011";
CONSTANT F4:STD_LOGIC_VECTOR(15DOWNTO0):="0100100100100100";
CONSTANT F5:STD_LOGIC_VECTOR(15DOWNTO0):="1001010010100101";
CONSTANT F6:STD_LOGIC_VECTOR(15DOWNTO0):="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<=S2;
WHEN S2=>
FLOWER<=F2;
CURRENT_STATE<=S4;
WHEN S4=>
FLOWER<=F4;
CURRENT_STATE<=S5;
WHEN S5=>
FLOWER<=F5;
2.3.3整个电路系统的VHDL源程序
--CDKZQ.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY CDKZQ IS
PORT(CLK_IN:IN STD_LOGIC;
CLR:IN STD_LOGIC;
CHOSE_KEY:IN STD_LOGIC;
LED:OUT STD_LOGIC_VECTOR(15DOWNTO0));
END ENTITY CDKZQ;
ARCHITECTURE ART OF CDKZQ IS
COMPONENT SXKZ IS
PORT(CHOSE_KEY:IN STD_LOGIC;
CLK_IN:IN STD_LOGIC;
CLR:IN STD_LOGIC;
CLK:OUT STD_LOGIC);
END COMPONENT SXKZ;
COMPONENT XSKZ IS
PORT(CLK:IN STD_LOGIC;
CLR:IN STD_LOGIC;
LED:OUT STD_LOGIC_VECTOR(15DOWNTO0));
END COMPONENT XSKZ;
SIGNAL S1:STD_LOGIC;
BEGIN
U1:SXKZ PORT MAP(CHOSE_KEY,CLK_IN,CLR,S1);
U2:XSKZ PORT MAP(S1,CLR,LED);
END ARCHITECTURE ART;
2.4.1系统的有关仿真
时序控制电路SXKZ、显示控制电路XSKZ及整个电路系统CDKZQ的仿真图分别如图2.2、图2.3和图2.4所示。
2.4.2系统的硬件验证
系统通过仿真后,我们可根据自己所拥有的EDA实验开发系统进行编程下载