VHDL:信号延迟,不使用时钟

时间:2017-08-14 11:30:02

标签: vhdl fpga i2c

我正在用VHDL开发一个用于Cyclone II FPGA的I2C从驱动器,不使用任何外部时钟,而是使用SCL信号。当主器件(PIC24单片机)发送一个以'1'结尾的字节时,该电路在SCL的下降沿产生ACK条件,并且主器件将该状态解释为'I2C启动条件'。我相信我必须延迟确认一些纳秒才能避免这种错误的情况。我使用了'after'和'wait for'声明,但它们似乎没有用。我也在考虑使用一系列逆变器,但我不知道如何使用它。

任何人都可以帮我创建逆变器链,以正确的方式使用VHDL语句或以某种方式弄清楚这个问题吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果没有任何时钟,你就无法做出那样的设计(来自I2C的时钟不适用于此)。像'after'和'wait for'这样的命令仅用于模拟,并且不可合成。

我无法直接回答您的问题,因为这取决于您的具体设计。你可能需要实现一些计数器。

答案 1 :(得分:0)

根据FPGA的温度和使用年限等因素,FPGA之间的延迟会因FPGA而异。

逆变器链简单地是多次反转的信号 - 每个门的传播延迟决定了总信号延迟。每次运行地点和路线时,延迟很可能会有所不同。

问题是,大多数FPGA工程师都想要精确和可重复,但你提出的方法有些混乱和不可靠。