一种基于NiosⅡ的可重构DSP系统设计

发布者:breakthrough2最新更新时间:2015-01-17 关键字:系统 手机看文章 扫描二维码
随时随地手机看文章
  为了解决传统所面临的速度低、硬件结构不可重构、开发升级周期长和不可移植等问题,本文应用Altera公司推出的嵌入式软核处理器,提出了一种具有常规系统功能SOPC解决方案。由于可编程的核含有许多可配置的接口模块,用户可根据设计要求,利用QuartusII和Builder对NiosII及其外围系统进行构建。用户还可通过Matlab和 Builder,或直接用VHDL等硬件描述语言,为NiosII嵌入式处理器设计各类硬件模块,并以指令的形式加入到NiosII的指令系统中,使其成为NiosII系统的一个接口设备,与整个片内嵌入式系统融为一体,而不是直接下载到FPGA中生成庞大的硬件系统。正是NiosII所具有的这些重要特点,使得可重构单片DSP系统的设计成为可能。

  Nios II嵌入式系统设计流程

  NiosII嵌入式处理器专为单芯片可编程系统设计而优化,是一种面向用户、可以灵活定制的通用RISC(精简指令集)嵌入式CPU。它采用Avalon总线结构通信接口,带有增强的内存、调试和软件功能,可采用汇编或C、C++等进行程序优化开发。NiosII具有32位指令集、32位数据通道和可配置的指令及数据缓冲。与普通嵌入式CPU系统的特性不同,其外设可以灵活选择或增删,可以自定制用户逻辑为外设,可以允许用户定制自己的指令集。由硬件模块构成的自定制指令可通过硬件算法操作来完成复杂的软件处理任务,也能访问存储器或NiosII系统外的接口逻辑。设计者可以使用NiosII及外部的Flash、SRAM等,在FPGA上构成一个嵌入式处理器系统。

  完整的基于NiosII的SOPC系统是一个软硬件复合的系统,因此在设计时可分为硬件和软件两部分。NiosII的硬件设计是为了定制合适的CPU和外设,在Buider和QuartusII中完成。在这里可以灵活定制NiosII CPU的许多特性甚至指令,可使用Altera公司提供的大量IP核来加快开发NiosII外设的速度,提高外设性能,也可以使用第三方的IP核或VHDL来自行定制外设。完成NiosII的硬件开发后,Buider可自动生成与自定义的NiosII CPU和外设系统、存储器、外设地址映射等相应的软件开发包SDK,在生成的SDK基础上,进入软件开发流程。用户可使用汇编或C,甚至C++来进行嵌入式程序设计,使用GNU工具或其它第三方工具进行程序的编译连接以及调试。

  单片DSP系统构架

  本系统为单片DSP可重构系统,能完成数字信号处理方面各功能的操作。其中NiosII软件处理器主要完成人机交互和控制作用;FPGA的逻辑模块从NiosII处理器接收控制信号和数据后,完成相应的硬件功能。系统框图如图1所示,除了软核处理器NiosII外,存储器、I/O接口以及FIR数字滤波器、IIR数字滤波器、DDS等应用模块等均可作为外设嵌入在FPGA中。这样,整个DSP的数字信号处理部分全部集成在FPGA器件中,各模块受NiosII处理器的控制。NiosII处理器系统中有Avalon总线,它规定了控制器与从属模块间的端口连接以及模块间通信的时序。数字频率合成器(DDS)通过Avalon总线与Nios II处理器相连,能很方便地完成控制及数据传送。

  在本系统中,FPGA采用Cyclone EPIC12,它有12060个逻辑单元(LE)和2个锁相环(PLL),提供6个输出和层次时钟结构以及复杂设计的时钟管理电路。整个系统在NiosII处理器的控制下,可实现FIR、IIR数字滤波、快速傅立叶变换(FFT)算法、编/解码等功能,系统还能进行DDS功能模块设计,并构成具有数控频率调制、正交载波调制解调、数控相位调制等功能的信号发生器。系统中各功能模块的选择以及输出信号调制方式和频率的选择均可通过外接的按键自由选择。

  系统硬件设计

  系统的硬件系统包括FPGA、存储器和外围元器件3个部分。FPGA部分需要在SOPC Buider中设计,包含NiosII CPU核、内部时钟、Avalon总线控制器、连接NiosII核的下载和调试程序的JTAG_UART通信模块、DDS接口模块及DDS模块、FIR、IIR数字滤波器接口模块及功能模块、编/解码模块及接口模块、flash存储器模块等。各外设模块核通过在片上的Avalon总线与NiosII相连。为使具有DSP处理器功能的NiosII系统正常工作,在FPGA外围接有一些控制键,以调度各模块的应用。

  建立Nios II嵌入式处理器系统

  首先利用QuartusII建立项目工程,选用的目标器件为Cyclone EPIC12,用SOPC Buider创建NiosII组件模型,生成硬件描述文件,锁定引脚后进行综合与适配,生成NiosII硬件系统下载文件。然后建立NiosII嵌入式系统,从SOPC Buider组件栏中加入需要的各种组件:如NiosIICPU Core、定时器Timer、JTAG_UART、Avalon三态总线桥、键输入I/O口、Flash等。另外,为了实现NiosII处理器对EPCS Flash存储器的读写访问,还要加入一个EPCS Serial Flash Controller组件,通过此控制器将用于FPGA配置的SOF文件和CPU运行的软件一并存于EPCS器件中,以便大大简化硬件系统组成结构。为了保证所有组件的地址安排合法,要对各组件地址进行自动分配,最后进行全程编译,即进行分析、综合、适配和输出文件装配,以完成NiosII硬件系统的设计。

  在NiosII硬件系统设计完成后,将配置文件下载到指定的FPGA中。通过SOPC Buider软件窗口,可进入NiosII DSK软件开发环境进行软件设计。

  DSP处理器功能系统的建立

  使用DSP Buider在FPGA上进行DSP模块的设计,可实现高速DSP处理。但是,在实际应用中,由于DSP处理的算法往往比较复杂,如果单纯使用DSP Buider来实现纯硬件的DSP模块,会耗费过多的硬件资源,有时也无法完成复杂的运算。在DSP算法中反复出现的一些运算,如复数乘法、整数乘法、浮点乘法等,在通用的CPU中都没有专门的相关指令。利用Nios II的自定制指令特性,在系统设计中,可利用MATLAB、DSP Buider或VHDL设计并生成复数乘法器、整数乘法器、浮点乘法器等硬件模块,在QuartusII环境中对上述文件作一些修正后,在SOPC Buider窗口中将它们定制为相应的指令,并可设定或修改执行该指令的时钟周期。在进行DSP算法运算时,可通过汇编或C,甚至C++来运用这些自定义指令进行嵌入式程序设计。

  用MATLAB、DSP Buider设计的复数乘法器模型如图2所示,它完成了16位的复数乘法,虚部和实部的位宽都是16位,可以用一个32位的值来表示该复数。在设计中,NiosII为32位数据,正好可以放置2个复数。

  要将这个复数乘法器硬件模块设置成相应的指令,还要进行以下操作:单击图标SignalCompiler对其进行转换,选择器件(用Cyclone)、选择QuartusII综合器,转换后使其生成SOPC Buider的PTF文件。退出MATLAB后,在QuartusII环境中对转换后所生成的复数乘法器的顶层VHDL文件进行修改。在SOPC Buider窗口中双击cpu项,进入指令加入编辑窗;单击Import按钮,进入加入模块文件窗口;单击Add按钮,打开顶层文件;单击Read port-list from files按钮,得到端口加入情况显示窗口;单击Add to System按钮,加入复数乘法器设计模块,将这个硬件模块设置成自定义的复数乘法指令comp。还可以修改该指令的指令周期。单击Generate按钮,进行SOPC生成。

  另外,NiosII的外设是可任意定制的,NiosII系统的所有外设都通过Avalon总线与NiosII CPU相接。Avalon总线是一种协议较为简单的片内总线,NiosII通过Avalon总线与外界进行数据交换。在本系统中,采用Avalon Slave外设方式加入了自定制Avalon总线组件A/D转换接口模块、D/A接口模块,用于控制采样ADC的工作并控制高速DAC的波形数据输出。而自定义的Avalon总线组件DDS模块接口和DSP功能转换控制接口则用于NiosII CPU对DDS模块的控制及通过外部键盘来控制DSP功能的选择。

  系统软件设计

  指令生成并加入总线和各种需要加入的外设组件(如各类接口、flash等)后,对基于NiosII的SOPC系统进行编译并下载到FPGA中。在NiosII的硬件系统生成的同时,SOPC Buider帮助用户生成相应的SDK(软件开发包)。由于在硬件开发中的Nios CPU及其外设构成的系统是自定制的,存储器、外设地址的映射等都各不相同,需要专有的SDK,用户新定制的指令也必须修改原有的编译工具,这些都由SOPC Buider自动生成。

  在生成SDK的基础上,可进入系统软件的设计。在这里,软件的开发设计与通常的嵌入式系统的开发设计相类似,唯一不同点在于这时面对的嵌入式系统是自己定制的、裁剪过的,因此,受到硬件的局限性会小些。可使用汇编、C、C++来进行嵌入式程序设计,使用GNU工具或其它第三方工具进行程序的编译连接以及调试。

  比如,将复数乘法器硬件模块设置成相应的指令后,锁定引脚,全程编译。然后利用QuartusII编辑C程序进行测试。在FPGA中的Nios CPU中运行C程序。测试成功后,在DSP计算中遇到复数乘法就可以运用复数乘法指令。

  DDS模块还是以硬件形式固化在FPGA中,可以根据需要,利用DDS设计出幅度、相位和频率调制器。

  结语

  这种将常用的硬件模块生成指令,软、硬件并存的设计方法在FPGA中可实现较复杂的DSP运算。整个系统除了ADC、DAC和控制选择键盘外,都可在1片FPGA可编程芯片中实现。还可通过Avalon总线自定义各种接口模块组件,提高整个DSP系统的灵活性,将软件的灵活性和硬件的高速性予以结合。

