gpt4 book ai didi

VHDL - DE0 - QUARTUS II PLL 在 modsim 中不显示输出

转载 作者:行者123 更新时间:2023-12-04 18:01:05 27 4
gpt4 key购买 nike

您好,我正在尝试使用锁相环来为 VGA Controller 生成时钟。我运气不好,决定制作自己的时钟,然后工作正常。我让 VGA Controller 工作。回到 PLL,尽管我仍然无法选择 PLL 来给我输出。我做了一个小测试模型来模拟它。

LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;

ENTITY PLL4 IS
PORT (
clk : IN std_logic;
a : IN std_logic;
rst : IN std_logic:='0';
x : OUT std_logic
);
END ENTITY PLL4;

ARCHITECTURE A1 OF PLL4 IS
COMPONENT PLL_4 IS
PORT(
clk_in_clk : in std_logic; -- clk
rst_reset : in std_logic; -- reset
clk_out_clk : out std_logic -- clk
);
END COMPONENT PLL_4;
SIGNAL clk25 : std_logic;
BEGIN
CLK_25 : PLL_4 PORT MAP (clk,rst,clk25);
x <= a and clk25;

END ARCHITECTURE A1;

当我用 mod sim 模拟这个时,我得到以下结果

enter image description here

我从未见过 PLL 时钟输出。谁能给我一些建议。

--更新--添加来自 CLK_25 的信号后:PLL 我现在在 Modsim 上得到以下信息。第一个很好地连接到实例化以及一个 clk 到 clk_in_clk,但是 clk_out_clk 的值一直在变化。见下文:

enter image description here

这让我觉得我遇到的问题是使用 Qsys 创建的 PLL 模型。Qsys 生成的 .vhd 中包含的模型如下:

-- PLL_4.vhd

-- Generated using ACDS version 13.0sp1 232 at 2016.02.09.16:46:16

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

entity PLL_4 is
port (
clk_in_clk : in std_logic := '0'; -- clk_in.clk
rst_reset : in std_logic := '0'; -- rst.reset
clk_out_clk : out std_logic -- clk_out.clk
);
end entity PLL_4;

architecture rtl of PLL_4 is
component PLL_4_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_4_altpll_0;

begin

altpll_0 : component PLL_4_altpll_0
port map (
clk => clk_in_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_out_clk, -- c0.clk
areset => open, -- areset_conduit.export
locked => open, -- locked_conduit.export
phasedone => open -- phasedone_conduit.export
);

end architecture rtl; -- of PLL_4

最佳答案

我无法直接模拟你的VHDL代码,因为你没有贴出PLL_4_altpll_0的代码。因此,我使用 Quartus-II 的 MegaWizard 插件管理器创建了一个合适的 PLL。无论如何,如果我直接在 ModelSim 中模拟 PLL4 实体并在信号 clk1 上应用时钟来发出信号 a,我得到了和你一样的输出:clk25 is undefined.

但如果我使用单独的测试台,它会按预期工作。您必须在 Quartus II 中设置测试台,菜单 Assignements -> Settings -> Simulation -> Compile test bench -> Test Benches -> New。这是我的测试台代码。应用重置是可选的,因此我将其保留为 0

library ieee;
use ieee.std_logic_1164.all;

entity PLL4_tb is
end entity PLL4_tb;

architecture sim of PLL4_tb is

-- component ports
signal clk : std_logic := '1';
signal a : std_logic;
signal rst : std_logic;
signal x : std_logic;

begin -- architecture sim

-- component instantiation
DUT: entity work.PLL4
port map (
clk => clk,
a => a,
rst => rst,
x => x);

-- clock generation
clk <= not clk after 10 ns;

-- waveform generation
WaveGen_Proc: process
begin
rst <= '0'; -- no reset required
a <= '1';
wait;
end process WaveGen_Proc;
end architecture sim;

这是模拟输出:

simulation output

关于VHDL - DE0 - QUARTUS II PLL 在 modsim 中不显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35297697/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com