EDA课程设计
多 路 彩 灯 控 制
设 计
1)系统设计要求
设计一个多路彩灯控制器,要有多种花型变化(至少设计4种),多种花型可以自动变换,循环往复,有清零开关,可以变化彩灯闪动频率即是可以选择快慢两种节拍。
2).设计方案
整个系统有三个输入信号,分别为控制快慢的信号SPEED,复位清零信号CLR,输出信号是彩灯输出状态。系统框图如:
主要模块组成:时序控制电路模块和显示电路模块,时序控制电路是根据输入信号的设
1
置得到相应的输出信号,并将此信号作为显示电路的时钟信号;显示电路输入时钟信号的周期,有规律的输出设定的六种彩灯变化类型。
3).模块设计
时序控制模块:CLK为输入时钟信号,电路在时钟上升沿变化;CLR为复位清零信号,高电平有效,一旦有效时,电路无条件的回到初始状态;SPEED为频率快慢选择信号,低电平节奏快,高电平节奏慢;CLK1为输出信号,CLR有效时输出为零,否则,随SPEED信号的变化而改变。
显示控制电路的模块框图如图所示,输入信号clk和clr的定义与时序控制电路一样,输入信号led[8...0]能够循环输出9路彩灯6种不同状态的花型。对状态的所对应的彩灯输出花型定义如下:
S0: 000000000 S1: 001001001 S2: 010010010 S3: 011011011 S4: 100100100 S5: 101101101 S 6:110110110
多路彩灯在多种花型之间的转换可以通过状态机实现,当复位信号clr有效时,彩灯恢复初始状态s0,否则,每个时钟周期,状态都将向下一个状态发生改变,并对应输出的花型,这里的时钟周期即时时序控制电路模块产生的输出信号,它根据SPEED信号的不同取值得到两种快慢不同的时钟频率。
4).时序控制电路模块程序如下:
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_unsigned.ALL; ENTITY SX IS PORT(
SPEED:IN STD_LOGIC; CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; CLK1:OUT STD_LOGIC); END SX;
ARCHITECTURE ART OF SX IS SIGNAL CK:STD_LOGIC; BEGIN
PROCESS(CLK,CLR,SPEED)IS
VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN
IF CLR='1' THEN CK<='0'; TEMP:=\
ELSIF(CLK'EVENT AND CLK='1')THEN IF(SPEED='1')THEN IF TEMP=\ TEMP:=\ CK<=NOT CK;
2
ELSE TEMP:=TEMP+'1'; END IF; ELSE
IF TEMP=\ TEMP:=\ CK<=NOT CK; ELSE
TEMP:=TEMP+'1'; END IF; END IF; END IF; END PROCESS; CLK1<=CK; END ART;
5).显示模块电路程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY XS IS
PORT(CLK1:IN STD_LOGIC; CLR:IN STD_LOGIC;
LED:OUT STD_LOGIC_VECTOR(8 DOWNTO 0)); END ENTITY XS; ARCHITECTURE ART OF XS IS TYPE STATE IS(S0,S1,S2,S3,S4,S5,S6); SIGNAL CURRENT_STATE:STATE;
SIGNAL LIGHT:STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN
PROCESS(CLR,CLK1)IS
CONSTANT L0:STD_LOGIC_VECTOR(8 DOWNTO 0):=\
CONSTANT L1:STD_LOGIC_VECTOR(8 DOWNTO 0):=\
CONSTANT L2:STD_LOGIC_VECTOR(8 DOWNTO 0):=\
3
CONSTANT L3:STD_LOGIC_VECTOR(8 DOWNTO 0):=\
CONSTANT L4:STD_LOGIC_VECTOR(8 DOWNTO 0):=\
CONSTANT L5:STD_LOGIC_VECTOR(8 DOWNTO 0):=\
CONSTANT L6:STD_LOGIC_VECTOR(8 DOWNTO 0):=\
BEGIN
IF CLR='1' THEN
CURRENT_STATE<=S0; LIGHT<=L0;
ELSIF(CLK1'EVENT AND CLK1='1')THEN CASE CURRENT_STATE IS
WHEN S0=> LIGHT<=\TE<=S1;
WHEN S1=> LIGHT<=L1; CURRENT_STATE<=S2;
WHEN S2=> LIGHT<=L2; CURRENT_STATE<=S3;
WHEN S3=> LIGHT<=L3; CURRENT_STATE<=S4;
WHEN S4=> LIGHT<=L4; CURRENT_STATE<=S5;
WHEN S5=> LIGHT<=L5; CURRENT_STATE<=S6;
WHEN S6=> LIGHT<=L6; CURRENT_STATE<=S1;
END CASE; END IF; END PROCESS; LED<=LIGHT; END ART;
4
6).时序控制模块仿真波形:
从图中可以看出,当复位信号为高电平时,电路时钟输出清零,当快慢信号SPEED为低电平时,时序控制电路四分频起作用,当快慢信号SPEED为高电平时,时序控制电路八分频起作用,仿真结果符合电路要求。
当复位信号有效时彩灯输出为零,否则,显示电路在六种不同状态间转换。
从图中可以看出当SPEED为高电平时彩灯状态转换快,为低电平时转换要慢,当复位信号有效时,所用输出都清零。
综上所述,本次设计实现了设计要求中的要求。
5).心得体会
这次课程设计对于我来说收获很大。通过本次实验,我认识到了实践的重要,也提高了我的实际动手能力。 我们要学会把理论联系实际,而这次课程设计就是一个很好的机会,不仅能提高我们的理论知识,而且也培养了我们的实际动手能力。尽管在中间遇到很多问题,我的设计最后在老师的检查下发现了自己存在的问题,是因为自己想的太简单,没有认真思考。但是经过老师的指导和同学的帮助,使得这次实验能顺利完成,而且在讨论中我们也学到了很多知识,而且也对也前的知识做了一个很好的回顾。在这次实验中,我体会到在进行一个综合性的硬件设计时,要全面考虑问题,比如想用其他信号来控制一个信号,就要考虑到和这个信号直接或间接关系的信号,必须是最重要相关的信号,然后用真值表来解决他们的关系,通过门电路来实现。下来就是在实际动手连接电路时的问题,由于种种客观方面的原因,导致理想和现实相差太远,输入电路不可以悬空,悬空并不是高电平,芯片上有接电源和接地的悬空是高电平,但这个高电
5
平并不是,有时候它不是怎么高,这样地话,就会对后面地时序电路产生影响在通过这两个礼拜的设计实习,让我真正理解了书本上知识,也让我知道我们课本上的知识在实际中怎么应用,理论联系实践,相互关系。通过此次设计,我对理论知识的学习有了很大的兴趣,现在我可以主动的去学习,我明白自己该学习那个方面,重点是什么。我也掌握的了在理论中遇到问题,应该怎样去解决,在实际中遇到迷团应该怎样去检查调试。最后,我非常感谢每天一直在实验室指到我们的老师。因为是他们使我在这次设计中受 益非浅。
6
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库EDA多路彩灯控制器设计报告在线全文阅读。
相关推荐: