Vhdl 跨设备内的时钟域

Vhdl 跨设备内的时钟域,vhdl,fft,fpga,ifft,Vhdl,Fft,Fpga,Ifft,我正在用VHDL设计一个导频插入模块,该模块将在作为OFDM系统一部分的FPGA上实现。对于来自调制组件的每48个字,导频插入将添加导频音调和空值,以填充64信道IFFT的剩余信道。我试图实现这个系统的流操作,因此它将不断产生64个样本,以固定的延迟串行输入到IFFT 我的方法是使用两个端口RAM,一个端口用于接收调制字,另一个端口用于向IFFT写入。每个端口都在一个独立的时钟上运行,在设备外部,我有一个4/3时钟分频器,因此输出每48个时钟接收64个时钟到输入 我的问题是这是否是一种有效的设计

我正在用VHDL设计一个导频插入模块,该模块将在作为OFDM系统一部分的FPGA上实现。对于来自调制组件的每48个字,导频插入将添加导频音调和空值,以填充64信道IFFT的剩余信道。我试图实现这个系统的流操作,因此它将不断产生64个样本,以固定的延迟串行输入到IFFT

我的方法是使用两个端口RAM,一个端口用于接收调制字,另一个端口用于向IFFT写入。每个端口都在一个独立的时钟上运行,在设备外部,我有一个4/3时钟分频器,因此输出每48个时钟接收64个时钟到输入

我的问题是这是否是一种有效的设计策略,以及我应该注意哪些类型的陷阱。此外,如果有人对我如何实现这一目标提出其他建议,我将不胜感激

谢谢,
技术官僚的

那么驱动48逻辑的时钟是从驱动64逻辑的时钟派生出来的?如果是这种情况,那么你知道你的时钟有一个保证关系,你不需要担心时钟漂移。这使你的工作更容易

你需要一只公羊有什么原因吗?您是否需要能够按顺序访问RAM的值?如果可以的话,我建议使用FIFO,这会让你的工作更轻松。您不需要跟踪读/写地址

只需确保隔离两个时钟域。我建议将所有写入RAM或FIFO的逻辑放在一个文件中,将所有读取RAM或FIFO的逻辑放在另一个文件中。RAM/FIFO可以存在于实例化两个较低级别组件的顶层


这将帮助您确保没有时钟域在陌生的地方被跨越。RAM/FIFO应该是两个域之间的唯一接口。

谢谢!我使用双端口RAM,这样我就可以独立地读写(在不同的内存位置上),而不用担心同时执行这两个进程时会发生什么。FIFO可能需要一个方案,在上升沿读取,在下降沿写入,或类似的方式来防止访问冲突。@technocratic不是真的!您可以独立于FIFO上的读取端口来处理写入端口。只要你遵守两条规则:1。永远不要写入完整的FIFO 2。永远不要从空的FIFO中读取数据。只需注意,编写自己的异步FIFO是一个巨大的挑战,需要正确地进行验证。