采用Nios定制指令的嵌入式系统优化设计_第1页
采用Nios定制指令的嵌入式系统优化设计_第2页
采用Nios定制指令的嵌入式系统优化设计_第3页
采用Nios定制指令的嵌入式系统优化设计_第4页
采用Nios定制指令的嵌入式系统优化设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、采用Nios定制指令的嵌入式系统优化设计                摘要:Altera公司的Nios软核处理器以其低成本,设计灵活等特点,在嵌入式应用领域得到广泛的应用。采用Nios处理器的定制指令,可以把用户自定义的功能直接添加到Nios CPU的算术逻辑单元中,加快专项任务的执行,以达到优化目的。本文在阐述Nios定制指令设计的基础上,给出相应的设计例子说明。      

2、;  关键词:Nios软核 定制指令 嵌入式处理器MP3    引言    Nios处理器是Altera公司推出的一个32/16位精简指令信处理器软核。在Altera公司推出的软件SOPC中加载Nios核 和相应的外围接口以及与定义相应的自定义指令,然后对设计进行综合,下载到FPGA中就可以方便地一个具有特定功能的嵌入式处理器。这种设计思路增加了系统设计的灵活性,加快系统运行速度,缩短产品研发和上市时间。    由硬件实现复杂的算法通常比软件实现更高效。利用Alte

3、ra的Niso嵌入式处理器的定制指令,可以把用户自定义的功能直接添加到Niso CPU的算术逻辑单元(ALU)中(见图1),来加快专项任务的执行,从而达到系统优化的目的。因此,设计者可以针对关键的内部循环和耗时算法,创建Nios嵌入式处理器的定制指令,把复杂的顺序指令简化为硬件实现的单指令,这样就能够大大提高系统性能。例如,Nios CPU执行浮点乘法运算要2800多个时钟周期;而浮点乘法的定制指令采用了浮点单元(FPU),执行只需19个时钟周期。    1 定制指令    定制指令为Nios处理器的算术逻辑单元增

4、加了定制逻辑,设计者通过定制指令,用快速高效的定制逻辑块替代复杂耗时的软件程序。在一个CPU中,可以运行多达五个组合或时序定制模块,还可以访问Nios系统模块外的存储器和/或逻辑。定制逻辑模块在两个寄存器Ra和Rb内容的基础上执行用户定义的操作,结果存放在寄存器Ra中。这些定制逻辑模块的功能只受限于器件内逻辑单元(LE)和设计得的想象力。    定制硬件模块能够通过Nios嵌入式处理器指令集中的五个用户定义操作码来访问。SOPC Builder在生成系统期间会为任何定制指令创建宏,通过这些自动产生的C和汇编语言宏就可以方便地访问自定义指令操作码。

5、0;   2 实现定制指令    以Altera的Nios2.0版嵌入式处理器为例实现定制指令,同时点击Custom Instructions标签创建或编辑Nios CPU,如图2。    Custom Instruction标签是系统设计都 连接定制逻辑和Nios CPU的ALU的界面。首先,选择定制指令的操作码,有USR0USR4五个操作码可供使用。然后,导入和扫描作为定制指令的HDL文件。Design Import Wizard扫描顶层模块的端口,进行合适连接。Design Im

6、port Wizard可以接受以下类型的文件:VerilogHDL/VHDL/EDIF/VQM以接受以下类型的文件:Verilog HDL、VHDL、EDIF、VQM和Altera QuartusII原理图。导入设计文件之后,分配定制指令所需的CPU时钟周期数目和定制指令名。    在系统生成期间,SOPC Builder工具用作ALU一部分的定制逻辑来创建Nios CPU,受所选的操作码控制软件开发包用定制指令名创建在C/C+和汇编语言中使用的软件宏。这些在定制软件开发包ince下。图2 定制指令设计界面    设计者通过

7、创建的软件宏访问定制指令。在C/C+中,宏就像函数调用一样使用。如果使用前缀端口,就要用前缀创建不同的宏。例如,为浮点单元(FPU)创建两个C/C+宏。例如,为浮点单元(FPU)创建两个C/C+宏是:    result=nm_fpu(data,datb); /不使用前缀    result=nm_fpu_pfx(prefix,data,data); /使用前缀    在汇编语言中,宏调用USR操作码,按标准汇指令一样使用。如果使用前缀,那么在宏之前必须有一个PFX指令。有关

8、用户定义操作码(USR0USR4)的详细资料可参Nios Software Development Reference Manual。    3 MP3播放器的定制指令设计    以MP3播放器设计为例,采用定制指令对设计进行优化。该设计通过增加两条定制指令,就能使系统执行性能提高大约3倍。图为该MP3系统设计框图。    (1)MP3解码器    在大多数MP3播放器中,处理器是用来管理函数和传输数据的。专用MP3解码器ASIC可用于

9、执行密集计算量的解码和传数据给音频器件。本例中,Altera的Nios处理器用于完成处理控制信号,传输数据和进行MP3解码。通常,MP3解码器流程如下:    通过IDE接口从CF(CompactFlash controler)中读取MP3数据;    将MP3数据存入SPAM中缓存;    对MP3数据解码;    将MP3边带合成到脉冲编码调制(PCM)数据;    把PCM数据传给脉宽调制器

10、PWM。    此外,播放器采用MPEG Audio Decoder(MAD)进行MP3解码,是基于以下方面:    100%定点(整数)计算;    网上有可利用的源码;    在GNU Ceneral Public License(GPL)下发布。    (2)定制指令    我们知道在执行MP3解码的过程中,大量时间花费在边带的合成上。因此,优化Altera M

11、P3的重点就落在函数mad_synth_frame上。我们可通过使用定制指令f_mul和DCT32来优化该函数。    F_mul    F_mul和mad_f_mul是MAD使用的宏,用整数乘法来模拟浮点乘法。定义如下:    #define mad_f_mul(x,y)    (x)+0x00002000L)>>14)×(y)+0x00002000L)>>14)   &

12、#160;#define f_mul(x,y)    (x)|0x0001FFFFL) (y)|0x0001FFFFL)    这些函数完成的功能是一组易被硬件实现的操作,包括移位、加法、乘法和逻辑或运算。在Altera MP3的优化设计中,用硬件定制指令f_mul执行原先用软件宏;还可利用前缀选项,把两个宏合为一个单定制指令。以下就是用Altera的定制指令定义(f_mul和mad_f_mul):    #define f_mul(x,y)nm_fmul(x),(y);&#

13、160;   #define mad_f_mul(x,y)nm_fmul_pfx(1,(x),(y);    DCT32    在MP3解码中,DCT32完成离散余弦变换。MAD软件用优化过的DVT来增强性能。从软件角度来看,该优化算法比起一般DCT对提高性能具有重大意义。因为标准DCT需要1024个乘法,而用优化后的DCT只需80个乘法。图4 DCT32与mad_synth_frame软件流程    DCT32定制指令所用硬件由Celoxica提供,它是

14、可重配置计算方案提供商,采用了基于HandelC的设计工具。Altera的DCT32定制指令按以下特点设计:    |可以存储32位输入和32位输出;    在DCT计算时,能独立于CPU工作;    用前缀指令接受命令    装入/卸载    启动DCT计算    轮询是否完成。    因为定制指令可以轮询,在DCT输出前其它代码可以并行运行。当需要DCT输出时,定制指令被查询,看是否已完成计算。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论