A. 【正点原子FPGA连载】第一章 Qsys简介-摘自【正点原子】开拓者 Nios II开发指南
第一章 Qsys简介
Qsys是Altera公司开发的一个系统集成工具,现由Intel收购。该工具专为搭建复杂嵌入式系统设计,提供官方IP核调用与自定义IP核功能。通过Qsys,用户可简化系统设计,加速开发进程,降低成本,并针对特定项目需求定制系统。
使用Qsys的意义在于,现实世界中的系统设计通常包含主控制器、存储器、数字信号处理模块及多种通信接口等。利用纯硬件描述语言实现这些复杂的系统,工作量巨大。Qsys通过封装硬件描述语言实现的主控制器、存储器、数字信号处理模块、接口协议等IP核,简化了设计流程,使系统开发更为高效。
Qsys在Quartus II中作为系统集成工具,提供搭建、开发及维护系统的能力。与传统嵌入式开发相比,Qsys提供高度定制化的硬件环境。通过Qsys,用户可以创建包含系统时钟、Nios II处理器、JTAG接口、ROM和RAM的基本嵌入式系统框架。
Nios II处理器是Qsys系统的核心,负责中断管理、地址分配、内存调度等控制任务。通过Avalon总线,Nios II处理器与GPIO(通用输入输出接口)、SDRAM控制器等外设控制器实现通信。这些外设控制器负责与外部设备连接,控制设备行为。
Nios II处理器为32位RISC架构,具有丰富的指令集,包括32位指令大小、32位数据线与地址线、32个通用寄存器等。Nios II处理器提供JTAG接口,支持程序下载与调试。
Qsys设计结合硬件开发与软件开发,使用Quartus II、Qsys、Nios II SBT for Eclipse等软件工具。Quartus II用于建立工程、顶层模块实现逻辑电路,Qsys搭建定制化SOPC系统,Nios II SBT for Eclipse用于编写、编译与调试程序。通过这些工具,实现从硬件设计到软件开发的全面流程,最终将设计映射到FPGA芯片中。
通过本章学习,了解了Nios II开发流程与所使用工具的基本框架。深入理解Qsys设计方法与Nios II嵌入式软件开发精髓,需在后续章节中不断总结、归纳。
B. quartus ii13.1与13.0有什么区别
Altera公司今天宣布发布Quartus® II软件13.1版,通过大幅度优化算法以及增强并行处理,与前一版本相比,编译时间平均缩短了30%,最大达到70%,进一步扩展了在软件效能方面的业界领先优势。软件还包括最新的快速重新编译特性,适用于客户对Altera Stratix® V FPGA设计进行少量源代码改动的情形。采用快速重新编译特性,客户可以重新使用以前的编译结果,从而保持性能,不需要前端设计划分,进一步将编译时间缩短了50%。
软件和IP产品市场主任Alex Grbic评论说:“我们的Quartus II软件一直能够随每一代FPGA产品一起发展,这是源于我们一开始便设计好的优异成熟的软件体系结构。采用Quartus II最新版软件的新功能以及增强特性,我们高端FPGA的编译时间比竞争产品快2倍,性能提高了20%。”
这一最新版还增强了高级设计工具,扩展了Quartus II软件的领先优势,因此,客户提高了效能,受益于Altera器件前沿的功能。Quartus II软件13.1版增强了其Qsys系统集成工具、DSP Builder基于模型的设计环境,以及面向OpenCL™的Altera SDK。
·Altera Qsys系统集成工具自动连接知识产权(IP)功能和子系统,从而显着节省了时间,减轻了FPGA设计工作量。使用Qsys,设计人员能够无缝集成多种业界标准接口,包括,Avalon、ARM® AMBA AXI、APB和AHB接口,加速了系统开发。在Quartus II软件v13.1中,Qsys增强了系统可视化能力,支持同时查看Qsys系统的多个视图,进一步提高了效能。这样,通过在新外设中增加或者连接组件,更容易修改您的系统。
·面向OpenCL的Altera SDK现在全面投产,是业界唯一通过一致性测试的FPGA OpenCL解决方案,符合Khronos集团定义的OpenCL规范。它提供了软件友好的编程环境,在Altera优选电路板合作伙伴计划电路板上使用FPGA,或者使用Altera Cyclone® V SoC开发板时,支持在Altera SoC上设计高性能系统。
·Altera DSP Builder设计工具支持系统开发人员在其数字信号处理(DSP)设计中高效的实现高性能定点和浮点算法。为工程师在设计过程中提供更多的选择,更加灵活的设计,Altera DSP Builder高级模块库现在可以集成到MathWorks HDL Coder中。对快速傅里叶变换(FFT)处理的改进包括运行时长度可变FFT,以及10GHz极高数据速率的超采样FFT,以优异的性能和多种灵活的选择来实现这些通用DSP功能。
Quartus II软件13.1版包括Altera同类最佳的IP,延时降低了70%,资源利用率提高了50%以上,同时保持了客户的性能不变,也保持了最常用和性能最高的IP的吞吐量。这些IP内核包括10G、40G和100G以太网,以及25G至150G Interlaken。
关于Quartus II软件v13.1特性的详细信息,请访问Altera的Quartus II软件新增功能网页。
价格和供货信息
现在可以下载订购版和免费网络版的Quartus II软件v13.1。Altera的软件订购程序将软件产品和维持费用合并在一个年度订购支付中,简化了获取Altera设计软件的过程。Quartus II软件订户可以收到ModelSim®-Altera入门版软件,以及IP基本套装的全部许可,它包括Altera最流行的IP (DSP和存储器)内核。一个节点锁定的PC许可年度软件订购价格为2,995美元,可以通过Altera的eStore购买。
对于一个节点锁定的PC许可,面向OpenCL的SDK年度软件订购的价格是995美元。关于OpenCL的Altera优选电路板合作伙伴计划及其合作伙伴的其他信息,或者希望了解所支持的所有电路板的详细信息,并进行购买,请访问Altera网站的OpenCL部分。
C. Quartus II 软件的基本应用
计算机为开发平台,经过设计输入、仿真、测试和校验,直至达到预期结果。本文使用MathWorks公司的MATLAB软件和Altera公司的FPGA开发软件Quartus II进行FIR滤波器的设计仿真,并给出了设计的一般步骤。该方法能够直观地检验滤波器的设计效果,提高设计效率,缩短设计周期。
1 FIR滤波器原理
1.1 FIR滤波器基本结构
FIR滤波器的数学表达式为 :
式中:N为FIR滤波器的抽头数;x(n)为第n时刻的输入样本;h(i)为FIR滤波器第i级抽头系数。
普通的直接型FIR滤波器结构如图1所示。
在自适应处理、数据通信等领域中往往要求信号在传输过程中不能有明显的相位失真,FIR滤波器可以做到线性相位满足此要求。FIR滤波器实质上是一个分节的延迟线,把每一节的输出加权累加,得到滤波器的输出。对于FIR滤波器的单位脉冲响应h(i)只要满足以下2个条件之一,则为线性相位滤波器。
线性相位的FIR滤波器具有中心对称的特性,其对称中心在N/2处。
1.2 窗函数设计方法
FIR滤波器的设计方法有窗函数法、频率取样法和最优化设计法。其中窗函数法是设计FIR滤波器最简单有效的方法,也是最常用的方法。在本设计中,所用到的滤波器的系数都是借助于窗函数法完成的。窗函数设计法是一种通过截短和计权的方法使无限长非因果序列成为有限长脉冲响应序列的设计方法。利用加窗函数进行截断和平滑,以实现一个物理可实现且具有线性相位的FIR滤波器的设计目的。
FIR滤波器的窗函数法设计过程为:
式中:Hd(ejΩ)为逼近的理想滤波器频率响应;hd(k)为理想滤波器的单位脉冲响应,是无限长序列。
为获取实际应用的FIR滤波,需将hd(k)截断,用有限长的h(k)近似表示,用窗函数可以避免吉布斯现象h(k)=hd(k)ω(k),最后得到实际FIR滤波的频率响应H(ejΩ)。
设计常用的窗函数有矩形窗、汉宁窗、海明窗、凯撒窗等。凯撒窗是一种适应性较强的窗,可同时调整主瓣宽度和旁瓣电平,所以本设计选择凯撒窗实现。
1.3 FPGA设计中的流水线原则
在FPGA设计中,为提高系统的运行速度,而将指令分为几个子操作,每个子操作由不同的单元完成,这样,每一级的电路结构得到简化,从而减少输入到输出间的电路延时,在较小的时钟周期内就能够完成这一级的电路功能。在下一个时钟周期到来时,将前一级的结果锁存为该级电路的输人,这样逐级锁存,由最后一级完成最终结果的输出。也就是说,流水线技术是将待处理的任务分解为相互有关而又相互独立、可以顺序执行的子任务来逐步实现。本设计在处理加法器时,利用对称和流水线技术来提高滤波器的性能。
2 基于计算机辅助的FIR滤波器设计流程
随着DSP技术在FPGA上的应用越来越广泛,FPGA制造商相继推出了一些可以快速简单进行DSP设计的辅助性软件,利用这些软件的结合可以简化FIR滤波器设计。本设计将常用的MATLAB软件和FPGA的设计软件Quartus II结合起来仿真。其设计流程的步骤如下。
1)在MATLAB中进行仿真设计和修改
设计指标为:采样频率1000 Hz,f1=314 Hz,f2=417 Hz,阻带衰减40 dB。通过参数指标确定所需的阶数和参数值,部分程序如下:
wp=0.2*pi; //通带截止频率
W8=0.3*pi; //阻带截止频率
As=40; //最小阻带衰减
tr_width=ws-wp; //带宽
M=ceil((As-7.95)/(14.36*tr-width); //按凯撒窗计算滤波器长度
disp(['order',num2str(M)]);
n=[0:1:M-1];
%beta=0.1102*(As-8.7); //计算beta值(As>50)
beta=0.5842*(A8-21)^0.4+0.07886*(As-21); //(21
<As<50),beta=3.3953
求出窗函数:
w_kai=(kaiser(M,beta))';//求凯撒窗函数
求理想和实际脉冲响应:
hd=ideal_lp(wc,M); //理想脉冲
h=hd.*w_kai; //凯撒窗下实际脉冲
由图2、图3验证技术指标。
如果不满足,则要改变带宽,或改变窗形状重新计算。现在由图可见,满足设计要求。
2)利用Simulink检验滤波效果
Simulink是MATLAB中一个专门用于对动态系统进行建模、仿真和分析的软件包。通过调用模块,可以构成仿真数字滤波器特性的结构框图。输人低频10 Hz和高频600 Hz的两个信号,利用所设计的滤波器进行滤波。建立仿真电路结构,导入前面所设计的FIR滤波器,如图4所示。
通过输入(图5(a))、输出波形(图5(b))的比较可看出,该FIR滤波器可以将高频部分有效的滤除。
3)Quartus II设计及仿真
对MATLAB信号处理工具箱产生的滤波器模型及系数,用Quartus II进行设计仿真。Quartus II软件是Altera公司主推的FPGA设计软件,是集设计输入、编译、综合、仿真、布线、下载于一体的设计软件。由于MATLAB产生的滤波器系数是小数,将其转换为12位二进制系数使用。限于篇幅,采用采样频率 =5 MHz,截止频率fc=1.5 MHz,阶数15,凯撒窗的设计指标。首先建一个block diagram文件通过功能模块的搭建进行滤波器的设计,通过编译综合功能对生成的文件进行编译和综合,然后生成的顶层模块,见图6。
由MATLAB产生的FIR数字滤波器的系数如下:
h[0]=h[15]=0.039907834316444589
h[0]=h[15]=81D=000001010001=51H
h[1]=h[14]=-0.014451669844537473
h[1]=h[14]= -29 D = -000000011101=FE3H
h[2]=h[13]=-0.045307614673700439
h[2]=h[13]=-92 D = -000001011100=FA4H
h[3]=h[12]=0.05598422134210561
h[3]=h[12]=114 D =000001110010=72H
h[4]=h[11]=0.027733961872000723
h[4]=h[11]=56 D =000000111000=38H
h[5]=h[10]=-0.12646776014151861
h[5]=h[10]=-259 D = -000100000011=EFDH
h[6]=h[9]=0.065416521018384063
h[6]=h[9]=133 D =000010000101=85H
h[7]=h[8]=0.51489745091333106
h[7]=h[8]=1054 D =010000011110=41EH
在设计中采用流水线来提高有效的乘法器速度,该部分的VHDL代码如下:
t1<=tap(0)+tap(15);
t2<=tap(1)+tap(14);
……
t8<=tap(7)+tap(8);
t9< = -t2:
t10< = -t3:
……
y<=t1+t9+……+t8
通过Quanus II的波形仿真功能,对输入输出进行波形仿真,对其结果进行定量分析。通过时序分析和功能分析结果,对设计进行进一步的完善,在仿真中,x为输入信号,依次为1,2,4,10,12,得到的输出结果如图7所示。经验证,仿真结果与实际运算结果一致。
3 结束语
本文综合介绍了基于FPGA软件Quartus II和MATLAB的FIR滤波器的设计仿真,将两大软件综合运用后大大缩减了设计研发的时间,在算法结构上利用了流水线等优化方式。在实际应用中,可以通过对滤波器参数的修改,很容易地实现其他各种滤波器的设计,具有一定的工程设计参考价值。