关键字:系统 引用地址:一种基于NiosⅡ的可重构DSP系统设计

上一篇:大联大友尚集团推出了TI 全新超低功耗DSP
下一篇:一种基于NiosⅡ的可重构DSP系统设计

推荐阅读最新更新时间:2024-05-02 23:26

SmartARM3250用户文件系统烧写办法
烧写内核和安全文件系统后,在U-Boot下,输入run safemode可进入安全系统,在安全系统下,烧写用户文件系统。 烧写用户文件系统实际上就是将文件系统压缩包rootfs.tar或者rootfs.tar.bz2释放到NAND FLASH分区。 大致流程如下: (1)将NAND FLASH用户文件系统分区MTD4 mount到系统某个目录下,如/mnt目录: (2)将存放rootfs.tar或者rootfs.tar.bz2文件系统档案包的介质(如U盘、SD卡、CF卡或者NFS服务器)挂在到系统另外一个目录,如/tmp目录。 (3)将/tmp目录下的rootfs档案包释放到MTD挂在目录/mnt,等待释放完毕, (4)卸
[单片机]
新兴微型光学手指导航模组的嵌入式系统开发
1  微型光学手指导航模组简介 微型光学手指导航模组,集感应测量光路、微型机械构造和数字/模拟微电子集成电路于一体,是高度微型化的机电一体化人机输入模块,其核心技术是光学手指导航OFN(Optical Finger Navigation),又称为单手指导航SFN(Single Finger Navigation)、光学轨迹板OTP(Optical Track Pad)或光学导航触键ONK(Optical Navigation Key)。不同厂家有不同的称谓,比较公认的是“光学手指导航OFN”。 简单地说,OFN模组就是高度微型化的鼠标。 1.1  工作原理 OFN模组,通常由红外LED光源、遮光触摸面板、光学透镜组
[嵌入式]
基于ADS1298 与FPGA的高性能脑电信号采集系统
脑电信号 (EEG)是一种典型的生物电信号,是大脑皮层脑神经细胞电活动的总体反映,其中包含了大量的生理和病理信息,是临床检测的重要生理参数之一,也是认知科学、脑机接口和警觉度等领域研究的重要手段。由于传统 脑电信号 采集设备都比较庞大,不便于 脑电信号 的适时获取,因此研究便携式脑电信号采集设备具有重要意义。 脑电信号 采集系统 主要包括信号放大与调理、模数转换、信号处理与传输等。由于人体的阻抗高且变化大,脑电信号又很微弱,外部环境的干扰很大,因此脑电信号 采集系统 的放大与调理电路比较复杂,通常要包括高输入阻抗和高共模抑制比的前级放大、带通滤波、工频陷波、多级放大等,导致体积大功耗高。模数转换的精度和速率也决定了脑电信号 采集
[电源管理]
基于ADS1298 与FPGA的高性能脑电信号采集<font color='red'>系统</font>
暑期重磅 | 2022机器人操作系统(ROS)暑期学校暨人工智能与机器人论坛报名开启
2022年机器人操作系统(ROS)暑期学校 暨 中 国人工智能与机器人论坛 报名正式开启 欢迎报名! 精彩日程掠影 人工智能与机器人讲座(8.10-8.11) 8月10日 09:00-9:30 开幕式 9:30-9:40 《ROS传奇》 ——Foote Tully Open Source Robotics Foundation,USA 9:40-10:10 《云原生技术加速机器人应用开发》  ——欧争光 华为云机器人技术专家  10:50-11:20 《聚焦机器人教育,深化ROS国内生态合作》  ——陈鹏 松灵机器人 11:00-11:30 《机器人工具箱
[机器人]
ARM嵌入式汽车节能控制系统的设计
由于各种原因,公交车总是不断重复加速-减速或停车-再加速的过程。 通过加装本节能装置,当汽车需要制动时,在主控单元的控制下,可将汽车行驶时具有的巨大动能通过空气压缩机转化成高压气体的势能并储存起来,从而实现汽车减速或停车。当汽车需要启动或加速时,用储存起来的高压气体势能代替燃油来驱动汽车,从而实现汽车能量的回收再利用,达到节能的效果。同时由于汽车在起动或加速时能耗最大,如果汽车是用燃油驱动,则此时油料燃烧不充分,燃烧效果最差,而且产生的噪音最大。 系统工作原理 本系统主要由三部分组成,即检测部分,控制部分和执行机构。检测部分包括踏板位置传感器、曲轴位置传感器、压缩机活塞位置传感器、汽车运行速度传感器、储气罐压力传感器
[单片机]
ARM嵌入式汽车节能控制<font color='red'>系统</font>的设计
奔驰做了个世界首创的自动代客泊车系统
去机场,最让你苦恼的是什么?那一定是停车了,当你找到停车位的时候,估计飞机都要起飞了,试想一下,如果你把车开到机场,当你停在指定的停放点后,拿上行李后,就可以直接去登机了,车上的自动泊车系统,会使车辆自动停靠到停车位上。 当你下飞机时,使用手机APP,点击车辆可回到停放点,当你去到停车场,就可以直接开车走 梅赛德斯已经和斯图加特机场共同合作开发,将迎来全自动无人驾驶停车场,致力于提供全球首个商业自动代客泊车(AVP)服务 为此,由博世和梅赛德斯-奔驰共同开发的自动代客泊车(AVP)系统准备投入商业运营。新型梅赛德斯-奔驰S级轿车已经做好了准备,使其成为全球首款采用未来基于基础设施的AVP所需技术的量产车。
[汽车电子]
奔驰做了个世界首创的自动代客泊车<font color='red'>系统</font>
电动汽车电驱动系统核心技术是什么
电驱系统主要包含电机、电机控制单元、减速器三部分: 多数时候,用户需求决定了产品技术的演进方向。 人们对动力单元的核心需求无外乎是: ①响应要快,动力要猛; ②效率要高,能耗要省; ③故障率低,皮实耐用,稳定可靠。 更多的潜在需求在于: ①集成度足够高,给车内及前后备箱腾更多空间;②成本合理(最终会反映到车价上);③高转速时不要啸叫吵人; 下图汇总了电车动力单元的核心要素,其实电驱系统的技术和进化都是围绕着这几个方面展开的。 1、电机动力目前已经够用,压榨潜力和必要性不大 在电驱最重要的“动力”属性上,目前大多数的电车都存在动力过剩现象,以36w+的特斯拉 Model3P 为例,加速可以秒掉200w左右的性能油车,3w
[嵌入式]
电动汽车电驱动<font color='red'>系统</font>核心技术是什么
小广播
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


    openresty
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
502 Bad Gateway

502 Bad Gateway


openresty