我只是进入FPGA,如果我理解正确的话,就是使用代码将逻辑门连接在一起。因此,如果我在Verilog中设计CPU,它应该将一些逻辑门连接在一起并可以工作,但是我如何知道我的DIY CPU可以运行多快?它取决于什么?
我只是进入FPGA,如果我理解正确的话,就是使用代码将逻辑门连接在一起。因此,如果我在Verilog中设计CPU,它应该将一些逻辑门连接在一起并可以工作,但是我如何知道我的DIY CPU可以运行多快?它取决于什么?
Answers:
设计的速度受到几件事的限制。最大的可能是设计中通过组合逻辑的传播延迟,称为关键路径。如果使用快速FPGA并非常仔细地编写HDL,则可能在Virtex Ultrascale +之类的器件上达到700 MHz。在较低端的FPGA(例如Spartan 6)上,合理的数字可能更像是250 MHz。这要求在各处进行流水线化,因此您在状态组件之间(最小化逻辑级别),低扇出(最小化逻辑元素的负载)和组合拥塞(有效的路由路径)之间的组合逻辑的绝对数量最少。
不同FPGA的结构逻辑将具有不同的时序参数。更快,更昂贵的FPGA将具有较小的延迟,因此可以在相同设计下获得更高的时钟频率,或者在相同频率下运行更复杂的设计或流水线更少的设计。特定过程中的性能可能相似-例如,Kintex Ultrascale和Virtex Ultrascale是在同一过程中制造的,并且具有相似的信元和布线延迟。如果不通过工具链运行给定的设计并查看静态时序分析中的时序报告,就无法说出给定设计的速度。
在运行工具链以确定最大时钟速度时,请记住,这些工具是时序驱动的:它们将尝试满足指定的时序约束。如果未指定时序约束,则结果可能会很差,因为这些工具不会尝试针对速度优化设计。通常,必须在不同的时钟周期约束条件下运行工具几次,才能找到可达到的最大时钟频率。
如果可以优化设计,使关键路径不受限制,那么您将遇到时钟生成和分配(PLL,DCM,时钟缓冲器和全局时钟网)的限制。这些限制可以在零件数据表中找到,但要通过非平凡的设计来接近它们很困难。我已经在Virtex Ultrascale上以500 MHz的频率运行了东西,但这只是少数几个计数器来向其他组件提供触发信号。
您可以在目标技术(特定的FPGA)中综合设计,然后让静态时序分析工具告诉您最小时钟周期是多少。
或者,您首先在设计中添加了约束,然后这些工具将让您知道是否满足约束。
CPU的运行速度将取决于综合设计中最长的触发器间延迟。触发器之间的延迟将包括时钟到Q,路由,逻辑/ LUT和触发器建立时间。这些加在一起构成了时序的关键路径,您可以在布局布线工具输出的时序报告中检查这些路径。
整个设计学科都致力于使体系结构最小化此延迟以最大程度地利用给定流程-流水线,并行执行,推测执行等。这是一项引人入胜的工作,涉及到从FPGA(或ASIC)获得最后一分的性能。
也就是说,FPGA供应商将为其零件提供不同的速度等级,这对应于最大MHz速率。例如,-2 Xilinx Artix大致是一个“ 250 MHz”部分,尽管它能够为高度流水线的设计提供更高的时钟速率。
在与FPGA综合和布局布线工具进行交互时,将需要为设计提供约束。这些告诉工具流程您要达到的目标触发器之间的延迟。在Quartus(Altera)和Vivado(Xilinx)中,这些约束使用一种称为SDC的语法,代表Synopsys设计约束。SDC最初来自ASIC世界,也已被FPGA行业所采用。了解SDC-这将帮助您获得所需的结果。
Altera和Xilinx拥有在线社区,以提供有关如何使用SDC语法和许多其他主题的帮助。
综上所述,如果您关心速度,则应考虑其中具有CPU硬宏的FPGA,例如Zynq。