Percobaan 4.docx

  • Uploaded by: Alexander Marcelino
  • 0
  • 0
  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Percobaan 4.docx as PDF for free.

More details

  • Words: 2,735
  • Pages: 10
Percobaan IV SYNTHESIZABLE MIPS32® MICROPROCESSOR BAGIAN II : ARITHMETIC AND LOGICAL UNIT (ALU) DAN CONTROL UNIT (CU) Alexander Marcelino Krismono (13216060) Asisten : Fakhri Pradana (13215080) Tanggal Percobaan : 06/11/2018 EL3111 Praktikum Arsitektur Sistem Komputer Laboratorium Sinyal dan Sistem – Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung

Abstrak—Dalam praktikum modul kali ini, praktikan akan lebih memperdalam hal yang telah dipelajari pada modul sebelumnya akan MIPS32®. Praktikan akan membuat Arithmetic and Logical Unit dan Control Unit synthesizable menggunakan Bahasa pemrograman VHDL dan akan mensimulasikan program-program tersebuit menggunakan Quartus Altera. Selain membuat ALU dan CU praktikan juga membuat komponenkomponen yang digunakan didalam ALU dan CU, pada modul ini yang dibuat adalah Counter, Left Shiftter, dan carry lookahead Adder.

melakukan perhitungan integer dan operasi logika. ALU merupakan blok pembangun dasar dari sebuah mikroprosesor. Mikroprosesor modern meliputi central processing unit dan graphics processing unit memiliki ALU yang sangat kompleks untuk melakukan perhitungan. Dalam mikroprosesor modern, digunakan sistem representasi bilangan two’s complement.

Kata Kunci—Arithmetic Logical Unit, Control Unit, VHDL.

I. PENDAHULUAN

D

ALAM PRAKTIKUM KALI MELANJUTKAN PRAKTIKUM

INI PRAKTIKAN AKAN SEBELUMNYA MENGENAI

SYNTHESIZABLE MIPS32, DALAM PRAKTIKUM INI PRAKTIKAN AKAN MEMBUAT ALU DAN CU SEBUAH MIPS32 DENGAN VHDL DAN MENSIMULASIKAN HASILNYA DENGAN QUARTUS..

Tujuan dari praktikum ini adalah: • Praktikan memahami arsitektur mikroprosesor MIPS32® beserta datapath eksekusinya. • Praktikan dapat membuat Arithmetic and Logical Unit (ALU) dari MIPS32® dalam kode VHDL yang synthesizable dan dapat disimulasikan dengan Altera® Quartus® II v9.1sp2. • Praktikan dapat membuat Control Unit (CU) dari MIPS32® dalam kode VHDL yang synthesizable dan dapat disimulasikan dengan Altera® Quartus® II v9.1sp2. II. LANDASAN TEORETIS A. Arithmetic and Logical Unit (ALU) Dalam sistem elektronik digital, sebuah arithmetic and logical unit (ALU) adalah rangkaian digital yang berfungsi untuk

Pada mikroprosesor Single-Cycle MIPS32® yang akan kita realisasikan dalam praktikum ini, terdapat arithmetic and logical unit (ALU) yang sangat sederhana. ALU ini memiliki lebar data input sebesar 32-bit untuk memasukkan dua buah operand dan memiliki lebar data output sebesar 32-bit untuk mengeluarkan hasil komputasi. ALU ini hanya dapat menangani dua operasi matematika saja yaitu penjumlahan dan pengurangan. Untuk operasi penjumlahan, ALU memanfaatkan blok adder. Sedangkan untuk operasi pengurangan, ALU memanfaatkan sifat bilangan two’s complement. Dengan demikian, pengurangan merupakan penjumlahan dengan bilangan negatif. Oleh karena itu, operand kedua dapat diubah menjadi bilangan negatif dengan memanfaatkan prinsip two’s complement yaitu rumus −𝑋 = ~𝑋 + 1. Setelah itu, adder akan menjumlahkan kedua operand tersebut seperti biasa. Untuk memilih operasi penjumlahan dan pengurangan, terdapat 2-to1 multiplexer yang akan memilih arah operand kedua berasal. Untuk penjumlahan, selektor multiplexer bernilai 0 sedangkan untuk pengurangan selektor multiplexer bernilai 1. Selain itu,

