Salah Dimana Ya???

Kemarin iseng memulai belajar vhdl lagi…
Ada contoh program vhdl yang membuat rangkaian sederhana 2 to 1 multiplexer menggunakan pendekatan behavioral level design, kodenya kira-kira begini:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY multiplexer IS PORT (
d0, d1, s: IN STD_LOGIC;
y: OUT STD_LOGIC);
END multiplexer;
ARCHITECTURE Behavioral OF multiplexer IS
BEGIN
PROCESS(s, d0, d1)
BEGIN
y <= d0 WHEN s = ‘0′ ELSE d1;
END PROCESS;
END Behavioral;

Tapi kok pas dikompilasi error ya??? yang bagian WHEN-nya, udah saya pelototi kok kayaknya ga ada yang salah, akhirnya saya modifikasi memakai IF ELSE menjadi begini:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

ENTITY multiplexer is PORT(
d0,d1,s : IN STD_LOGIC;
y : OUT STD_LOGIC);
END multiplexer;

ARCHITECTURE Behavioral OF multiplexer IS
–blok sekuensial-> ciri dari behavioural level
BEGIN
PROCESS(s, d0, d1)
BEGIN
IF s=’0′ THEN
y <= d0;
ELSE
y <= d1;
END IF;
–y<=d0 WHEN s=’0′ ELSE d1;
END PROCESS;
END Behavioral;

baru bisa bener???? Mastar2x vhdl ada yang tahu kah salahnya apa?? atau memang compilernya yang tidak mampu?? saya menggunakan software altera quartus 6.0

4 Responses to “Salah Dimana Ya???”

  1. narpen Says:

    salahnya disini chu… hmm…
    tar aja deh kita omongin di lab…


    halah :p
    pdhl sbnrnya karena gw jg ga ngerti, hahaha..

  2. Ardianto Says:

    perasaan di sini:

    BEGIN
    y <= d0 WHEN s = ‘0′ ELSE d1;
    END PROCESS;

    kalau nggak salah, kalau pakai WHEN, harusnya

    y <= d0 WHEN s = ‘0′
    d1 WHEN others;

    Seingat saya sih…
    *baru belajar VHDL*

  3. Ardianto Says:

    kurang koma di belakang baris pertama…

    harusnya

    y <= d0 WHEN s = ‘0′,
    d1 WHEN others;

    *pake WHEN biasanya menghindari K-map yang gede-gede, jadi masukin tabel kebenaran aja…* :-P

  4. dani_timberlake Says:

    wah!!

Leave a Reply