问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用VHDL语言编写程序

发布网友 发布时间:2022-04-24 12:16

我来回答

3个回答

热心网友 时间:2023-10-12 13:25

我用quartusⅡ已编译并且仿真都对的,我写的是0亮1灭,如果实际情况与这相反,你自己倒一下。

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_SIGNED.ALL;
USE IEEE.numeric_std.all;

ENTITY test IS
PORT (clock: in std_logic; -----clock1加48MHz的信号
row: out std_logic_vector(0 to 7));
END test;

ARCHITECTURE behave OF test IS

CONSTANT fp_clka:INTEGER:=12000000; ---扫描信号频率为2Hz
SIGNAL a: INTEGER RANGE 0 TO 12000001;
signal saomiao :integer range 0 to 9;
SIGNAL clka: std_logic;

BEGIN
PROCESS (clock)
BEGIN
IF rising_edge(clock) THEN
IF a<fp_clka then --clka
a<=a+1;
clka<=clka;
ELSE
a<=0;
clka<= NOT clka;
end if;
end if;
end process;

process(clka)
BEGIN
IF rising_edge(clka) THEN
saomiao<=saomiao+1;
if saomiao=9 then
saomiao<=0;
end if;
case saomiao is ---'1'代表不亮,'0'代表亮
when 0 =>row<="01111111";
when 1 =>row<="10111111";
when 2 =>row<="11011111";
when 3 =>row<="11101111";
when 4 =>row<="11110111";
when 5 =>row<="11111011";
when 6 =>row<="11111101";
when 7 =>row<="11111110";
when 8 =>row<="00000000";
when others =>row<="11111111";
END CASE;
END IF;
end process;
END behave;

热心网友 时间:2023-10-12 13:26

请问下灯是0亮还是1亮,引脚配置需要你自己弄下了。
若为1亮则有:

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity LEDcontrol is ----定义实体名为 LEDcontrol

port(

CLK :in std_logic; ----输入时钟

LED8 :out std_logic_vector(7 downto 0)----8位输出

);

end entity LEDcontrol;

architecture LEDC of LEDcontrol is

signal n :integer range 0 to 23999999;---------24000000 分频
signal m :integer range 0 to 9;

signal C500ms :std_logic;-------内0.5s时钟

begin
------------------------------------------------------------------------------------------------------------
CLK_500ms:process(CLK) ---- 输入时钟分频
begin

if CLK'event and CLK='1' then

if n<12000000 then
n<=n+1;
CP1ms<='0'; ---- 低电平持续0.25s
elsif n<23999999 then
n<=n+1;
CP1ms<='1'; ---- 高电平持续0.25s
else
n<=0;
end if;

end if;

end process CLK_500ms;
------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------
LED_CON:process(C500ms) ---- 点灯控制
begin

if C500ms'event and C500ms='1' then

if m<9 then

if m=0 then
LED8 <= "00000001"; ----0亮的话改成"11111110"就可以了,以下类似
m <= m + 1;

elsif m=1 then
LED8 <= "00000010";
m <= m + 1;

elsif m=2 then
LED8 <= "00000100";
m <= m + 1;

elsif m=3 then
LED8 <= "00001000";
m <= m + 1;

elsif m=4 then
LED8 <= "00010000";
m <= m + 1;

elsif m=5 then
LED8 <= "00100000";
m <= m + 1;

elsif m=6 then
LED8 <= "01000000";
m <= m + 1;

elsif m=7 then
LED8 <= "10000000";
m <= m + 1;

elsif m=8 then
LED8 <= "11111111";
m <= m + 1;
else
LED8 <= "00000000";
m <= 0;

end if;

end if;

end process LED_CON;
------------------------------------------------------------------------------------------------------------

end LEDC;

热心网友 时间:2023-10-12 13:26

我用quartusⅡ已编译并且仿真都对的,我写的是0亮1灭,如果实际情况与这相反,你自己倒一下。
LIBRARY
IEEE;
USE
IEEE.STD_LOGIC_1164.ALL;
USE
IEEE.STD_LOGIC_SIGNED.ALL;
USE
IEEE.numeric_std.all;
ENTITY
test
IS
PORT
(clock:
in
std_logic;
-----clock1加48MHz的信号
row:
out
std_logic_vector(0
to
7));
END
test;
ARCHITECTURE
behave
OF
test
IS
CONSTANT
fp_clka:INTEGER:=12000000;
---扫描信号频率为2Hz
SIGNAL
a:
INTEGER
RANGE
0
TO
12000001;
signal
saomiao
:integer
range
0
to
9;
SIGNAL
clka:
std_logic;
BEGIN
PROCESS
(clock)
BEGIN
IF
rising_edge(clock)
THEN
IF
a<fp_clka
then
--clka
a<=a+1;
clka<=clka;
ELSE
a<=0;
clka<=
NOT
clka;
end
if;
end
if;
end
process;
process(clka)
BEGIN
IF
rising_edge(clka)
THEN
saomiao<=saomiao+1;
if
saomiao=9
then
saomiao<=0;
end
if;
case
saomiao
is
---'1'代表不亮,'0'代表亮
when
0
=>row<="01111111";
when
1
=>row<="10111111";
when
2
=>row<="11011111";
when
3
=>row<="11101111";
when
4
=>row<="11110111";
when
5
=>row<="11111011";
when
6
=>row<="11111101";
when
7
=>row<="11111110";
when
8
=>row<="00000000";
when
others
=>row<="11111111";
END
CASE;
END
IF;
end
process;
END
behave;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 VHDL语言 vhdl语言是什么 举例说明vhdl程序结构有哪些 各位同仁,谁有《VHDL语言100例详解》的光盘资料啊,求连接。 被封多少次会长期封号? 被封号是什么原因? 明间借贷2分利息合法吗 女生负债6万网贷全部逾期,找了新的工作,入职就买五险一金,今天偶然听到同事被催收打到公司人资源部? 换了新公司,及贷逾期后发信息过来,找到新公司名称,声称要发信息到公司邮箱,真的会这样吗? 催收怎么查到新单位 催收人员打电话到对象工作单位怎么处理 你我贷催收的找到了新的单位,并且打单位的座机威胁 利息2分算高利贷吗,有否违法 美团金融打电话到新公司 催收让把钱打到对公账户是真的吗 催收给新公司打电话 同事接完说没有这个人 催收还会给打电话吗? 平安银行信用卡申请时没有留公司号码,现在重新换公司,催款电话会打到新公司去? 上海林家宅37号位于上海哪个地方? 林家宅37号事件发生后,旧宅被改建成新村,还有人居住吗? 是迷信吗,上海林家宅37号灵异事件,科学可以解释吗 VHDL语言的基本知识点罗列 使用VHDL语言编写程序,实现从1加到100,并且结果用数码管显示出来。 用VHDL语言编程~急~ vhdl语言中取余符号rem如何用?举例说明。 帮忙编写一个简单的VHDL程序。 VHDL语言的问题 第六讲 VHDL的元件例化语句 如何从头开始系统学习VHDL语言 青蛇劫起电影是不是说这几个? 被封号是什么原因? 被封多少次会长期封号? 牛年生的小女孩起小名 redmi k30i与k30区别 面对未知的地震,住在高层的有必要学习降落伞吗? 观赏性石榴能吃吗 redmik30和oppok9pro哪个好 家庭种植的石榴树都有哪些品种可以选择? 荣耀60和红米k30那个好 石榴要怎样观赏? 地震时应该怎么逃生?尤其是在高层建筑,应该找死角还是相外面逃跑...