carry-in untuk adder juga ditentukan dari operasi yang dilakukan. Untuk penjumlahan, carry-in bernilai 0 sedangkan untuk pengurangan, carry-in untuk bernilai 1. Dengan demikian, kedua sinyal ini (carry-in dan selektor multiplexer) dapat dihubungkan menjadi satu sinyal yaitu OP_SEL. Untuk melakukan inverting operand kedua, digunakan gerbang NOT dengan lebar data 32-bit. Untuk mendesain adder, ada beberapa arsitektur adder yang dapat dipilih. Masing-masing arsitektur memiliki kelebihan dan kekurangan yang dapat ditinjau dari segi kecepatan, konsumsi daya, dan konsumsi area. Dua contoh arsitektur adder adalah ripple carry adder dan carry-lookahead adder. Ripple carry adder merupakan adder yang relatif sederhana. Kelemahan adder ini adalah dari segi kecepatan karena setiap bit tidak dapat dijumlahkan secara bersamaan. Tahap adder yang lebih tinggi harus menunggu carry yang dibawa dari tahap adder yang lebih rendah. Pada carry-lookahead adder, setiap tahap adder dapat menghitung carry yang dia terima sehingga tidak perlu menunggu propagasi carry dari tahap sebelumnya. Kelebihan carry-lookahead adder harus dibayar dengan penambahan rangkaian logika yang akan mengkonsumsi luas area.

Pada mikroprosesor Single-Cycle MIPS32® yang akan kita realisasikan dalam praktikum ini, terdapat control unit (CU) yang sangat sederhana. CU menerima opcode dan funct dari instruksi setelah di-decode untuk menentukan nilai dari sinyalsinyal kontrol yang dikeluarkan. Terdapat sepuluh sinyal kontrol yang keluar dari CU ini yang dijelaskan sebagai berikut. Nama

Le

T

F

Sinyal

bar

uj

u

ua

n

n

g s i

Sig_Jmp

2 bit

2-to-1 Mux

Menunjukkan adanya instruksi jump sehingga program

pada

counter dapat diset sesuai dengan address hasil kalkulasi.

Program Counter

Sig_Bne

1 bit

Gerbang

Menunjukkan adanya instruksi bne untuk memilih

OR 2

hasil pencabangan pada program counter.

Input

Sig_Bran ch

1 bit

Gerbang

Menunjukkan adanya instruksi beq untuk memilih

OR 2

hasil pencabangan pada program counter.

Input

Sig_Memt oReg

1 bit

2-to-1 Mux

Memilih data untuk writeback, apakah berasal dari data

pada

memory atau ALU.

Data Memory

B. Control Unit(CU) Control Unit (CU) merupakan komponen dari sebuah mikroprosesor yang berfungsi untuk mengarahkan operasioperasi yang dilakukan oleh mikroprosesor tersebut. CU mengatur komunikasi dan koordinasi antarkomponen mikroprosesor menggunakan sinyal-sinyal kontrol. CU juga membaca dan menerjemahkan instruksi-instruksi yang diproses untuk menentukan urutan pemrosesan data.

Sinyal yang mengaktifkan operasi baca pada data

Sig_MemR

1

Data

ead

bit

Memory

Sig_MemW

1

Data

rite

bit

Memory

memory.

Sig_RegD

2

4-to-1 Mux

Memilih register yang akan dijadikan sebagai destination

est

bit

pada

register.

memory.

Sinyal yang mengaktifkan operasi tulis pada data

Register

Sig_RegW

1

rite

bit

Sig_ALUS

2

rc

bit

Register

Sinyal yang mengaktifkan operasi tulis pada register.

4-to-1 Mux

Memilih data operand kedua yang akan masuk ke ALU,

pada

apakah dari register atau dari immediate.

ALU

pengurangan.

Sig_ALUC

1

trl

bit

ALU

Memilih operasi yang akan dilakukan pada ALU apakah penjumlahan atau

Terdapat sembilan instruksi yang dapat dieksekusi oleh mikroprosesor Single-Cycle MIPS32® yang akan kita realisasikan dalam praktikum ini. Kesembilan instruksi tersebut akan menentukan nilai sinyal yang dikeluarkan oleh control unit karena setiap instruksi membutuhkan penanganan dan aliran data yang berbeda-beda. Berikut ini tabel nilai sinyal control unit untuk setiap instruksi yang dapat dieksekusi

