8路简易彩灯

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

顶层原理图:
仿真时序图:
河南工业大学实验报告
学院:信息学院科目:EDA技术基础班级:电科100X班学号:姓名:成绩:
实验题目:8路彩灯控制器
实验目的:(1)学会用状态机设计循环彩灯控制;
(2)进一步掌握状态机的VHDL描述方法。

实验原理:设计一个8路彩灯控制器,能控制8路彩灯按照两种节拍,三种花型循环变化。

两种节拍分别是0.25s和0.5s。

三种花型分别是:
(1)从中间到两边对称渐亮,全亮后按次序渐灭。

(2)重复执行(1)过程。

(3)先偶数灯亮,再奇数灯亮,然后重复执行三次。

实验内容及步骤:
(1)分别设计花型模块,二分频模块,二选一多路选择模块。

(2)在MAX+plusII中用VHDL语言输入控制机的程序,然后进行编译,仿真,以保证控制器功能的正确性。

(3)引脚锁定及硬件测试。

操作方法:选择使用结构图NO.1;CLK接到CLOCK0上,设定为1Hz。

主要程序:
花型控制模块:
LIBRARY IEEE;
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 one OF cd IS
constant w:integer:=7;
SIGNAL XIN:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN
PROCESS(CLK)
VARIABLE NUM:INTEGER RANGE 0 TO 3;
VARIABLE STATE:STD_LOGIC_VECTOR(2 DOWNTO 0);
VARIABLE jp1:STD_LOGIC:='0';
BEGIN
IF CLK'EVENT AND CLK='1'THEN
IF STATE="000"THEN
XIN<="00000000";
STATE:="001";
ELSIF STATE="001"THEN
XIN(w DOWNTO 4)<=XIN(w-1 DOWNTO 4)& '1';
XIN(w-4 DOWNTO 0)<='1'& XIN(w-4 DOWNTO 1);
IF XIN(1)='1'THEN
STATE:="010";
END IF;
ELSIF STATE="010"THEN
XIN<=XIN(w-1 DOWNTO 0)& '0';
IF XIN(6)='0'THEN
STATE:="001";
NUM:=NUM+1;
IF NUM=2 THEN
STATE:="011";
NUM:=0;
END IF;
END IF; ELSIF STATE="011"THEN
XIN<="01010101";
STATE:="100";
IF NUM=3 THEN
NUM:=0;
STATE:="000";
jp1:=NOT jp1;
END IF;
ELSIF STATE="100"THEN
XIN<="10101010";
STATE:="011";
NUM:=NUM+1;
END IF;
END IF;
QQ<=XIN;
jp<=jp1;
END PROCESS;
END one;
二选一多路选择器模块:
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
二分频模块:
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;
二分频仿真波形:。

相关文档
最新文档