首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA程序如何模块化设计?

FPGA程序如何模块化设计?

综合与可综合的HDL设计


综合的定义


综合就是针对给定的电路实现功能和实现此电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理,获得一个能满足上述要求的电路设计方案。
被综合的文件是HDL文件(或相应文件等),综合的依据是逻辑设计的描述和各种约束条件,综合的结果则是一个硬件电路的实现。该方案必须同时满足预期的功能和约束条件。对于综合来讲,满足要求的方案可能有多个,综合器将产生一个最优的或接近最优的结果。因此,综合的过程也就是设计目标的优化过程,最后获得的结构与综合器的工作性能有关。


FPGA/CPLD综合软件


FPGA/CPLD综合软件包括:Synopsys公司的FPGA Compiler II、Synplicity公司的Synplify/Synplify Pro、Mentor公司的LeonardoSpectrum及FPGA/CPLD厂商集成开发环境中自带的综合工具,如Altera Quartus II软件中的综合软件等。


综合的特点


综合的特点体现在以下几个方面:综合是在一定的限制条件下进行的,比如时序、面积或物理约束等;综合器独立于具体设计工艺,如果工艺改变,可使用新工艺元件库重新综合;综合器很难得到硬件设计的所有实现方案,不可能得到最优的硬件结果;不同的综合器使用不同的机制和算法,因此对相同的HDL描述可能得到不同的结果;不同的综合器对HDL语句和语法的支持不同,需要通过察看综合软件的相关文档进行了解。
可综合的数据类型包括枚举类型、整数类型、数组类型(一维数组、二维数组)及记录类型。综合器不支持的数据类型包括:物理类型,如时间类型;浮点类型,如实数类型;存取类型及文件类型等。


面向综合的编码风格


设计描述的编码风格将直接影响EDA软件工具的综合结果。好的描述方式易于被综合器识别且能够被综合出设计者所期望的电路。电路的质量取决于设计者使用的描述风格和综合工具的能力。


形成良好的编码风格应注意以下几个方面:


对希望形成组合逻辑的if和case语句,要完整地描述其各个分支,避免形成锁存器(可行的方法之一是给所有被赋值信号赋初始值);


尽量使用简单的逻辑及数字运算符;


进程的敏感清单应列举完全,否则可能产生综合前后仿真结果不同的现象;


在循环中不要放置不随循环变化的表达式;


对 于复杂的数字运算要充分进行资源共享,如采用if块等;


对于长的组合链路应该在代码编写阶段注意描述成树状结构;


时序逻辑尽可能采用同步设计;


对具有不同的时序或面积限制的设计,应尽可能采用不同的代码描述以达到不同的要求(一般而言,面积与延时是相互冲突的,在FPGA 中面积代表资源的多少);
对于复杂系统设计,应尽量采用已有的算法和模块来实现。




设计实现


设计实现即利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能连接的布线通道进行连线,并产生相应文件(如,配置文件与相关报告)的过程。通常可分为如下五个步骤:


1)转换:将多个设计文件进行转换并合并到一个设计库文件中。


2)映射:将网表中的逻辑门映射成物理单元或元素,即把逻辑设计分割到构成可编程逻辑阵列内的可配置逻辑块与输入输出块及其他资源中的过程。


3)布局布线:布局是指从映射中取出定义的逻辑和输入输出块,并把它们分配到 FPGA 内部的物理位置。通常基于某种先进的算法,如最小分割、模拟退火和一般的受力方向张弛等来完成;布线是指利用自动布线软件使用布线资源选择路径,试着完成所有的逻辑连接。在布局布线过程中,可同时提取时序信息形成时序分析报告。
继承事业,薪火相传
返回列表