如何在VHDL中将组件输出连接到GPIO引脚?

时间:2014-01-30 06:03:39

标签: vhdl

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

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;

1 个答案:

答案 0 :(得分:3)

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'状态驱动器以避免 警告