Professional Documents
Culture Documents
1. COUNT
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity count is
port(
clk, rst, up : in std_logic;
Q : out std_logic_vector(3 downto 0)
);
end count;
Q <= tmp;
end archi;
TESTBENCH
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity count_tb is
end count_tb;
architecture TB of count_tb is
component count
port(
clk, rst, up : in std_logic;
Q : out std_logic_vector(3 downto
0)
);
end component;
begin
U_count: count port map(
clk => T_clk,
rst => T_rst,
up => T_up,
Q => T_Q
);
rst_process: process
begin
T_rst <= '0';
wait for 10 ns;
T_rst <= '1';
wait for 17 ns;
T_rst <= '0';
wait for 333 ns;
end process rst_process;
clk_process: process
begin
T_clk <= '1';
wait for 10 ns;
T_clk <= '0';
wait for 10 ns;
end process clk_process;
up_process: process
begin
T_up <= '0';
wait for 30 ns;
T_up <= '1';
wait for 20 ns;
T_up <= '0';
wait for 30 ns;
T_up <= '1';
wait for 40 ns;
T_up <= '0';
wait for 20 ns;
T_up <= '1';
wait for 20 ns;
T_up <= '0';
wait for 35 ns;
T_up <= '1';
wait for 55 ns;
T_up <= '0';
wait for 10 ns;
T_up <= '1';
wait for 40 ns;
T_up <= '0';
wait for 20 ns;
T_up <= '1';
wait for 40 ns;
end process up_process;
end;
2. MODIFIKASI COUNT
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity count_2 is
port(
clk, rst, up : in std_logic;
Q : out std_logic_vector(3 downto 0)
);
end count_2;
process (clk,rst)
begin
if (rst='1') then
tmp <= "0000";
elsif (clk'event and clk='1')then
if(tmp="0101")then
tmp <= "0000";
elsif (up = '1')then
tmp <= tmp + 1;
else
tmp <= tmp;
end if;
end if;
end process;
Q <= tmp;
end archi;
3. MODIFIKASI COUNT 2
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity count_3 is
port(
clk, rst, up : in std_logic;
Q : out std_logic_vector(3 downto 0)
);
end count_3;
process (clk,rst)
begin
if (rst='1') then
tmp <= "0000";
elsif (clk'event and clk='1')then
if(tmp="0101")then
tmp <= "0000";
elsif (up = '1')then
tmp <= tmp + 1;
else
tmp <= tmp - 1;
end if;
end if;
end process;
Q <= tmp;
end archi;
4. Percobaan Asynchronous
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity async is
port( reset : in std_logic;
clock : in std_logic;
count : out std_logic_vector(3 downto 0)
);
end async;
architecture rtl of async is
component jk_ff
port(
reset : in std_logic;
clock : in std_logic;
j : in std_logic;
k : in std_logic;
q : out std_logic
);
end component;
d1 : jk_ff
port map (
reset => reset,
clock => temp(3),
j => '1',
k => '1',
q => temp(2)
);
d2 : jk_ff
port map (
reset => reset,
clock => temp(2),
j => '1',
k => '1',
q => temp(1)
);
d3 : jk_ff
port map (
reset => reset,
clock => temp(1),
j => '1',
k => '1',
q => temp(0)
);