【问题标题】:VHDL - direct instantiation for PLLVHDL - PLL 的直接实例化
【发布时间】:2016-02-06 14:33:13
【问题描述】:

我正在尝试在 DE0 板上制作 VGA 控制器,并制作了以下代码:

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 是 640 x 480 显示器的同步计数,第二个 (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) ?

【问题讨论】:

  • 您是否使用 Quartus 的 MegaWizard 生成了 PLL?

标签: vhdl intel-fpga quartus


【解决方案1】:

使用 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 (

【讨论】:

    猜你喜欢
    • 2021-01-19
    • 2016-07-13
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    相关资源
    最近更新 更多