loop dan fifo

Upload: ahmad-arifudin

Post on 02-Jun-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/10/2019 Loop Dan Fifo

    1/19

    LOOPS

    STATEMENT

  • 8/10/2019 Loop Dan Fifo

    2/19

    Pengertian

    Loop statements digunakan untuk operasi yang

    berulang-ulang

    Terdiri dari statement : for loops atau while loops

    Statement forakan mengeksekusi sampai nomor

    tertentu secara berulang, (controlling number)

    Statement whileakan mengeksekusi perintah

    terus selama kondisi disyaratkan masih benar.

  • 8/10/2019 Loop Dan Fifo

    3/19

  • 8/10/2019 Loop Dan Fifo

    4/19

    While for statement

    reg_array : process (rst, clk)

    variable i : integer := 0;

    begin

    if rst = 1 thenwhile i < 7 loop

    fifo(i) 0);

    i := i + 1;

    end loop;

    ..

  • 8/10/2019 Loop Dan Fifo

    5/19

    Skip condition

    Misalnya jika reset diaktifkan semua array fifo bernilai 0 kecualififo (4) register.

    reg_array : process(rst , clk)

    begin

    ifrst = 1 then

    fori in7 downto 0 loop

    ifi = 4 then

    next;

    else

    fifo(i) 0);end if;

    endloop;

    .

  • 8/10/2019 Loop Dan Fifo

    6/19

    In while loop statementreg_array : process(rst, clk)

    variable i : integer;

    begin

    I := 0;

    ifrst = 1 then

    whilei < 8 loop

    if i = 4then

    next;

    else

    fifo(i) 0);

    i := i + 1;end if;

    end loop;

    ..

  • 8/10/2019 Loop Dan Fifo

    7/19

    Exit the loop statement

    reg_array: process(rst, clk)

    begin

    ifrst = 1 then

    loop1 : fori indeep downto0 loop

    if i > 20 then

    exit loop1;

    else

    fifo(i) 0);end if;

    endloop;

  • 8/10/2019 Loop Dan Fifo

    8/19

    Alternative statement

    Reg_array: process(rst,clk)

    begin

    ifrst = 1 then

    loop1: fori indeep downto0 loop

    exitloop1 wheni > 20;

    fifo(i) 0);

    end loop;

  • 8/10/2019 Loop Dan Fifo

    9/19

    Array bit

    ifwr = 1 then

    fori in7 downto0 loop

    ifen(i) = 1 then

    fifo(i)

  • 8/10/2019 Loop Dan Fifo

    10/19

    Mendisain FIFO

    -------------------------------------------------------------------------------

    --

    -- Title : fifo8x9

    -- Design : fifo

    -- Author :

    -- Company :

    --

    -------------------------------------------------------------------------------

    --

    -- File : d:\vhdl\my_design\fifo\fifo\src\fifo.vhd

    -- Generated : Sun Oct 19 17:39:03 2014-- From : interface description file

    -- By : Itf2Vhdl ver. 1.22

    --

  • 8/10/2019 Loop Dan Fifo

    11/19

    -------------------------------------------------------------------------------

    --

    -- Description :

    --

    -------------------------------------------------------------------------------

    --{{ Section below this comment is automatically maintained -- and may be overwritten

    --{entity {fifo8x9} architecture {archfifo8x9}}

    library IEEE;

    use IEEE.std_logic_arith.all;

    use IEEE.std_logic_unsigned.all; use IEEE.STD_LOGIC_1164.all;

    use IEEE.STD_LOGIC_ARITH.all;

    use IEEE.STD_LOGIC_UNSIGNED.all;

  • 8/10/2019 Loop Dan Fifo

    12/19

    entity fifo8x9 is

    port( clk : in STD_LOGIC;

    rst : in STD_LOGIC;

    rd : in STD_LOGIC;

    wr : in STD_LOGIC;

    rdinc : in STD_LOGIC; wrinc : in STD_LOGIC;

    rdptrclr : in STD_LOGIC;

    wrptrclr : in STD_LOGIC;

    data_in : in STD_LOGIC_VECTOR(8 downto 0);

    data_out : out STD_LOGIC_VECTOR(8 downto 0) );

    end fifo8x9;

    --}} End of automatically maintained section

  • 8/10/2019 Loop Dan Fifo

    13/19

    architecture archfifo8x9 of fifo8x9 is

    type fifo_array is array(7 downto 0) of

    std_logic_vector(8 downto 0);

    signal fifo : fifo_array;

    signal wrptr, rdptr: std_logic_vector(2 downto 0);

    signal en : std_logic_vector(7 downto 0);

    signal dmuxout : std_logic_vector(8 downto 0);

  • 8/10/2019 Loop Dan Fifo

    14/19

    begin

    ---- fifo register array :

    reg_array: process (rst, clk) begin

    if rst = '1' then

    for i in 7 downto 0 loop

    fifo(i) '0');

    end loop;

    elsif (clk'event and clk = '1') then

    if wr = '1' then for i in 7 downto 0 loop

    if en(i) = '1' then

    fifo(i)

  • 8/10/2019 Loop Dan Fifo

    15/19

    ------ read pointer

    read_count: process (rst, clk) begin

    if rst = '1' then

    rdptr '0');

    elsif (clk'event and clk = '1') then

    if rdptrclr = '1' then

    rdptr '0');

    elsif rdinc = '1' then

    rdptr

  • 8/10/2019 Loop Dan Fifo

    16/19

    ------ write pointer

    write_count: process (rst, clk) begin

    if rst = '1' then

    wrptr '0');

    elsif (clk'event and clk = '1') then

    if wrptrclr = '1' then

    wrptr '0');

    elsif wrinc = '1' then

    wrptr

  • 8/10/2019 Loop Dan Fifo

    17/19

    ------ 8 : 1 output data mux

    with rdptr select

    dmuxout

  • 8/10/2019 Loop Dan Fifo

    18/19

    ------- fifo register selector decoder

    with wrptr select

    en

  • 8/10/2019 Loop Dan Fifo

    19/19

    ------- three state control of output three_state: process (rd, dmuxout)

    begin

    if rd = '1' then

    data_out