这是四位的二进制加法计数器,cq是你的q,进位cout是你的c,加减法其实很简单,加一个if语句即可,减法其实也是加法,不过二进制的减法是该数的补码加一。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity exp_cnt2 is
port(clk,clrn,en:in std_logic;
cq:out std_logic_vector(3 downto 0);
cout:out std_logic);
end exp_cnt2;
architecture bhv of exp_cnt2 is
signal cqi:std_logic_vector(3 downto 0);
begin
process(en,clk,clrn,cqi)
begin
if clrn='0' then
cqi<="0000";
elsif clk'event and clk='1' then
if en='1' then
if cqi<1 then
cqi<=cqi+1;
else
cqi<="0000";
end if;
end if;
end if;
if cqi=1 then
cout<='1';
else
cout<='0';
end if;
cq<=cqi;
end process;
end bhv;
北交的吧?