Ins tru ksi

T i p e

S i g _ J m p

S i g _ B n e

Sig _Br anc h

Sig_M emtoR eg

Sig_ MemR ead

ad d su b be q bn e ad di lw

R

0

0

0

0

0

0

0

0

0

1

0

0

1

0

0

0

0

0

0

0

0

0

1

1

sw

I

0

0

0

0

jm p no p

J

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

0

0

0

0

0

0

0

0

Sig_M emWri te

Sig_R egDes t

R I I I I

-

Inst T ruk i si p e

Fig. 1 Simulasi Fungsional Program Counter

Pada hasil simulasi fungsional diatas terlihat bahwa program counter sudah berfungsi seperti harapan. Terlihat pada gambar diatas bahwa nilai PC_out akan berubah untuk mengikuti nilai PC_in setiap kali clock pada rising edge. Hal ini sesuai dengan fungsi suatu program counter yaitu suatu register yang menyimpan address instruksi yang akan dilakukan dan akan mengupdate dirinya setiap clock cycle.

Fig. 2 Simulasi Timing Program Counter

Untuk hasil simulasi timing terlihat bahwa hasil yang didapat mirip dengan fungsional hanya saja muncul delay yang diakibatkan komponen-komponen. B. Tugas 2 : Perancangan Left Shifter Dua Kali

Fig. 3 Simulasi Fungsional Leftshifter 32_32

Fig. 4 Simulasi timing Leftshifter 32_32

Sig_R egWri te

Sig_ ALUS rc

Sig_ ALUC trl

add R 0 01 1 0 00 sub R 0 01 1 0 01 beq I 0 -0 -bne I 0 -0 -add I 0 00 1 1 00 i lw I 0 00 1 1 00 sw I 1 00 0 1 00 jmp J 0 -0 -nop 0 00 0 0 00 Untuk mengatur sinyal-sinyal kontrol tersebut, control unit mendeteksi setiap instruksi menggunakan opcode dan funct. III. HASIL DAN ANALISIS

Fig. 5 Simulasi Fungsional Leftshifter 26_28

Fig. 6 Simulasi Fungsional Leftshifter 26_28

Pada Hasil simulasi fungsional diatas terlihat bahwa program telah mengeluarkan output yang diharapkan. Terlihat bahwa bit akan tershift ke kiri 2 kali dan dibagian sebelah kanan akan terisi bit 0. Untuk simulasi timing sama seperti percobaan sebelumny akan muncul delay. C. Tugas 3 : Perancangan Carry-Lookahead Adder 32-bit

Fig. 7 Simulasi Fungsional Carry-Lookahead Adder

A. Tugas I : Perancangan Program Counter

Fig.8 Simulasi timing Carry-Lookahead Adder

Pada hasil diatas terlihat bahwa carry-lookahead adder sudah bekerja sesuai harapan. Terlihat pada saat C_IN bernilai 0

RESULT bernilai hasil operasi + OPRND_1 dan OPRND_2, saat C_IN bernilai 1 atau high RESULT bertambah 1. Saat terjadi overflow dalam penjumlahan overflow tersebut akan diatasi oleh C_OUT. D. Tugas 4: Sign Extender Fig.16 Simulasi timing CU input sub Fig.9 Simulasi Fungsional sign extender

Fig.10 Simulasi timing sign extender

Pada hasil simulasi diatas terlihat bahwa program sudah berfungsi sesuai dengan harapan. Terlihat diatas bahwa input 16 bit akan keluar sebagai output 32 bit dengan cara menambahkan 0 pada bagian kanan bit input. E. Tugas 5: Arithmetic and Logical Unit (ALU)

Fig.11 Simulasi Fungsional ALU

Fig.12 Simulasi timing ALU

Pada hasil diatas terlihat bahwa ALU sudah berfungsi sesuai harapan. Terlihat pada saat OP_SEL low(0) akan dilakukan operasi OPERAND_1+OPERAND_2 dan pada saat OP_SEL high(1) akan dilakukan operasi OPERAND_1-OPERAND_2. F. Tugas 6: Control Unit (CU)

