【发布时间】:2019-09-02 14:35:48
【问题描述】:
我正在使用 ISE Project Navigator 软件对 Coolrunner2 (XC2C64A) CPLD 进行编程。目前,它只应充当 PIC32(输入 = i_pic)和 RPi CM3(输入 = i_cm)的引脚之间的逻辑或门(输出 = o_buzzer)。
o_buzzer <= i_pic or i_cm;
问题在于,当电源接通时,PIC32 的引脚被配置为输入,因此 CPLD 将其视为高阻抗 (Z) 并输出 1,直到引脚被配置。所以我试图让 CPLD 等到 i_pic 不再是Z。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity or_gate is
Port ( i_pic : in STD_LOGIC;
i_cm : in STD_LOGIC;
o_buzzer : out STD_LOGIC);
end or_gate;
architecture Behavioral of or_gate is
begin
process_or : process(i_pic,i_cm)
begin
while (i_pic = 'Z') loop
end loop;
o_buzzer <= i_pic or i_cm;
end process process_or;
end Behavioral;
这给了我一个警告:
第 46 行:循环体将迭代零次。
并且在实施时它不起作用。在引脚初始化之前,蜂鸣器仍会发出蜂鸣声。
使用 while 循环:
while (i_pic = 'Z') loop
o_buzzer <= '0';
end loop;
给我:
循环已迭代 64 次。使用“set -loop_iteration_limit XX”进行更多迭代。”
我怎样才能让进程等到i_pic 逻辑低而不是Z?
【问题讨论】:
标签: vhdl xilinx-ise