FPGA CPU,如何找到最大速度?


14

我只是进入FPGA,如果我理解正确的话,就是使用代码将逻辑门连接在一起。因此,如果我在Verilog中设计CPU,它应该将一些逻辑门连接在一起并可以工作,但是我如何知道我的DIY CPU可以运行多快?它取决于什么?


12
@KingDuken我对Verilog的替代品感到好奇,因为该替代品可用于您设计CPU之类的东西(不是我认为的VHDL :))?
尤金(Eugene Sh)。

1
@KingDuken这不是我遇到的问题,我已经制作了我的CPU,它的结构位于试验板上,希望将其移植到FPGA。我的问题是,如何计算CPU的最大频率时钟是什么,它有什么限制?

4
你可能想谷歌“静态时序分析”
Photon的

14
@KingDuken作为设计了两个CPU的人,并没有那么费时。如果您知道自己在做什么,则可以在1-2个月内使处理器正常工作。
user110971 '19

2
@KingDuken有趣的事实:Sun / Oracle已将Verilog源代码发布到其UltraSPARC T1和T2处理器。我碰巧见过几个人,他们都工作了。仅供参考,他们甚至赢得了SPECint_rate2006!:D清楚地表明,在Verilog或其他HDL中设计CPU是不可能的。我已经做过几次自己的业余爱好,这真的不是没有可能(一旦您一如既往地

Answers:


29

设计的速度受到几件事的限制。最大的可能是设计中通过组合逻辑的传播延迟,称为关键路径。如果使用快速FPGA并非常仔细地编写HDL,则可能在Virtex Ultrascale +之类的器件上达到700 MHz。在较低端的FPGA(例如Spartan 6)上,合理的数字可能更像是250 MHz。这要求在各处进行流水线化,因此您在状态组件之间(最小化逻辑级别),低扇出(最小化逻辑元素的负载)和组合拥塞(有效的路由路径)之间的组合逻辑的绝对数量最少。

不同FPGA的结构逻辑将具有不同的时序参数。更快,更昂贵的FPGA将具有较小的延迟,因此可以在相同设计下获得更高的时钟频率,或者在相同频率下运行更复杂的设计或流水线更少的设计。特定过程中的性能可能相似-例如,Kintex Ultrascale和Virtex Ultrascale是在同一过程中制造的,并且具有相似的信元和布线延迟。如果不通过工具链运行给定的设计并查看静态时序分析中的时序报告,就无法说出给定设计的速度。

在运行工具链以确定最大时钟速度时,请记住,这些工具是时序驱动的:它们将尝试满足指定的时序约束。如果未指定时序约束,则结果可能会很差,因为这些工具不会尝试针对速度优化设计。通常,必须在不同的时钟周期约束条件下运行工具几次,才能找到可达到的最大时钟频率。

如果可以优化设计,使关键路径不受限制,那么您将遇到时钟生成和分配(PLL,DCM,时钟缓冲器和全局时钟网)的限制。这些限制可以在零件数据表中找到,但要通过非平凡的设计来接近它们很困难。我已经在Virtex Ultrascale上以500 MHz的频率运行了东西,但这只是少数几个计数器来向其他组件提供触发信号。


22

您可以在目标技术(特定的FPGA)中综合设计,然后让静态时序分析工具告诉您最小时钟周期是多少。

或者,您首先在设计中添加了约束,然后这些工具将让您知道是否满足约束。


是什么导致约束无法得到满足?什么限制时钟周期?它取决于我使用的FPGA还是整个FPGA系列都一样?(或可能存在的每个FPGA都一样?)

3
这取决于FPGA的速度,以及设计中在FF之间放置多少组合逻辑。
戴夫特威德

9
@ appmaker1358,您是否尝试过阅读FPGA的数据表?速度额定值是数据表中提到的最重要的参数之一。
Photon

2
速度将受最长的时序路径限制,这将是通过两个有状态元素(触发器,RAM等)之间的逻辑和路由的最长传播延迟。不同的FPGA将具有不同的时序参数,因此设计将在不同的FPGA上实现不同的速度。尽管FPGA的某些部分受到频率限制-时钟分配组件和PLL通常都有限制,但是很难写出接近非平凡设计的HDL。
alex.forencich

3
另外,您始终需要添加时序约束。布局和布线考虑了约束条件,并努力满足这些约束条件。如果您不添加任何约束,则这些工具将不会非常努力地工作,并且您不会获得非常乐观的数字。
alex.forencich

13

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。


-2

CPU的运行速度不会比全局时钟快,因此这将限制其运行速度的上限。通常,有关最大时钟速率的信息在FGPA数据表中列出。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.