VHDL - PLL 的直接实例化
VHDL - direct instantiation for PLL
我正在尝试在 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;
编译模型时出现以下错误消息:
Error (12006): Node instance "altpll_0" instantiates undefined entity "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 Prime中用MegaWizard生成PLL,然后在设计中包含生成的.qip文件。我假设 MegaWizard 用于在您的示例中生成 PLL_altpll_0
。
然后将生成的PLL实体编译成工作(或另一个库,然后显示在.qip文件中),然后您可以使用实体实例化来实例化PLL,从而省去冗余组件声明在.qip文件中使用生成的 PLL 的体系结构。代码类似,假设 workPLL_altpll_0
被编译为 work
库:
altpll_0 : entity work.PLL_altpll_0
port map (
我正在尝试在 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;
编译模型时出现以下错误消息:
Error (12006): Node instance "altpll_0" instantiates undefined entity "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 Prime中用MegaWizard生成PLL,然后在设计中包含生成的.qip文件。我假设 MegaWizard 用于在您的示例中生成 PLL_altpll_0
。
然后将生成的PLL实体编译成工作(或另一个库,然后显示在.qip文件中),然后您可以使用实体实例化来实例化PLL,从而省去冗余组件声明在.qip文件中使用生成的 PLL 的体系结构。代码类似,假设 workPLL_altpll_0
被编译为 work
库:
altpll_0 : entity work.PLL_altpll_0
port map (