SlideShare a Scribd company logo
1 of 16
Praktikum 10
Pemrograman SAP-1
Lusiana Diyan Ningrum
2210181051
2 D4 Teknik Komputer B
Program Studi Teknik Komputer
Departemen Teknik Informatika dan Komputer
Politeknik Elektronika Negeri Surabaya
Surabaya
1. Tujuan:
a. Mahasiswa dapat menjelaskan kode operasi atau opcode.
b. Mahasiswa dapat membuat program SAP-1
2. Dasar Teori:
Untuk memasukkan instruksi dan kata-data kedalam memori SAP-1 kita harus
menggunakan kode tertentu yang dapat ditafsirkan oleh komputer. Tabel 2
memperlihatkan kode yang dipakai dalam SAP-1. Bilangan 0000 mewakiliki LDA,
0001 untuk ADD, 0010 untuk SUB, 1110 untuk OUT, dan 1111 untuk HLT. Karena
kode-kode ini memberitahu kepada komputer tentang operasi yang harus
dilaksanakan. Maka kode yang bersangkutan disebut kode operasi (operation code)
disingkat opcode.
TABEL 2. KODE OPERASI SAP-1
Mnemonik Kode Operasi
LDA 0000
ADD 0001
SUB 0010
OUT 1110
HLT 1111
Berdasarkan rancangan rangkaian, saklar-saklar tersebut menghasilkan logika 1
untuk posisi keatas (U) dan logika 0 untuk posisi Ke bawah (D). Dalam peprograman
saklar data dilaksanakan dengan satu instruksi, kode operasi yang akan diberikan
sebagai nibble bagian atas, dan operand (pelengkap instruksi ) sebagai nibble bagian
bawah.
Sebagai contoh, misalkan kita akan menyimpan instruksi sebagai Berikut :
Alamat Instruksi
0H LDA FH
1H ADD EH
2H HLT
Pertama, ubahlah setiap instruksi kedalam bentuk biner :
LDA FH = 0000 1111
ADD EH = 0001 1110
HLT = 1111 XXXX
Dalam instruksi pertama, 0000 adalah kode operasi untuk LDA, dan 1111
adalah ekivalen biner dari FH. Dalam instruksi kedua, 0001 adalah kode operasi untuk
ADD, dan 1110 adalah ekivalen biner dari EH. Dalam instruksi ketiga, 1111 adalah
kode operasi untuk HLT, dan XX adalah nibble yang tak diperdulikan karena HLT
bukan instruksi rujukan – memori.
Selanjutnya, susunlah saklar-saklat alamat dan data sebagai berikut :
Alamat Data
DDDD DDDD UUUU
DDDU DDDU UUUD
DDUD UUUU XXXX
Setiap kali setelah selesai menyusun suatu alamat dan kata- data, tekanlah tombol
“tulis” (write). Karena D menyimpan biner 0 dan U menyimpan biner 1, tiga lokasi
memori yang pertama sekarang mempunyai isi :
Alamat Data
0000 0000 1111
0001 0001 1110
0010 1111 XXXX
Suatu hal lagi yang perlu diketahui dalam penyusunan program adalah bahwa
bahasa asembli (assembly language) menyangkut tata cara penulisan program dan
mnemonik, sedangkan bahasa mesin (macine language) menyangkut tata cara
penulisan dengan bilangan 0 dan 1.
A. Pengendali Pengurut (Control Unit)
Blok terbawah di bagian kiri berisi Pengendali Pengurut. Pengendali Pengurut
atau Controller Sequencer yang disingkat CON merupakan unit pengendali
keseluruhan. Sebelum komputer bekerja, sinyal-sinyal CLR masing-masing
dikirimkan ke pencacah program dan register instruksi. Sebagai akibatnya, pencacah
program direset ke 0000 dan bersamaan ini instruksi terakhir dalam register instruksi
dihapus.
Sebuah sinyal detak CLK dikirimkan ke semua register bufer; sinyal ini
mensinkronkan operasi komputer, yang menjamin bahwa setiap langkah operasi akan
terjadi sebagaimana mestinya. Dengan kata lain, semua transfer dalam regiter terjadi
pada tepi positif dari sinyal detak CLK yang sama. Perhatikan bahwa sinyal CLK juga
memasuki pencacah program.
Data 12-bit yang berasal dari Pengendali Pengurut membentuk suatu kata
pengendalian komputer (seperti seorang pengawas yang memberitahu tentang apa
yang harus dikerjakan). 12 kawat yang menyalurkan kata kendali itu disebut bus
kendali (control bus). Kata kendali mempunyai format sbb:
CON = CpEp LM CE L1 E 1 LAEA SuEu LB Lo
Kata ini menentukan bagaimana register-register harus bereaksi terhadap tepi
positif sinyal detak berikutnya. Misalnya, Ep tinggi dan L M rendah berarti bahwa isi
pencacah program ditahan di dalam MAP pada tepi positif berikutnya. Sebagai contoh
yang lain, CE dan LA yang rendah berrati kata RAM yang telah ditunjuk alamatnya
akan ditransfer ke akumulator pada tepi positif berikutnya dari lonceng. Kelak kita
akan mempelajari diagram pewaktuan yang bersangkutan untuk melihat tepatnya
kapan dan bagaimana transfer data ini dilakukan.
3. Percobaan
 Membuat program PC (Program Counter)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;
entity PC is
Port ( nCLK : in STD_LOGIC;
nCLR : in STD_LOGIC;
Cp : in STD_LOGIC;
Ep : in STD_LOGIC;
BUS_Low : out STD_LOGIC_VECTOR (3 downto 0);
T : out STD_LOGIC_VECTOR (2 downto 0));
end PC;
architecture Behavioral of PC is
signal q: STD_LOGIC_VECTOR (3 downto 0):="0000";
signal sig_T: STD_LOGIC_VECTOR (2 downto 0):="000";
begin
process(nCLK, nCLR, Cp,Ep)
begin
if falling_edge(nCLK) then
if Cp = '1' then q <= q+1; end if;
if nCLR = '1' then q <= "0000"; end if;
sig_T <= sig_T + 1;
if sig_T = "110" then sig_T <= "000"; end if;
end if;
end process;
T <= sig_T;
BUS_Low <= q when Ep='1' else "ZZZZ";
end Behavioral;
 Membuat program MAR
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity MAR is
Port ( CLK : in STD_LOGIC;
nLm : in STD_LOGIC;
inMAR : in STD_LOGIC_VECTOR (3 downto 0);
outMAR : out STD_LOGIC_VECTOR (3 downto 0));
end MAR;
architecture Behavioral of MAR is
signal mar : STD_LOGIC_VECTOR (3 downto 0);
begin
process(CLK, nLm)
begin
if rising_edge(CLK) then
if nLm = '0' then outMAR <= inMAR; end if;
end if;
end process;
end Behavioral;
 Membuat program RAM
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity RAM is
Port ( nCe : in STD_LOGIC;
inRAM : in STD_LOGIC_VECTOR (3 downto 0);
outRAM : out STD_LOGIC_VECTOR (7 downto 0));
end RAM;
architecture Behavioral of RAM is
signal ROM : STD_LOGIC_VECTOR (7 downto 0);
begin
process(inRAM)
begin
case inRAM is
when "0000" => ROM <= "00001001"; -- LDA 9h
when "0001" => ROM <= "00011010"; -- ADD 10h
when "0010" => ROM <= "00101011"; -- SUBB 11h
when "0011" => ROM <= "11100000"; -- OUT
when "0100" => ROM <= "11110000"; -- Halt
when "0101" => ROM <= "00000000";
when "0110" => ROM <= "00000001";
when "0111" => ROM <= "00000010";
when "1000" => ROM <= "00000011";
when "1001" => ROM <= "00000111"; -- 7
when "1010" => ROM <= "00000010"; -- 2
when "1011" => ROM <= "00000101"; -- 5
when "1100" => ROM <= "00000010";
when "1101" => ROM <= "00000000";
when "1110" => ROM <= "00000000";
when "1111" => ROM <= "11110000";
when others => ROM <= "00000000";
end case;
end process;
outRAM <= ROM when nCe='0' else "ZZZZZZZZ";
end Behavioral;
 Membuat program IR (Intruction Register)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity IR is
