差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
fpga_implementation_process [2021/09/13 00:11]
gongyu
fpga_implementation_process [2021/09/13 00:20] (当前版本)
gongyu [1. 综合]
行 10: 行 10:
 ### 1. 综合 ### 1. 综合
 构建FPGA的第一个阶段称为综合。这个过程将功能RTL设计转换为一组门级宏。这就产生了一个实现RTL设计的扁平层次电路图的效果。 构建FPGA的第一个阶段称为综合。这个过程将功能RTL设计转换为一组门级宏。这就产生了一个实现RTL设计的扁平层次电路图的效果。
-在此上下文中,宏实际上是内部FPGA单元的模型。这可以是FPGA中的任何数字元素,如触发器、[[RAM]]或查找表(LUT)+在此上下文中,宏实际上是内部FPGA单元的模型。这可以是FPGA中的任何数字元素,如触发器、[[https://​computer.howstuffworks.com/​ram.htm|RAM]]或查找表[[https://​www.allaboutcircuits.com/​technical-articles/​getting-started-with-fpgas-look-up-tables-and-flip-flops/​|LUT]]
  
 #### 1.1 综合工具 #### 1.1 综合工具
 我们可以使用许多不同的工具来运行合成过程。两家主要的FPGA供应商(Xilnix和Intel)都提供了适用于大多数项目的免费合成工具。 我们可以使用许多不同的工具来运行合成过程。两家主要的FPGA供应商(Xilnix和Intel)都提供了适用于大多数项目的免费合成工具。
-除此之外,我们还可以使用许多开源的合成工具。这些工具中最流行的是yosys,它经常与Lattice fpga一起使用。+除此之外,我们还可以使用许多开源的合成工具。这些工具中最流行的是[[http://​www.clifford.at/​yosys/|yosys]],它经常与[[https://​www.latticesemi.com/​fpga|Lattice fpga]]一起使用。
  
 我们也可以使用付费工具来实现这一目标。这些工具中最著名的是Synopsys公司的Synplify Pro和Mentor Graphics公司的Leonardo Spectrum。 我们也可以使用付费工具来实现这一目标。这些工具中最著名的是Synopsys公司的Synplify Pro和Mentor Graphics公司的Leonardo Spectrum。
行 33: 行 33:
 设备中的单个单元因芯片而异,也因厂商而异。 设备中的单个单元因芯片而异,也因厂商而异。
 几乎所有现代芯片都将包括RAM、某种形式的LUT和触发器。 几乎所有现代芯片都将包括RAM、某种形式的LUT和触发器。
-高端芯片还可以包括专用DSP核心、时钟管理模块(如锁相环)以及其他外围接口(如adc或专用高速接口)。+高端芯片还可以包括专用DSP核心、时钟管理模块(如锁相环)以及其他外围接口(如[[https://​learn.sparkfun.com/​tutorials/​analog-to-digital-conversion/​all|ADC]]或专用高速接口)。
 在完成合成过程后,我们可以生成一份报告,告诉我们在我们的设计中使用了多少细胞,包括绝对数量和设备中所有可用细胞的百分比。 在完成合成过程后,我们可以生成一份报告,告诉我们在我们的设计中使用了多少细胞,包括绝对数量和设备中所有可用细胞的百分比。
 在运行合成过程后,我们经常会发现我们的设计对于我们的设备来说太大了。当这种情况发生时,我们有很多选择。 在运行合成过程后,我们经常会发现我们的设计对于我们的设备来说太大了。当这种情况发生时,我们有很多选择。
-通常可以通过改变合成工具的配置来降低利用率。这方面的例子可以是改变FSM编码或选择不同的合成算法。+通常可以通过改变合成工具的配置来降低利用率。这方面的例子可以是改变[[https://​www.allaboutcircuits.com/​technical-articles/​encoding-the-states-of-a-finite-state-machine-vhdl/​|有限状态机FSM编码]]或选择不同的合成算法。
 如果我们的设计只比所选的FPGA稍大一点,那么这种缩减就足够了。 如果我们的设计只比所选的FPGA稍大一点,那么这种缩减就足够了。
 如果这不能充分降低利用率,那么我们必须选择一个新的FPGA或使我们的原始代码更有效。 如果这不能充分降低利用率,那么我们必须选择一个新的FPGA或使我们的原始代码更有效。