ALU 8-bit dan Register Geser 16-bit

FPGA banyak digunakan. Selain karena memang handal, FPGA lebih praktis diprogram. FPGA bisa diprogram sebagai mikroprosesor yang kita inginkan.

Saat UTS kemaren, matkul Perancangan Mikroprosesor, pak Dosen memberikan ujian yang sesuatu banget. Lain dari yang lain. Take Home Test. Ga tau kenapa alasannya. Hmm, mungkin dengan cara ini, mahasiswa bisa ujian, ga hanya nulis nulis di kertas, tapi langsung implementatif di tools Xilinx ISE.

Oke, jadi gini, soal UTS nya cuma dua sebenernya. Dikit kan? (sombong) tapi jangan salah, nih soal nguras otak saya. Ya mungkin karena saya masih newbie kali ya. Soalnya adalah:

  1. Rancang ALU 8-bit dengan kemampuan operasi ADDER dengan detektor overflow, SUBSTRACTOR dengan detektor overflow, bitwise NOT, bitwise OR, bitwise AND, bitwise XOR, logical NOT, logical OR, logical AND, left shift, right shift, left rotate, dan right rotate. Buat diagram bloknya, modul HDL-nya, modul Testbench-nya, dan simulasikan.
  2. Rancang Register Geser 16-bit dengan kemampuan SISO, SIPO, PISO, PIPO. Karakteristik register ini mirip dengan IC TTL 74299. Buat diagram bloknya, modul HDL-nya, modul Testbench-nya, dan simulasikan.

Dan ini kerjaan saya. Silakan kalo mau ngopi, srupuutt (lho?). Oh iya, modul Xilinx ini menggunakan bahasa Verilog dengan jenis perangkat Xilinx FPGA Spartan-3E XC3S500E-4FG320C dari kluarga Xilinx FPGA Spartan-3E walaupun sebenernya gak saya download ke perangkatnya. Ya, cuma ngoding di Xilinx ISE tok.

  1. ALU
  • Diagram blok

Kurang lebih sistem ALU ini bekerja seperti diagram blok ini. Ada selector 4-bit. Ada input Enable. Ada dua input dengan panjang masing-masing 8-bit, A dan B. Ada output Y dan overflow flag.

alu bikin dewek

  • Modul HDL

Nah ini dia listing code modulnya. Yang tertera di bawah hanya sebagian listing code-nya. Kalo mau yang versi full, sila klik disini.

module ALU_8bit(
input en, // enable
input [7:0] a, b, // input A dan B berbentuk signed bit
input [3:0] s, // selector
output reg [8:0] y, // output
output reg of
);

reg c; // carry dan overflow
reg d; // data internal

always @ (en) begin // proses pada enable
case (s)
0000: begin // penjumlahan
{c, y[7:0]} = a[7:0] + b[7:0]; // y = a + b dengan c sebagai carry

  • Modul Testbench

Ini listing code buat nguji sistem ALU yang udah saya buat. Semua operasi saya uji, tapi tau dah bener apa kaga haha.

module ALU_8bit_tb;

// Inputs
reg en;
reg [7:0] a;
reg [7:0] b;
reg [3:0] s;

// Outputs
wire [8:0] y;
wire of;

// Instantiate the Unit Under Test (UUT)
ALU_8bit uut (
.en(en),
.a(a),
.b(b),
.s(s),
.y(y),
.of(of)
);

donlod klik disini.

  • Hasil Simulasi

Nah kalo ini itu screenshot simulasinya di ISim. Ya semoga sesuai dengan yang diharapkan haha.

alu tb hasil

 

 

  1. Register Geser 16-bit
  • Diagram blok

Gambar diagram blok ini sebenernya hasil editan saya sendiri dari diagram blok IC 74299 buatan NXP (sumber). Jadi, intinya nih register geser gak jauh beda kayak IC 74299. Yang membedakan hanya jumlah bit yang ditampungnya aja.

register bikin dewek

  • Modul HDL

Listing code di bawah juga cuma teaser-nya aja. Silakan kalo mau donlod, klik disini.

module RegisterGeser_16bit(
input clk, // clock
input mr, // master reset
input dsr, // serial In data shift right
input dsl, // serial In data shift left
output reg q0, // serial Out Q0
output reg q7, // serial out Q7
output reg [15:0] io_out, // paralel Out I00-IO7
input [15:0] io_in, // paralel In I00-IO7
input [1:0] oe, // control ~OE for buffer
input [1:0] s // control for operation mode
);

reg [15:0] id; // internal data
//reg [15:0] io1; // reg help for IO0-IO7

  • Modul Testbench

Nah ini listing code buat ngujinya. SISO, SIPO, PISO, sama PIPO saya masukin semua, tapi wallahualam bener apa kaga haha.

odule RegisterGeser_16bit_tb;

// Inputs
reg clk;
reg mr;
reg dsr;
reg dsl;
reg [15:0] io_in;
reg [1:0] oe;
reg [1:0] s;

// Outputs
wire q0;
wire q7;
wire [15:0] io_out;

donlod klik disini.

  • Hasil Simulasi

Nah ini screenshot simulasinya. Silakan dipahami sendiri ya haha. Saya juga bingung ngejelasinnya :p

register tb hasil

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s