2016-02-06 87 views
1
直接实例

我努力让自己在一个DE0开发板上的VGA控制器,并取得了以下代码:VHDL - 为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; 

当我编译模型我收到以下错误信息:

错误(12006):节点实例“altpll_0”实例化未定义的实体“PLL_altpll_0”

我实例化两个分量的第一SYNC1为fo同步计数第二个(CLK_25)是由Quartus II产生的PLL时钟。使用以下型号:

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 

如何从工作库直接实例化pll(rtl)?

+1

你有没有产生PLL采用Quartus的的MegaWizard? –

回答

2

使用Quartus Prime中的MegaWizard生成PLL,然后在设计中包含生成的.qip文件。我假设MegaWizard用于在你的例子中生成PLL_altpll_0

然后将生成的PLL实体编译成工作文件(或另一个库,然后显示在.qip文件中),然后您可以使用实体实例化实例化PLL,从而省略体系结构中的冗余组件声明使用生成的PLL。这样的代码,假设workPLL_altpll_0被编译为work库:

altpll_0 : entity work.PLL_altpll_0 
    port map (
+1

你在工作之后错过了一个点'.'。 :) –