Fig.13 Simulasi fungsional CU input sub

Fig.14 Simulasi timing CU input sub

Fig.15 Simulasi fungsional CU input add

Pada hasil diatas terlihat bahwa Control Unit sudah berfungsi sesuai dengan harapan, output sudah cocok dengan tabel yang ada pada bab II laporan ini. Hasil diatas menunjukan saat opcode dan func yang digunakan disesuaikan dengan perintah add dan sub, terlihat bahwa hasil sudah benar. Pada input sub Opcode 000000 Funct 100010, output semua low kecuali REG_DEST, REG_WRITE, dan ALU_ctrl. Hal ini sama seperti cara kerja CU pada MIPS32 yang melakukan instruksi sesuai dengan input opcode dan funct. Aliran data/datapath(komunikasi dan koordinasi antarkomponen) pada mikroprosessor MIPS32® diatur oleh control unit dengan memanfaatkan sinyal-sinyal control yang ada. Selanjutnya CU akan membaca dan menerjemahkan instruksi-instruksi yang diproses untuk mementukan urutan pemrosesan data IV. SIMPULAN  Pada MIPS32 semua operasi aritmatika dan logika akan dilakukan pada ALU  Control Unit pada MIPS32 akan menerima opcode dan funct lalu melakukan decoding untuk menentukan instruksi yang akan dilakukan dan akan mengeluarkan output sesuai instruksi tersebut. REFERENSI “Petunjuk Praktikum Arsitektur Sistem Komputer,” 2018.

Lampiran 1. Source code untuk tugas I ----------

Praktikum EL3111 Arsitektur Sistem Komputer Modul : 4 Percobaan : 1 Tanggal : 6 November 2018 Kelompok : 3 Rombongan : C Nama (NIM) 1 : Alexander Marcelino Krismono(13216061) Nama (NIM) 2 : Angelia Hartono(131216061) Nama File : program_counter.vhd

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY program_counter IS PORT( clk : IN std_logic; PC_in : IN std_logic_vector(31 DOWNTO 0); PC_out : OUT std_logic_vector(31 DOWNTO 0) ); END program_counter; ARCHITECTURE behavior OF program_counter IS BEGIN PROCESS(clk) BEGIN if clk'EVENT and clk='1'then PC_out<=PC_in; end if; END PROCESS; END behavior;

2. Source code untuk tugas II ----------

Praktikum EL3111 Arsitektur Sistem Komputer Modul : 4 Percobaan : 2 Tanggal : 6 November 2018 Kelompok : 3 Rombongan : C Nama (NIM) 1 : Alexander Marcelino Krismono(13216061) Nama (NIM) 2 : Angelia Hartono(131216061) Nama File : lshifter_26_28.vhd

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY lshifter_26_28 IS PORT( D_IN: IN std_logic_vector(25 DOWNTO 0); D_OUT:OUT std_logic_vector(27 DOWNTO 0) ); END lshifter_26_28; ARCHITECTURE behavior OF lshifter_26_28 IS BEGIN D_OUT(27 DOWNTO 2)<=D_IN(25 DOWNTO 0); D_OUT(1 DOWNTO 0)<=(others =>'0'); END Behavior;

3. Source code untuk tugas II --------

Praktikum EL3111 Arsitektur Sistem Komputer Modul : 4 Percobaan : 2 Tanggal : 6 November 2018 Kelompok : 3 Rombongan : C Nama (NIM) 1 : Alexander Marcelino Krismono(13216061)

-- Nama (NIM) 2 : Angelia Hartono(131216061) -- Nama File : lshifter_32_32.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY lshift_32_32 IS PORT( D_IN: IN std_logic_vector(31 DOWNTO 0); D_OUT:OUT std_logic_vector(31 DOWNTO 0) ); END lshift_32_32; ARCHITECTURE behavior OF lshift_32_32 IS BEGIN D_OUT(31 DOWNTO 2)<=D_IN(29 DOWNTO 0); D_OUT(1 DOWNTO 0)<=(others =>'0'); END Behavior;

4. Source code untuk tugas 3 ----------