Port ( CLK : in STD_LOGIC;
CLR : in STD_LOGIC;
nLi : in STD_LOGIC;
nEi : in STD_LOGIC;
inIR : in STD_LOGIC_VECTOR (7 downto 0);
outIRlow : out STD_LOGIC_VECTOR (3 downto 0);
outIRhigh : out STD_LOGIC_VECTOR (3 downto 0));
end IR;
architecture Behavioral of IR is
signal regBuff : STD_LOGIC_VECTOR (7 downto 0);
begin
process (CLK,CLR)
begin
if rising_edge(CLK) then
if CLR = '1' then
regBuff <="00000000";
outIRlow <="ZZZZ";
elsif nLi='0' then
regBuff <= inIR;
outIRlow <= "ZZZZ";
end if;
end if;
end process;
outIRlow <= regBuff(3 downto 0) when nEi='0' else "ZZZZ";
outIRhigh <= regBuff(7 downto 4);
end Behavioral;
 Membuata program regA (RegisterA)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity regA is
Port ( CLK : in STD_LOGIC;
nLa : in STD_LOGIC;
Ea : in STD_LOGIC;
inA : in STD_LOGIC_VECTOR (7 downto 0);
outA : out STD_LOGIC_VECTOR (7 downto 0);
regACC : out STD_LOGIC_VECTOR (7 downto 0));
end regA;
architecture Behavioral of regA is
signal sigA : STD_LOGIC_VECTOR (7 downto 0);
begin
process (CLK)
begin
if rising_edge(CLK) then
if nLa='0' then
sigA <= inA;
end if;
end if;
end process;
outA <= sigA when Ea='1' else "ZZZZZZZZ";
regACC <= sigA;
end Behavioral;
 Membuat program ALU (Adder)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;
use IEEE.STD_LOGIC_arith.ALL;
entity ALU is
Port ( Su : in STD_LOGIC;
Eu : in STD_LOGIC;
inA : in STD_LOGIC_VECTOR (7 downto 0);
inB : in STD_LOGIC_VECTOR (7 downto 0);
result : out STD_LOGIC_VECTOR (7 downto 0));
end ALU;
architecture Behavioral of ALU is
signal hasil: STD_LOGIC_VECTOR (7 downto 0);
begin
hasil <= inA+inB when Su='0' else inA-inB;
result <= hasil when Eu='1' else "ZZZZZZZZ";
end Behavioral;
 Membuat program regB (RegisterB)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity regB is
Port ( CLK : in STD_LOGIC;
nLb : in STD_LOGIC;
inB : in STD_LOGIC_VECTOR (7 downto 0);
outB : out STD_LOGIC_VECTOR (7 downto 0));
end regB;
architecture Behavioral of regB is
begin
process (CLK)
begin
if rising_edge(CLK) then
if nLb = '0' then outB <= inB;
end if;
end if;
end process;
end Behavioral;
 Membuat program outReg (RegisterOut)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity outReg is
Port ( CLK : in STD_LOGIC;
nLo : in STD_LOGIC;
inReg : in STD_LOGIC_VECTOR (7 downto 0);
LED : out STD_LOGIC_VECTOR (7 downto 0));
end outReg;
architecture Behavioral of outReg is
begin
process (CLK)
begin
if rising_edge(CLK) then
if nLo='0' then
LED <= inReg;
end if;
end if;
end process;
end Behavioral;
 Membuat program CU (Control Unit)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity CU is
Port ( CLK : in STD_LOGIC;
CLR : in STD_LOGIC;
opcode : in STD_LOGIC_VECTOR (3 downto 0);
ctrl_bus : out STD_LOGIC_VECTOR (11 downto
0):="001111100011"
);
end CU;
architecture Behavioral of CU is
type state_type is (t1,t2,t3,t4,t5,t6);
signal t_state: state_type;
begin
process(CLK,CLR)
begin
if CLR ='1' then t_state <=t1;
elsif rising_edge(CLK) then
case t_state is
when t1 => t_state <=t2;
when t2 => t_state <=t3;
when t3 => t_state <=t4;
when t4 => t_state <=t5;
when t5 => t_state <=t6;
when t6 => t_state <=t1;
end case;
end if;
end process;
process(clk)
begin
if falling_edge(CLK) then -- Cp, Ep, nLm, nCe, nLi, nEi,
nLa, Ea, Su, Eu, nLb, nLo
case opcode is
when "0000" => -- LD A
case t_state is
when t1 => ctrl_bus
<="010111100011";
when t2 => ctrl_bus
<="101111100011";
when t3 => ctrl_bus
<="001001100011";
when t4 => ctrl_bus
<="000110100011";
when t5 => ctrl_bus
<="001011000011";
when t6 => ctrl_bus
<="001111100011"; --No Operation
end case;
when "0001" => -- ADD
case t_state is
when t1 => ctrl_bus
<="010111100011";
when t2 => ctrl_bus
<="101111100011";
when t3 => ctrl_bus
<="001001100011";
when t4 => ctrl_bus
<="000110100011";
when t5 => ctrl_bus
<="001011100001";
when t6 => ctrl_bus
<="001111000111";
end case;
when "0010" => -- SUBB
case t_state is
when t1 => ctrl_bus
<="010111100011";
when t2 => ctrl_bus
<="101111100011";
when t3 => ctrl_bus
<="001001100011";
when t4 => ctrl_bus
<="000110100011";
when t5 => ctrl_bus
<="001011100001";
when t6 => ctrl_bus
<="001111001111";
end case;
when "1110" => -- OUT
case t_state is
when t1 => ctrl_bus
<="010111100011";
when t2 => ctrl_bus
<="101111100011";
when t3 => ctrl_bus
<="001001100011";
when t4 => ctrl_bus
<="001111110010";
when t5 => ctrl_bus
<="001111100011";
when t6 => ctrl_bus
<="001111100011";
end case;
when "1111" => -- OUT
case t_state is
when t1 => ctrl_bus
<="010111100011";
when t2 => ctrl_bus
<="101111100011";
when t3 => ctrl_bus
<="001001100011";
when t4 => ctrl_bus
<="001111100011";
when t5 => ctrl_bus
<="001111100011";
when t6 => ctrl_bus
<="001111100011";
end case;
when others => ctrl_bus <="001111100011";
end case;
end if;
end process;
end Behavioral;
 Membuat program SAP1
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity SAP1 is
Port ( CLK : in STD_LOGIC;
CLR : in STD_LOGIC;
T : out STD_LOGIC_VECTOR (2 downto 0);
outCU : out STD_LOGIC_VECTOR (11 downto 0);
wbus : out STD_LOGIC_VECTOR (7 downto 0);
LED : out STD_LOGIC_VECTOR (7 downto 0) );
end SAP1;
architecture Behavioral of SAP1 is
component PC is
Port ( nCLK : in STD_LOGIC;
nCLR : in STD_LOGIC;
Cp : in STD_LOGIC;
Ep : in STD_LOGIC;
BUS_Low : out STD_LOGIC_VECTOR (3 downto 0);
T : out STD_LOGIC_VECTOR (2 downto 0) );
end component;
component MAR is
Port ( CLK : in STD_LOGIC;
nLm : in STD_LOGIC;
inMAR : in STD_LOGIC_VECTOR (3 downto 0);
outMAR : out STD_LOGIC_VECTOR (3 downto 0));
end component;
component RAM is
Port ( nCe : in STD_LOGIC;
inRAM : in STD_LOGIC_VECTOR (3 downto 0);
outRAM : out STD_LOGIC_VECTOR (7 downto 0));
end component;
component IR is
Port ( CLK : in STD_LOGIC;
CLR : in STD_LOGIC;
nLi : in STD_LOGIC;
nEI : in STD_LOGIC;
inIR : in STD_LOGIC_VECTOR (7 downto 0);
outIRlow : out STD_LOGIC_VECTOR (3 downto 0);
outIRhigh : out STD_LOGIC_VECTOR (3 downto 0));
end component;
component CU is
Port ( CLK : in STD_LOGIC;
CLR : in STD_LOGIC;
opcode : in STD_LOGIC_VECTOR (3 downto 0);
ctrl_bus : out STD_LOGIC_VECTOR (11 downto 0));
end component;
component regA is
Port ( CLK : in STD_LOGIC;
nLa : in STD_LOGIC;
Ea : in STD_LOGIC;
inA : in STD_LOGIC_VECTOR (7 downto 0);
outA : out STD_LOGIC_VECTOR (7 downto 0);
regACC : out STD_LOGIC_VECTOR (7 downto 0));
end component;
component ALU is
Port ( Su : in STD_LOGIC;
Eu : in STD_LOGIC;
inA : in STD_LOGIC_VECTOR (7 downto 0);
inB : in STD_LOGIC_VECTOR (7 downto 0);
result : out STD_LOGIC_VECTOR (7 downto 0));
end component;
component regB is
Port ( CLK : in STD_LOGIC;
nLb : in STD_LOGIC;
inB : in STD_LOGIC_VECTOR (7 downto 0);
outB : out STD_LOGIC_VECTOR (7 downto 0));
end component;
component outReg is
Port ( CLK : in STD_LOGIC;
nLo : in STD_LOGIC;
inReg : in STD_LOGIC_VECTOR (7 downto 0);
LED : out STD_LOGIC_VECTOR (7 downto 0));
end component;
signal sig_bus : STD_LOGIC_VECTOR (7 downto 0):="00000000";
signal sig_MARtoRAM : STD_LOGIC_VECTOR (3 downto 0):="0000";
signal AtoAlu : STD_LOGIC_VECTOR (7 downto 0):="00000000";
signal BtoAlu : STD_LOGIC_VECTOR (7 downto 0):="00000000";
signal IRtoCU : STD_LOGIC_VECTOR (3 downto 0):="0000";
signal ctrl_bus : STD_LOGIC_VECTOR (11 downto
0):="001111100011";
begin
u1: PC port map(
nCLK => CLK,
nCLR => CLR,
Cp => ctrl_bus(11), --Cp,
Ep => ctrl_bus(10), --Ep,
BUS_Low => sig_bus(3 downto 0),
T => T
); -- untuk monitoring State
u2: MAR port map(
CLK => CLK,
nLm => ctrl_bus(9), --nLm,
inMAR => sig_bus(3 downto 0),
outMAR => sig_MARtoRAM );
u3: RAM port map(
nCe => ctrl_bus(8), --nCe,
inRAM => sig_MARtoRAM,
outRAM => sig_bus );
u4: IR port map(
CLK => CLK,
CLR => CLR,
nLi => ctrl_bus(7), --nLi,
nEi => ctrl_bus(6), --nEi,
inIR => sig_bus,
outIRlow => sig_bus(3 downto 0),
outIRhigh => IRtoCU );
u6: regA port map(
CLK => CLK,
nLa => ctrl_bus(5), --nLa,
Ea => ctrl_bus(4), --ea,
inA => sig_bus,
outA => sig_bus,
regACC => AtoAlu );
u7: ALU port map(
Su => ctrl_bus(3), --Su,
Eu => ctrl_bus(2), --Eu,
inA => AtoAlu,
inB => BtoAlu,
result => sig_bus );
u8: regB port map(
CLK => CLK,
nLb => ctrl_bus(1), --nLb,
inB => sig_bus,
outB => BtoAlu );
u9: outReg port map(
CLK => CLK,
nLo => ctrl_bus(0), --nLo,
inReg => sig_bus,
LED => LED );
u5: CU port map(
CLK => CLK,
CLR => CLR,
opcode => IRtoCU,
ctrl_bus => ctrl_bus );
wbus <= sig_bus;
outCU <= ctrl_bus;
end Behavioral;
 Membuat program Simulasi SAP1
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY SAP1_CU_tb IS
END SAP1_CU_tb;
ARCHITECTURE behavior OF SAP1_CU_tb IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT SAP1
PORT(
CLK : IN std_logic;
CLR : IN std_logic;
T : OUT std_logic_vector(2 downto 0);
outCU : OUT std_logic_vector(11 downto 0);
wbus : OUT std_logic_vector(7 downto 0);
LED : OUT std_logic_vector(7 downto 0)
);
END COMPONENT;
--Inputs
signal CLK : std_logic := '0';
signal CLR : std_logic := '0';
--Outputs
signal T : std_logic_vector(2 downto 0):="000";
signal outCU : std_logic_vector(11 downto 0):="000000000000";
signal wbus : std_logic_vector(7 downto 0):="00000000";
signal LED : std_logic_vector(7 downto 0):="00000000";
-- Clock period definitions
constant CLK_period : time := 10 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: SAP1 PORT MAP (
CLK => CLK,
CLR => CLR,
T => T,
outCU => outCU,
wbus => wbus,
LED => LED
);
-- Clock process definitions
CLK_process :process
begin
CLK <= '0';
wait for CLK_period/2;
CLK <= '1';
wait for CLK_period/2;
end process;
-- Stimulus process
stim_proc: process
begin
-- hold reset state for 100 ns.
CLR <= '1'; wait for CLK_period;
CLR <= '0';
wait for CLK_period*30;
end process;
END;
 Hasil Simulasi LDA
 Hasil Simulasi ADD
 Hasil Simulasi SUBB
 Hasil Simulasi OUT
 Hasil Simulasi HALT
