我创建了一个简单的脚本,它扫描了我在顶层(N
)定义的一些引脚。如果引脚已经死了,它们通常会保持高或低,或者做一些意想不到的事情。此时,每个引脚发送一个脉冲,延迟一个时钟周期。
这些脉冲被发送到名为s_pulse
的数组。这个数组的大小是在合成时动态创建的,如下所示:
<snip>
generic (N : natural);
<snip>
PulseGen : for I in 0 to N-1 generate
begin
FMC_IBUF : IBUFDS
generic map (
DIFF_TERM => TRUE,
IOSTANDARD => "DEFAULT")
port map (
O => s_pulse (I) ,
I => pulse_p (I) ,
IB => pulse_n (I)
);
end generate PulseGen;
然后我希望只要一个名为std_logic
的{{1}}引脚有一个信号就发出信号,这样可行,但由于上述明显的原因,它无法动态运行,但我可以'找出一种方法:
pulse
关于如何为数组的每个成员快速生成大if rising_edge(clk) then
pulse <= s_pulse(0) or s_pulse(1) or s_pulse(2) or s_pulse(3)....
end if;
函数的任何想法,或者提出一些我不知道的函数来使这更短,更重要的是,动态?
答案 0 :(得分:3)
对于疲惫的旅行者,我找到了一个解决方案:
library ieee;
use ieee.std_logic_misc.all;
<snip>
if rising_edge(clk) then
pulse <= or_reduce(s_fmc);
end if;