触发器在两个信号的边沿触发
我需要一个对两个不同信号的边缘做出反应的触发器。 像这样的事情:
if(rising_edge(sig1)) then
bit <= '0';
elsif(rising_edge(sig2)) then
bit <= '1';
end if;
这样的触发器是否存在或者我可以使用其他一些技术吗? 我需要它可以在 Xilinx Virtex-5 FPGA 上综合。 谢谢
I need a flip flop that reacts on the edges of two different signals. Something like this:
if(rising_edge(sig1)) then
bit <= '0';
elsif(rising_edge(sig2)) then
bit <= '1';
end if;
Does such a flip flop exist or is there some other technique i could use?
I need this to be synthesizable on a Xilinx Virtex-5 FPGA.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在这种情况下,我通常要做的是保留两个控制信号的延迟版本,并在每个信号的上升沿生成一个时钟宽度的脉冲。 然后,我将使用这些脉冲来驱动微型 FSM 来生成“位”信号。 下面是一些 VHDL。
我对 verilog 更熟悉,所以仔细检查这个 VHDL(任何评论表示赞赏)。
波形 http://img33.imageshack.us/img33/893/stackoverflowvhdlq.png
此代码假设时钟足够快以捕获所有控制信号脉冲。 如果控制信号与时钟不同步,我会保留延迟控制信号的进一步延迟版本(例如
sig_d2
),然后从制作标志sig_d1 和 sig_d2 。
What I'd usually do in this case is to keep a delayed version of both the control signals and generate a pulse one clock wide at the rising edge of each signal. I'd then use these pulses to drive a tiny FSM to generate the 'bit' signal. Here's some VHDL below.
I'm a lot more comfortable in verilog, so double check this VHDL (any comments appreciated).
waveforms http://img33.imageshack.us/img33/893/stackoverflowvhdlq.png
This code assumes that the clock is fast enough to capture all the control signal pulses. If the control signals are not synchronous with the clock, I'd keep a further delayed version of the delayed control signal (eg
sig_d2
) then make the flags fromsig_d1
andsig_d2
.