怎样用VHDL语言程序设计一个带有异步复位8进制加法计数器?
展开全部
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity jishuqi is
port(cp,en,r,d:in std_logic;--d=1 => 加法 d=0 => 减法 en使能端,r复位端
m:in std_logic_vector(1 downto 0);--m 选择进制:00为2进制、01为8进制、10为10进制、11为16进制
t:out std_logic_vector(3 downto 0));
end jishuqi;
architecture behave of jishuqi is
signal q:std_logic_vector(3 downto 0);
begin
process(cp,en,r,d,m,q)
begin
if en='0' then
q<="0000";
else
if r='1' then
q<="0000";
else
if cp'event and cp='1' then
if d='1' then
if m="00" then
if q<"0001" then
q<=q+1;
else
q<=(others=>'0');
end if;
elsif m="01" then
if q<"0111" then
q<=q+1;
else
q<=(others=>'0');
end if;
elsif m="10" then
if q<"1001" then
q<=q+1;
else
q<=(others=>'0');
end if;
elsif m="11" then
if q<"1111" then
q<=q+1;
else
q<=(others=>'0');
end if;
end if;
else
if m="00" then
if q>"0000" then
q<=q-1;
else
q<="0001";
end if;
elsif m="01" then
if q>"0000" then
q<=q-1;
else
q<="0111";
end if;
elsif m="10" then
if q>"0000" then
q<=q-1;
else
q<="1001";
end if;
elsif m="11" then
if q>"0000" then
q<=q-1;
else
q<="1111";
end if;
end if;
end if;
end if;
end if;
end if;
end process;
t<=q;
end behave;
你如果只要八进制的自己改一下吧!
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity jishuqi is
port(cp,en,r,d:in std_logic;--d=1 => 加法 d=0 => 减法 en使能端,r复位端
m:in std_logic_vector(1 downto 0);--m 选择进制:00为2进制、01为8进制、10为10进制、11为16进制
t:out std_logic_vector(3 downto 0));
end jishuqi;
architecture behave of jishuqi is
signal q:std_logic_vector(3 downto 0);
begin
process(cp,en,r,d,m,q)
begin
if en='0' then
q<="0000";
else
if r='1' then
q<="0000";
else
if cp'event and cp='1' then
if d='1' then
if m="00" then
if q<"0001" then
q<=q+1;
else
q<=(others=>'0');
end if;
elsif m="01" then
if q<"0111" then
q<=q+1;
else
q<=(others=>'0');
end if;
elsif m="10" then
if q<"1001" then
q<=q+1;
else
q<=(others=>'0');
end if;
elsif m="11" then
if q<"1111" then
q<=q+1;
else
q<=(others=>'0');
end if;
end if;
else
if m="00" then
if q>"0000" then
q<=q-1;
else
q<="0001";
end if;
elsif m="01" then
if q>"0000" then
q<=q-1;
else
q<="0111";
end if;
elsif m="10" then
if q>"0000" then
q<=q-1;
else
q<="1001";
end if;
elsif m="11" then
if q>"0000" then
q<=q-1;
else
q<="1111";
end if;
end if;
end if;
end if;
end if;
end if;
end process;
t<=q;
end behave;
你如果只要八进制的自己改一下吧!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机复位电路原理通常包括以下几个主要步骤:1. 电平检测:单片机复位电路需要检测一个关键参数,即控制器的复位引脚是否处于高电平(2V)。如果复位引脚没有高电平,复位电路就会启动一个复位过程来清除单片机内部的错误状态并将其恢复到正常状态。2...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
语言程序的
要求是什么n任务是什么。
要求是什么n任务是什么。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询