Praktikum EL3111 Arsitektur Sistem Komputer Modul : 4 Percobaan : 3 Tanggal : 6 November 2018 Kelompok : 3 Rombongan : C Nama (NIM) 1 : Alexander Marcelino Krismono(13216061) Nama (NIM) 2 : Angelia Hartono(131216061) Nama File : cla_32.vhd

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cla_32 IS PORT( OPRND_1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0); OPRND_2 : IN STD_LOGIC_VECTOR(31 DOWNTO 0); C_IN : IN STD_LOGIC; RESULT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); C_OUT : OUT STD_LOGIC ); END cla_32; ARCHITECTURE behavioral of cla_32 SIGNAL h_sum : SIGNAL carry_generate : SIGNAL carry_propagate : SIGNAL carry_in_internal :

IS STD_LOGIC_VECTOR(31 STD_LOGIC_VECTOR(31 STD_LOGIC_VECTOR(31 STD_LOGIC_VECTOR(31

DOWNTO DOWNTO DOWNTO DOWNTO

0); 0); 0); 1);

BEGIN h_sum <= OPRND_1 XOR OPRND_2; carry_generate <= OPRND_1 AND OPRND_2; carry_propagate <= OPRND_1 OR OPRND_2; PROCESS (carry_generate,carry_propagate,carry_in_internal) BEGIN carry_in_internal(1) <= carry_generate(0) OR (carry_propagate(0) AND C_IN); inst: FOR i IN 1 TO 30 LOOP carry_in_internal(i+1) <= carry_generate(i) OR (carry_propagate(i) carry_in_internal(i)); END LOOP; C_OUT <= carry_generate(31) OR (carry_propagate(31) AND carry_in_internal(31)); END PROCESS; RESULT(0) <= h_sum(0) XOR C_IN; RESULT(31 DOWNTO 1) <= h_sum(31 DOWNTO 1) XOR carry_in_internal(31 DOWNTO 1); END behavioral;

5. Source code untuk tugas 4 -- Praktikum EL3111 Arsitektur Sistem Komputer -- Modul : 4

AND

--------

