差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
fpga_implementation_process [2021/09/13 00:08] 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或使我们的原始代码更有效。 |