Professional Documents
Culture Documents
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
entity CLOCKDIV is port(
CLK: IN std_logic;
DIVOUT: buffer BIT);
end CLOCKDIV;
architecture behavioural of CLOCKDIV is
begin
PROCESS(CLK)
variable count: integer:=0;
constant div: integer:=24;
begin
if CLK'event and CLK='1' then
if(count<div) then
count:=count+1;
if(DIVOUT='0') then
DIVOUT<='0';
elsif(DIVOUT='1') then
DIVOUT<='1';
end if;
else
if(DIVOUT='0') then
DIVOUT<='1';
elsif(DIVOUT='1') then
DIVOUT<='0';
end if;
count:=0;
end if;
end if;
end process;
end behavioural;
3B Simulasi
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY bcd IS
PORT ( D0,D1,D2,D3 : IN BIT;
A,B,C,D,E,F,G : OUT BIT);
END bcd;
ARCHITECTURE behavioral OF bcd IS
BEGIN
A<= (D3 OR D1 OR (D2 AND D0) OR ((NOT D2) AND (NOT D0)));
B<= ((NOT D2) OR (((NOT D1) AND (NOT D0)) OR (D1 AND D0)));
C<= ((NOT D1) OR D2 OR D0);
D<= (D3 OR ((NOT D2) AND (NOT D0)) OR (D2 AND (NOT D1) AND D0) OR (D1
AND (NOT D0)) OR (D1 AND (NOT D2)));
E<= ((NOT D0) AND ((NOT D2) OR D1));
F<= (D3 OR ((NOT D1) AND (NOT D0)) OR (D2 AND (NOT D1)) OR (D2 AND
(NOT D0)));
G<= ((D3 OR D2 OR D1) AND ((NOT D2) OR (NOT D1) OR (NOT D0)));
END behavioral;
3B FPGA
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY bcd IS
PORT ( D0,D1,D2,D3 : IN BIT;
A,B,C,D,E,F,G : OUT BIT);
END bcd;
ARCHITECTURE behavioral OF bcd IS
BEGIN
A<= NOT (D3 OR D1 OR (D2 AND D0) OR ((NOT D2) AND (NOT D0)));
B<= NOT ((NOT D2) OR (((NOT D1) AND (NOT D0)) OR (D1 AND D0)));
C<= NOT ((NOT D1) OR D2 OR D0);
D<= NOT (D3 OR ((NOT D2) AND (NOT D0)) OR (D2 AND (NOT D1) AND D0) OR
(D1 AND (NOT D0)) OR (D1 AND (NOT D2)));
E<= NOT ((NOT D0) AND ((NOT D2) OR D1));
F<= NOT (D3 OR ((NOT D1) AND (NOT D0)) OR (D2 AND (NOT D1)) OR (D2
AND (NOT D0)));
G<= NOT ((D3 OR D2 OR D1) AND ((NOT D2) OR (NOT D1) OR (NOT D0)));
END behavioral;
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
:=
:=
:=
:=
:=
:=
:=
:=
:=
:=
BEGIN
PROCESS(SW)
BEGIN
CASE SW IS
WHEN NOL
WHEN SATU
WHEN DUA
WHEN TIGA
=>
=>
=>
=>
3C Testbench (tb_abstraksi.vhd)
HEX1
HEX1
HEX1
HEX1
<=
<=
<=
<=
"1111110";
"0110000";
"1101101";
"1111001";
"0000";
"0001";
"0010";
"0011";
"0100";
"0101";
"0110";
"0111";
"1000";
"1001";
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY tb_abstraksi IS
END tb_abstraksi;
ARCHITECTURE behavioral OF tb_abstraksi IS
SIGNAL clk
: STD_LOGIC := '0';
SIGNAL SW
: STD_LOGIC_VECTOR (3 DOWNTO 0) := "0000";
SIGNAL HEX1
: STD_LOGIC_VECTOR (1 TO 7);
COMPONENT abstraksi IS
PORT( SW : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
HEX1
: OUT STD_LOGIC_VECTOR (1 TO 7));
END COMPONENT;
BEGIN
dut : abstraksi
PORT MAP (
SW => SW ,
HEX1 => HEX1 );
clock : PROCESS
BEGIN
WAIT FOR 50 ps; clk <= not clk;
end PROCESS clock;
increment: PROCESS (clk)
BEGIN
IF (clk'EVENT AND clk = '1') THEN
SW <= SW + "0001";
END IF;
END PROCESS;
END behavioral;
6
onbreak {resume}
if [file exists work] {
vdel -all
}
vlib work
vcom abstraksi.vhd tb_abstraksi.vhd
vsim -novopt tb_abstraksi
add wave sim:/tb_abstraksi/dut/*
run 2000
y