2016-02-06 2 views
1

Je suis en train de faire un contrôleur VGA sur une carte DE0 et ont fait le code suivant:VHDL - instanciation directe pour PLL

LIBRARY IEEE; 
USE IEEE.std_logic_1164.ALL; 
USE IEEE.numeric_std.ALL; 

ENTITY VGA is 
PORT (clk      : IN std_logic; 
     vga_hs, vga_vs   : OUT std_logic; 
     vga_r, vga_g, vga_b : OUT std_logic_vector(3 DOWNTO 0)); 
END ENTITY VGA; 

ARCHITECTURE A1 OF VGA IS 
SIGNAL rst, clk25 : std_logic; 
BEGIN 
SYNC1 : ENTITY work.sync(A1) 
      PORT MAP (clk25, vga_hs, vga_vs, vga_r, vga_g, vga_b); 
CLK_25 : ENTITY work.pll(rtl) 
      PORT MAP (clk, rst, clk25); 

END ARCHITECTURE A1; 

Quand je compile le modèle que je reçois le message d'erreur suivant:

erreur (12006): un noeud d'instance "altpll_0" instancie entité non définie "PLL_altpll_0"

J'instanciation deux composants est le premier SYNC1 les comptes de synchronisation fo r un affichage de 640 x 480 la seconde (CLK_25) est une horloge PLL générée par quartus II. Avec le modèle suivant:

library IEEE; 
use IEEE.std_logic_1164.all; 
use IEEE.numeric_std.all; 

entity PLL is 
port (
    clk_clk : in std_logic := '0'; -- clk.clk 
    rst_reset : in std_logic := '0'; -- rst.reset 
    clk_25_clk : out std_logic   -- clk_25.clk 
); 
end entity PLL; 

architecture rtl of PLL is 
component PLL_altpll_0 is 
    port (
     clk  : in std_logic      := 'X';    -- clk 
     reset  : in std_logic      := 'X';    -- reset 
     read  : in std_logic      := 'X';    -- read 
     write  : in std_logic      := 'X';    -- write 
     address : in std_logic_vector(1 downto 0) := (others => 'X'); -- address 
     readdata : out std_logic_vector(31 downto 0);     -- readdata 
     writedata : in std_logic_vector(31 downto 0) := (others => 'X'); -- writedata 
     c0  : out std_logic;          -- clk 
     areset : in std_logic      := 'X';    -- export 
     locked : out std_logic;          -- export 
     phasedone : out std_logic           -- export 
    ); 
end component PLL_altpll_0; 

begin 

altpll_0 : component PLL_altpll_0 
    port map (
     clk  => clk_clk, --  inclk_interface.clk 
     reset  => rst_reset, -- inclk_interface_reset.reset 
     read  => open,  --    pll_slave.read 
     write  => open,  --      .write 
     address => open,  --      .address 
     readdata => open,  --      .readdata 
     writedata => open,  --      .writedata 
     c0  => clk_25_clk, --     c0.clk 
     areset => open,  --  areset_conduit.export 
     locked => open,  --  locked_conduit.export 
     phasedone => open  --  phasedone_conduit.export 
    ); 

end architecture rtl; -- of PLL 

Comment est-ce que je peux instancier directement pll (rtl) à partir de la bibliothèque de travail?

+1

Avez-vous généré la PLL avec le MegaWizard de Quartus? –

Répondre

2

Générez le PLL avec le MegaWizard dans Quartus Prime, puis incluez le fichier .qip généré dans la conception. Je suppose que le MegaWizard est utilisé pour générer PLL_altpll_0 dans votre exemple. L'entité PLL générée est ensuite compilée dans le travail (ou une autre bibliothèque qui est ensuite affichée dans le fichier .qip), et vous pouvez ensuite instancier la PLL avec l'instanciation d'entité, et ainsi omettre la déclaration de composant redondant dans l'architecture qui utilise la PLL générée. Code comme, en supposant workPLL_altpll_0 est compilé à work bibliothèque:

altpll_0 : entity work.PLL_altpll_0 
    port map (
+1

Vous avez raté un point '.' après' work'. :) –