如何将组件输出连接到VHDL中的GPIO PIN



我了解如何在Quartus II中生成PLL组件并在框图中使用它,但是如何将ClkOut连接到下面的VHDL代码中的GPIO PIN?

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
ENTITY pll_test3 IS
PORT(
CLOCK_24: IN STD_LOGIC_VECTOR(1 downto 0);
RST : IN STD_LOGIC;
CLKOUT : OUT STD_LOGIC;
GPIO_0 :inout std_logic_vector(35 downto 0)
);
END pll_test3;
ARCHITECTURE MAIN OF pll_test3 IS
component PLL3 is
    port (
        clk_in_clk  : in  std_logic := 'X'; -- clk
        rst_reset   : in  std_logic := 'X'; -- reset
        clk_out_clk : out std_logic         -- clk
    );
end component PLL3;
BEGIN
C1: PLL3 PORT MAP(CLOCK_24(0),RST,CLKOUT);
---this generates error because CLKOUT is an output
GPIO_0(0) <= CLKOUT;
END MAIN;

CLKOUT端口是模式out,但用于读取,因为在右侧在表达式GPIO_0(0) <= CLKOUT和VHDL-2002(及以前)中非法读取输出端口。

用PLL时钟输出中的内部信号修复此问题,然后使用此信号驱动CLKOUTGPIO_0(0),并使用:

之类的代码
  signal clkout_sig : std_logic;
begin
  C1: PLL3 PORT MAP(CLOCK_24(0),RST,clkout_sig);
  CLKOUT <= clkout_sig;
  GPIO_0(0) <= clkout_sig;

请注意,GPIO_0(0)的永久驱动器可能会发出Quartus的警告ii,由于GPIO_0是模式inout,因此请添加'Z'状态驱动器以避免警告

最新更新