eda VHDL 如何实现加减可逆的计数器
答案:1 悬赏:40 手机版
解决时间 2021-03-28 08:44
- 提问者网友:孤山下
- 2021-03-28 01:37
eda VHDL 如何实现加减可逆的计数器
最佳答案
- 五星知识达人网友:几近狂妄
- 2021-03-28 03:17
试试下面这个描述:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity mycont is
generic (width: integer := 5);
port(clr,clk: in std_logic; --时钟
updown : in std_logic; --计数方式
q : out std_logic_vector(width downto 0)); --输出
end entity mycont;
architecture fh1 of mycont is
signal temp: std_logic_vector(width downto 0);
begin
N1:process(clr,clk)
begin
if clr = '1' then
if updown = '1' then --顺序计数初始化
for i in width to 0 loop --各位置0
temp(i) <= '0';
end loop;
elsif updown = '0' then --逆序计数初始化
for i in width to 0 loop --各位置1
temp(i) <= '1';
end loop;
end if;
elsif clk 'event and clk = '1' then --计数
if updown = '1' then --顺序计数
temp <= temp + '1';
elsif updown = '0' then --逆序计数
temp <= temp - '1';
end if;
end if;
end process N1;
q <= temp;
end architecture fh1;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity mycont is
generic (width: integer := 5);
port(clr,clk: in std_logic; --时钟
updown : in std_logic; --计数方式
q : out std_logic_vector(width downto 0)); --输出
end entity mycont;
architecture fh1 of mycont is
signal temp: std_logic_vector(width downto 0);
begin
N1:process(clr,clk)
begin
if clr = '1' then
if updown = '1' then --顺序计数初始化
for i in width to 0 loop --各位置0
temp(i) <= '0';
end loop;
elsif updown = '0' then --逆序计数初始化
for i in width to 0 loop --各位置1
temp(i) <= '1';
end loop;
end if;
elsif clk 'event and clk = '1' then --计数
if updown = '1' then --顺序计数
temp <= temp + '1';
elsif updown = '0' then --逆序计数
temp <= temp - '1';
end if;
end if;
end process N1;
q <= temp;
end architecture fh1;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