logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

LOC'owanie Global Line i D-Flip Flop w Spartan 6 - jak to zrobić?

Frantic89 12 Mar 2011 21:58 1419 2
REKLAMA
  • #1 9269249
    Frantic89
    Poziom 11  
    Posty: 20
    Witam,

    Mam 2 problemy dotyczące lockowania w Spartanie 6! W jaki sposób można LOC'ować Global Line (Long line) aby puścić nimi sygnały nie zegarowe oraz jak dobrać się do D Flip Flop w SliceM tzn. wyciągnąć sygnał z CARRY4 przejść przez przerzutnik D i wyjść przez AQ:

    LOC'owanie Global Line i D-Flip Flop w Spartan 6 - jak to zrobić?

    Chodzi mi głównie o prymitywy, bo szukam i szukam i nic nie mogę wymyślić.

    Z góry WIELKIE DZIĘKI!!
  • REKLAMA
  • #2 9281163
    Frantic89
    Poziom 11  
    Posty: 20
    Sam doszedłem, daje może komuś się przyda:

    LOKOWANIE D FLIP FLOP W SLICE
    [b]VHDL


    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    use IEEE.NUMERIC_STD.ALL;
    Library txt_util;
    use txt_util.txt_util.ALL;
    Library UNISIM;
    use UNISIM.vcomponents.all;
    
    -------------------------------------------------
    
    entity DelayLoopDFlipFlop is
     generic(n : positive := 5; -- ILOSC + 1 POLACZONYCH SLICEOW Z CARRY 4 
    			x : positive := 2); -- NUMER KOLUMNY SLICEOW
      port
      (
        clock  : in  std_logic;
        DelayIN : in std_logic;
    	 DelayOUT : out std_logic;
    	 DFFout	 : out STD_LOGIC_VECTOR((5*n)-2 downto 0)
      );
    end DelayLoopDFlipFlop ;
     
    
    
    architecture Bechavioral of DelayLoopDFlipFlop  is
    
    -- Funkcja dająca String z nazwą Slice'a
    function SLICE_SELECT(
    		x : integer;
    		y : integer) return String is
    	begin
    	return("SLICE_X" & str(x) & "Y" & str(y)); 
    end function SLICE_SELECT; 
    
    
    --- component prymitywu CARRY4
     component CARRY4
       generic ( LOC : String);
       port (
          CO     : out std_logic_vector(3 downto 0); 
          O      : out std_logic_vector(3 downto 0); 
          CI     : in  std_logic; 
          CYINIT : in  std_logic; 
          DI     : in  std_logic_vector(3 downto 0); 
          S      : in  std_logic_vector(3 downto 0)
    		); 
    end component;
    
    
    --------------------------------------------
    ----- SYGNALY POMOCNICZE -------------------
    --------------------------------------------
    signal CO  : STD_LOGIC_VECTOR(4+(n*4) DOWNTO 0); -- syg. wymagany dla sygnalow CO(2 downto 0) dla nas zbedny
    begin
    
    -------------------------------------------------------
    ------------------ D Flip Flop w Slice ----------------
    -------------------------------------------------------
    
     lt_ffd_gen:for i in 0 to (n*5) - 2 generate 
        FDRSE_inst: FDRSE
        generic map
        (
          INIT => '0'
        )
        port map 
        (
          C  => clock,
          CE => '1',
          R  => '1',
          S  => '0',
          D  => CO(i+1),
          Q  => DFFout(i)
        );
    end generate;
    
    
    -------------------------------------------------------------
    ----------------------  CARRY4 ------------------------------
    -------------------------------------------------------------
    
    CY4_Loop : for i in 0 to n generate 
        CY : CARRY4 
          generic map ( 
            LOC => SLICE_SELECT(x, (i+2)) 
    						) 
          port map ( 
            CO(2 downto 0) => CO(3+(4*i) downto 1+(4*i)), 
            CO(3)          => CO(4+(4*i)), 
            CI             => CO(4*i), 
            CYINIT         => '0', 
            DI             => "1111", 
            S              => "1111"); 
    
    end generate CY4_Loop;
    
    --- Przypisanie wejscia i wyjscia petli
    CO(0) <= DelayIN; --WEJSCIE W PETLE
    DelayOUT <= CO(4+(n*4));	-- WYJSCIE Z PETLI
    
    
    end Bechavioral;



    UCF

    INST "lt_ffd_gen[0].FDRSE_inst"  LOC=SLICE_X2Y2 | BEL = AFF;  
    INST "lt_ffd_gen[1].FDRSE_inst"  LOC=SLICE_X2Y2 | BEL = BFF; 
    INST "lt_ffd_gen[2].FDRSE_inst"  LOC=SLICE_X2Y2 | BEL = CFF;
    INST "lt_ffd_gen[3].FDRSE_inst"  LOC=SLICE_X2Y2 | BEL = DFF;
    INST "lt_ffd_gen[4].FDRSE_inst"  LOC=SLICE_X2Y3 | BEL = AFF;
    INST "lt_ffd_gen[5].FDRSE_inst"  LOC=SLICE_X2Y3 | BEL = BFF;
    INST "lt_ffd_gen[6].FDRSE_inst"  LOC=SLICE_X2Y3 | BEL = CFF;
    INST "lt_ffd_gen[7].FDRSE_inst"  LOC=SLICE_X2Y3 | BEL = DFF;
    INST "lt_ffd_gen[8].FDRSE_inst"  LOC=SLICE_X2Y4 | BEL = AFF;
    INST "lt_ffd_gen[9].FDRSE_inst"  LOC=SLICE_X2Y4 | BEL = BFF;
    INST "lt_ffd_gen[10].FDRSE_inst" LOC=SLICE_X2Y4 | BEL = CFF;
    INST "lt_ffd_gen[11].FDRSE_inst" LOC=SLICE_X2Y4 | BEL = DFF;
    INST "lt_ffd_gen[12].FDRSE_inst" LOC=SLICE_X2Y5 | BEL = AFF;
    INST "lt_ffd_gen[13].FDRSE_inst" LOC=SLICE_X2Y5 | BEL = BFF;
    INST "lt_ffd_gen[14].FDRSE_inst" LOC=SLICE_X2Y5 | BEL = CFF;
    INST "lt_ffd_gen[15].FDRSE_inst" LOC=SLICE_X2Y5 | BEL = DFF;
    INST "lt_ffd_gen[16].FDRSE_inst" LOC=SLICE_X2Y6 | BEL = AFF;
    INST "lt_ffd_gen[17].FDRSE_inst" LOC=SLICE_X2Y6 | BEL = BFF;
    INST "lt_ffd_gen[18].FDRSE_inst" LOC=SLICE_X2Y6 | BEL = CFF;
    INST "lt_ffd_gen[19].FDRSE_inst" LOC=SLICE_X2Y6 | BEL = DFF;
    INST "lt_ffd_gen[20].FDRSE_inst" LOC=SLICE_X2Y7 | BEL = AFF;
    INST "lt_ffd_gen[21].FDRSE_inst" LOC=SLICE_X2Y7 | BEL = BFF;
    INST "lt_ffd_gen[22].FDRSE_inst" LOC=SLICE_X2Y7 | BEL = CFF;
    INST "lt_ffd_gen[23].FDRSE_inst" LOC=SLICE_X2Y7 | BEL = DFF;
  • #3 9290182
    Frantic89
    Poziom 11  
    Posty: 20
    Co do Global Line to można się do nich dostać za pomocą prymitywu:

    BUFG_inst : BUFG
    port map (
    O => O, -- 1-bit output: Clock buffer output
    I => I -- 1-bit input: Clock buffer input
    );
REKLAMA