摘要:本文对FPGA的系统设计思想和方法作了简要的介绍,并总结了FPGA设计的通用流程,重点对设计流程中的每一个环节以及相关的概念进行了详细的分析,并谈了作者个人的一些经验。FPGA的设计包括系统设计和设计实现。系统设计一般要对系统进行行为仿真。设计实现是以系统方案为输入,进行RTL级描述、功能仿真、逻辑综合、布线前门级仿真、适配、时序仿真、时序分析、器件编程、系统验证一系列流程的处理才能完成FPGA芯片的设计。设计过程中要涉及到模型库、测试激励和约束等重要概念。本文最后简单地介绍了FPGA常见的开发工具,并总结了可编程器件的基本特点。
关键词:FPGA 系统设计网表 综合 仿真 适配
Parsing Of FPGA System Design Method
Abstract: This paper introduces simply idea and method of FPGA system design, and summarizes FPGA design flow. Specially, it analyses in detail every step of design flow and relative conception, and inserts author’s design experience. FPGA design includes system design and design realization. In general, it is necessary to simulate system behavior in system design phase. design realization is based on system design scheme, carrying on a series of processing flow, it includes RTL description, function simulation, logic synthesis, gate-level simulation before place and routing, fit(place and routing), timing simulation, timing analysis, device programming and system verification, and finally completing FPGA design. In the design process, we will deal with some important conceptions, for instants, models of library, testbench, restriction and so on. In the end of this paper, author introduces several popular tools about FPGA design and development, and summarizes basic characteristic of PLD(programmable logic device).
Key words: FPGA; system design; netlist, synthesis; simulation; fit
FPGA(Field Programmable Gate Array,现场可编程门阵列)和CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)是2种目前应用非常广泛的现场可编程逻辑器件,被称之为可编程ASIC(Application Specific Integrated Circuits,专用集成电路)。2种器件的设计流程基本相同(除了编程数据加载方式不完全相同外),以下都简称为FPGA。FPGA的设计可分为2个阶段:第一阶段是系统设计,是根据一个开发项目的系统设计要求(功能、技术参数等),完成详细的系统设计方案; 第二阶段是设计实现,是以系统设计方案为输入,进行一系列工作流程的处理,最后得到所需要的FPGA芯片。但在较多FPGA设计流程的文章中,对系统设计的论述较少,对设计流程中的基本概念解释内容不多,本文试图在这方面作一些努力,并全面总结了FPGA设计的通用流程,谈了作者个人的一些经验。最后简单地介绍了FPGA常见的开发工具,并总结了可编程器件的基本特点。
1 FPGA的系统设计
系统设计在整个设计中是非常关键的,它直接影响到后面的工作时间、质量和效率,同时也关系到最后产品的质量(包括实现的功能、稳定性,测试、使用、维护和升级是否方便等等)。系统设计的必要性表现在它不仅能够从整体上描述系统,而且还表现在它能够在设计前期阶段就能发现理论和设计原理上的错误和缺陷并进行设计方案的修改和优化,而系统仿真是一个有效的方法,它使系统设计从定性描述走向定量描述,更具体、更详细、更容易发现细节问题和缺陷。如果不重视系统设计,必然要在调试阶段花费更多的时间,而且会对以后的工程应用、产品维护、市场拓展等方面付出代价,这是不可取的。此外,详细的系统设计方案会使得分配模块的设计任务变得更容易和明确,便于项目开发的管理。
系统设计采用自顶向下的设计方法,根据系统的设计要求,首先对系统的结构和功能进行定义,主要包括(对一个具体设计不一定都包括):系统功能描述,技术参数定义,模块划分及其功能描述(即方框图描述),通信协议,软硬件协同实现方案,系统数据流、控制流(包括状态机)和存储方案,复位和时钟方案(即同步方案), IP使用方案,测试方案(包括仿真时要用到的测试激励和在电路板上的测试方案),各模块的接口信号定义(包括时序关系)及其连接,寄存器定义和FPGA引脚信号定义等等,然后使用高级语言或者VHDL、Verilog_HDL硬件描述语言进行算法行为描述和系统行为仿真,最后完成系统设计方案。系统设计流程如图1所示。
由此可见,一个完整的系统设计方案不仅需要定性描述(即系统功能和模块功能描述、参数定义、方框图、模块划分和接口信号定义、时序图、可行性论证等),而且应该有定量描述,即含有详细的算法说明、系统行为描述代码和系统仿真结果等。事实上,对一个简单的设计,系统方案只做到定性描述也可以,即不做系统行为描述与仿真,各模块内的算法可以由承担该模块的设计者完成,模块设计可以直接从RTL级(Register Transport Level: 寄存器传输级)开始,系统仿真直接从功能仿真开始,如图2所示。