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;
Langganan:
Posting Komentar (Atom)
.png)













0 komentar:
Posting Komentar