EDA的VHDL彩灯程序
有9个灯已经按一定的频率在循环亮了,如何编写VHDL程序使彩灯的循环点亮的速度越来越慢,可以的话给我这个程序!不行的话告诉我怎么做。问题补充:原题是:实现类似转盘抽奖的抽...
有9个灯 已经按一定的频率在循环亮了,如何编写VHDL程序使彩灯的循环点亮的速度越来越慢,可以的话给我这个程序!不行的话告诉我怎么做。
问题补充:
原题是:实现类似转盘抽奖的抽奖机。设共有n种不同的奖项,分别用n个LED表示;开始抽奖后,n个LED以较快速度循环点亮,按下抽奖按键后,LED循环速度逐渐减慢,最终停止在一个随机的LED上,即为抽中的奖项。
LED显示可以更换为数码管的n个数字之间的循环显示(推荐)。
要求:
a) 两个控制按键:“开始”、“抽奖”;
b) n = 9。
可以的话给我源程序,我可以把我的问问积分都给你 展开
问题补充:
原题是:实现类似转盘抽奖的抽奖机。设共有n种不同的奖项,分别用n个LED表示;开始抽奖后,n个LED以较快速度循环点亮,按下抽奖按键后,LED循环速度逐渐减慢,最终停止在一个随机的LED上,即为抽中的奖项。
LED显示可以更换为数码管的n个数字之间的循环显示(推荐)。
要求:
a) 两个控制按键:“开始”、“抽奖”;
b) n = 9。
可以的话给我源程序,我可以把我的问问积分都给你 展开
展开全部
可以实现,不过需要你自己改改,只是九个灯的,分不分的没关系,主要是你的编程能得到提高:
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 ;
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 ;
上海矽旭微电子
2024-09-05 广告
2024-09-05 广告
数字IC设计入门需掌握数字电路基础,包括逻辑门电路、时序逻辑等。同时,熟悉Verilog或VHDL等硬件描述语言是关键,以便进行RTL设计。此外,了解EDA工具如Cadence、Synopsys等用于仿真和时序分析也至关重要。学习过程中,需...
点击进入详情页
本回答由上海矽旭微电子提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询