fpganedir.com'da ara

fpganedir mail

GENERATE

Birbirine benzer component’leri gruplayarak tek bir component altında tanımlamak ve bunları tekrarlamak “generate”  kullanımıyla mümkün olur. Böylece VHDL tasarımları daha basitleştirilmiş olur.

1) FOR GENERATE

Etiket : for parameter in range generate
---declarasyonlar
begin
 --Eş zamanlı ifadeler(concurrent_statements)
end generate Etiket ;

2) IF GENERATE

Etiket : if condition generate
   ---declarations
begin
   -- concurrent_statements
end generate Etiket ;

NOT:

ÖRNEK 1 (OR GATE)

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity or_gate is
    Port ( in1     : in  STD_LOGIC_VECTOR (7 downto 0);
              in2      : in  STD_LOGIC_VECTOR (7 downto 0);
             output :out STD_LOGIC_VECTOR (7 downto 0));
end or_gate;

architecture Behavioral of or_gate is
begin
  U1:for i in in1'range generate
              output(i)<=in1(i) or in2(i);
        end generate U1;
end Behavioral;

Programın ModelSim'de simülasyonunu yaptıktan sonra aşağıdaki tabloyu elde ederiz.

ÖRNEK 2 (BINARY COUNTER)

--FLIP-FLOP

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity D_FF is
    Port ( CLK : in  STD_LOGIC;
               D      : in  STD_LOGIC;
               Q      : out  STD_LOGIC:='1';
               Q_n : out  STD_LOGIC:='0');
end D_FF;

architecture Behavioral of D_FF is
begin
    process(CLK)
    begin
        if CLK='1' and CLK'event then
              Q<=D;
              Q_n<= not D;
         end if;
     end process;
end Behavioral;

--Binary Counter

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Binary_counter is
     generic(kapasite:integer:=5);
     Port  ( CLK           : in  STD_LOGIC;
                 OUTPUT : out  STD_LOGIC_VECTOR ((kapasite-1) downto 0));
end Binary_counter;

architecture Behavioral of Binary_counter is

COMPONENT D_FF
      PORT(
                   CLK : IN std_logic;
                    D     : IN std_logic;         
                    Q     : OUT std_logic;
                    Q_n : OUT std_logic  );
    END COMPONENT;

signal X:STD_LOGIC_VECTOR (kapasite downto 0);
begin
    X(0)<=CLK;
    U1:for I in 0 to kapasite-1 generate
     L1: D_FF PORT MAP(
                                            CLK => X(I),
                                             D => X(I+1),
                                             Q => OUTPUT(I),
                                             Q_n => X(I+1) );
         end generate;
end Behavioral;

Programın ModelSim'de simülasyonunu yaptıktan sonra aşağıdaki tabloyu elde ederiz.

 

 

Anasayfa | Fpga | VHDL | VHDL Sözlüğü | Embedded Sistem | Android | Sayısal Tasarım | Simulasyon | PCB | Örnekler | Forum | İletişim
Copyright © 2010-2013 FPGAnedir. All Rights Reserved.