4. Latihan
a. Terjemahkan program dari Contoh 1 ke dalam bahasa mesin SAP-1.
b. Bagaimana cara memprogram SAP-1 untuk menyelesaikan persoalan aritmetik
ini? 16 + 20 + 24 – 32
Bilangan ini diberikan dalam bentuk desimal.
mengubah data desimal kedalam data heksa desimal untuk mendapatkan versi bahasa
assembly
c. Tuliskan program pada Contoh 3 dalam bentuk ringkas heksadesimal.
5. Analisa
Komputer SAP-1 (Simple As Possible) adalah komputer sederhana yang
berorganisasi yang dirancang untuk memperkenalkan semua gagasan penting
dibalik operasi komputer tanpa membenamkan ke dalam kerumitan yang tidak perlu.
SAP-1 merupakan tahap pertama dalam evolusi kearah pengembangan komputer-
komputer modern.
Pada praktikum ini yaitu membuat program siklus pengambilan SAP1. Dalam
program ini menggunakan beberapa program lainnya seperti RAM, MAR, IR, dan
PC untuk membangun sebuah program SAP1. SAP1 adalah sebagai top modul.
Pencacah Program (Program Counter) berfungsi untuk menyimpan program
pada bagian awal memori. Instruksi pertama disimpan pada alamat 0000, instruksi
kedua disimpan pada alamat 0001, instruksi ketiga disimpan pada alamat 0010,
dstPencacah program akan mencacah dari 0000 sd 1111. Tugas PC untuk
mengirimkan ke memori alamat instruksi berikutnya yang akan diambil dan
dieksekusi. Program Counter (PC) direset ke 0000 setiap kali komputer
dijalankanSaat komputer dijalankan: PC mengirimkan alamat 0000 ke memori.
Kemudian PC meng-increment cacahannya menjadi 0001Setelah isi alamat 0000
diambil dan dieksekusi, PC mengirimkan alamat 0001 ke memori. Pencacah
menaikkan cacahannya kembaliSetelah instruksi pada alamat 0001 diambil dan
dieksekusi, PC mengirimkan lagi alamat 0010 ke memori. Dan seterusnya sampai
dengan instruksi terakhir dieksekusi.
Masukan dan MAR Singkatan dari Memory Address Register merupakan
register yang digunakan untuk menahan (latched) alamat data yang akan dibaca dari
RAM kemudian MAR mengirimkan alamat 4-bit ke dalam RAM, dimana operasi
membaca dilaksanakan. Pada saat komputer bekerja, RAM menerima alamat 4-bit
dari MAR dan kemudian operasi membaca dilaksanakanProsesnya: instruksi dan
kata yang ada dalam RAM ditempatkan pada bus W untuk digunakan oleh beberapa
bagian lain komputer. Register instruksi merupakan bagian dari unit kendaliUntuk
mengambil sebuah instruksi dari memori, komputer melakukan operasi membaca
memori  hasilnya dimuat ke bus W  kemudian masuk ke register instruksi.
Dalam praktikum kali ini terdapat 3 keadaan T4, T5, dan T6 yang merupakan
siklus eksekusi dari SAP1. Pada intruksi LDA hnaya T4(alamat memori dikirim
dari register intruksi ke MAR) dan T5(data memori diambil dari register intruksi ke
akumulator) yang aktif. Pada intruksi ADD dan SUB 3 keadaan aktif semua dan data
diambil dari memori dan dijumlahkan dengan akumulator hasilnya akan disimpan di
kembali ke akumulator. Sedangkan untuk intruksi OUT hanya memerlukan satu
tahap T4 yaitu memindahkan data dari akumulator ke dalam register keluaran, dan
pengendali/pengurut akan mengirim nilai ke CON.
6. Kesimpulan
SAP adalah software yang berbasis ERP (Enterprise Resources Planning) yang
digunakan sebagai alat untuk membantu manajemen perusahaan, perencanaan,
hingga melakukan operasionalnya LDA merupakan instruksi yang berfungsi untuk
menyimpan sebuah nilai dari alamat tertentu. ADD dan SUB merupakan sebuah
instruksi aritmatika yang berarti penjumlahan dan pengurangan. OUT berfungsi
untuk menampilkan hasil dari proses komputasi serta HLT berarti instruksi untuk
menghentikan sebuah proses pada alamat tertentu.

More Related Content

What's hot

2 input output dan internal memori
2 input output dan internal memori2 input output dan internal memori
2 input output dan internal memoriSimon Patabang
 
Laporan 2 (ripple counter)
Laporan 2 (ripple counter)Laporan 2 (ripple counter)
Laporan 2 (ripple counter)Nasrudin Waulat
 
