FPGA中数据传输的设计模式



这是关于FPGA设计的一般问题,而不是有关代码的特定问题。我研究了计算机科学,但最近一直在尝试了解有关硬件的更多信息。我一直在使用Xilinx FPGA来教自己VHDL和一些有关硬件设计的基础知识,但是我的知识上有很多差距,这导致我在项目中撞到了一些很大的墙壁。这是最近的一个。

我有一个设计,有几个"工人"。设计功能的一部分取决于这些工人执行计算重量任务。为了节省FPGA资源,我让工人共享计算电路,并有另一个模块安排工人之间对该电路的访问。逻辑本身可以正常工作,并且我已经在模拟器中对其进行了测试,但是当我尝试在FPGA本身上实现设计时,它永远不会满足时间要求。看一下Vivado的图表,向我表明,placer将所有共享的计算电路都放在FPGA的一侧以及另一侧的所有工人。此外,从工人到计算电路的数据符合时间安排的路线,但是将结果送回工人的路线几乎都是失败的。

那么,我的问题是通常在硬件设计中使用哪些解决方案来解决此类数据传输问题?我知道我可以降低时钟速率,以使信号更多的时间移动,但是我犹豫要这样做,因为这会降低整个设计的整体。另一方面,我可以在共享的计算电路和工人之间放置一些缓冲区(像移动寄存器一样(,而成本增加了单个工人的计算时间。还有哪些其他技术或设计模式可以在FPGA中的点之间移动数据?

的确,您建议减少定时行为的解决方案是权利,也是最常见的。

您也可以:

  • 在Vivado中修改综合和实现指令更喜欢时序优化 而不是 ressources listrization 计算时间(综合和实施(。/li>
  • 恢复您的计算单元,以确保所有逻辑后都有缓冲区。确实,您有不同的方法将计算单元分割在顺序零件和组合部分之间。
  • 放置和路由设计的关键部分。我从来没有做过,但我知道这是可能的(至少在 .xdc 中设置了位置约束(。

关于在捕虫路径上添加缓冲区:如果您可以进行脚踏式体系结构,则只会添加一个延迟时钟周期(确保您的设计将正常工作并不是很高的成本(。

最新更新