学号:16010199021
姓名:李若宇
嵌牛导读:
随着可编程技术的不断发展,FPGA 被广泛应用于电子设计的各个领域。新的设计思想和设计方法也被不断的提出和应用,如 FPGA 模块化设计技术。所谓的 FPGA 模块化设计就是将系统按照一定规则划分成若干模块,然后对每个模块分别进行设计、综合,将实现结果约束在预先设置好的区域内,最后将所有模块的实现结果有机的组织起来完成整个系统的设计。
嵌牛鼻子:FPGA
嵌牛提问:为什么要将FPGA模块化?
嵌牛正文:
一,模块化的思路
进行模块化、标准化设计的最终目的只有一个: 提高设计的通用性; 减少不同项目中同一功能设计、验证引入的工作量。为了达到这一目的,就需要建立起以模块库为基础的 FPGA 设计体系。我们把这个设计体系的构建分为以下 3 个阶段。
1) 规范的制定。
完善从各功能的原始描述( 规格) 到产品数字逻辑设计的相应规范。
只有各功能的定义统一,对应的功能设计才有可能相同。
2) 模块库的建立。
根据制定的相关规范,设计模块库文件夹提交格式,建立模块库。模块库中的模块不是以核心逻辑的实现为主,而是以具体功能的实现为主,具体包括外部接口说明、设计方案、寄存器说明、逻辑代码、仿真文件和使用说明。
3) 改进。
在新的设计中,优先使用模块库中的逻辑代码,如果在使用过程中发现设计规范、模块存在隐患,不断改进、更新。
二,模块化的意义
进行模块化设计的最终目的: 提高设计的通用性; 减少不同项目中同一功能设计、验证的工作量。其核心是需要提高设计的通用性。但是外部总线总是难以作到统一。
为了处理这一矛盾,传统的方法是把各功能的核心实现逻辑作为基本模块,这种模块在实际引用时需要引用者同时理解模块的外部接口需求,然后重新编写外围逻辑( 核心实现逻辑所需的寄存器、FIFO、胶合逻辑等) 。
而各模块的外部接口需求不尽相同,需要配有详尽的说明文档并配合时序分析报告等文件才能使引用者正确的理解模块的使用方法,理解以前的模块会引入理解偏差等风险,这就使得很多 FPGA 设计人员宁肯自己重新做逻辑也不愿意使用模块库中的逻辑,极大的降低了 FPGA 逻辑设计人员引用现有模块进行设计的积极性。
内部总线的提出可以很好的解决上述问题。
首先,模块对外接口的标准化问题得以解决( 统一的内部总线和功能信号输入输出) 。各模块不再是功能的核心逻辑,而是功能的所有逻辑,包括寄存器和对外接口。从而使模块在引用上更加方便。在基于统一内部总线的设计中直接以功能为单位进行拼接即可。
基于内部总线的模块化设计还具有一些引申的意义:
FPGA 中的设计基于统一的总线进行,从而推动了模块库的建设,模块库中的模块与功能的完整实现等同,增加了模块引用的便捷性。可以极大的提高 FPGA 设计人员引用模块库中的逻辑进行设计的积极性,同时有利于在多次的使用过程中发现模块库中模块的隐藏问题,进行改进,从而稳健的提升模块、后续设计的可靠性。
FPGA 中的设计基于统一的总线进行,从而推动了软件程序的通用性,在同一功能的使用过程中,不同的平台之间的软件程序可以得到最大限度的共用,很多功能的软件程序在不同平台之间移植时,只需要按照系统划分更改各功能操作对应寄存器操作的基地址参数即可。