Pert 6
Pert 6Pert 6
Pert 6Wanti
 
Laporan1 sr&d flip-flop_kurniawan suganda_1_nk1_14
Laporan1 sr&d flip-flop_kurniawan suganda_1_nk1_14Laporan1 sr&d flip-flop_kurniawan suganda_1_nk1_14
Laporan1 sr&d flip-flop_kurniawan suganda_1_nk1_14Kurniawan Suganda
 
Laporan Praktikum Mikrokontroler
Laporan Praktikum MikrokontrolerLaporan Praktikum Mikrokontroler
Laporan Praktikum MikrokontrolerMuhammad Taufik
 
Pemograman zelio soft 2
Pemograman zelio soft 2Pemograman zelio soft 2
Pemograman zelio soft 2arie eric
 
Presentasi Sistem Digital - Flip Flop
Presentasi Sistem Digital - Flip FlopPresentasi Sistem Digital - Flip Flop
Presentasi Sistem Digital - Flip Flopsehatrepublik
 
Membuat sensor suhu lm 35 menggunakan at mega
Membuat sensor suhu lm 35 menggunakan at megaMembuat sensor suhu lm 35 menggunakan at mega
Membuat sensor suhu lm 35 menggunakan at megaPriyo Harjiyono
 
Pendahuluan plc
Pendahuluan plcPendahuluan plc
Pendahuluan plcarie eric
 
Laporan acara flip flop
Laporan acara flip flopLaporan acara flip flop
Laporan acara flip flopYuwan Kilmi
 
Modul ladsim (dasar teori)
Modul ladsim (dasar teori)Modul ladsim (dasar teori)
Modul ladsim (dasar teori)frsrianto
 
Flip flop (maria hanifah 14708251105 & oky ristya trisnawati-14708251020)
Flip flop (maria hanifah 14708251105 & oky ristya trisnawati-14708251020)Flip flop (maria hanifah 14708251105 & oky ristya trisnawati-14708251020)
Flip flop (maria hanifah 14708251105 & oky ristya trisnawati-14708251020)IPA 2014
 
Materi Rangkaian Digital Part 2
Materi Rangkaian Digital Part 2Materi Rangkaian Digital Part 2
Materi Rangkaian Digital Part 2Amien Nuryanto
 
aplikasi PLC omron CP1L
aplikasi PLC omron CP1Laplikasi PLC omron CP1L
aplikasi PLC omron CP1Lrezon arif
 
Presentasi flip flop
Presentasi flip flopPresentasi flip flop
Presentasi flip flopNur Aoliya
 

What's hot (20)

2 input output dan internal memori
2 input output dan internal memori2 input output dan internal memori
2 input output dan internal memori
 
Laporan 2 (ripple counter)
Laporan 2 (ripple counter)Laporan 2 (ripple counter)
Laporan 2 (ripple counter)
 
Pert 6
Pert 6Pert 6
Pert 6
 
Laporan1 sr&d flip-flop_kurniawan suganda_1_nk1_14
Laporan1 sr&d flip-flop_kurniawan suganda_1_nk1_14Laporan1 sr&d flip-flop_kurniawan suganda_1_nk1_14
Laporan1 sr&d flip-flop_kurniawan suganda_1_nk1_14
 
Laporan Praktikum Mikrokontroler
Laporan Praktikum MikrokontrolerLaporan Praktikum Mikrokontroler
Laporan Praktikum Mikrokontroler
 
Pemograman zelio soft 2
Pemograman zelio soft 2Pemograman zelio soft 2
Pemograman zelio soft 2
 
Presentasi Sistem Digital - Flip Flop
Presentasi Sistem Digital - Flip FlopPresentasi Sistem Digital - Flip Flop
Presentasi Sistem Digital - Flip Flop
 
Laporan Binary Counter
Laporan Binary CounterLaporan Binary Counter
Laporan Binary Counter
 
Membuat sensor suhu lm 35 menggunakan at mega
Membuat sensor suhu lm 35 menggunakan at megaMembuat sensor suhu lm 35 menggunakan at mega
Membuat sensor suhu lm 35 menggunakan at mega
 
Flip-Flop
Flip-FlopFlip-Flop
Flip-Flop
 
Pendahuluan plc
Pendahuluan plcPendahuluan plc
Pendahuluan plc
 
Laporan acara flip flop
Laporan acara flip flopLaporan acara flip flop
Laporan acara flip flop
 
Modul ladsim (dasar teori)
Modul ladsim (dasar teori)Modul ladsim (dasar teori)
Modul ladsim (dasar teori)
 
Pertemuan 4 orkom
Pertemuan 4 orkomPertemuan 4 orkom
Pertemuan 4 orkom
 
Flip flop (maria hanifah 14708251105 & oky ristya trisnawati-14708251020)
Flip flop (maria hanifah 14708251105 & oky ristya trisnawati-14708251020)Flip flop (maria hanifah 14708251105 & oky ristya trisnawati-14708251020)
Flip flop (maria hanifah 14708251105 & oky ristya trisnawati-14708251020)
 
Materi Rangkaian Digital Part 2
Materi Rangkaian Digital Part 2Materi Rangkaian Digital Part 2
Materi Rangkaian Digital Part 2
 
9
99
9
 
aplikasi PLC omron CP1L
aplikasi PLC omron CP1Laplikasi PLC omron CP1L
aplikasi PLC omron CP1L
 
Laporan Modulo Counter
Laporan Modulo CounterLaporan Modulo Counter
Laporan Modulo Counter
 
Presentasi flip flop
Presentasi flip flopPresentasi flip flop
Presentasi flip flop
 

Similar to SAP-PRAKTIKUM

MODUL PLC (Programmable Logic Control) DIDIK
MODUL PLC (Programmable Logic Control) DIDIKMODUL PLC (Programmable Logic Control) DIDIK
MODUL PLC (Programmable Logic Control) DIDIKDidik Supriyono
 
Register Instruksi dan Accumulator
Register Instruksi dan AccumulatorRegister Instruksi dan Accumulator
Register Instruksi dan AccumulatorLusiana Diyan
 
Register B dan Adder
Register B dan AdderRegister B dan Adder
Register B dan AdderLusiana Diyan
 
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Muhammad Kennedy Ginting
 
simple-as-possible-computer-1.ppt
simple-as-possible-computer-1.pptsimple-as-possible-computer-1.ppt
simple-as-possible-computer-1.pptwidieyyaya
 
143428387 modul-pelatihan-plc-doc
143428387 modul-pelatihan-plc-doc143428387 modul-pelatihan-plc-doc
143428387 modul-pelatihan-plc-dochendra firdaus
 
Laporan tugas2 interface_kelompok2
Laporan tugas2 interface_kelompok2Laporan tugas2 interface_kelompok2
Laporan tugas2 interface_kelompok2Leuly Dzulfiqar
 
Mikrokontroler io tombol dan led
Mikrokontroler io tombol dan ledMikrokontroler io tombol dan led
Mikrokontroler io tombol dan ledJodit Sulistyo
 
Program counter, memory address register dan random access memory
Program counter, memory address register dan random access memoryProgram counter, memory address register dan random access memory
Program counter, memory address register dan random access memoryLusiana Diyan
 
Program Counter, Memory Address Register dan Random Access Memory
Program Counter, Memory Address Register dan Random Access MemoryProgram Counter, Memory Address Register dan Random Access Memory
Program Counter, Memory Address Register dan Random Access MemoryLusiana Diyan
 
AOK_-_Week_9_ALU_and_Bit_and_Byte_Representation..pdf
AOK_-_Week_9_ALU_and_Bit_and_Byte_Representation..pdfAOK_-_Week_9_ALU_and_Bit_and_Byte_Representation..pdf
AOK_-_Week_9_ALU_and_Bit_and_Byte_Representation..pdfBrainWonderson
 
Artikel shift register
Artikel shift registerArtikel shift register
Artikel shift registerjulianiputri1
 
Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5Rumah Belajar
 
Pertemuan 3-instruksi-mesin-dan-program-bagian-23
Pertemuan 3-instruksi-mesin-dan-program-bagian-23Pertemuan 3-instruksi-mesin-dan-program-bagian-23
Pertemuan 3-instruksi-mesin-dan-program-bagian-23France Rhezhek
 

Similar to SAP-PRAKTIKUM (20)

MODUL PLC (Programmable Logic Control) DIDIK
MODUL PLC (Programmable Logic Control) DIDIKMODUL PLC (Programmable Logic Control) DIDIK
MODUL PLC (Programmable Logic Control) DIDIK
 
Register Instruksi dan Accumulator
Register Instruksi dan AccumulatorRegister Instruksi dan Accumulator
Register Instruksi dan Accumulator
 
Register B dan Adder
Register B dan AdderRegister B dan Adder
Register B dan Adder
 
