WEB BLOG
this site the web

I made this widget at MyFlashFetish.com.

Tulisan FPGA



Multiplexer
Multiplexer berfungsi untuk memilih output dari beberapa input berdasarkan input pada kaki selectornya. Multiplexer memiliki rangkaian logika sebagai berikut :

Dalam tulisan kali ini akan dicontohkan kode program vhdl untuk membuat multiplexer dengan 4 input, 2 selector, dan 1 output. Multiplexer diatas memiliki tabel logika :

==========
= s1 = s2 = Y =
==========
= 0 = 0 = a =
= 0 = 1 = b =
= 1 = 0 = c =
= 1 = 1 = d =
===========

Pertama-tama definisikan entitas multiplexer dengan nama "kepletex" :

entity kepletex is -- mendefinisikan entity "kepletex"
port(
a,b,c,d,s1,s2: in bit; -- terdapat 4 port input, 2 selector, dan 1 output
y:out bit);
end kepletex;

Lalu definisikan arsitektur "mux_arch" dari entity "kepletex" :

architecture mux_arch of kepletex is
begin
proc: process is
begin
if (s1='0' and s2='0') then y <= a;
else if (s1='0' and s2='1') then y <= b;
else if (s1='1' and s2='0') then y <= c;
else if (s1='1' and s2='1') then y <= d;
end if;
end process proc;
end mux_arch;

Arsitektur berfungsi untuk menerangkan bagaimana entity "kepletex" bekerja. Namun kode diatas hanyalah berupa template, sehingga tidak bisa dijalankan untuk simulasi maupun di sintesis karena belum didefinisikan bit input pada masing-masing portnya. Untuk itu kita tambahkan entity "sinyal" dan arsitektur "sinyal_arch" yang berfungsi untuk memberikan input pada entity "kepletex".

entity sinyal is
port(
pa,pb,pc,pd,ps1,ps2:out bit);
end sinyal;

architecture sinyal_arch of sinyal is
begin
pros: process is
begin
pa <= '0';
pb <= '1';
pc <='1';
pd <= '0';
ps1 <= '1';
ps2 <= '0';
end process pros;
end sinyal_arch;

Semua kode vhdl diatas digabung menjadi satu menjadi :

library ieee;
use ieee.std_logic_1164.all;

entity kepletex is -- mendefinisikan entity "kepletex"
port(
a,b,c,d,s1,s2: in bit; -- terdapat 4 port input, 2 selector, dan 1 output
y:out bit);
end kepletex;

architecture mux_arch of kepletex is
begin
proc: process is
begin
if (s1='0' and s2='0') then y <= a;
else if (s1='0' and s2='1') then y <= b;
else if (s1='1' and s2='0') then y <= c;
else if (s1='1' and s2='1') then y <= d;
end if;
end process proc;
end mux_arch;

entity sinyal is
port(
pa,pb,pc,pd,ps1,ps2:out bit);
end sinyal;

architecture sinyal_arch of sinyal is
begin
pros: process is
begin
pa <= '0';
pb <= '1';
pc <='1';
pd <= '0';
ps1 <= '1';
ps2 <= '0';
end process pros;
end sinyal_arch;

-- kode dibawah ini merupakan kode yang berfungsi menjalankan --
-- entity yang telah didefinisikan diatas --

library work;
use work.all;

entity eksekusi is
end eksekusi;

architecture eksekusi_arch of eksekusi is
signal in1,in2,in3,in4,select1,select2,output: bit;
begin
w1: entity sinyal port map(in1,in2,in3,in4,select1,select2);
w2: entity kepletex port map(in1,in2,in3,in4,select1,select2,output);
end eksekusi_arch;

0 komentar:

Posting Komentar

 

W3C Validations

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi dapibus dolor sit amet metus suscipit iaculis. Quisque at nulla eu elit adipiscing tempor.

Usage Policies