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.
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.
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.
Fetch Cycle adalah siklus pengambilan data ke memori atau register. Aliran data siklus pengambilan (Fetch Cycle) berdasarkan urutan kejadian selama siklus interuksi tergantung pada rangan CPU. Sebuah CPU yang menggunakan register memori alamat (MAR), Register memori buffer (MBR), pencacah program (PC) dan register instruksi(IR). Proses pada siklus pengambilan (Fetch Cycle), instruksi dibaca dari memori. Selanjutnya, PC berisi alamat instruksi berikutnya yang akan diambil. Alamat ini dipindahkan di MAR(Memory Address Register) dan ditaruh di bus alamat. Kemudian Control Unit meminta pembacaan memori dan hasilnya disimpan di bus data dan disalin ke MBR (Memory Buffer Register), kemudian dipindahkan ke IR (Instruction Regiter). PC (Program Counter) naik nilainya 1, sebagai persiapan untuk pengambilan selanjutnya. Siklus selesai, CU memeriksa isi IR (Instruction Register) untuk menentukan apakah IR (Instruction Register) berisi Operand Specifier yang menggunakan pengalamatan tak langsung (Indirect).
modul ini berisi praktikum untuk instruksi dasar pembuatan ladder diagram dengan program syswin untuk mata diklat mengoperasikan sistem kendali elektronik
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.
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.
Fetch Cycle adalah siklus pengambilan data ke memori atau register. Aliran data siklus pengambilan (Fetch Cycle) berdasarkan urutan kejadian selama siklus interuksi tergantung pada rangan CPU. Sebuah CPU yang menggunakan register memori alamat (MAR), Register memori buffer (MBR), pencacah program (PC) dan register instruksi(IR). Proses pada siklus pengambilan (Fetch Cycle), instruksi dibaca dari memori. Selanjutnya, PC berisi alamat instruksi berikutnya yang akan diambil. Alamat ini dipindahkan di MAR(Memory Address Register) dan ditaruh di bus alamat. Kemudian Control Unit meminta pembacaan memori dan hasilnya disimpan di bus data dan disalin ke MBR (Memory Buffer Register), kemudian dipindahkan ke IR (Instruction Regiter). PC (Program Counter) naik nilainya 1, sebagai persiapan untuk pengambilan selanjutnya. Siklus selesai, CU memeriksa isi IR (Instruction Register) untuk menentukan apakah IR (Instruction Register) berisi Operand Specifier yang menggunakan pengalamatan tak langsung (Indirect).
modul ini berisi praktikum untuk instruksi dasar pembuatan ladder diagram dengan program syswin untuk mata diklat mengoperasikan sistem kendali elektronik
Register instruksi atau Instruction Register yang disingkat IR merupakan bagian dari unit kendali. Untuk mengambil sebuah instruksi dari memori, komputer melakukan operasi membaca memori. Dalam operasi ini isi dari lokasi memori yang ditunjuk alamatnya ditempatkan pada bus W. Pada waktu yang sama, register instruksi disiapkan untuk pengisian pada tepi positif dari sinyal detak (clock) berikutnya.
Akumulator disingkat dengan A adalah sebuah register buffer yang menyimpan jawaban sementara selama komputer beroperasi. Dalam Gambar 1 diperlihatkan bahwa akumulator mempunyai dua macam keluaran. Keluaran dua keadaan secara langsung diteruskan ke bagian Arithmetic Logic Unit. Keluaran tiga-keadaan dikirimkan kepada bus W. Karena itu kata 8-bit dari akumulator secara terus menerus menggerakkan rangkaian Arithmetic Logic Unit; dan kata yang sama juga muncul pada bus W bilamana EA tinggi.
Register instruksi atau Instruction Register yang disingkat IR merupakan bagian dari unit kendali. Untuk mengambil sebuah instruksi dari memori, komputer melakukan operasi membaca memori. Dalam operasi ini isi dari lokasi memori yang ditunjuk alamatnya ditempatkan pada bus W. Pada waktu yang sama, register instruksi disiapkan untuk pengisian pada tepi positif dari sinyal detak (clock) berikutnya.
Akumulator disingkat dengan A adalah sebuah register buffer yang menyimpan jawaban sementara selama komputer beroperasi. Dalam Gambar 1 diperlihatkan bahwa akumulator mempunyai dua macam keluaran. Keluaran dua keadaan secara langsung diteruskan ke bagian Arithmetic Logic Unit. Keluaran tiga-keadaan dikirimkan kepada bus W. Karena itu kata 8-bit dari akumulator secara terus menerus menggerakkan rangkaian Arithmetic Logic Unit; dan kata yang sama juga muncul pada bus W bilamana EA tinggi.
Register B adalah register bufer yang lain diantara register-register bufer yang ada.
Register ini digunakan dalam operasi aritmetik. Sinyal L B yang rendah dan tepi positif dari sinyal detak akan mengisikan kata pada bus W ke dalam register B. Keluaran dua keadaan dari register B kemudian menggerakkan Arithmetic Logic Unit, memasukkan bilangan yang akan dijumlahkan dengan atau dikurangkan dari isi akumulator.
Program counter, memory address register dan random access memoryLusiana Diyan
Pencacah Program atau Program Counter disingkat PC adalah bagian unit kendali yang mencacah dari 0000 sampai 1111. Program disimpan pada bagian awal dari memori dengan instruksi pertama pada alamat biner 0000, intruksi kedua pada alamat 0001, instruksi ketiga pada alamat 0010, dan seterusnya. Tugasnya Program Counter adalah mengirimkan ke memori alamat dari instruksi berikutnya yang akan diambil dan dilaksanakan.
Memory address register disingkat MAR artinya register alamat memori. Register yang menyimpan sementara alamat memori untuk dikirimkan ke RAM. MAR adalah bagian dari memori SAR-1.
Random Access Memory disingkat RAM artinya akses lokasi memori secara random. Selama komputer beroperasi, RAM menerima alamat 4-bit dari MAR dan operasi membaca dilaksanakan. Dalam proses ini, instruksi dan kata-data yang tersimpan dala RAM ditempatkan pada bus W untuk digunakan oleh beberapa bagian lain dari komputer.
Program Counter, Memory Address Register dan Random Access MemoryLusiana Diyan
Pencacah Program atau Program Counter disingkat PC adalah bagian unit kendali yang mencacah dari 0000 sampai 1111. Program disimpan pada bagian awal dari memori dengan instruksi pertama pada alamat biner 0000, intruksi kedua pada alamat 0001, instruksi ketiga pada alamat 0010, dan seterusnya. Tugasnya Program Counter adalah mengirimkan ke memori alamat dari instruksi berikutnya yang akan diambil dan dilaksanakan.
Pencacah program direset ke 0000 setiap kali sebelum komputer dijalankan. Ketika komputer mulai bekerja, pencacah program mengirimkan alamat 0000 ke memori. Kemudian mencacah program meningkatkan angka cacahannya menjadi 0001. Setelah instruksi pertama diambil dan dilaksanakan, pencacah program mengirimkan alamat 0001 ke memori. Pencacah program kembali meningkatkan angka cacahannya. Sesudah instruksi kedua diambil dan dieksekusi, pencacah program mengirimkan alamat 0010 ke memori. Dengan demikian, pencacah program dapat menentukan instuksi berikutnya yang akan diambil dan dilaksanakan.
Register atau registrasi adalah sebuah piranti yang berisi kumpulan sel biner yang digunakan untuk penyimpanan sementara data atau informasi yang akan ditampilkan dalam bentuk kode-kode biner.
Tutorial Membuat Simple Crane Menggunakan CoppeliasimLusiana Diyan
oppeliaSim, sebelumnya dikenal sebagai V-REP, adalah simulator robot yang digunakan dalam industri, pendidikan dan penelitian .. Itu menggunakan perpustakaan simulasi fisika ODE, Bullet, Vortex dan Newton untuk melakukan simulasi benda kaku.
CRUD pada Android Studio menggunakan MySQLLusiana Diyan
MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL atau DBMS yang multialur, multipengguna, dengan sekitar 6 juta instalasi di seluruh dunia.
Internet of Thing (IoT) adalah sebuah konsep dimana suatu objek yang memiliki kemampuan untuk mentransfer data melalui jaringan tanpa memerlukan interaksi manusia ke manusia atau manusia ke komputer. IoT telah berkembang dari konvergensi teknologi nirkabel, micro-electromechanical systems (MEMS), dan Internet.
NodeMCU adalah platform IoT open source berbiaya rendah. Ini awalnya termasuk firmware yang berjalan pada ESP8266 Wi-Fi SoC dari Espressif Systems, dan perangkat keras yang didasarkan pada modul ESP-12. Kemudian, dukungan untuk MCU 32-bit ESP32 ditambahkan.
Raspberry Pi, sering disingkat dengan nama Raspi, adalah komputer papan tunggal yang seukuran dengan kartu kredit yang dapat digunakan untuk menjalankan program perkantoran, permainan komputer, dan sebagai pemutar media hingga video beresolusi tinggi.
CcoppeliaSim, sebelumnya dikenal sebagai V-REP, adalah simulator robot yang digunakan dalam industri, pendidikan dan penelitian .. Itu menggunakan perpustakaan simulasi fisika ODE, Bullet, Vortex dan Newton untuk melakukan simulasi benda kaku.
Metode Clayperon (Persamaan Tiga Momen) untuk balok menerus.pptx
Pemrograman sap 1
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.