基于FPGA数字信号音频处理
The Digital Signal Processing of audio based on FPGA
摘 要:目前,随着电子技术的快速发展人们对MP3多媒体播放器、DVD音频唱盘、Iphone等的音质、体积、功耗和处理速度有了更多更高要求。因此现在数字音频处理技术已经逐渐取代模拟音频处理技术,并且得到了迅速的普及应用。
音频处理的数字化是利用数字滤波算法对采集的音频信号进行变换处理来实现,对此在本文中介绍了数字滤波器的一些算法。傅里叶变换(DFT)作为其数字信号处理中的基本运算,发挥着重要作用。特别是可快速傅里叶变换换(FFT)算法的提出,减少了当N很大的时候DFT的运算量,使得数字信号处理的实现与应用变得更加容易。由于快速傅里叶变换算法在实际中得到了广泛应用,毕业设计给出了基-2FFT原理、讨论了按时间抽取FFT算法的特点。
本文主要探讨了基于FPGA数字信号音频处理的理论与实现,涉及到了其结构与设计流程、硬件描述语言(VHDL)、Quartus II软件、音频录放、DE2开发板介绍等等。
关键词:音频处理技术、 数字滤波 、算法、FPGA
1
Abstract
At present,with the rapid development of the electronic technology,people have many higher requirements such as sound quality,volume,power waste and processing speed to the MP3 multimedia,DVD audio disc,Iphone and so on.So nowadays,the analog audio processing technology is replaced gradually by the digital audio processing technology,and digital audio processing technology has a chance to become common and widely used.
The audio processing digitization is using the digital filter algorithm to sample.In the part of this passage there are some introduction about the digital filter algorithm. DFT plays an important part in digital signal processing as a basic calculation.Especially,FFT algorithm reduces the calculation quantity when N is a little great ,which makes it much easier for implement and application.As the fast Fourier transform algorithm in practice to a wide range of applications,radix-2 FFT theory has been given out and the characteristic of DIT FFT are discussed in the design of graduation.
The passage mainly probes into the theories and realization of the digital signal processing of audio based on FPGA(Field Programmable Gate Array),including its structure and processing of design.It also contains VHDL,Quartus II software ,audio record and broadcast,introduction of DE2 study board and so on.
Keywords:audio processing technology、digital filter、algorithm、FPGA
2
前言 第一章 绪论
1.1音频处理技术概述
在科技飞速发展的数字化时代,数字音频技术是数字信号处理中应用最为广泛的数字技术之一。同时大规模集成电路VLSI(Large Scale Integrated circuites)的迅猛发展对数字音频技术发展也起到促进作用,芯片集成度越高,VSLI设计技术不断提高使得数字新品技术得到更加广泛的作用。
对音频信号进行数字处理的有关技术,包括模—数和数—模的转化、数据的传输、记录、存储、混合及其他的处理技术等。数字音频技术的主要有点事能提高音频信号的质量,增强抗干扰能力,而且数字音频信号设备使用灵活,便于大规模生产。 1.2 FPGA简介
FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一中半定制电路而实现的,它既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它是当今数字系统设计的主要硬件平台,其主要特点就是完全有用户通过软件进行配置和编程,从而完成某种特定功能,且可以反复擦写。在修改和升级时,不需额外地改变PCB电路板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本,因此获得了广大硬件工程师的青睐。 1.2.1 FPGA结构
FPGA的基本结构由以下几部分构成: 1) 2) 3)
可编程逻辑功能模块CLB(Configurable Logic Block) 可编程输入输出模块IOB(Input/Output Blocks)
可编程内部互联资源PI(Programmable Interconnection) 随着工艺的进步和应用系统的需求,一般在FPGA中还包含以下可选资源:
3
4) 5) 6) 7) 8) 9)
存储器资源(Block RAM和Select RAM) 数字时钟管理单元(DCM分频、倍频、数字延迟) I/O多电平标准兼容(Select I/O) 算数运算单元(乘法器、加法器) 特殊功能模块(MAC等硬件IP核) 微处理器(PPC405等应处理器)
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无需专用的FPGA编辑器,只需用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA使用非常灵活。
与FPGA对应的还有DSP处理器,DSP处理器速度虽然很快,并对许多DSP应用来说很有用,但仍有一些应用要求性能更进一步提升,而FPGA提供了更高的性能。FPGA可以生成一个定制硬件设计,从而控制逻辑能够在硬件中实现,不必再利用精确的时钟周期来实现控制功能。此外,通过裁剪硬件结构,FPGA可以提高额外的性能。如果最重要的设计考虑因素是速度,那么可以在FPGA中设计完全并行的算法处理方案。现在,许多系统已经包含了一个FPGA,用于协议转换、胶合逻辑或一些其它系统功能。如果那个FPGA没有被完全利用,那么把DSP功能加入其中可以为系统节约成本。而且如果标准发生改变,使用FPGA就不会有任何风险。FPGA的配置文件能够像软件那样升级,尽管它们必须被存储在系统的非易失性的存储器中。 1.2.2 FPGA与CPLD
①CPLD是基于ROM结构的下电后代码不丢失;而FPGA是基于RAM结构的,下电后代码丢失,所以FPGA一般必须有一个配置ROM在每次上电时加载代码到RAM
②CPLD的硬件设计比较简单,FPGA 的硬件设计相对复杂些。
③而这制造工艺上的差别也导致了它们内部结构的不同,CPLD的逻辑资源
4
不可能做的太大,而FPGA却能做到数万乃至数百万逻辑门。
④CPLD更适合于一些简单的应用,而FPGA可以做更多更复杂的工作。 1.2.3 FPGA发展前景
目前,FPGA的主要发展动向是:随着大规模现场可编程逻辑器件的发展,系统设计进入“片上可编程系统”(SOPC)的新纪元芯片朝着高密度、低压、低功耗方向挺进;芯片朝着高密度、低功耗、低压等方向前进;国际各大公司都在积极扩充其IP库,以优化的资源更好的满足用户需求,扩大市场,特别是引人注目的FPGA动态可重构技术的开拓,将推动数字系统设计观念的巨大转变。 第二章FPGA架构 2.1 FPGA设计流程 2.1.1 FPGA设计流程
一般来说,完整的FPGA设计流程包括电路设计与输入,功能仿真、综合、综合后仿真、实现、布线后仿真与验证、班级仿真验证与调试等主要步骤。如图2-1所示:
设计输入 HDL语言描述,IP核 模块设计 系统设计规范 系统规范 功能仿真 设计输入文件( .v ,.vhd ) 综合 时序/面积/功耗约束,工艺库 布局布线 I/O指派,布局布线约束 5
时序验证 反标注文件(.sdf) 配置下载
下载位流文件 图2-1 FPGA的设计流程
(1)系统规范
系统规范阶段是整个项目最有创造性的阶段。它描述项目完成的功能,确定设计的总体方案,平衡各个方面的因素,对整个项目有一个初步的规划。在系统设计阶段,根据对设计面积、功耗、I/O和IP核使用等的估算,确定所使用的目标芯片和设计工具。 (2)模块设计
在制定完系统规范后,根据系统功能,采用自顶向下的方法,逐步细化,,将系统划分为可实现的设计模块。这些模块之间存在着一定的层次关系,每个模块完成相对的功能。 (3)设计输入
设计输入是指将模块设计阶段定义好的模块借助于一定的设计输入手段转换为EDA工具能接受的信息格式。目前主要的而设计输入手段有:高级硬件描述语言HDL(包括Verilog/VHDL)和原理图。HDL语言支持不同层次的描述,不依赖于FPGA产家的工艺器件,便于修改。它可以用任意的文本编辑器作为输入平台,在状态机、控制逻辑、总线功能方面较强。原理图输入法具有图形化强、直观等特点。 (4)功能仿真
设计输入后,经HDL编译器检查没有语法错误后,就可以对设计进行验证了。这里的验证是指通过软件验证其功能是否符合有步骤1所制订的规范,称这一阶段的验证为功能仿真或行为仿真。目前,仿真工具比较多,其中Cadence公司的NC-verilog,Synopsys公司的VCS和Mentor公司的Modelsim都是业界广泛应用的仿真工具。
6
(5)综合
综合实际上是根据设计功能和实现该设计的约束条件(如面积、速度、功耗和成本等),将设计描述(如HDL文件,原理图等)变换成满足要求的电路设计方案,该方案必须同时满足预期的功能和约束条件。对于综合来说,满足要求的方案可能有多个,综合其将产生一个最优的或接近最优的结果。因此,综合党的过程也就是设计目标的优化过程,最后获得的结构域综合其的性能有关。这个阶段产生网表,供布局布线使用,网表中包含了目标器件中的逻辑元件和互连的信息。FPGA综合工具有Synopsys公司的Compiler II FPGA,Synplicity公司的Synplify等。 (6)布局布线
这一步骤就是要完成时限方案(网表)到实际目标器件(FPGA)的变换。根据设计者指定的约束条件(如面积、延时、时钟等)目标器件的结构资源和工艺特征,将电路方案中的逻辑元件分解布局,用作拜拓扑器件的连线资源,实现布线连接。在布局布线过程中,时序信息形成产生反标注文件,供给后续的时序仿真使用,同时还产生FPGA配置时需要哦的位流文件。FPGA设计中的布局布线工具主要有FPGA产商提供,种类比较多,我们主要使用Altera公司的Quartus II集成环境中自带的布局布线工具。 (7)时序验证
在布局布线后,提取有关的器件延迟、连线延时等时序参数(这些信息在反标注文件中),在此基础上的仿真称为后仿真,也称时序验证,它是接近真实器件运行的仿真。时序验证的目的是为了检查设计中是否有时序上的违规。FPGA 中同步电路的验证采用静态时序分析实现,异步电路的验证则需要运行特殊仿真激励确认。仿真工具可以用前仿真所用的工具,而静态时序分析工具一般也有各个FPGA产家的FPGA集成环境自带。 (8)配置下载
配置下载是在功能仿真与时序仿真正确的前提下,将布局布线后形成的位流文件通过下载工具下载到具体的额FPGA芯片中,这个过程也叫FPPGA编程(配置)。将位流文件下载到FPGA器件内部后,就可以将FPGA和其他芯片构成的系统进行物理测试,当得到正确的测试结果后就证明了设计的正确性。下载软件也
7
是由各个FPGA产家提供。
2.1.2 自顶向下和自底向上的设计方法学
随着微电子技术的快速发展,深亚微米的工艺可以是一个芯片集成数以千万乃至是亿只的晶体管,单片上就可以实现复杂系统,即所谓的片上系统。在这种情况下,传统的自底向上的设计方法学已经不可能适应现在的设计要求,而自顶向下的设计方法学已经过成为设计界的主流方法学。
在EDA工具出现以前,人们采用自底向上的而设计方法设计集成电路。在这种设计方法学中,功能设计是自顶向下的,即提出所设计电路要完成的功能,然后进行行为级描述,RTL级设计、逻辑设计和版图设计。工具的实现过程则正好相反,从最底层的版图开始,然后是逻辑设计,直到完成所需实现的功能。 这种设计方法的缺点是:效率低,设计周期长,设计质量难以保证,适用于小规模的电路设计。
自顶向下的设计方法学是和EDA工具同步发展起来的额,借用于EDA工具可以实现从高层次到低层次的变换,无论是功能设计和具体实现都是自顶向下。FPGa设计流程就是典型的自顶向下设计方法学的体现。在这个设计流程中,设计人员从制定系统的规范开始,依次进行系统级设计和验证、模块级设计和验证、设计综合和验证、布局布线和时序验证,最终在载体上实现所设计的系统。 自顶向下的设计方法学的优点是显而意见的,在整个设计过程中,借助于EDA仿真工具可以及时发现每个设计环节的错误,进行修正,最大限度地不把错误带入到后续的设计环节中。另外,由于在自顶向下的设计方法学中用的硬件描述语言作为设计输入,改变了传统的电路设方法,是EDA技术的而一次巨大进步。它可以在系统级、行为级、寄存器传输级、逻辑级和开关级等五个不同的抽象层次上描述电路。由于摆脱了门级电路实现细节的束缚,因而设计人员可以把精力集中于系统的设计与实现方案上,一旦方案成熟,那么就可以以较高层次描述的形式输入计算机,由EDA工具自动完成整个设计。这种方法大大缩短了产品的研制周期,极大地提高了设计的效率和产品的可靠性。
目前的FPGA设计一般采用Top-down(自顶向下)的设计方法。先将系统划分为各个功能子模块,在系统级层次上进行行为描述,在对这些子模块进行进一步的行为描述。
8
2.1.3基于IP核的设计
由于芯片的集成度变得越来越高,因而设计的难度也变得越来越大。设计成 本事实上主导了芯片的价格。如何提高设计效率,最大限度缩短设计周期,使产品快速上市,这给设计人员提出了非常高的要求。采用他人的成功设计是解决这个问题的有效方法。
所谓设计重用实际上包含两个方面的内容:设计资料重用和生成可被他人重用的设计资料。前者通常被称为IP重用,而后者则涉及到如何去生成IP核。设计资料内不仅仅包含一些物理功能和技术特征,更重要的是包含了设计者的创新性思维,具有很强的知识内涵。这些资料因而也被称为具有知识产权的内核(Intellectual Property Core),简称IP核,它们通常可以实现比较复杂的功能,且已经经过验证,可以被设计人员直接使用。
一般说来,IP核有三种表现形式:软核(Soft-Core)、固核(Firm-Core)和硬核(Hard-Core)。
(1)软核:它以硬件描述语言Verilog或VHDL语言代码的形式存在,软核功能的验证通常是通过时序模拟。软核不依赖于任何实现工艺或实现技术,具有很大的灵活性。设计者可以方便地将其映射到自己所使用的工艺上去,可适用性很高。
(2)硬核:它以集成电路版图(Layout)的形式提交,并经过实际工艺流片验证。显然,硬核强烈地依赖于某一个特定的实现工艺,而且在具体的物理尺寸,物理形态及性能上具有不可更改性。
(3)固核:处于软核和硬核之间的固核以电路网表(Netlist)的形式提交,并且通常采用硬件进行验证。硬件验证的方式有很多种,比如可以采用可编程器件(如FPGA、CPLD)进行验证,采用硬件仿真器(Hardware Eulator)进行验证等。
不同的FPGA产商在其不同的FPGA系统中都具有嵌入式的IP核,这些核可能是硬核(如锁相环),也可能是可配置的软核。用户可以根据设计的需求,直接使用这些IP核,借助一这些IP核,用户可以加快设计进度,提高设计效率和设计可靠性。 2.2 FPGA开发工具
9
在FPGA的设计中,比较流行事业以下工具: (1) 用Timing Designer画时序图。 (2) 用Ultra Edit进行文本编辑。
(3) 用Modelsim、Verilog-XL等仿真器进行功能仿真/时序仿真。
(4) 用Synplify、Synplify Pro进行逻辑综合,还有另外一些逻辑综合器,
如Leonardo Spectrum、FPGA Express/FPGA compiler等。
(5) 用集成的FPGA产生工具进行布局布线,是旗舰而定。主要有:Altera的
Max+PlusII、QuartusII、Xilinx的Foundation、Alliance、ISE等软件。 2.2 FPGA设计原则
在FPGA设计中,有许多重要的原则和规律可循,掌握这些原则和规律,人们可以设计出许多高性能的电子系统。 (1)硬件原则
硬件原则主要针对HDL代码编写而言。硬件描述语言,它通过 对硬件的抽象,最终实现在芯片内部的实际电路。因此评判一段HDL代码的优劣的最终标准是:其描述并实现的硬件电路的性能(主要是面积和速度)。评价一个涉及到代码水平,主要从设计工程师所构想的硬件实现方案的效率以及合理性来分析。(2)系统原则
一个硬件系统,通过何种方式进行模块划分与任务分配,使用算法和实现功能,以及FPGA的规模故事、数据接口等,具体到FPGA的设计就要求对设计的全局有个宏观的合理安排。一般说来实时性要求高、频率快、功耗小的功能模块适合使用CPLD实现。而FPGA与CPLD相比,更适合实现规模较大、频率较高、寄存器资源使用较多的设计。 (3)面积和速度点的平衡与互换原则
这是在进行FPGA 设计是的一个重要原则。这里“面积”是指一种设计所要消耗的FPGA/CPLD的逻辑资源的数量,对于FPGA可以用所消耗的触发器(FF)和查找表(LUT)来衡量,更一般的衡量方式可以用设计所占用的等价逻辑门数。“速度”是指设计在芯片上稳定运行,所能够达到的最高频率,这个频率由设计的时序状况决定,和设计满足的时钟周期,时钟建立时间(Clock Setup Time),时钟保持时间(Clock Hold Time)等总众多时序特征量密切相关。
10
面积和速度是对立的矛盾体。要求一个设计同时具备运行频率最高而且面积最小是不现实的。科学的设计方法是在满足设计时序要求的前提下,占用最小芯片面积。或者在所规定的面积下,频率更高。这两种目标充分体现了面积和速度的平衡思想。相比之下,满足时序、工作频率的要求更重要,当两者冲突时,采用速度优先的准则。 (4)同步设计原则
采用同步时序设计是FPGA设计的一个重要原则。它可以使讲台时序分析变得简单而且可靠,能有效避免毛刺的影响,是设计更加有效,还可以减小环境对芯片的影响。在遵循这一原则的时候,应尽可能的在设计中使用统一时钟,时钟走全局网络,同时避免使用混合时钟采样数据。 2.3 FPGA开发语言 2.3.1 VHDL简介
硬件描述语言VHDL(Very High Speed Integrated Cicruit Hardware Description Labguage)是一种用于设计电子系统的计算机语言,他用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式。与传统的门级描述方式相比,它更适合与大规模集成电路系统设计。
VHDL是随着可编程逻辑器件(PLD)的发展而发展起来的一种硬件描述语言,在电子工程领域,已成为通用硬件描述语言。VHDL主要用于描述数字系统的结构、行为、功能和接口。处理含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法和一般的计算机高级语言十分相似。利用VHDL语言设计数字系统硬件设计电路,与传统的数字系统硬件设计方法相比,具有以下特点:1.电路设计合理,节约资源;2.采用自顶而下设计方法;3.降低了硬件电路的设计难度;4.VHDL语言可以与工艺无关编程;5.实现方便。 2.3.2 AHDL简介
AHDL(Altera HDL)是ALTERA 公司自主发明的HDL,用于描述数字逻辑的硬件描述语言,类似VHDL和 Verilog HDL ,主要与MAX+PLUSII完美结合,特点是非常易学易用,学过高级语言的人可以在很短的时间内掌握它 。它的缺点是移植性不好,通常只用于ALTERA自己的开发系统。 2.4 FPGA开发环境
11
2.4.1 Quartus II
Quartus II是Altera公司的综合PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入形式,内嵌自由的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。他可以在XP、Linux以及Unix上使用,除了可以使用Tel脚本完成设计流程外,提供了完善的用户图形界面设计方式,具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II支持Altera的IP核,包含了LMP/MegaFunction宏功能模块,使用户可以充分利用成熟的模块,简化设计的复杂性,加快设计速度。对第三方EDA工具的良好支持也是用户可以再设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II通过DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统,它支持Altera的片上可编程(SOPC)卡挨罚,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
MAX+PLUS II作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止对MAX+PLUS II的更新支持,Quartus II与之相比不仅仅是支持齐家安型的丰富和图形界面的改变,集成了SOPC和HardCopy设计流程,并且集成了MAX+PLUSII友好的图形界面及简便的使用方法。 Quartus II作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观一样的接口,越来越受到数字系统设计者的欢迎。图2-3为Quartus II设计界面。
12
图2-3 Quartus II设计主界面
Quartus II具有工作群组的设计环境、EDA整合、先进的编译综合特性和突破临界的验证环境,使设计能完善、有效地支持百万逻辑门的设计和验证。其主要特性如以下:
(1)可利用原理图、结构图、Verilog HDL、VHDL和AHDL硬件描述语言完成逻辑电路的描述和编辑,以及芯片(电路)平面布局布线编辑。
(2)功能强大的逻辑综合工具,并提供了RTL查看器。 (3)完备的电路功能仿真与时序逻辑仿真工具。 (4)具有定时/时序分析与关键路径的延时分析。
(5)LogicLock增量设计方法,在渐进式编译流程中,设计者可建立并优化设计系统,然后添加对原始系统性能影响较小或没有影响的后续模块。
(6)可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析。 (7)支持软件源文件的添加、创建、将它们连接起来生成编程文件。 (8)自动定位编译错误,提供高效的器件编程与验证工具。
(9)引入了功率分析和优化套件PowerPlay技术,可详细估算静态和动态功率。
13
(10)新的实时和时序分析功能,分析控制时钟斜移和数据斜移。 (11)SOPC Builder多时钟域支持。 (12)RTL-to-Gates形式验证。
Altera的 Quartus II课编程逻辑软件属于PLD开发平台。该平台支持一个工作换今后下的设计要求,其中包括支持基于Internet协作设计。Quartus平台与Cadence、Exemplar Logic、Mentor Graphics、Synplicity等EDA 供应商的开发工具箱兼容,改进了软件的Logic Lock模块设计功能,增添了Fast Fit变异选项,推进了网络编辑性能,而且提升了调试能力。 Quartus II提供了完全集成且与电路结构无关的数字逻辑设计环境,为 设计流程的每个阶段提供Quartus II图形用户界面、EDA工具界面以及命令界面。可以在整个流程中使用这些界面中的一个,也可以在设计流程的不同阶段使用不同界面。如图2-2为Quartus II的设计流程:
设计输入 (Design Enity) 综合 ( Synthesis) 功耗分析 (Power Analysis) 布局布线 (Place & Route) 调试 (Debugging) 工程更改管理 时序分析 (Timing Analysis) (Engineering Change Management) 仿真 (Simulation) 时序逼近 (Timing Closure)
编程和配置 (Programming & Configuration) 14
图2-1 Quartus II的设计流程
2.4.2 Nios II IDE
2004年6月,Altera公司推出了Nios II嵌入式处理器。Nios II是基于RISC技术的通用嵌入式处理器芯片内核,它特别为可编程逻辑进行了优化设计,也为SOPC设计了一套综合解决方案。
Nios II系列能够满足任何32位嵌入式微处理器的需要,客户可以将第一代 Nios处理器设计移植到Nios II某种处理器上,Altera将长期支持现有FPGA系列上的第一代Nios处理器。另外,Altera提供了意见是移植选项,可以升级至Nios II系列。Nios II处理器也能够在HardCopy器件中实现,Altera还为基于Nios II处理器的系统提供ASIC的移植方式。
Nios II处理器具有完善的软件开发套件,包括编译器、集成开发环境(IDE)、JTAG调试器、实时操作系统(RTOS)和TCP/IP协议栈。设计者能够用Altera Quartus II开发软件中的SPOC Builder系统开发工具很容易地创建专业的处理器系统,并能够根据系统的需求添加Nios II处理器的数量。
使用Nios II软件开发工具能够为Nios II系统构建软件,即一键式自动生成适用于系统硬件的专业C/C++运行环境。Nios II集成开发环境(IDE)提高了许多软件模块,简化了项目设置。此外,Nios II开发套件包括两个第三实时操作系统(RTOS)——MicroC/OS- II(Micrium),Nucleus Plus(ATI/Mentor)以及供网络应用使用的TCP/IP协议线。 2.5小结
本章介绍了FPGA架构的设计思想,将这些指导性原则应用到实际中。此外,还介绍了FPGA的主要编程语言VHDL和AHDL,以及开发环境Quartus II和Nios II IDE。
第三章 数字信号处理的理论基础 3.1离散傅里叶变换
3.1.1 傅里叶变换的几种形式
傅里叶变换是信号分析和处理的有力工具,在以快速傅里叶算法为代表的一系列有效算法出现后,傅里叶变换不但在信号处理领域起着支柱作用,而且在其
15
它工程领域也获得了广泛应用。
根据信号的连续性、离散性、周期性、非周期性,傅里叶变换可以分为四种不同的形式,形成四种不同的傅里叶变换对,以下分别予以描述。 (1)连续时间非周期信号
连续时间非周期信号x(t)在品与众得到的是连续非周期的频谱密度函X(j),傅里叶变换对如下:
X(j)jtx(t)edt (3-1) 1 x(t)2X(j)ejtd (3-2)
这种类型信号的典型信号有指数衰减信号和搞高斯信号,这种信号的变换称为傅里叶变换。 (2)连续时间周期信号
连续时间周期信号x(t)当满足狄里赫利条件时在品与众的到的是离散非周期的傅里叶级数,傅里叶级数的系数为X(jk),X(jk)为离散非周期函数,x(t)和X(jk)组成的变换对如下:
1X(jk)=
T2T2Tx(t)ejktdt (3-3)
x(t)=
kX(jk)ejk (3-4)
这种类型信号的典型信号有正弦信号和周期方波信号,这种类型信号的傅里叶变换就称为傅里叶级数。 (3)离散时间非周期信号
离散时间非周期信号想x(n)也称为序列,序列的傅里叶变换对如下所示:
X(ejt)x(nT)ejnT (3-5)
12 x(nT)X(ejT)ejnTd (3-6)
2这种信号的傅里叶变换成为离散实践傅里叶变换
16
(4)离散时间周期信号
离散时间周期信号的傅里叶变换有时称为傅里叶级数,但最常被称为离散傅里叶变换。
3.1.2离散傅里叶变换算法
上面讨论的四种傅里叶变换对前三种由于至少在时域或频域是离散的,都不适于在计算机上运行。然而,现实世界中的声音等各种信号大都为模拟信号,要用计算机对这些信号进行数字信号处理,这些信号必须通过采样量化编码变成有限长的数字信号序列。
对于有限长序列,可以得出另外一种傅里叶表示,称为离散傅里叶变换(DFT)。离散傅里叶变换本身是一个序列,而不是一个连续变量的函数,它相应于对信号的傅里叶变换进行频率的等间隔取样的样本。因为存在着DFT的高效算法,作为序列的傅里叶表示,DFT除了在理论上十分重要外,在现实各种数字信号处理算法中还起着核心作用。
离散傅里叶变换描述分析有限长序列,其本质是建立在以时间为自变量的信号与以频率为自变量的频谱函数之间的变换关系,换言之,离散傅里叶变换定义了时域与频域之间大的一种变换或者说是映射。对于DFT时间和频率变量都取离散值。
下面讨论一下有限长序列的离散傅里叶变换。
对于一个长度为N的有限长序列x(n),亦即只在n=0到(n-1)个点上为非零值,其余皆为零,我们可以把它看成周期为N的周期序列x(n)中的一个周期 即
当0nN1 ,x(n)x(n) 当n为其它值时, x(n)=0
其中x(n)rx(nrN) (3-7)
从而有限长序列的傅里叶变换定义为
nk正变换:X(k)DFT[x(n)]WN 0kN1 (3-8)
n0N1 17
1N1nk反变换:x(n)IDFT[X(k)]X(k)WN 0nN1 (3-9)
Nn0nk其中,WNejnk2N
由此可见 ,离散傅里叶变换开辟了频域离散化的道路,是数字信号处理也可以在频域上采用数字运算方法进行,它可以作为一种数学工具来描述离散信号的时域和频域关系,大大增加了数字信号处理的灵活性,特别是它的多种快速算法,使信号的实时处理和设备的简化得以实现,所以离散傅里叶变换不仅在理论上有重要意义,而且在各种数字信号处理中起着核心的作用。 3.2 快速傅里叶变换
对于式(3-8)DFT的直接计算法,若x(n)为复数的话,则计算DFT每一个值就需要N次复数乘法和(N-1)次复数加法。因此计算全部的N个值总共需要N2次复数乘法和N(N-1次复数加法。而每一个复数乘法器需要4次实数乘法和2次实数加法。所以,对于每一个k值,直接计算X(k)就需要4N2次实数乘法和2N(N-1)次实数加法。除了这些运算量外,通用计算机或专用硬件来做DFT数字计算还需要存储和读取N个复数输入序列值想x(n)以及复系数WNnk值的设备。由于计算的总次数以及所需的时间大致上正比于N2,显然当N值很大时直接计算DFT所需要的算术运算的次数就非常大。
可见,离散傅里叶变换算法实现了频域离散化,在数字信号处理中起着极其重要的作用,它可以直接用来分析信号的频谱、计算滤波器频率响应、以及实现信号通过线性协调的卷积运算。但对于N点DFT运算总共需要4N2次实数乘法和2N(N-1)次实数加法,这样庞大的运算使得DFT的实际应用特别是实时处理难以实现,直到1965年库利和图基首次提出了计算DFT的一种快速算法,人们开始认识到DFT运算的一些内在规律,发展和完善了一套高效的运算方法,DFT的运算在实际中才得到广泛的应用。
继CooleyTukey算法以后,SandTukey等快速算法相相继出现,很快形成了一套高效运算方法,这就是现在的通用快速傅里叶变换,简称FFT。这种方法使复数乘法的次数从N2次减少到0.5Nlog2N次。如N=1024时,运算量从1048576
18
次减少到5120次,运算效率提高了204.8倍,为DFT乃至数字信号处理技术的实际应用特别是实时处理创造了良好的条件,大大地推动了数字信号处理技术的发展。所以实际工程中用到的都是DFT的快速算法:快速傅里叶变换(FFT)。 3.2.1 FFT算法基本思想
FFT算法的基本思想:可以将一个长度为N的序列的离散傅里叶变换逐次分解为较短的离散傅里叶变换来计算,这些短序列的DFT可重新组合成原序列的DFT,而总的运算次数却比直接的DFT运算少很多,从而达到提高速度的目的。
快速傅里叶变换就是用WNnk的特性,逐步地将N点序列分解成较短的序列,计算短序列的DFT,然后组合成原序列的DFT,使运算量减少。这种分解基本上可分为两类:一类是将时间序列x(n)进行逐次分解,称为按时间抽取算法(Decimation In Time);另一类将傅里叶变换序列X(k)进行分解,称为按频率抽取算法(Decimation In Frenquency)。本文主要介绍按时间抽取基-2FFT算法。
3.2.2 按时间抽取基-2FFT算法
我们已经知道FFT算法主要是利用WNnk的性质,通过把序列逐渐分解为短序列实现运算量的减少。WNnk的以下三种性质在FFT云算中得到了应用:
nknk性质1:WNnk的周期性 WN WNnknk性质2:WNnk的对称性 (WN )WN性质3:W的可约性 WnkNnkNWmnkmN,WnkNWNnkm
m由于目前FFT比较普遍使用的算法还是基二算法,本节将讨论基二的按时间抽取算法。
基二算法中,序列x(n)的长度N为2的整数次幂,即N2M,其中M为正整数。最初通过将X(n)分解为奇数项序列和偶数项序列的形式使FFT运算为两组。
设:x1x(2r)
x2x(2r1) r0,1,...
N (3-10) 219
设X1(k)为x1(r)的DFT,X2(k)为x2(r)的DFT,利用WNnk的性质可得x(n)的
kDFT运算为:X(k)X1(k)WNX2(k)
k0,1... X(kNk)X1(k)WNX2(k) 2N (3-11) 2 上面式子的运算可用下图的蝶形信号流图符号表示: A B
WNnk rDAWNB rCAWNB
图3.1 时间抽取算法蝶形运算图
由此可见,一个N点DFT分解为两个N/2点的DFT,从而实现了运算量的减少,再经过逐次分解最终分解为2点的DFT,实现了FFT运算。
FFT运算的核心是蝶形运算。通过顺序计算全部蝶形实现FFT算法的实现。下面给出N=8时按时间抽取FFT流图。
图3.2 N=8的时间抽取FFT算法流图
对于序列的长度N2M的FFT,共有M级蝶形,每级由N个蝶形运算组成,
2每个蝶形包括一次复乘、二次复加,则M级运算的运算量为
复数乘法:
NNMlog2N 22复数加法:NMNlog2N
由此可见,FFT算法与直接DFT算法相比运算量大为减少,如N=1024时,
20
DFT所需的复数乘法运算次数为:N21048576次,而FFT所需的复数乘法运算
Nlog2N5120次。可见N=1024时DFT算法的运算量是FFT算法的22运算量的N从而可以看出FFT算法的优1048576/5120204.8倍。
Nlog2N2次数仅为
越性,且当点数N越大越能突出FFT算法的优越性。 3.2.3 按时间抽取FFT算法的特点
图3.2所示流图描述了计算离散傅里叶变换的一种算法。图3.2中特别重要的是连接点的支路和每个之路的传输比。只要节点间的连结和连接的传输比维持不变,则无论在流图中的诸节点如何重新排列,它始终表示相同的计算。由图3.2可以推知按时间抽取算法在运算方式上的特点,主要有以下两种特点;同址运算,到位序规律。以下分别介绍这两种特点。 特点1:同址运算
由图3.2看出,对于长度为N的序列,每一级计算均需要一组N个复数,并通过图3.1形式的基本蝶形它们变换为下一组的N个复数,这种过程重复log2N次,最后得到所要求的离散傅里叶变换。挡实现图3.2中描述的运算时,我们可以想象使用两列(复数的)存贮寄存器,一列存贮要计算的数,另一列存贮计算中要用到的数据。例如,当计算图3.2中的第一列时,第一组存贮寄存器应当存放输入数据,而第二组存贮寄存器应当存放第一级算出的结果。把第m级计算得出的复数序列记作Xo[n]。对于第m级计算,可以认为Xm1[n]是输入列,Xm[n]是输出列。这样,对于图3.2中所示的N=8的情况,有
Xo[0]x(0) X0[1]x[4] Xo[2]x[2]
Xo[3]x[6] (3-12)
Xo[4]x[1] Xo[5]x[5]
21
Xo[6]x[3] Xo[7]x[7]
利用这种表示方法,可将图3.1中蝶形计算的输入和输出标记为图3.3所示的那样,并有相应的方程
nkXm[p]Xm1[p]WNXm1[q] (3-13a) nkXm[q]Xm1[p]WNXm1[q] (3-13b)
在式(3-11)中。P,q和r从一级到另一级是不同的,从图3.2和图3.3中可以清楚地看出,要计算第m列的p和q位置上的复数节点值,只需要第(m-1)列在p和q位置上的复数节点值。因此,若将Xm[p]和Xm[q]分别存放在原存放
Xm1[p]和Xm1[q]的同一存贮寄存器中,则实现全部计算实际上只需要一列存贮
N个复数寄存器。这种计算通常称为同址计算。
由此可见,采用同址运算只需N个存储单元,大大节省了存储单元,从而降低了设计成本。 特点2:倒位序规律
为了实现同址计算,输入序列不能按照原来的先后顺序存贮(或至少不能这样读取),而应如图3-2的流图那样,实际上,这种输入数据存贮和读取的顺序称为倒位序。我们注意到,对于已经讨论过的8点流图,只需要三位二进制码来标注整个数据。如果用二进制形式写出式(3-10)中的标号,就得到如下一组式子:
Xo[000]x[100] Xo[001]x[100] Xo[010]x[010] Xo[011]x[011]
] (3-14) Xo[100]x[001Xo[101]x[101] Xo[110]Xo[011]
22
Xo[111]x[111]
若(n2,n1,n0)为序列x[n]中标号的二进制表示,则序列值x[n2,n1,n0]存放在数列
Xo[n0,n1,n2]的位置上。也就是说,要确定x[n2,n1,n0]在输入序列中的位置,我们必须将标号n的位置颠倒。
表3.1给出了N=8时的自然顺序二进制数以及相应的倒位序二进制数。
表 3.1 码位的倒位序(N=8)
自然系数(n) 0 1 2 3 4 5 6 7 二进制码 000 001 010 011 100 101 110 111 倒位序二进制码 000 100 101 110 001 101 011 111 倒位序数 0 4 2 6 1 5 3 7 实际运算中,总是先按自然顺序将输入序列存入存储单元,要实现FFT算法,首先将按自然顺序存放的序列经变址运算变换得到倒位序的排列。 第四章 数字滤波器的理论基础 4.1数字滤波器介绍
滤波器是指用来对输入信号进行滤波的硬件和软件。模拟滤波器一般利用RLC元器件和运算放大器实现,而数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比率或者滤除某些频率成分的器件。数字滤波器一般可用两种方法实现:一种是根据描述的数字滤波器的数学模型或信号流通,用数字硬件装配成一台专门的设备,构成专用的信号处理机,这就是硬件实现方式。在硬件实现方式中,是以数字组件如延器、加法器、和乘法器作为基本部件构成专用的数字信号处理系统。在软件实现方式中,它是借助于通用计算机机器语言、汇编语言或高级语言程序来做数字滤波器的运算过程。
23
数字滤波器具有比模拟滤波器精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配以及实现模拟滤波器无法实现的特殊功能等。数字滤波器可以满足滤波器对幅度和相位特性的严格要求,避免模拟滤波器无法克服的电压漂移、温度漂移和噪声等问题。
数字滤波器的设计与实现,通常按下述步骤进行:首先,根据不同用途提出数字滤波器的技术指标;然后,设计一个稳定的、因果的数学模型H(z)来逼近所要求的技术指标;最后,设计专用的数字硬件来实现这个数学模型,或者用通用的电子计算机运行软件予以实现。 4.2 数字滤波器的分类
现在,更多地是利用数字滤波器代替模拟滤波器作为选择性滤波器。数字滤波器是利用采样以及量化过的信号,但就幅频与相频的概念而言,仍是以模拟滤波器为基础的。
设数字滤波器的传递函数为H(z),则可以表示为
b0b1z1...bNzN H(z) (4.1) 1M1a1z...aMz 式中,z是z变换的变量,并取H(z)的分子与分母的系数全部为实数。 分析(4.1)式可知,只要分母多项式ai(i=1,2,...,M)中有一个不为0,滤波器的内部就存在反馈环。这种内部有反馈环的滤波器称为递归滤波器。相反,所有系数ai(i=1,2,...,M)都为0的滤波器称为非递归滤波器。由于非递归滤波器的内部没有反馈环,所以这种滤波器总是稳定的。
数字滤波器从功能上分类:可分为低通滤波器、高通滤波器、带通滤波器、带阻滤波器。
从滤波器的网络结构或者从单位脉冲响应分类;可分为FIR数字滤波器和IIR数字滤波器两大类。由有限长脉冲响应所表示的数字滤波器被称为有限脉冲响应(Finite Impulse Response,FIR)滤波器;由无限脉冲响应所表示的数字滤波器则称为无限脉冲响应(Infinte Impluse Responsse,IIR)滤波器。它们的函数分别为:
24
H(z)h(n)zn (4.2)
n0N1上式(3.2)中的H(z)称为N阶FIR滤波器函数
H(z)bzrr0Nk1Mr (4.3)
1akzk上式(3.3)中的H(z)称为N阶IIR滤波器函数 4.3 FIR算法分析
本节首先介绍了FIR的理论及设计的基本方法,接着从各个方面对FIR和IIR进行了综合比较。重点阐述了FIR的算法和改进思想。 3.3.1 FIR滤波器理论
最为普通的数字滤波器是线性时不变(Linear Time-Invariant,LTI)滤波器。假设LTI数字滤波器的输入为x(n),输出为y(n),在n=0以前 都处于零初始状态,则数字滤波器的输入输出序列的关系可以用输入与其脉冲响应的卷积来表示:y(n)=h(n)*x(n)=h(k)x(nk)x(k)h(nk) (4.4)
K0K0N1N1式(4.4)h(n) 中 为单位脉冲向应。
由滤波器的输入输出线性卷积表示公式(3.4)可以看到,要实现这个算法,需要N次的乘法和N-1次的加法。图3-1说明了传统的MAC FIR的计算过程,如图所示,至少需要一个硬件核一个定点或者浮点加法器来实现这个功能。虽然占用的资源很少,但是对于音频处理而言,还是有两个重要的缺点:其一这种结构的FIR滤波器每次都要在多个时钟周期下才有输出,时钟周期的个数受滤波器阶数的影响。基于乘法器结构的FIR设计中乘法运算系数总是一个一个依次相乘的,也就是说有多少阶的FIR滤波器,就需要多少次的乘法运算。在乘累加结构中由于累加次数与FIR阶数成线性关系,即使是使用多时钟控制,内部时钟周期还收运算速度的影响,处理速度慢,只能用于对处理速度要求低的系统;第二由于音频处理芯片上的而大部分面积,消耗了大部分功率。而不适用乘法器的结构将会
25
节约客可观的芯片面积和功耗,更能实现小型化。 x(n-1) ........x(1) x(0) 乘法器 累 加 器+ 寄 存 器 字移寄存器 F(0) F(1). ........F(n-1 图4-1 传统结构的MAC FIR
其中从f[0]≠0一直到f[N-1]≠0均是滤波器的N阶的系数,同时也对应于FIR的脉冲响应。对于LTI系统可以更为方便地将上式表示为z域的形式:
Y(z)=F(z)X(z)
其中F(z)是FIR的传递函数,其z域内的形式如下:
F(z)=f[k]zk
k0N1图4-2给出了N阶LTI型FIR滤波器的图解。可以看出FIR滤波器是有一个“抽头延迟线”加法器和乘法器的集合构成的。传给每个乘法器的操作数就是一个FIR系数,显然也可以称作“抽头权重”。过去也有人将FIR滤波器称为“横向滤波器”,就是说它的“抽头延时线”结构。
X[n] f(0) f[1] f[2] f[N-1] z1 z1 ......... z1
图4.2 直接行形式的FIR滤波器
多项式F(z)的根确定了滤波器的零点。仅有零点存在也就是FIR经常被称作“全零点滤波器”的原因。
26
+ + ......... +
4.4 FIR滤波器与IIR滤波器比较
FIR滤波器和IIR滤波器广泛应用与于数字信号处理系统中,两类数字滤波器各有特点。IIR滤波器的主要优点有:可以利用一些现成的公式和系数表设计各类选聘滤波器,通常只要将技术指标带入设计方程组就可以设计出原型滤波器,然后在利用响应的变换公式求得所要求的滤波器系统函数的系数,因此设计方法比较简单。在满足一定技术要求和频率响应的情况下,IIR滤波器设计成具有递归运算的环节,它的阶次一般比FIR滤波器低,所用存储单元少,滤波器体积也小。IIR滤波器的缺点是只能设计出有限频段的低通、高通、带通和带阻等选频滤波器,除幅频特性能满足技术要求外,他们的相频特性往往是非线性的,这就会是信号会产生失真。由于IIR滤波器采用递归型结构,系统存在极点,因此设计系统函数时,必须把所有的极点置于单位圆内,否则系统不稳定,且有限字长效应带来的运算误差,有时会使系统产生寄生振荡。
与IIR滤波器相比,FIR滤波器的优点:可以设计出具有线性相位的滤波器,从而保证信号在传输过程中不会产生失真。由于FIR滤波器没有递归运算,所以不论在理论上霍实际应用中,有限字长效应带来的运算差不会导致系统部稳定,只要经过一段的延时,任何非因果有限序列都能变成因果的有限长序列,因而能用因果系统来实现。FIR滤波器由于单位脉冲响应是有限长的,因而可用快速FFT算法来实现过滤信号,课大大提高运算效率。但是,FIR滤波器也存在其缺点:虽然课采用加窗方法或频率取样等简单方法设计FIR滤波器,但往往在过渡带和阻带衰减上难以满足要求,因此不得不采用多次迭代或借组计算机辅助设计,从而使设计过程变得复杂。在相同的频率特性情况下,FIR滤波器阶次比较高,所需的存储单元多,从而增加了硬件设计成本。 第五章 基于FPGA的语音录制与回放系统的设计
该设计运用SOPC技术,实现嵌入式数字化语音录制与回放。其中,介绍了在FPGA上构建WM8731的I2C总线,以及数字化语音在SRAM中的存储,并利用软件对所采集的语音数据进行仿真。 5.1系统总体设计方案
系统以Altera公司的FPGA芯片(Cyclone II系列)EP2C35F672C6NK为平台,结合音频编/解码芯片WM8731实现语音录制与回放。该FPGA芯片具有丰富的片
27
内资源,大量的逻辑宏单元和多个硬件乘法器,大量的自定义I/O接口,此外还有4个锁相环,为系统提供实时时钟。设计中充分利用了FPGA的高速并行和Avalon总线自定义硬件外设的优势,从而构建了一个高度集成、高性能的系统。
语音通过话筒输入,由音频编/解码芯片以8kHz的A/D采样率转换成16位PCM码缓存。此外,为确保采集的语音数据不丢失,先将语音存储在SRAM中,再作后续处理。整体系统框架如图5.1所示: FPGA EP2C35F672C6NK
I 2C 总线 WM8731 语音 模拟音频输入 编/解码芯片 模块 语音信号输出 Nios软核 AVALON BUS 用户自定义数 据处理接口 SRAM
图5.1 系统总体设计框架
5.2 芯片工作原理
音频编/解码芯片WM8731上电后必须将工作模式设置在系统要求的状态下,因此上电需要用VERILOGHDL编写程序模块对芯片的工作模式进行设置。该语音编/解码芯片有多种工作模式,A/D变换后,语音的采样频率与采样位宽都需要根据系统的具体要求,合理配置。语音芯片的配置时序为I2C模式,芯片接口为主模式,即由WM8731提供位时钟,A/D转换和D/A转换的左、右声道控制相位时钟,以及转换后的数据PCM码输送给FPGA处理器。以下为芯片配置字列表,WM8731内部控制字寄存器有16个,在芯片初始化时,在制作ROM表格中完成。相应的程序设置如下:
SET_LIN_L:LUT_DATA_<=16'h001A;//线入左声道控制 SET_LIN_R:LUT_DATA_<=16'h021A;//线入右声道控制 SET_HEAD_L:LUT_DATA<=16'h047B; SET_HEAD_R:LUT_DATA<=16'h067B;
A_PATH_CTRL:LUT_DATA<=16'h0814; //16’h08F8; D_PATH_CTRL:LUT_DATA<=16'h0A06; //16’h0A06;
28
POWER_ON:LUT_DATA<=16'h0C00; SET_FORMAT:LUT_DATA<=16'h0E01; SAMPLE_CTRL:LUT_DATA<=16'h100E; SET_ACTIVE:LUT_DATA<=16'H1201; 5.3 语音采集模块
系统通过语音采集模块将语音芯片采集的声音数据串/并转换为16位PCM码,声音数据传送至S-RAM存储器内保存,这里设置了4s录音时间,用户1次输入3个孤立词(如数字),48KB32KB,考虑到32KB的原始数据需要预处理、FIR滤波和归一化。断点检测,所有处理后的数据仍然存入后续的SRAM地址中。检测出的孤立词分别存入首地址后面。 5.3.1语音采集实时采样
锁相环PLL给予WM8731工作在18.4MHz时钟频率下,通过I2C总线控制器设置WM8731工作在8kHz的采样频率下。下图5.2为嵌入式逻辑分析仪(SignalII LogicAnalyzer)下语音采集控制器的采样图。
16个语音采样位时钟 预留三个扩展时钟
图
5.2 语音采集控制器的采样图
上图为实时采集图,测试人现场读入语音数据,模块实时进行语音采集回放。从图中可见,左对齐语音采集过程一共有19个脉冲,其中前16个脉冲为有效语音数据提取脉冲,后3个脉冲为将来处理扩展预留。有效语音提取出来之后便存入SRAM中。该模块通过计数器,从启动录音开始,自动录制4s的语音信号。 5.3.2语音录制回放
经WM8731采集的语音信号转换并存储于SRAM,然后用SRAM中的数据将SRAM的语音数据导出。此处可以用Matlab软件提取FPGA实时采样、对设计效果仿真。5.4电路设计流程
电路设计部分要实现输入低频模拟信号经过DSB调制,变成高频的声音信号输出给换能器。整个电路的设计流程如图5-3所示,整个电路的核心由模数转换
29
模块和数模转换模块组成,ADC采集外部输入的模拟音频信号,经过数字信号处理,存储到FIFO中,在FPGA芯片的控制下,读取FIFO中的数据到DAC,变成高频模拟信号输出到转换,其中在ADC模块前与DAC模块后可加上带通滤波器,确保音频质量。
模数转换电路 数模转换电路 模 新信 输拟品号入放大器LTC6912 模数转换芯片LTC1407 FIFO 存储器 数模转换芯片LTC2624 换能器 FPGA芯片 XC3S700AN 图5-3 音频设计流程图
第六章 DE2与NiosII的音频录放实现
使用Altera的DE2开发板来构建一个基于NiosII的嵌入式系统,实现数字化语音录制与回放。主要目的是熟悉DE2开发板的构造及一些功能,了解使用Quartus II进行硬件编程,Nios IDE进行软件编程。 6.1 DE2开发板的资源与构造 DE2资源非常丰富,包括:
(1)核心的FPGA芯片——Cyclone II 2C35 F672C6,从名称可以看出,它包含有35千个LE,Altera下载控制芯片——EPCS16以及USB-Blaste对JTAG的支持。
(2)存储用的芯片有:512-KB SRAM,8-Mbyte SDRAM,4-Mbyte Flash memory
(3)经典I/O配置:拥有4个按钮,18个拨动开关,18个红色发光二极管,9个绿色发光二级管,8个七段数码管,16*2字符液晶显示屏。
(4)超强多媒体:24位CD音质音频芯片WM8731(MIC输入+LineIn+标准音频输出),视频解码芯片(支持NTSC/PAL制式),带有高速DAC视屏输出VGA模块。
(5)更多标准接口:通用串行总线USB控制模块以及A、B型接口,SD Card
30
接口,IrDA 红外模块,10/100M自适应以太网络适配器,RS-232标准串口,PS/2键盘接口
(6)其他:50M,27M晶振各一个,支持外部时钟,80针带保护电路的外接I/O。此外还有:配套的光盘,例程与说明文档等。图6.1为 DE2-70多媒体开发板外观。
端口麦克风音频输入音频输出视频输入1 USB Device 端口 USB Blsster 端口
视频输入2
USB Host
以太网10/100M端口
VGA输出
RS-232端口
2片TV解码器
12V直流电源
电源开关
PS2端口 VGA数模转换器 以太网10/100M 控制器 50MHz晶振 扩展头2 扩展头1
USB主从控制器 音频编码解码器
USB Blaster 控制器芯片 Altera EPCS16 JTAG/AS
模式转换开关 RUN/PROG 162 LCD模块 七段数码管显示 18个红色LED 18个栓扣开关
SD 卡槽
Cyclone Ⅱ FPGA IrDA收发器 Flash存储器 8个绿色LED SMA外部时钟
2片32M 字节SDRAM
晶振4个按钮开关
图6.1 DE2-70多媒体开发板外观
28MHz 2M SSRAM 字节6.2 DE2开发板的下载方法及管脚分配 6.2.1程序下载方法
第一种称为RUN模式,需要将板上RUN/PROG开关(LCD)拨到RUN,
31
是用USB—Blaster直接将sof文件烧到Cyclone FPGA芯片,这种掉电之后就没有了,重启后需要再次烧写。
第二种模式为AS模式,将RUN/PROG开关拨到PROG模式,然后在Qutuars下载模式设置为AS模式,选择pof文件下载,这样直接下载到EPCS16 Configure芯片中,每次复位,会根据EPCS16里面的内容重新烧写Cyclone II芯片。 6.2.2 关于管脚分配
当我们创建一个FPGA用户系统的时候,到最后要做的工作就是下载,在下载之前必须根据芯片的型号分配管脚,这样才能将程序中特定功能的管脚与实际中的FPGA片外硬件电路一一对应。
通常的管脚分配使用的是拖拽法,然而在一个庞大的系统中,这样是非常的不现实,可以使用CSV文件分配法,方法是在Quartus II的Assignment菜单下面的Import Assignment项中,定位到要分配的管脚文件即可,这里有一个前提,就是你的顶层文件管脚命名必须与CSV文件中管脚一致。所以顶层文件如果用Verilog来写的话那将更加的方便,当然这是对于做Nios核而言的。你可以直接从Demo中拷贝一个顶层文件作为你的顶层。只需要稍加修改即可,也可以定义自己的额外管脚分配。
分配管教的一个方法是,直接修改工程文件夹里面的“qsf”文件,将相应的端口与芯片的预设相连即可。 6.3 认识Nios II系统
在第二章中简要介绍了Nios II,这里把它作为一个系统来进一步认识。Nios II准确来说是一个IP核,即知识产权核,使用特定的硬件描述元语言写成的代码,如果不将它烧到特定的FPGA或者CPLD芯片中就没有任何意义。
Altera的Nios II软核内部像其他处理器一样,都包括指令解码、地址译码、指令排队、中断管理、DMA控制等。Nios II还支持最多两套用户自定义指令集,用户可以用自定义模块来实现。
一个Nios II系统应该包括一个Nios CPU,一个片上RAM(Onchip-RAM),还可以添加其他产商的IP Core和自定义用户逻辑。这些模块共同使用着一块包含大量逻辑阵列的FPGA芯片,组成片上可编程系统,也称为SOPC(System On Programmable Chip)。
32
这个片上系统与外电路连接,构成一个具有特定功能的完整的用户系统。 这里不得不提到Avalon总线,Avalon总线是Nios II系统各模块之间的纽带,它内部复杂,但对外部却保留着相对简单的接口,没有复杂的总线应答等。
另外,Quartus II给我们提供了一个方便的创建Nios系统的工具,即SOPC Builder,这个工具只有在新建一个Quartus工程文件后才可使用 。对利用SOPC Builder创建Nios II步骤比较多就不做具体介绍了,可以参考其他资料。
33
参考文献
1.Tyson S Hall,James O Hanblen.system——on——a——Programmable——Chip Development Platforms in the Classroom[J].IEEE TRANSACTIONS ON EDUCATION,2004,47(4):502——57
2.Wayne Wolf .基于FPGA的系统设计.机械工业出版社,2006年 3.何宾.FPGA数字信号处理时限原理及方法.清华大学出版社,2007年
4.杨晓慧,杨永健. 基于FPGA的EDA/SOPC技术与VHDL.国防工业出版社,2007年
5.侯建军,郭勇.SOPC技术基础教程.清华大学出版社,2008年
6.FLANDRIN P,RILLING G ,GONCALVES P.Empirical mode decomposition as a filter bank.IEEE Signal Processing Letters[J],2004,11(2):112-114 7.John G Proakis.数字信号处理[M].北京:电子工业出版社,2007.150—156 8高西全,丁玉美,阔永红.数字信号处理[M].北京:电子工业出版社,2006.26-35 9.FPGA设计的指导原则[EB/OL].www.edacn.net,2009
10.张建.EDAj技术与应用[M].北京:科学出版社,2008.10—17
11.朱如琪,罗杰、秦世才、鲁放.CPLD/FPGA与ASIC设计实践教程[M].北京:科学出版社,2005.77—83
12.Shu P L,Zhang A H.Signal—adapted FIR filter banks without perfect—reconstruction property[J].Chinese Jelectron,2005,14(2):332—336
13胡广书.数字信号处理算法与实现[M].北京:清华大学出版社,2006.97—103 14.Sebsta,J.Fast data FIR algorithm and its DSP implementation.13th International Czech.Slovak Scientific Conference.Radioelektronika 2003 75—8 2003 15.程佩青.数字信号处理教程.第二版.北京:清华大学出版社,2001:87—91 16.管致中,夏恭恪,孟桥.信号与线性系统.北京:高等教育出版社,2004 17李素芝, 万建伟. 时域离散信号处理.第一版.长沙:国防科技大学出版社,1994:1—4
18.A.V奥本海姆,R.W.谢弗著.离散时间信号处理(Discrete-Time Signal Processing).黄建国,刘树棠译.第一版.北京:科学出版社,2000,4—494 19.周海斌..基于FPGA的高速实时FFT处理器设计[J]电子工程师
34
19 致谢
35
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务