8路彩灯控制

  • 格式:doc
  • 大小:1.01 MB
  • 文档页数:5

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一 8路彩灯控制器

实验目的:

(1)学会各种8路彩灯控制器的设计方法

(2)学会VHDL的多进程及多层次设计方法

实验原理:

8路彩灯的三钟花形控制器。能控制8路彩灯按两种节拍、三种花形循环变化。两种节拍分别为0.25s和0.5s。三种花形分别为:

(1)8路彩灯从左至右按次序渐亮,全亮后后逆次序渐灭。

(2)从中间到两边对称的渐亮,全亮后逆次序渐灭。

(3)8路彩灯分成两半,从左至右顺次渐亮,全亮后则全灭。

两种节拍的交替只需要将4Hz的时钟脉冲二分频,得到一个2Hz的时钟脉冲,让这两种时钟脉冲交替来控制三种花形循环变化即可设计思想体现在图一所示的顶层原理图中。

FEN2是一个二分频器,MUX21是二选一多路选择器,CD是8路彩灯的三种花形控制器。

实验内容:

(1)在MAX+plusII中用VHDL语言输入FEN2 、MUX21、CD源程序,保存名字与实体名一致,后缀为vhd,选择目标器件为EP1K30TC144-3,然后

进行编译、仿真,.

(2)选实验电路结构图为NO.1,8路彩灯依次接PIO32~PIO39,clk 可接CLOCK0~4中的任一个,查表进行引脚锁定。

参考程序:

1. 8路彩灯的三种花形控制模块CD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY cd IS

PORT(clk:IN STD_LOGIC;

jp:OUT STD_LOGIC;

qq:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END cd;

ARCHITECTURE behav OF cd IS

CONSTANT w:INTEGER:=7;

SIGNAL q:STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

PROCESS(clk)

VARIABLE flag:BIT_VECTOR(2 DOWNTO 0):="000"; VARIABLE jp1:STD_LOGIC:='0';

BEGIN

IF clk 'EVENT AND clk='1' THEN

IF flag="0000" THEN

q<='1'&q(w DOWNTO 1);

IF q(1)='1' THEN

flag:="001";

END IF;

ELSIF flag="001" THEN

q<=q(w-1 DOWNTO 0)&'0';

IF q(6)='0' THEN

flag:="010";

END IF;

ELSIF flag="010" THEN

q(w DOWNTO 4)<=q(w-1 DOWNTO 4)&'1';

q(w-4 DOWNTO 0)<='1'&q(w-4 DOWNTO 1); IF q(1)='1' THEN

flag:="011";

END IF;

ELSIF flag="011" THEN

q(w DOWNTO 4)<=q(w-1 DOWNTO 4)&'0'; q(w-4 DOWNTO 0)<='0'&q(w-4 DOWNTO 1); IF q(1)='0' THEN

flag:="100";

END IF;

ELSIF flag="100" THEN

q(w DOWNTO 4)<='1'&q(w DOWNTO 5);

q(w-4 DOWNTO 0)<='1'&q(w-4 DOWNTO 1); IF q(1)='1' THEN

flag:="101";

END IF;

ELSIF flag="101" THEN

q<="00000000";

jp1:=NOT jp1 ;

flag:="000";

END IF;

END IF;

qq<=q;

jp<=jp1;

END PROCESS;

END behav;

仿真波形图

2. 二选一多路选择器模块MUX21 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21 IS

PORT(a,b,s:IN STD_LOGIC;

y:OUT STD_LOGIC); END mux21;

ARCHITECTURE ar OF mux21 IS BEGIN

PROCESS(a,b,s)

BEGIN

IF s='0'THEN

y<=a;

ELSE

y<=b;

END IF;

END PROCESS;

END ar;

仿真波形图

3. 二分频模块FEN2

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY fen2 IS

PORT(clk:IN STD_LOGIC;

clkk:OUT STD_LOGIC);

END fen2;

ARCHITECTURE behav OF fen2 IS BEGIN

PROCESS(clk)

VARIABLE clkk1:STD_LOGIC:='0'; BEGIN

IF clk 'EVENT AND clk='1' THEN clkk1:=NOT clkk1;

END IF;

clkk<=clkk1;

END PROCESS;

END behav;

仿真波形图

顶层仿真波形: