⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 caideng.txt

📁 彩灯控制器 vhdl语言开发 eda实验
💻 TXT
字号:
有9个灯 已经按一定的频率在循环亮了,如何编写VHDL程序使彩灯的循环点亮的速度越来越慢,可以的话给我这个程序!不行的话告诉我怎么做。 

问题补充: 
原题是:实现类似转盘抽奖的抽奖机。设共有n种不同的奖项,分别用n个LED表示;开始抽奖后,n个LED以较快速度循环点亮,按下抽奖按键后,LED循环速度逐渐减慢,最终停止在一个随机的LED上,即为抽中的奖项。 
LED显示可以更换为数码管的n个数字之间的循环显示(推荐)。 
要求: 
a) 两个控制按键:“开始”、“抽奖”; 
b) n = 9。 
可以的话给我源程序,我可以把我的问问积分都给你
提问者: alontion - 门吏 三级 最佳答案
可以实现,不过需要你自己改改,只是九个灯的,分不分的没关系,主要是你的编程能得到提高: 
library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 
--use IEEE.STD_LOGIC_ARITH.ALL; 
use IEEE.STD_LOGIC_UNSIGNED.ALL; 

ENTITY ledwater IS 
PORT ( 
clk : IN std_logic; 
rst : IN std_logic; 
dataout : OUT std_logic_vector(8 DOWNTO 0)); 
END ; 

ARCHITECTURE arch OF ledwater IS 


SIGNAL cnt : std_logic_vector(16 DOWNTO 0); 
SIGNAL dataout_tmp : std_logic_vector(8 DOWNTO 0); 

BEGIN 


PROCESS(clk,rst) 
BEGIN 

IF (NOT rst = '1') THEN 
cnt <= "00000000000000000000000"; 
dataout_tmp <= "110011011"; --为0的bit位代表要点亮的LED的位置 
ELSIF(clk'event and clk='1')THEN 
cnt <= cnt + "00000000000000000000001"; 
IF (cnt = "11111111111111111111111") THEN 
dataout_tmp(6 DOWNTO 0) <= dataout_tmp(8 DOWNTO 1); 
dataout_tmp(8) <= dataout_tmp(0); 

END IF; 
END IF; 
END PROCESS; 

dataout <= dataout_tmp; 
END ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -