为缓解我国电子信息产业快速发展与核心技术人才紧缺的矛盾,中电网(ECCN)在信息产业部的支持下,联合国际著名集成电路设计厂商和清华大学等国内顶级高校,隆重推出电子工程与集成电路技术培训项目。所开课程包括FPGA/PLD、数字处理器、嵌入式 SoC 以及模拟和射频技术等。其中,FPGA培训是与Altera公司和清华大学共同推出的,并最先开课。本刊将陆续整理培训的精华内容与读者分享。更多详情敬请登录 http://training.ECCN.com/ 。
当前,系统设计面临的挑战,体现在性能提高对运算量的极大需求,及与之矛盾的嵌入式系统资源的限制。
基于模型的设计要素
图1给出了基于模型设计的要素,包括在Simulink环境下建立算法模型;在设计过程中贯穿仿真、优化;及自动代码生成与硬件实现等。
图1 基于模型设计的要素 (略)
MATLAB与Simulink
MATLAB和Simulink是基于模型设计的工作环境,利用两款软件可完成系统级建模、算法设计、数据分析及仿真等。因为模型是可“执行技术条件”,因此可在设计过程中将仿真贯彻始终。
模型的可执行技术条件
Simulink模块作为系统和部件行为的可执行技术要求,代替传统系统中模糊的文本文件。这些模块可以覆盖数字和模拟的硬件及软件,便于在工程队伍间清晰"无模糊"地交流和通信。一个好的系统模型应具有高度抽象化的特性,而模型的结构与最终的软/硬件实现方式无关。
高 层次的Simulink系统模型可以使设计者直接利用Simulink系统模型执行仿真;在整个开发过程中,实现测试、校验和实现;帮助设计者及早发现问题,降低设计成本;它消除了对容易误解的书面技术条件的依赖,而替代为可执行的技术条件。通常称这个高层次的Simulink系统模型为可执行的技术条件,或黄金参考(Golden Reference)。
在可执行的技术条件中,输入输出是算法的测试矢量,整个设计过程中将利用这些测试矢量来证实与设计相符的技术条件。
设计仿真
Simulink是一个提供多领域动态系统仿真的平台,包含交互式图形化方框图环境,可 以产 生综合性的系统技术条件、模型通道和其它的环境效应。它简化了利用定量测量的系统分析,如信噪比、位误差率等。
自动代码生成
设计一旦被完善和校验,就可以自动地由模型产生代码,减少人工编码引入的错误。在目标系统中,可以利用该代码作为实时样机,并推广应用。对于Altera? FPGA,借助DSP Builder可自动产生硬件代码。
持续测试和校验
设计过程中,持续的测试和校验,可以确保整个开发过程的质量,及早发现错误,降低修正错误的代价。
系统模型(黄金参考)可以看作硬件或软件实现的测试床,可以在协同仿真的硬件或软件环路中验证。
设计流程和工具
系统开发的设计流程包括研究开发、系统设计、实现和测试三个阶段。不同阶段对应着不同的设计工具 ,开发阶段包括MATLAB工具箱,如,用于图像处理的Toolbox及一些定点工具;系统设计阶段使用Simulink的信号处理模块集,视频和图像处理模块集及仿真加速器等;实现和测试阶段,则需根据目标器件,选用相应的代码生成工具。
FPGA设计流程
FPGA的设计流程包括:进行算法开发、仿真和建模;借助 VHDL或硬件描述语言生成代码;在正确仿真校验的基础上进行综合,把Simulink模块集转 换成相应的IP核,由硬件实现。在此过程中可以调用综合布局布线软件,如, Altera Quartus? II 软件实现;最后进行实现和校验。
基于模型的设计
动态系统的建模与分析
动态系统指变量与时间相关的系统,除激励和响应随着时间变化外,一个或多个变量的导数在任何瞬间都与此瞬间的变量数值有关。动态系统的分析必须执行两个任务:一,建立系统模型;二,求解模型响应。
系统建模
数学模型(简称模型),即依据方程式描述系统。构造一个系统的模型的基础是系统元件和它们的相互连接要遵循的物理定律。对于一个系统有多种数学模型是可能的,设计者必须确定什么形式和复杂度适合设计的目标。
模型求解
利用数学模型来确定系统的因果关系的特定特性的过程即为模型求解。被分析的模型是系统近似的数学描述,而不是物理系统本身,描述一个实际系统时,模型越接近实际,获得一般结果也越困难。
使用动态系统建模分析可以进行系统建模和模型求解,Simulink提供了图形化用户接口(GUI)来构造系统模型和执行仿真。这些模型类似于方框图,由描述系统行为的代数和微分方程表示。
Altera DSP Builder
什么是DSP Builder?
DSP Builder是在MATLAB/ Simulink设计环境与Quartus? II开发工具之间建立桥梁的链接工具,由DSP Builder库产生的Simulink模型,可以自动地产生HDL代码及HDL测试床。它支持集成的IP库,适应复杂的DSP功能集成。
图2 Altera DSP解决方案(略)
Altera DSP Builder库包括AltLAB、算术库、总线操纵库、复杂信号库和DSP Builder板库、门级电路库、端口状态机等。
设计流程步骤
设计流程的步骤包括:1)利用Altera库在Simulink中产生设计;2)在Simulink中进行仿真;3)在模型中添加Signal Compiler;4)产生HDL代码和测试床;5)执行RTL仿真;6)综合HDL代码,并布局布线;7)编程器件;8)利用SignalTap?II逻辑分析仪,对片内测试点状态进行提取等。
步骤1、利用Altera库在Simulink中产生设计
如图3所示,利用Altera库及与之对应的Simulink库建立系统模型。在建立模型时,只需拖拉库中的模块到Simulink中,而后对这些模块进行参数化设置。
图3 利用Altera库在Simulink中产生设计(略)
步骤2、在Simulink中仿真
在用模块建立模型后,可以在Simulink中仿真。图4中可以看到Simulink的信号源和输出结果都是图形化的表示,因此较为直观,这也是采用Simulink的一个好处。
图4 在Simulink中仿真(略)
步骤3、添加SignalCompiler到模型中,产生HDL代码
在模型中需添加SignalCompiler(如图5所示),通过在SignalCompiler列表中的设置,可以选择调用的软件及相应器件等。SignalCompiler模块中涉及的参数包括,目标器件、速度和面积优化的选择、测试床产生和信息报告的要求等。
图5 添加SignalCompiler到模型中(略)
步骤4、产生HDL代码和产生测试床
如图6所示,此步包括了用户的设计项目在 MATLAB中对应的项目名称,与最后生成的VHDL文件名称等。在加入SignalCompiler后,即可在用户模型的基础上,产生HDL代码。
图6 产生HDL代码和测试床(略)
步骤5、执行RTL仿真(ModelSim)
通过设置并运行TCL文件,即可得到校验结果(如图7所示)。执行校验时,可将ModelSim与Simulink中的结果进行比较。
图7 执行RTL仿真(ModelSim)(略)
步骤6、综合HDL代码,并进行布局布线
如图8所示,此步要选择适当的综合工具及布局布线工具,如Quartus II软件、Synplify等。在设置完参数后进行布局布线,得到相应的位流文件。
图8 综合HDL代码进行布局布线(略)
步骤7、编程器件
利用Synplify和Quartus II软件完成综合和布局布线后,可对器件进行编程,即把设计直接下载到开发板上进行硬件测试与校验。
Altera提供了专门用于DSP开发的Stratix DSP开发板。它采用EP1S25F780C5或EP1S80B956C7器件,内含模拟I/O:两个12位,125MHz 的A/D转换器及两个14位,165MHz的D/A转换器;数字信号I/O:两个40脚连接器及RS232串行端口等。
步骤8、SignalTap II逻辑分析仪
把设计下载到开发板后,还可采用SignalTap II逻辑分析仪进行分析。嵌入的逻辑分析SignalTap II随设计加载到器件内,以捕捉内部的结点状态,如图9所示。
图9 SignalTap II逻辑分析仪(略)
定制外设和定制指令
用户定义的外设应用
用户为了实现自身定义的或Nios II工具箱中没有的功能时,需要加入外围器件并扩展或加速系统容量。因此,要学习怎样将自身的设计通过Avalon直接连接到Nios II系统上。
定制外设实际上是产生一个Avalon从电路(或从设备),在此过程中,仅需实现必要的信号而无需担心总线接口。外部电路通过Avalon转换器件与总线连接,并自动进行时序处理,为设计产生 Avalon 的结构和仲裁器。
定制外设主要利用新元件编辑器(New Component Edit),在Altera SOPC Builder 窗口下,通过文件选择 New Component 即可弹出 Component Edit 窗口。
新的元件需要相应接口,从而连接到已经存在的HDL或者板上的元件,并映射到Nios II 的存储空间。新的元件可以位于Nios II系统的内部或外部。如图10所示,其中,左图表示器件在系统外部,因此它需要一个到用户逻辑的接口再和用户外设连接;右图中新的定制外设在系统内部,因此可以和Avalon总线直接接口。
定制新的外设元件,还需注意地址对准。Nios? II 软件是32 位处理器,但其外设为8位,当用户外设位数低于32位时,即会导致动态地址和本地地址的对准问题。当动态地址是32位时,本地地址即需按照8位外设进行调整,即基地址的0要从aa偏置加1后存bb,再存cc…从而适应从设备的数据宽度和处理器。
定制指令
定制指令即增加Nois II的指令设置,将用户逻辑融入到处理器传输途径的ALU 路径中,从而加快指令的执行。
定制标准
定制指令的定制标准,包括:组合定制指令、多周期或多循环定制指令、扩展定制指令及内部寄存器文件定制指令等。
组合定制指令
组合定制指令即是由两个输入产生一个新的结果,它的端口名称必须完全匹配。
CRC定制指令
为了加速CRC校验,给出CRC定制指令。CRC16-CCITT定制指令要求在每个计算开始时,预先设置为0xFFFF。因为使用Data B的输入选择运行或加载预先设计,所以将占用一个时钟周期。
定制数据流从外设
定制数据流从外设的目的,是令它与其他慢的外围设备一起使用DMA,此时,需要增加3个输出给Avalon从设备。对应的三个信号分别是:data available, 表示外围设备具有有用的数据,可提供DMA或者其他的控制机制进行读取,如,有数据在接受缓存或寄存器中;ready for data,表示外围设备能够获得DMA或者其他控制机制写入的数据,如,发送缓存等;end of packet,表示结束包的传输,此时DMA能够被随意的设置以中断传输。
定制主外设
定制主外设可以使 DMA 功能一体化,其传输是在主机与Avalon之间进行,而非主机与从机之间。主外设读传输将产生addr、be及read信号,当waitrequest='0'时读入数据,而后停止转移。
硬件配置
共有两类硬件配置形式:安全镜像及用户镜像。 MAX EPM7128 可由Flash配置FPGA,在上电或者复位时,MAX加载用户镜像到FPGA,如果加载失败,MAX器件将加载安全模式。
当 使用Flash作为程序存储器,运行程序时会比较缓慢,因此Nois II IDE会自动把程序的代码拷贝到器件中。对于用户自己设计的电路板,必须生成相应的Flash编程器。
Nois II Flash 编程器
Nois II Flash编程器设计包含:Nois II CPU、JTAG UART串口通讯、有效的串行存储器接口、三态桥及兼容CFI Flash的接口等。其中,Flash 内容包含:FPGA 硬件配置镜像、软件内容及判决器内容等。 Nois II Flash 编程器的命令行工具,包含:elf2flash、 sof2flash、bin2flash及nios2-flash-programmer 等。
Flash 编程器设计
对于用户设计的电路板,要使用mk_target_board 设置信息导入 SOPC Builder,规定Flash 器件的数目并提供时钟频率;而后,基于由上述脚本生成的.PTF,创建Flash编程设计;最后,生成Flash设计的.SOF文件。
用户对自己的设计板需设计一个 Flash 编程器后,才能对Flash 进行编程。
|