Percobaan : 4 Tanggal : 6 November 2018 Kelompok : 3 Rombongan : C Nama (NIM) 1 : Alexander Marcelino Krismono(13216061) Nama (NIM) 2 : Angelia Hartono(131216061) Nama File : sign_extender.vhd

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE ieee.numeric_std.ALL; ENTITY sign_extender IS PORT( D_IN : IN std_logic_vector(15 DOWNTO 0); D_OUT : OUT std_logic_vector(31 DOWNTO 0) ); END sign_extender; ARCHITECTURE behavioral OF sign_extender IS Begin D_OUT <= SXT(D_IN, D_OUT'LENGTH); END behavioral;

6. Source code untuk tugas 5 ----------

Praktikum EL3111 Arsitektur Sistem Komputer Modul : 4 Percobaan : 5 Tanggal : 6 November 2018 Kelompok : 3 Rombongan : C Nama (NIM) 1 : Alexander Marcelino Krismono(13216061) Nama (NIM) 2 : Angelia Hartono(131216061) Nama File : ALU.vhd

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE ieee.numeric_std.ALL; ENTITY ALU IS PORT( OPERAND_1 : IN std_logic_vector(31 DOWNTO 0); OPERAND_2 : IN std_logic_vector(31 DOWNTO 0); OP_SEL : IN std_logic; OUTPUT : OUT std_logic_vector(31 DOWNTO 0) ); END ALU; ARCHITECTURE behavior OF ALU IS signal op_a : std_logic_vector (31 DOWNTO 0); signal op_b : std_logic_vector (31 DOWNTO 0); signal c_in : std_logic; signal c_out : std_logic; signal hasil : std_logic_vector (31 DOWNTO 0); COMPONENT cla_32 PORT ( OPRND_1 : IN STD_LOGIC_VECTOR OPRND_2 : IN STD_LOGIC_VECTOR C_IN : IN STD_LOGIC; -- Carry RESULT : OUT STD_LOGIC_VECTOR C_OUT : OUT STD_LOGIC ); END COMPONENT; BEGIN componentcarry: cla_32 PORT MAP(

(31 DOWNTO 0); -- Operand 1 (31 DOWNTO 0); -- Operand 2 in (31 DOWNTO 0); -- RESULT

OPRND_1 => op_a, OPRND_2 => op_b, C_IN => c_in, C_OUT => c_out, RESULT => hasil ); PROCESS (OP_SEL, OPERAND_2) BEGIN if (OP_SEL = '0') then op_a <= OPERAND_1; op_b <= OPERAND_2; c_in <= OP_SEL; OUTPUT <= hasil; elsif (OP_SEL = '1') THEN op_a <= OPERAND_1; op_b <= (not OPERAND_2); c_in <= OP_SEL; OUTPUT <= hasil; END IF; END PROCESS; END behavior;

7. Source code untuk tugas 6 ----------

Praktikum EL3111 Arsitektur Sistem Komputer Modul : 4 Percobaan : 6 Tanggal : 6 November 2018 Kelompok : 3 Rombongan : C Nama (NIM) 1 : Alexander Marcelino Krismono(13216061) Nama (NIM) 2 : Angelia Hartono(131216061) Nama File : cu.vhd

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cu IS PORT ( OP_In : IN STD_LOGIC_VECTOR (5 DOWNTO 0); FUNCT_In : IN STD_LOGIC_VECTOR (5 DOWNTO 0); Sig_Jmp : OUT STD_LOGIC_VECTOR (1 DOWNTO 0); Sig_Bne : OUT STD_LOGIC; Sig_Branch : OUT STD_LOGIC; Sig_MemtoReg : OUT STD_LOGIC; Sig_MemRead : OUT STD_LOGIC; Sig_MemWrite : OUT STD_LOGIC; Sig_RegDest : OUT STD_LOGIC_VECTOR (1 DOWNTO 0); Sig_RegWrite : OUT STD_LOGIC; Sig_ALUSrc : OUT STD_LOGIC_VECTOR (1 DOWNTO 0); Sig_ALUCtrl : OUT STD_LOGIC ); END cu; architecture Behavior of cu is BEGIN PROCESS (OP_In,FUNCT_In) BEGIN --Sig_Jmp IF OP_In = "000010" THEN Sig_Jmp <= "01"; ELSE Sig_Jmp <= "00"; END IF; --Sig_Bne IF OP_In = "000101" THEN Sig_Bne <= '1'; ELSE Sig_Bne <= '0'; END IF; --Sig_Branch IF OP_In = "000100" THEN Sig_Branch <= '1'; ELSE

Sig_Branch <= '0'; END IF; --Sig_MemtoReg and Sig_MemRead IF OP_In = "100011" THEN Sig_MemtoReg <= '1'; Sig_MemRead <= '1'; ELSE Sig_MemtoReg <= '0'; Sig_MemRead <= '0'; END IF; --Sig_MemWrite IF OP_In = "101011" THEN Sig_MemWrite <= '1'; ELSE Sig_MemWrite <= '0'; END IF; --Sig_RegDest IF (OP_In = "000000" AND (FUNCT_In = "100000" OR FUNCT_In = "100010")) THEN Sig_RegDest <= "01"; ELSE Sig_RegDest <= "00"; END IF; --Sig_RegWrite IF (OP_In = "000000" AND (FUNCT_In = "100000" OR FUNCT_In = "100010")) OR OP_In ="001000" OR OP_In = "100011" THEN Sig_RegWrite <= '1'; ELSE Sig_RegWrite <= '0'; END IF; --Sig_ALUSrc IF OP_In = "001000" OR OP_In = "100011" OR OP_In = "101011" THEN Sig_ALUSrc <= "01"; ELSE Sig_ALUSrc <= "00"; END IF; --Sig_ALUCtrl IF (OP_In = "000000" AND FUNCT_In = "100010") THEN Sig_ALUCtrl <= '1'; ELSE Sig_ALUCtrl <= '0'; END IF; END PROCESS; END behavior;

Related Documents

Percobaan 1
June 2020 28
Percobaan 1
June 2020 19
Percobaan Difraksi
June 2020 32
Percobaan Bluetooth.docx
October 2019 35
Percobaan I.docx
May 2020 17
Percobaan V.docx
December 2019 4

More Documents from "Hajrah"

Percobaan 4.docx
November 2019 13
El2101_05_13216060.docx
November 2019 9
October 2019 33
Bingo1.docx
August 2019 9
May 2020 9