第1章项目开发环境介绍
1.1软件平台
1.1.1硬件开发工具Quartus II 8.0
QuartusII是Altera公司的综合性可编程逻辑器件(Programmable Logic Device,PLD)的开发软件,支持原理图、VHDL、Verilog HDL和AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器和仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。QuartusII可以在Windows XP、Linux和UNIX上使用,除了可以使用Tcl脚本完成设计流程外,还提供了完善的用户图形界面设计方式,具有运行速度快、界面统一、功能集中、易学易用等特点。
QuartusII支持Altera的IP核(Intellectual Propertycore),包含了LPM/Mega Function宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性,加快了设计速度。对第三方EDA工具的良好支持,也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,QuartusII通过与DSPBuilder工具和MATLAB/Simulink系统级设计工具结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(System Ona Programmable Chip,SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Altera QuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
AlteraQuartusII8.0开发软件提供完整的多平台设计环境,能够直接满足特定的设计需要,为SOPC提供全面的设计环境。QuartusII8.0软件含有FPGA和CPLD设计所有阶段的解决方案,图1.1所示为QuartusII8.0的设计流程。
此外,QuartusII软件为设计流程的每个阶段提供QuartusII图形用户界面、EDA工具界面和命令行界面。可以在整个流程中只使用其中的一个界面,也可以在设计流程的不同阶段使用不同界面。
1.1.2Model Sim 6.0仿真工具
Model Sim是由Mentor公司开发的仿真工具,能提供友好的调试环境,是唯一的单内核支持VHDL和Verilog HDL混合仿真的仿真器。它可以将整个程序分步执行,使设计者能直接看到程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻,都可以查看任意变量的当前值,也可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比Quartus自带的仿真器功能强大得多,是进行FPGA/ASIC设计的RTL级和门级电路仿真的首选。
Model Sim采用直接优化的编译技术、Tcl/Tk技术和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核。个性化的图形界面和用户接口,为用户加快调试提供强有力的手段。全面支持VHDL和Verilog HDL语言的IEEE标准,支持C/C++功能调用和调试。Model Sim仿真工具提供了很多的调试方法,利用好工具的这些特点可以有效地提高开发效率。Model Sim的主要特点如下:
(1)RTL级和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;
(2)单内核VHDL和Verilog HDL混合仿真;
(3)源代码模板和助手,项目管理;
(4)集成了性能分析、波形比较、代码覆盖、数据流Chase X、Signal Spy、虚拟对象(Virtual Object)、Memory窗口、Assertion窗口、源码窗口、显示信号值、信号条件断点等众多调试功能;
(5)C和Tcl/Tk接口,C调试;
(6)对System C的直接支持,和HDL任意混合;
(7)支持System Verilog的设计功能;
(8)对系统级描述语言,如System Verilog、System C、PSL等,提供全面支持。
1.1.3NiosIIIDE8.0软件集成环境
NiosIII DE是一个基于EclipseI DE框架的集成开发环境。该工具是为了在NiosII上开发软件工程而定制的,类似单片机的软件开发环境,虽然设置简单,但是功能强大。NiosII集成开发环境(Integrated Development Environment,IDE)是NiosII处理器与用户的接口界面,在NiosIII DE中可以完成所有软件开发任务,包括工程管理、编辑和编译、调试以及闪存器件编程等。下面简单介绍一下NiosIII DE的功能和特点。
. (1)GNU开发工具,它是一种开源的编译环境,包括标准的GCC编译器、链接器、汇编器和Makefile工具等。
(2)基于GDB的调试工具,包括仿真和硬件调试。
(3)集成了一个硬件抽象层(Hardware Abstraction Layer,HAL)。
(4)支持Micro Chip/OSII和Lw TCP/IP协议栈。
(5)支持Flash下载(Flash Programmer和QuartusII Programmer)。
NiosII处理器具有完善的软件开发套件,包括编译器、集成开发环境(IDE)、JTAG调试器、实时操作系统(Real-Time Operating System,RTOS)和TCP/IP协议栈。设计者能够用AlteraQuartusII开发软件中的SOPCBuilder系统开发工具,很容易地创建专用的处理器系统,并能够根据系统的需求添加NiosII处理器核的数量。使用NiosII软件开发工具能够为NiosII系统构建软件,即一键式自动生成适用于系统硬件的专用C/C++运行环境。NiosIIIDE提供了许多软件模板,简化了项目设置。此外,NiosII开发套件包括两个第三方实时操作系统(RTOS)--MicroC/OS-II(Micrium)、Nucleus PLUS(ATI/Mentor)以及供网络应用使用的TCP/IP协议栈。
1.2硬件平台
本书中的项目实例均是在Altera提供的DE2平台上测试实现的。该平台使用的是性价比较高的CycloneII系列FPGA芯片EP2C35,以及丰富的外围设备,详细特性如下。
(1)芯片:核心的FPGA芯片是CycloneIIEP2C35F672C6,从名称可以看出,它包含有35×103个逻辑单元(Logic Element,LE)。Altera下载控制芯片EPCS16以及USB-Blaster对JTAG支持。
(2)存储芯片:512KBSRAM,8MBSDRAM(Samsung SDRAM),4MBFlash存储器(选用Intel Flash芯片,方便Flash软件编程)。
(3)经典I/O配置:拥有4个按钮,18个拨动开关,18个红色发光二极管,9个绿色发光二极管,8个七段数码管,16×2字符液晶显示屏(显示字符和ASCII码)。
(4)超强多媒体:24位CD音质音频芯片WM8731(Mic输入+LineIn+标准音频输出),视频解码芯片(支持NTSC/PAL制式),带有高速DAC视频输出VGA模块。
(5)更多标准接口:通用串行总线(USB)控制模块以及A、B型接口,SDCard接口,IrDA红外模块,10/100Mbit/s自适应以太网络适配器,RS-232标准串口(系统通信接口),PS/2键盘接口。
(6)其他:50MHz、27MHz晶振各一个,支持外部时钟,80针带保护电路的外接I/O端口。
第2章SOPC系统设计分析
2.1SOPC技术简介
20世纪50年代以来,微电子技术迅猛发展,集成电路设计和工艺水平有了很大的提高,单片集成度已达上亿个晶体管,这从数量上已经大大超过了大多数电子系统的要求。如何利用这一近乎无限的晶体管集成度,就成了电子工程师的一项重大挑战。在这种背景下,片上系统(System On Chip,SOC)应运而生。SOC将大规模的数字逻辑和嵌入式处理器整合在单个芯片上,并且集合了模拟部件,形成了模数混合、软硬件结合的完整的控制和处理。
2.1.1SOPC技术的主要特点
从系统集成的角度看,SOC是以不同模型的电路集成、不同工艺的集成作为支持基础的。所以,要实现SOC,必须先重点研究器件的结构与设计技术、VLSI设计技术、工艺兼容技术、信号处理技术、测试与封装技术等,这就需要规模较大的专业设计队伍、相对较长的开发周期和高昂的开发费用,并且涉及大量集成电路后端设计和微电子技术的专门知识,因此设计者在转向SOC的过程中也要面临着巨大的困难。
SOC面临上述诸多困难的原因在于该技术基于超大规模专用集成电路,所以整个设计过程必须实现完整的定制或半定制集成电路设计流程。美国Altera公司在2000年提出的片上可编程系统(System On a Programmable Chip,SOPC)技术则提供了另一种有效的解决方案,即用大规模可编程器件的FPGA来实现SOC的功能。SOPC与SOC的区别就是FPGA与ASIC的区别。SOPC是SOC发展的新阶段,代表了当今电子设计的发展方向。其基本特征是设计人员采用自顶向下的设计方法,对整个系统进行方案设计和功能划分,最后系统的核心电路在可编程器件上实现。
随着百万门级的FPGA芯片、功能复杂的IP核、可重构的嵌入式处理器核以及各种功能强大的开发工具的出现,SOPC已成为一种一般单位甚至个人都可以承担和实现的设计方法。SOPC基于FPGA芯片,将处理器、存储器、I/O接口等系统设计需要的模块集成在一起,完成整个系统的主要逻辑功能,具有设计灵活、可裁减、可扩充、可升级以及软硬件在系统可编程的特性。
近年来,MCU、DSP和FPGA在现代嵌入式系统中都扮演着非常重要的角色,它们都具有各自的特点但又不能兼顾。在简单的控制和人机接口方面,以51系列单片机和ARM微处理器为代表的MCU因为具有全面的软件支持而处于领先地位;在海量数据处理方面,DSP优势明显;在高速复杂逻辑处理方面,FPGA凭借其超大规模的单芯片容量和硬件电路的高速并行运算能力,显示出突出的优势。因此,MCU、DSP和FPGA的结合将是未来嵌入式系统发展的趋势,而SOPC技术正是MCU、DSP和FPGA的有机融合。目前,在大容量FPGA中可以嵌入16位或者32位的MCU,如Altera公司的NiosII处理器。DSP对海量数据快速处理的优异性能主要在于它的流水线计算技术,只有规律的加减乘除等运算才容易实现流水线的计算方式,这种运算方式也较容易用FPGA的硬件门电路来实现。目前,实现各种DSP算法的IP核已经相当丰富和成熟,例如FFT、IIR、FIR、Codec等。利用相关设计工具(如DSP Builder)可以很方便地把现有的数字信号处理IP核添加到工程中去。SOPC一般采用大容量FPGA(如Altera公司的Cyclone、Stratix等系列)作为载体,除了在一片FPGA中定制MCU处理器和DSP功能模块外,可编程器件内还具有小容量高速RAM资源和部分可编程模拟电路,还可以设计其他逻辑功能模块。一个大容量的FPGA的SOPC结构如图2.1所示。
SOPC技术具有如此多的优点,已经成为嵌入式系统领域中一个新的研究热点,并代表了未来半导体产业的一个发展方向。相对于单片机、ARM而言,目前SOPC技术的应用还不是很广,但从趋势上看,只要再经过几年的发展,SOPC技术的应用就会像今天的单片机一样随处可见。
2.1.2SOPC技术的实现方式
SOPC技术的实现方式一般分为三种。
(1)基于FPGA嵌入IP硬核的SOPC系统。目前最常用的嵌入式系统大多采用了含有ARM的32位IP处理器核的器件。Altera公司Excalibur系列的FPGA中就植入了ARM922T嵌入式系统处理器,Xilinx的Virtex-IIPro系列中则植入了IBMPowerPC405处理器。这样就能使FPGA灵活的硬件设计和硬件实现与处理器强大的软件功能相结合,高效地实现SOPC系统。
(2)基于FPGA嵌入IP软核的SOPC系统。在第一种实现方案中,由于硬核是预先植入的,所以其结构不能改变,功能也相对固定,无法裁减硬件资源,而且此类硬核多来自第三方公司,其知识产权费用导致成本的增加。如果利用软核嵌入式系统处理器就能有效克服这些不利因素,最具有代表性的嵌入式软核处理器是Altera公司的NiosII软核处理器。
(3)基于Hard Copy技术的SOPC系统。Hard Copy就是利用原有的FPGA开发工具,将成功实现于FPGA器件上的SOPC系统,通过特定的技术直接向ASIC转化,从而克服传统ASIC设计中普遍存在的问题。
从SOPC实现方式上不难看出,IP核在SOPC系统设计中占有极其重要的地位,IP核的设计和复用成为SOPC技术发展的关键所在。半导体产业的IP定义为在ASIC、ASSP和PLD等中预先设计好的电路模块。在SOPC设计中,每一个组件都是一个IP核。IP核模块有行为、结构和物理三级不同程度的设计,对应描述功能的不同分为三类,即完成行为描述的软核(Soft IP Core)、完成结构描述的固核(Firm IP Core)和基于物理描述并经过工艺验证的硬核(Hard IP Core)。
IP软核通常以HDL文本形式提交给用户,它已经过RTL级设计优化和功能验证,但其中不含任何具体的物理信息。据此,用户可以综合得到正确的门电路级设计网表,并可以进行后续的结构设计,具有很大的灵活性。借助于EDA综合工具可以很容易地与其他外部逻辑电路合成一体,根据各种不同半导体工艺,设计成具有不同性能的器件。IP软核也称为虚拟组件(Virtual Component,VC)。
IP硬核是基于半导体工艺的物理设计,已有固定的拓扑布局和具体工艺,并已通过工艺验证,具有可靠的性能。其提供给用户的形式是电路物理结构掩模版和全套工艺文件。
IP固核的设计程度则介于软核和硬核之间,除了完成软核所有的设计外,还完成了门级电路综合和时序仿真等设计环节。一般以门级电路网表的形式提供给用户。
如何设计出性能良好的IP核?虽然这个问题没有统一完整的答案,但根据前人的开发经验和电子设计的一般规则,仍然可以总结出IP核设计一般应该遵循的几个准则:
②范化——严格按照规范设计,这样的系统具有可升级性、可继承性,易于系统集成;
②简洁化——设计越简洁的系统,就越容易分析、验证,达到时序收敛;
……