Sap 2
Sap 2Sap 2
Sap 2
 
Tp.plc
Tp.plcTp.plc
Tp.plc
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajar
 
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
 
simple-as-possible-computer-1.ppt
simple-as-possible-computer-1.pptsimple-as-possible-computer-1.ppt
simple-as-possible-computer-1.ppt
 
143428387 modul-pelatihan-plc-doc
143428387 modul-pelatihan-plc-doc143428387 modul-pelatihan-plc-doc
143428387 modul-pelatihan-plc-doc
 
Laporan tugas2 interface_kelompok2
Laporan tugas2 interface_kelompok2Laporan tugas2 interface_kelompok2
Laporan tugas2 interface_kelompok2
 
Pertemuan 9 orkom
Pertemuan 9 orkomPertemuan 9 orkom
Pertemuan 9 orkom
 
Mikrokontroler io tombol dan led
Mikrokontroler io tombol dan ledMikrokontroler io tombol dan led
Mikrokontroler io tombol dan led
 
Program counter, memory address register dan random access memory
Program counter, memory address register dan random access memoryProgram counter, memory address register dan random access memory
Program counter, memory address register dan random access memory
 
Program Counter, Memory Address Register dan Random Access Memory
Program Counter, Memory Address Register dan Random Access MemoryProgram Counter, Memory Address Register dan Random Access Memory
Program Counter, Memory Address Register dan Random Access Memory
 
AOK_-_Week_9_ALU_and_Bit_and_Byte_Representation..pdf
AOK_-_Week_9_ALU_and_Bit_and_Byte_Representation..pdfAOK_-_Week_9_ALU_and_Bit_and_Byte_Representation..pdf
AOK_-_Week_9_ALU_and_Bit_and_Byte_Representation..pdf
 
Artikel shift register
Artikel shift registerArtikel shift register
Artikel shift register
 
Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5
 
Resume komputer sap
Resume komputer sapResume komputer sap
Resume komputer sap
 
Pertemuan 3-instruksi-mesin-dan-program-bagian-23
Pertemuan 3-instruksi-mesin-dan-program-bagian-23Pertemuan 3-instruksi-mesin-dan-program-bagian-23
Pertemuan 3-instruksi-mesin-dan-program-bagian-23
 
Sensor suhu LM 35
Sensor suhu LM 35Sensor suhu LM 35
Sensor suhu LM 35
 

More from Lusiana Diyan

Komunikasi Bisnis yang Efektif
Komunikasi Bisnis yang EfektifKomunikasi Bisnis yang Efektif
Komunikasi Bisnis yang EfektifLusiana Diyan
 
Berkomunikasi dalam Tim
Berkomunikasi dalam TimBerkomunikasi dalam Tim
Berkomunikasi dalam TimLusiana Diyan
 
Berkomunikasi di Dunia dengan Keragaman
Berkomunikasi di Dunia dengan KeragamanBerkomunikasi di Dunia dengan Keragaman
Berkomunikasi di Dunia dengan KeragamanLusiana Diyan
 
Menulis Pesan Bisnis
Menulis Pesan BisnisMenulis Pesan Bisnis
Menulis Pesan BisnisLusiana Diyan
 
Kemampuan Berkomunikasi 6 - Menyelesaikan Pesan Bisnis
Kemampuan Berkomunikasi 6 - Menyelesaikan Pesan BisnisKemampuan Berkomunikasi 6 - Menyelesaikan Pesan Bisnis
Kemampuan Berkomunikasi 6 - Menyelesaikan Pesan BisnisLusiana Diyan
 
Menulis Pesan Bisnis
Menulis Pesan BisnisMenulis Pesan Bisnis
Menulis Pesan BisnisLusiana Diyan
 
Vocabulary Engineering Enrichment 3
Vocabulary Engineering Enrichment 3Vocabulary Engineering Enrichment 3
Vocabulary Engineering Enrichment 3Lusiana Diyan
 
Vocabulary Engineering Enrichment 2
Vocabulary Engineering Enrichment 2Vocabulary Engineering Enrichment 2
Vocabulary Engineering Enrichment 2Lusiana Diyan
 
Vocabulary Engineering Enrichment
Vocabulary Engineering EnrichmentVocabulary Engineering Enrichment
Vocabulary Engineering EnrichmentLusiana Diyan
 
DESIGN THINGKING & PROJECT MANAGEMENT
DESIGN THINGKING & PROJECT MANAGEMENTDESIGN THINGKING & PROJECT MANAGEMENT
DESIGN THINGKING & PROJECT MANAGEMENTLusiana Diyan
 
Tutorial Membuat Simple Crane Menggunakan Coppeliasim
Tutorial Membuat Simple Crane Menggunakan CoppeliasimTutorial Membuat Simple Crane Menggunakan Coppeliasim
Tutorial Membuat Simple Crane Menggunakan CoppeliasimLusiana Diyan
 
CRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQLCRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQLLusiana Diyan
 
Kontrol LED melalui Web Server
Kontrol LED melalui Web ServerKontrol LED melalui Web Server
Kontrol LED melalui Web ServerLusiana Diyan
 
Akses GPIO pada Raspberry Pi
Akses GPIO pada Raspberry PiAkses GPIO pada Raspberry Pi
Akses GPIO pada Raspberry PiLusiana Diyan
 
Building A Simple Robot in VREP
Building A Simple Robot in VREPBuilding A Simple Robot in VREP
Building A Simple Robot in VREPLusiana Diyan
 
Tutorial Menggunakan Software Eagle
Tutorial Menggunakan Software EagleTutorial Menggunakan Software Eagle
Tutorial Menggunakan Software EagleLusiana Diyan
 
Proses Rekayasa Perangkat Lunak
Proses Rekayasa Perangkat LunakProses Rekayasa Perangkat Lunak
Proses Rekayasa Perangkat LunakLusiana Diyan
 
Produk Rekasaya Perangkat Lunak
Produk Rekasaya Perangkat LunakProduk Rekasaya Perangkat Lunak
Produk Rekasaya Perangkat LunakLusiana Diyan
 
Open Loop Analog Control System - Motor DC
Open Loop Analog Control System - Motor DCOpen Loop Analog Control System - Motor DC
Open Loop Analog Control System - Motor DCLusiana Diyan
 

More from Lusiana Diyan (20)

Komunikasi Bisnis yang Efektif
Komunikasi Bisnis yang EfektifKomunikasi Bisnis yang Efektif
Komunikasi Bisnis yang Efektif
 
Berkomunikasi dalam Tim
Berkomunikasi dalam TimBerkomunikasi dalam Tim
Berkomunikasi dalam Tim
 
Berkomunikasi di Dunia dengan Keragaman
Berkomunikasi di Dunia dengan KeragamanBerkomunikasi di Dunia dengan Keragaman
Berkomunikasi di Dunia dengan Keragaman
 
Menulis Pesan Bisnis
Menulis Pesan BisnisMenulis Pesan Bisnis
Menulis Pesan Bisnis
 
Kemampuan Berkomunikasi 6 - Menyelesaikan Pesan Bisnis
Kemampuan Berkomunikasi 6 - Menyelesaikan Pesan BisnisKemampuan Berkomunikasi 6 - Menyelesaikan Pesan Bisnis
Kemampuan Berkomunikasi 6 - Menyelesaikan Pesan Bisnis
 
Menulis Pesan Bisnis
Menulis Pesan BisnisMenulis Pesan Bisnis
Menulis Pesan Bisnis
 
Vocabulary Engineering Enrichment 3
Vocabulary Engineering Enrichment 3Vocabulary Engineering Enrichment 3
Vocabulary Engineering Enrichment 3
 
Vocabulary Engineering Enrichment 2
Vocabulary Engineering Enrichment 2Vocabulary Engineering Enrichment 2
Vocabulary Engineering Enrichment 2
 
Vocabulary Engineering Enrichment
Vocabulary Engineering EnrichmentVocabulary Engineering Enrichment
Vocabulary Engineering Enrichment
 
DESIGN THINGKING & PROJECT MANAGEMENT
DESIGN THINGKING & PROJECT MANAGEMENTDESIGN THINGKING & PROJECT MANAGEMENT
DESIGN THINGKING & PROJECT MANAGEMENT
 
Tutorial Membuat Simple Crane Menggunakan Coppeliasim
Tutorial Membuat Simple Crane Menggunakan CoppeliasimTutorial Membuat Simple Crane Menggunakan Coppeliasim
Tutorial Membuat Simple Crane Menggunakan Coppeliasim
 
CRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQLCRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQL
 
Kontrol LED melalui Web Server
Kontrol LED melalui Web ServerKontrol LED melalui Web Server
Kontrol LED melalui Web Server
 
