2025年彩灯控制电路设计与实现(VHDL编程).pdf
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为。——《孟子》
彩灯控制电路设计与实现
实验任务要求:
用VHDL语言设计并实现一个彩灯控制电路,仿真并下载验证其功能。彩灯
有两种工作模式,可通过拨码开关或按键进行切换。
(1)单点移动模式:一个点在8个发光二极管上来回的亮
(2)幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后再向中间点
灭,依次往复
设计思路和过程:
可以将两种模式分开设计,再用一个控制钮进行切换。两种模式本质一样,
都是循环点亮灯。可以用状态机设计。
首先明确设计对象的外部特征,输入信号只有时钟信号cp和切换按钮此处
取a;输出为检测的八个彩灯亮暗。
根据设计对象的操作控制步来确定有限状态机的状态。取初始状态为s0,第
一种模式共有14种状态循环,因而可取状态
s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;第二种模式有八种状态,
可共用第一种模式中的前八种状态,即为s0,s1,s2,s3,s4,s5,s6,s7。
根据题目要求的循环可以写出各个状态的下一状态,写完整个循环为止。切
换按钮可以用一个If来总领。
单点移动模式:
S0S1S2S3S4
S13S5
S12S6
S11S10S9S8S7
臣心一片磁针石,不指南方不肯休。——文天祥
S0S1S2S3
S7S6S5S4
流程图:
彩灯电路设计语言:
useieee.std_logic_1164.all;
entitypmdis
port(
a,cp:instd_logic;%
deng:outstd_logic_vector(7downto0)%输出灯信号
);
endpmd;
architecturearchofpmdis
typeall_stateis(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13);%枚举状态机状态
以铜为镜,可以正衣冠;以古为镜,可以知兴替;以人为镜,可以明得失。——《旧唐书·魏征列传》
signalstate:all_state;%
begin%开始程序
process(cp)
begin
if(cpeventandcp=1)then%时钟信号开始计