等待输入状态改变以启动进程
Wait for input state change to start process
我正在使用 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;
这给了我一个警告:
line 46: Loop body will iterate zero times.
并且在实施时不起作用。蜂鸣器仍会发出蜂鸣声,直到引脚被初始化。
使用 while 循环:
while (i_pic = 'Z') loop
o_buzzer <= '0';
end loop;
给我:
Loop has iterated 64 times. Use "set -loop_iteration_limit XX" to iterate more."
我怎样才能让进程等到 i_pic
逻辑低而不是 Z
了?
您无法在可综合代码中测试 'Z'
。您可以测试 '1'
(或 'H'
)或 '0'
(或 'L'
)。您无法测试 'Z'
。什么硬件可以做到这一点?某种模拟硬件,而不是某种数字硬件。这就是为什么您不能在可综合代码中测试 'Z'
。
我正在使用 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;
这给了我一个警告:
line 46: Loop body will iterate zero times.
并且在实施时不起作用。蜂鸣器仍会发出蜂鸣声,直到引脚被初始化。
使用 while 循环:
while (i_pic = 'Z') loop
o_buzzer <= '0';
end loop;
给我:
Loop has iterated 64 times. Use "set -loop_iteration_limit XX" to iterate more."
我怎样才能让进程等到 i_pic
逻辑低而不是 Z
了?
您无法在可综合代码中测试 'Z'
。您可以测试 '1'
(或 'H'
)或 '0'
(或 'L'
)。您无法测试 'Z'
。什么硬件可以做到这一点?某种模拟硬件,而不是某种数字硬件。这就是为什么您不能在可综合代码中测试 'Z'
。