Installasi NodeMCU
Installasi NodeMCUInstallasi NodeMCU
Installasi NodeMCU
 
Akses GPIO pada Raspberry Pi
Akses GPIO pada Raspberry PiAkses GPIO pada Raspberry Pi
Akses GPIO pada Raspberry Pi
 
Building A Simple Robot in VREP
Building A Simple Robot in VREPBuilding A Simple Robot in VREP
Building A Simple Robot in VREP
 
Tutorial Menggunakan Software Eagle
Tutorial Menggunakan Software EagleTutorial Menggunakan Software Eagle
Tutorial Menggunakan Software Eagle
 
Proses Rekayasa Perangkat Lunak
Proses Rekayasa Perangkat LunakProses Rekayasa Perangkat Lunak
Proses Rekayasa Perangkat Lunak
 
Produk Rekasaya Perangkat Lunak
Produk Rekasaya Perangkat LunakProduk Rekasaya Perangkat Lunak
Produk Rekasaya Perangkat Lunak
 
Open Loop Analog Control System - Motor DC
Open Loop Analog Control System - Motor DCOpen Loop Analog Control System - Motor DC
Open Loop Analog Control System - Motor DC
 

SAP-PRAKTIKUM

  • 1. Praktikum 10 Pemrograman SAP-1 Lusiana Diyan Ningrum 2210181051 2 D4 Teknik Komputer B Program Studi Teknik Komputer Departemen Teknik Informatika dan Komputer Politeknik Elektronika Negeri Surabaya Surabaya
  • 2. 1. Tujuan: a. Mahasiswa dapat menjelaskan kode operasi atau opcode. b. Mahasiswa dapat membuat program SAP-1 2. Dasar Teori: Untuk memasukkan instruksi dan kata-data kedalam memori SAP-1 kita harus menggunakan kode tertentu yang dapat ditafsirkan oleh komputer. Tabel 2 memperlihatkan kode yang dipakai dalam SAP-1. Bilangan 0000 mewakiliki LDA, 0001 untuk ADD, 0010 untuk SUB, 1110 untuk OUT, dan 1111 untuk HLT. Karena kode-kode ini memberitahu kepada komputer tentang operasi yang harus dilaksanakan. Maka kode yang bersangkutan disebut kode operasi (operation code) disingkat opcode. TABEL 2. KODE OPERASI SAP-1 Mnemonik Kode Operasi LDA 0000 ADD 0001 SUB 0010 OUT 1110 HLT 1111 Berdasarkan rancangan rangkaian, saklar-saklar tersebut menghasilkan logika 1 untuk posisi keatas (U) dan logika 0 untuk posisi Ke bawah (D). Dalam peprograman saklar data dilaksanakan dengan satu instruksi, kode operasi yang akan diberikan sebagai nibble bagian atas, dan operand (pelengkap instruksi ) sebagai nibble bagian bawah. Sebagai contoh, misalkan kita akan menyimpan instruksi sebagai Berikut : Alamat Instruksi 0H LDA FH 1H ADD EH 2H HLT Pertama, ubahlah setiap instruksi kedalam bentuk biner : LDA FH = 0000 1111 ADD EH = 0001 1110 HLT = 1111 XXXX
  • 3. Dalam instruksi pertama, 0000 adalah kode operasi untuk LDA, dan 1111 adalah ekivalen biner dari FH. Dalam instruksi kedua, 0001 adalah kode operasi untuk ADD, dan 1110 adalah ekivalen biner dari EH. Dalam instruksi ketiga, 1111 adalah kode operasi untuk HLT, dan XX adalah nibble yang tak diperdulikan karena HLT bukan instruksi rujukan – memori. Selanjutnya, susunlah saklar-saklat alamat dan data sebagai berikut : Alamat Data DDDD DDDD UUUU DDDU DDDU UUUD DDUD UUUU XXXX Setiap kali setelah selesai menyusun suatu alamat dan kata- data, tekanlah tombol “tulis” (write). Karena D menyimpan biner 0 dan U menyimpan biner 1, tiga lokasi memori yang pertama sekarang mempunyai isi : Alamat Data 0000 0000 1111 0001 0001 1110 0010 1111 XXXX Suatu hal lagi yang perlu diketahui dalam penyusunan program adalah bahwa bahasa asembli (assembly language) menyangkut tata cara penulisan program dan mnemonik, sedangkan bahasa mesin (macine language) menyangkut tata cara penulisan dengan bilangan 0 dan 1. A. Pengendali Pengurut (Control Unit) Blok terbawah di bagian kiri berisi Pengendali Pengurut. Pengendali Pengurut atau Controller Sequencer yang disingkat CON merupakan unit pengendali keseluruhan. Sebelum komputer bekerja, sinyal-sinyal CLR masing-masing dikirimkan ke pencacah program dan register instruksi. Sebagai akibatnya, pencacah program direset ke 0000 dan bersamaan ini instruksi terakhir dalam register instruksi dihapus. Sebuah sinyal detak CLK dikirimkan ke semua register bufer; sinyal ini mensinkronkan operasi komputer, yang menjamin bahwa setiap langkah operasi akan terjadi sebagaimana mestinya. Dengan kata lain, semua transfer dalam regiter terjadi pada tepi positif dari sinyal detak CLK yang sama. Perhatikan bahwa sinyal CLK juga memasuki pencacah program.
  • 4. Data 12-bit yang berasal dari Pengendali Pengurut membentuk suatu kata pengendalian komputer (seperti seorang pengawas yang memberitahu tentang apa yang harus dikerjakan). 12 kawat yang menyalurkan kata kendali itu disebut bus kendali (control bus). Kata kendali mempunyai format sbb: CON = CpEp LM CE L1 E 1 LAEA SuEu LB Lo Kata ini menentukan bagaimana register-register harus bereaksi terhadap tepi positif sinyal detak berikutnya. Misalnya, Ep tinggi dan L M rendah berarti bahwa isi pencacah program ditahan di dalam MAP pada tepi positif berikutnya. Sebagai contoh yang lain, CE dan LA yang rendah berrati kata RAM yang telah ditunjuk alamatnya akan ditransfer ke akumulator pada tepi positif berikutnya dari lonceng. Kelak kita akan mempelajari diagram pewaktuan yang bersangkutan untuk melihat tepatnya kapan dan bagaimana transfer data ini dilakukan. 3. Percobaan  Membuat program PC (Program Counter) library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_unsigned.ALL; entity PC is Port ( nCLK : in STD_LOGIC; nCLR : in STD_LOGIC; Cp : in STD_LOGIC; Ep : in STD_LOGIC; BUS_Low : out STD_LOGIC_VECTOR (3 downto 0); T : out STD_LOGIC_VECTOR (2 downto 0)); end PC; architecture Behavioral of PC is signal q: STD_LOGIC_VECTOR (3 downto 0):="0000"; signal sig_T: STD_LOGIC_VECTOR (2 downto 0):="000"; begin process(nCLK, nCLR, Cp,Ep) begin if falling_edge(nCLK) then if Cp = '1' then q <= q+1; end if; if nCLR = '1' then q <= "0000"; end if; sig_T <= sig_T + 1; if sig_T = "110" then sig_T <= "000"; end if; end if; end process; T <= sig_T; BUS_Low <= q when Ep='1' else "ZZZZ"; end Behavioral;
  • 5.  Membuat program MAR library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity MAR is Port ( CLK : in STD_LOGIC; nLm : in STD_LOGIC; inMAR : in STD_LOGIC_VECTOR (3 downto 0); outMAR : out STD_LOGIC_VECTOR (3 downto 0)); end MAR; architecture Behavioral of MAR is signal mar : STD_LOGIC_VECTOR (3 downto 0); begin process(CLK, nLm) begin if rising_edge(CLK) then if nLm = '0' then outMAR <= inMAR; end if; end if; end process; end Behavioral;  Membuat program RAM library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity RAM is Port ( nCe : in STD_LOGIC; inRAM : in STD_LOGIC_VECTOR (3 downto 0); outRAM : out STD_LOGIC_VECTOR (7 downto 0)); end RAM; architecture Behavioral of RAM is signal ROM : STD_LOGIC_VECTOR (7 downto 0); begin process(inRAM) begin case inRAM is when "0000" => ROM <= "00001001"; -- LDA 9h when "0001" => ROM <= "00011010"; -- ADD 10h when "0010" => ROM <= "00101011"; -- SUBB 11h when "0011" => ROM <= "11100000"; -- OUT when "0100" => ROM <= "11110000"; -- Halt when "0101" => ROM <= "00000000"; when "0110" => ROM <= "00000001"; when "0111" => ROM <= "00000010"; when "1000" => ROM <= "00000011"; when "1001" => ROM <= "00000111"; -- 7 when "1010" => ROM <= "00000010"; -- 2 when "1011" => ROM <= "00000101"; -- 5 when "1100" => ROM <= "00000010"; when "1101" => ROM <= "00000000"; when "1110" => ROM <= "00000000"; when "1111" => ROM <= "11110000"; when others => ROM <= "00000000"; end case; end process;
  • 6. outRAM <= ROM when nCe='0' else "ZZZZZZZZ"; end Behavioral;  Membuat program IR (Intruction Register) library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity IR is Port ( CLK : in STD_LOGIC; CLR : in STD_LOGIC; nLi : in STD_LOGIC; nEi : in STD_LOGIC; inIR : in STD_LOGIC_VECTOR (7 downto 0); outIRlow : out STD_LOGIC_VECTOR (3 downto 0); outIRhigh : out STD_LOGIC_VECTOR (3 downto 0)); end IR; architecture Behavioral of IR is signal regBuff : STD_LOGIC_VECTOR (7 downto 0); begin process (CLK,CLR) begin if rising_edge(CLK) then if CLR = '1' then regBuff <="00000000"; outIRlow <="ZZZZ"; elsif nLi='0' then regBuff <= inIR; outIRlow <= "ZZZZ"; end if; end if; end process; outIRlow <= regBuff(3 downto 0) when nEi='0' else "ZZZZ"; outIRhigh <= regBuff(7 downto 4); end Behavioral;  Membuata program regA (RegisterA) library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity regA is Port ( CLK : in STD_LOGIC; nLa : in STD_LOGIC; Ea : in STD_LOGIC; inA : in STD_LOGIC_VECTOR (7 downto 0); outA : out STD_LOGIC_VECTOR (7 downto 0); regACC : out STD_LOGIC_VECTOR (7 downto 0)); end regA; architecture Behavioral of regA is signal sigA : STD_LOGIC_VECTOR (7 downto 0); begin process (CLK) begin if rising_edge(CLK) then if nLa='0' then sigA <= inA; end if;
  • 7. end if; end process; outA <= sigA when Ea='1' else "ZZZZZZZZ"; regACC <= sigA; end Behavioral;  Membuat program ALU (Adder) library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_unsigned.ALL; use IEEE.STD_LOGIC_arith.ALL; entity ALU is Port ( Su : in STD_LOGIC; Eu : in STD_LOGIC; inA : in STD_LOGIC_VECTOR (7 downto 0); inB : in STD_LOGIC_VECTOR (7 downto 0); result : out STD_LOGIC_VECTOR (7 downto 0)); end ALU; architecture Behavioral of ALU is signal hasil: STD_LOGIC_VECTOR (7 downto 0); begin hasil <= inA+inB when Su='0' else inA-inB; result <= hasil when Eu='1' else "ZZZZZZZZ"; end Behavioral;  Membuat program regB (RegisterB) library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity regB is Port ( CLK : in STD_LOGIC; nLb : in STD_LOGIC; inB : in STD_LOGIC_VECTOR (7 downto 0); outB : out STD_LOGIC_VECTOR (7 downto 0)); end regB; architecture Behavioral of regB is begin process (CLK) begin if rising_edge(CLK) then if nLb = '0' then outB <= inB; end if; end if; end process; end Behavioral;  Membuat program outReg (RegisterOut) library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity outReg is Port ( CLK : in STD_LOGIC; nLo : in STD_LOGIC;
  • 8. inReg : in STD_LOGIC_VECTOR (7 downto 0); LED : out STD_LOGIC_VECTOR (7 downto 0)); end outReg; architecture Behavioral of outReg is begin process (CLK) begin if rising_edge(CLK) then if nLo='0' then LED <= inReg; end if; end if; end process; end Behavioral;  Membuat program CU (Control Unit) library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity CU is Port ( CLK : in STD_LOGIC; CLR : in STD_LOGIC; opcode : in STD_LOGIC_VECTOR (3 downto 0); ctrl_bus : out STD_LOGIC_VECTOR (11 downto 0):="001111100011" ); end CU; architecture Behavioral of CU is type state_type is (t1,t2,t3,t4,t5,t6); signal t_state: state_type; begin process(CLK,CLR) begin if CLR ='1' then t_state <=t1; elsif rising_edge(CLK) then case t_state is when t1 => t_state <=t2; when t2 => t_state <=t3; when t3 => t_state <=t4; when t4 => t_state <=t5; when t5 => t_state <=t6; when t6 => t_state <=t1; end case; end if; end process; process(clk) begin if falling_edge(CLK) then -- Cp, Ep, nLm, nCe, nLi, nEi, nLa, Ea, Su, Eu, nLb, nLo case opcode is when "0000" => -- LD A case t_state is when t1 => ctrl_bus <="010111100011"; when t2 => ctrl_bus <="101111100011";
  • 9. when t3 => ctrl_bus <="001001100011"; when t4 => ctrl_bus <="000110100011"; when t5 => ctrl_bus <="001011000011"; when t6 => ctrl_bus <="001111100011"; --No Operation end case; when "0001" => -- ADD case t_state is when t1 => ctrl_bus <="010111100011"; when t2 => ctrl_bus <="101111100011"; when t3 => ctrl_bus <="001001100011"; when t4 => ctrl_bus <="000110100011"; when t5 => ctrl_bus <="001011100001"; when t6 => ctrl_bus <="001111000111"; end case; when "0010" => -- SUBB case t_state is when t1 => ctrl_bus <="010111100011"; when t2 => ctrl_bus <="101111100011"; when t3 => ctrl_bus <="001001100011"; when t4 => ctrl_bus <="000110100011"; when t5 => ctrl_bus <="001011100001"; when t6 => ctrl_bus <="001111001111"; end case; when "1110" => -- OUT case t_state is when t1 => ctrl_bus <="010111100011"; when t2 => ctrl_bus <="101111100011"; when t3 => ctrl_bus <="001001100011"; when t4 => ctrl_bus <="001111110010"; when t5 => ctrl_bus <="001111100011"; when t6 => ctrl_bus <="001111100011"; end case; when "1111" => -- OUT case t_state is when t1 => ctrl_bus <="010111100011"; when t2 => ctrl_bus <="101111100011";
  • 10. when t3 => ctrl_bus <="001001100011"; when t4 => ctrl_bus <="001111100011"; when t5 => ctrl_bus <="001111100011"; when t6 => ctrl_bus <="001111100011"; end case; when others => ctrl_bus <="001111100011"; end case; end if; end process; end Behavioral;  Membuat program SAP1 library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity SAP1 is Port ( CLK : in STD_LOGIC; CLR : in STD_LOGIC; T : out STD_LOGIC_VECTOR (2 downto 0); outCU : out STD_LOGIC_VECTOR (11 downto 0); wbus : out STD_LOGIC_VECTOR (7 downto 0); LED : out STD_LOGIC_VECTOR (7 downto 0) ); end SAP1; architecture Behavioral of SAP1 is component PC is Port ( nCLK : in STD_LOGIC; nCLR : in STD_LOGIC; Cp : in STD_LOGIC; Ep : in STD_LOGIC; BUS_Low : out STD_LOGIC_VECTOR (3 downto 0); T : out STD_LOGIC_VECTOR (2 downto 0) ); end component; component MAR is Port ( CLK : in STD_LOGIC; nLm : in STD_LOGIC; inMAR : in STD_LOGIC_VECTOR (3 downto 0); outMAR : out STD_LOGIC_VECTOR (3 downto 0)); end component; component RAM is Port ( nCe : in STD_LOGIC; inRAM : in STD_LOGIC_VECTOR (3 downto 0); outRAM : out STD_LOGIC_VECTOR (7 downto 0)); end component; component IR is Port ( CLK : in STD_LOGIC; CLR : in STD_LOGIC; nLi : in STD_LOGIC; nEI : in STD_LOGIC; inIR : in STD_LOGIC_VECTOR (7 downto 0); outIRlow : out STD_LOGIC_VECTOR (3 downto 0); outIRhigh : out STD_LOGIC_VECTOR (3 downto 0)); end component; component CU is Port ( CLK : in STD_LOGIC;
  • 11. CLR : in STD_LOGIC; opcode : in STD_LOGIC_VECTOR (3 downto 0); ctrl_bus : out STD_LOGIC_VECTOR (11 downto 0)); end component; component regA is Port ( CLK : in STD_LOGIC; nLa : in STD_LOGIC; Ea : in STD_LOGIC; inA : in STD_LOGIC_VECTOR (7 downto 0); outA : out STD_LOGIC_VECTOR (7 downto 0); regACC : out STD_LOGIC_VECTOR (7 downto 0)); end component; component ALU is Port ( Su : in STD_LOGIC; Eu : in STD_LOGIC; inA : in STD_LOGIC_VECTOR (7 downto 0); inB : in STD_LOGIC_VECTOR (7 downto 0); result : out STD_LOGIC_VECTOR (7 downto 0)); end component; component regB is Port ( CLK : in STD_LOGIC; nLb : in STD_LOGIC; inB : in STD_LOGIC_VECTOR (7 downto 0); outB : out STD_LOGIC_VECTOR (7 downto 0)); end component; component outReg is Port ( CLK : in STD_LOGIC; nLo : in STD_LOGIC; inReg : in STD_LOGIC_VECTOR (7 downto 0); LED : out STD_LOGIC_VECTOR (7 downto 0)); end component; signal sig_bus : STD_LOGIC_VECTOR (7 downto 0):="00000000"; signal sig_MARtoRAM : STD_LOGIC_VECTOR (3 downto 0):="0000"; signal AtoAlu : STD_LOGIC_VECTOR (7 downto 0):="00000000"; signal BtoAlu : STD_LOGIC_VECTOR (7 downto 0):="00000000"; signal IRtoCU : STD_LOGIC_VECTOR (3 downto 0):="0000"; signal ctrl_bus : STD_LOGIC_VECTOR (11 downto 0):="001111100011"; begin u1: PC port map( nCLK => CLK, nCLR => CLR, Cp => ctrl_bus(11), --Cp, Ep => ctrl_bus(10), --Ep, BUS_Low => sig_bus(3 downto 0), T => T ); -- untuk monitoring State u2: MAR port map( CLK => CLK, nLm => ctrl_bus(9), --nLm, inMAR => sig_bus(3 downto 0), outMAR => sig_MARtoRAM ); u3: RAM port map( nCe => ctrl_bus(8), --nCe, inRAM => sig_MARtoRAM, outRAM => sig_bus ); u4: IR port map(
  • 12. CLK => CLK, CLR => CLR, nLi => ctrl_bus(7), --nLi, nEi => ctrl_bus(6), --nEi, inIR => sig_bus, outIRlow => sig_bus(3 downto 0), outIRhigh => IRtoCU ); u6: regA port map( CLK => CLK, nLa => ctrl_bus(5), --nLa, Ea => ctrl_bus(4), --ea, inA => sig_bus, outA => sig_bus, regACC => AtoAlu ); u7: ALU port map( Su => ctrl_bus(3), --Su, Eu => ctrl_bus(2), --Eu, inA => AtoAlu, inB => BtoAlu, result => sig_bus ); u8: regB port map( CLK => CLK, nLb => ctrl_bus(1), --nLb, inB => sig_bus, outB => BtoAlu ); u9: outReg port map( CLK => CLK, nLo => ctrl_bus(0), --nLo, inReg => sig_bus, LED => LED ); u5: CU port map( CLK => CLK, CLR => CLR, opcode => IRtoCU, ctrl_bus => ctrl_bus ); wbus <= sig_bus; outCU <= ctrl_bus; end Behavioral;  Membuat program Simulasi SAP1 LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SAP1_CU_tb IS END SAP1_CU_tb; ARCHITECTURE behavior OF SAP1_CU_tb IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT SAP1 PORT( CLK : IN std_logic; CLR : IN std_logic; T : OUT std_logic_vector(2 downto 0); outCU : OUT std_logic_vector(11 downto 0); wbus : OUT std_logic_vector(7 downto 0); LED : OUT std_logic_vector(7 downto 0)
  • 13. ); END COMPONENT; --Inputs signal CLK : std_logic := '0'; signal CLR : std_logic := '0'; --Outputs signal T : std_logic_vector(2 downto 0):="000"; signal outCU : std_logic_vector(11 downto 0):="000000000000"; signal wbus : std_logic_vector(7 downto 0):="00000000"; signal LED : std_logic_vector(7 downto 0):="00000000"; -- Clock period definitions constant CLK_period : time := 10 ns; BEGIN -- Instantiate the Unit Under Test (UUT) uut: SAP1 PORT MAP ( CLK => CLK, CLR => CLR, T => T, outCU => outCU, wbus => wbus, LED => LED ); -- Clock process definitions CLK_process :process begin CLK <= '0'; wait for CLK_period/2; CLK <= '1'; wait for CLK_period/2; end process; -- Stimulus process stim_proc: process begin -- hold reset state for 100 ns. CLR <= '1'; wait for CLK_period; CLR <= '0'; wait for CLK_period*30; end process; END;
  • 14.  Hasil Simulasi LDA  Hasil Simulasi ADD  Hasil Simulasi SUBB  Hasil Simulasi OUT  Hasil Simulasi HALT
  • 15. 4. Latihan a. Terjemahkan program dari Contoh 1 ke dalam bahasa mesin SAP-1. b. Bagaimana cara memprogram SAP-1 untuk menyelesaikan persoalan aritmetik ini? 16 + 20 + 24 – 32 Bilangan ini diberikan dalam bentuk desimal. mengubah data desimal kedalam data heksa desimal untuk mendapatkan versi bahasa assembly c. Tuliskan program pada Contoh 3 dalam bentuk ringkas heksadesimal. 5. Analisa Komputer SAP-1 (Simple As Possible) adalah komputer sederhana yang berorganisasi yang dirancang untuk memperkenalkan semua gagasan penting dibalik operasi komputer tanpa membenamkan ke dalam kerumitan yang tidak perlu. SAP-1 merupakan tahap pertama dalam evolusi kearah pengembangan komputer- komputer modern. Pada praktikum ini yaitu membuat program siklus pengambilan SAP1. Dalam program ini menggunakan beberapa program lainnya seperti RAM, MAR, IR, dan PC untuk membangun sebuah program SAP1. SAP1 adalah sebagai top modul. Pencacah Program (Program Counter) berfungsi untuk menyimpan program pada bagian awal memori. Instruksi pertama disimpan pada alamat 0000, instruksi kedua disimpan pada alamat 0001, instruksi ketiga disimpan pada alamat 0010, dstPencacah program akan mencacah dari 0000 sd 1111. Tugas PC untuk mengirimkan ke memori alamat instruksi berikutnya yang akan diambil dan dieksekusi. Program Counter (PC) direset ke 0000 setiap kali komputer dijalankanSaat komputer dijalankan: PC mengirimkan alamat 0000 ke memori.
  • 16. Kemudian PC meng-increment cacahannya menjadi 0001Setelah isi alamat 0000 diambil dan dieksekusi, PC mengirimkan alamat 0001 ke memori. Pencacah menaikkan cacahannya kembaliSetelah instruksi pada alamat 0001 diambil dan dieksekusi, PC mengirimkan lagi alamat 0010 ke memori. Dan seterusnya sampai dengan instruksi terakhir dieksekusi. Masukan dan MAR Singkatan dari Memory Address Register merupakan register yang digunakan untuk menahan (latched) alamat data yang akan dibaca dari RAM kemudian MAR mengirimkan alamat 4-bit ke dalam RAM, dimana operasi membaca dilaksanakan. Pada saat komputer bekerja, RAM menerima alamat 4-bit dari MAR dan kemudian operasi membaca dilaksanakanProsesnya: instruksi dan kata yang ada dalam RAM ditempatkan pada bus W untuk digunakan oleh beberapa bagian lain komputer. Register instruksi merupakan bagian dari unit kendaliUntuk mengambil sebuah instruksi dari memori, komputer melakukan operasi membaca memori  hasilnya dimuat ke bus W  kemudian masuk ke register instruksi. Dalam praktikum kali ini terdapat 3 keadaan T4, T5, dan T6 yang merupakan siklus eksekusi dari SAP1. Pada intruksi LDA hnaya T4(alamat memori dikirim dari register intruksi ke MAR) dan T5(data memori diambil dari register intruksi ke akumulator) yang aktif. Pada intruksi ADD dan SUB 3 keadaan aktif semua dan data diambil dari memori dan dijumlahkan dengan akumulator hasilnya akan disimpan di kembali ke akumulator. Sedangkan untuk intruksi OUT hanya memerlukan satu tahap T4 yaitu memindahkan data dari akumulator ke dalam register keluaran, dan pengendali/pengurut akan mengirim nilai ke CON. 6. Kesimpulan SAP adalah software yang berbasis ERP (Enterprise Resources Planning) yang digunakan sebagai alat untuk membantu manajemen perusahaan, perencanaan, hingga melakukan operasionalnya LDA merupakan instruksi yang berfungsi untuk menyimpan sebuah nilai dari alamat tertentu. ADD dan SUB merupakan sebuah instruksi aritmatika yang berarti penjumlahan dan pengurangan. OUT berfungsi untuk menampilkan hasil dari proses komputasi serta HLT berarti instruksi untuk menghentikan sebuah proses pada alamat tertentu.