我正在尝试使用 VHDL 对可能在预设时间范围内进入 FPGA 的信号实施巧合检查,我担心我可能正在尝试发明一些已经做过很多次的非常基本的东西......
所需的模块功能:
记住其中一个输入上有一个信号,在预设时间段后,将这些记住的信号视为同步信号,并将它们进一步发送到电路中。
示例:侦听 2 个输入端口 (A,B),以防在输入上检测到至少一个 10 ns 长的信号,将其存储,并在 500ns 周期内进一步发送存储的信号并复位。
到目前为止,我想出了这个:
存储输入:
memory_A <= A when ( memory_A = '0' );
memory_B <= B when ( memory_B = '0' );
现在我需要进一步发送它们并重置。我有一个模块,它以 500ns 的间隔为我提供 10ns 长脉冲,所以我将使用它的输出来为我的进程计时:
process(pulse)
begin
if(pulse'event and pulse='1') then
-- generate output signals
modified_output_A <= memory_A
modified_output_B <= memory_B
-- reset the storage
memory_A <= '0'
memory_B <= '0'
end if;
end process;
我将把它包装成一个模块
输入:A、B 和脉冲
输出:modified_A、modified_B。
现在我得到了同步的 A、B 信号,我可以应用逻辑(检查巧合等)。
我的问题是:
这行得通吗?
这是一个好方法吗,有什么我可能看不到的缺点或问题吗?
如果这不是做到这一点的好方法,应该如何做到这一点?
感谢您提前提供所有反馈/帮助。