Profile - CN027


CN027

自主定位的便携式虚拟环绕立体声系统

清华大学
电子工程系


Finals


[print]


Project

Name of Project:自主定位的便携式虚拟环绕立体声系统

Contact Information

Name:王子龙
E-Mail:wzilong@126.com
Telephone:010-51534522
Mobile Phone:13260124470
Mailing Address:北京市海淀区清华大学紫荆1号楼522B

Contest Advisor

Name:许忠信
E-Mail:zxu@tsinghua.edu.cn
Telephone:010-62797886

Members

No.NameE-MailEnglish Name
1王子龙wzilong@126.comwangzilong
2王希廷hn_wxt@126.comwangxiting
3吴天际the729@gmail.comwutianji

Project Paper - view as Preliminary(2009/06/15), Final(2009/09/14), Draft, Latest

1. 设计概述 (Preliminary Paper)

 

设计意图

现在电脑普及性很高,可是在学校宿舍或者办公室,绝大多数人不是配备音箱而是配备耳机,是考虑到对周围的影响。音箱和耳机的喇叭其实音质上没有太大区别,但是音箱的音效有空间感,显得更为真实。但到了一些移动场合,就没法使用音箱来获取环绕立体声。基于人们可移动式的、对外无干扰的、占用空间小的环绕立体声音效设备的需求,我们提出了这样一款设计。

现有普通耳机多为2.0声道,它实现的“立体声”效果是以人耳为基准点的“相对立体声”,当转动头部时声像相对于头部不动,会随着头部转动。普通2.1声道音箱只有三个音箱的音响设备,可以实现前方音源的空间感还原,对听者左右侧和后侧的声场效果无能为力,只是半环绕声。想享受现场般的真正的环绕声效果要依赖严格摆放的5.1声道乃至7.1声道音箱,需要在听者四周环绕摆放6个乃至8个音箱。它一方面会对周围造成较大干扰,另一方面便携性不好。市面上已经出现的某些所谓5.1声道耳机,是用大耳机内3个发声单元作为每个对应音箱的替代品,而不是仅用一个发声单元来实现,不能推广到普通入耳式耳机上实现,而且由于依然没有对头部定位的检测,所以要求听者在头部不动的前提下才能听到和真实5.1声道音箱相近的效果,如果头部发生了较大的转动,由于所听到的音源位置由于相对头不动,可能会有比较夸张的效果,比如当听者后仰时会感觉歌手在天花板上唱歌。这种5.1声道耳机依然只能限制在电脑前使用。

我们这款设计,就是通过加入头部定位技术,通过实时的推算,不需要音箱也能让听者感受到音源的空间感,而只需要最普通的入耳式或者头戴式耳机上作为播放设备,最终在电脑前和便携播放设备如mp3上都能实现这样的真正立体声效果。

电子陀螺仪等MEMS测量技术的不断发展,声学理论、头相关传输函数(HRTF)的研究的深入,以及FPGA计算能力的日益强大,让我们这款设计看到了可行性。即使在便携式音乐播放器,比如mp3上,也可以实现以往只有在众多音箱上才能实现的环绕立体声。

 

 

 

适用范围

按音源的来源不同来看

  SD卡,flash等存储设备获取声音文件:可以作为高档的独立便携式音乐播放器,为听者提供随时随地相当于原先5.1声道的音效享受。

  从各种播放机的LINE-OUT接口获取音效:可以作为原先若干个音箱的替代品,减少空间开支。让听者再也不用担心使用音箱会对周围的人产生影响,也不必为了若干音箱占用巨大空间或者造成不便而烦恼。

扩展应用:

1) 利用已经实现的头部定位,增加3D显示的运算和眼前的小型显示屏,可以完成对虚拟世界的更加真实的互动体验。

2) 基于同样的检查设备和定位原理可以完成对手脚等其他部位的定位,从而摆脱鼠标键盘而切身的进行互动游戏。

 

选用本款 Altera 器件来进行设计的原因

1) 强大的处理能力。此设计要求能够实时的完成头部定位和多路声音流的再加工,同时由音效作品对声音延时的敏感性又对整个系统延时(TSL)有较高要求。这在一般的串行处理器上较难实现,而对于并行运算器来说,多声道与单声道信号处理并无本质不同,因此延时可以得到有效地控制。并行性和高速响应,以及丰富的逻辑资源都给我们的设计带来了保证。

2) 便携性。其强大的处理能力可以使得主控芯片不再是PC机,使在便携性音乐播放器上实现环绕立体声转化成为可能。

3) 开发板上完善的外围设备接口。可以很方便的从SD卡读取音频文件,同时还有LINE-IN输入接口,LINEOUT输出接口,对设计的调试带来了很大方便。

4) 性价比很高的NIOS软核,以及功能强大的SOPC builder,可以方便的添加各种实用的外设。

 

 

 

 

 

(Revision: 10 / 2009-09-14 23:42:12)

2. 功能描述 (Final Project Paper)

作品的功能

1) 完成对头部的定位检测,并根据杜比5.1声道对各个音箱摆放位置的标准,计算出相应的虚拟空间中各音源的相对于头的极坐标。

2) 通过 LINEIN 输入口截获音频信号。根据定位模块计算的角度进行对声音信号进行实时的变换,让音源听起来是从原先设定好的方位发出来的,并合成输出到2声道耳机上,让听者听起来音源是对地不动的。

 

如何实现该功能

         1) 头部定位方法

由于我们想要实现对地不动的音效,所以一定要有一个对地不动的参考系。地球有三个属性可以给我们提供定位信息:自传惯量,重力场,地磁场。分别对应有mems陀螺仪(检测科里奥利力),加速度传感器(检测重力加速度),磁阻传感器(检测磁场方向)三种定位设备。我们开始设想是三种定位设备相结合的办法,但是后来实际做的时候发现有加速度传感器和磁阻传感器(即电子罗盘)就够了,为了控制成本就没有再添加陀螺仪,而只是采用一款honeywell公司出品的HMC6343作为唯一定位芯片,这款芯片是一个3轴加速度传感器和3轴电子罗盘的结合体。我们将这款芯片固定在耳机上,只要耳机戴在头上不会晃动,那么这款芯片也就和头部是相对不动的。这样,只要知道地磁场在电子罗盘3个轴上的投影,以及重力场在加速度计的3个轴上的投影,就可以通过一定的运算,得到头此时此刻以地为参考系的角度。

 

       2音源方位感的变换

声音变换模块的核心是头相关传输函数(HRTF)。HRTF可以根据音源相对于人耳的位置,估计出人耳最后听到的声音效果,也就是模拟声音信号从音源到耳蜗的整个过程,包括从音源到耳朵的物理空间和耳廓的效果。由于耳廓结构非常精细复杂,很难通过解析解的形式进行模拟,而耳廓却是人分辨音源方位的关键所在,所以一般只能通过一个假人模型实测不同方位的响应数据,通过数据库的形式调用这些系数来对声音信号进行处理。世界上有很多实验室进行了大量的各个角度的响应系数测量,比如MIT的多媒体实验室,UC CIPIC实验室,日本的shimada实验室等,而且大多都无偿公布在网上供大家使用。不过各个实验室给出的数据定义不一样,角度值也不太一样。在此我们选用的是CIPIC实验室的数据库,我们根据他们测得的数据,设计了一个200阶的FIR滤波器,实现了对音源任意角度的变换,比如本来不加任何处理音乐听起来是从正前方传来,经过这个滤波器以后就可以让它听起来好像是从左侧传来,也可以是右侧传来,甚至上方下方,都可以。结合头部定位模块,就可以让音乐听起来始终在某个位置,不论头如何转动,比如开始听起来在正前方,当我们左转90度听起来就在右侧,或者头右转90度听起来就是在左侧。

 

在实现音乐方位感的任意变换后,我们就可以按照类似杜比5.1声道的标准,在最普通的双声道耳机上叠加出若干个音箱(即将音源变换到对应的角度)的效果。由于现在很多家庭影院之类的音响设备是通过若干个音箱的叠加效果来实现更加真实的声音效果的,所以我们在普通的耳机上叠加对应角度的音源,也可以听到一样的效果。

 

 

 

(Revision: 7 / 2009-09-14 23:18:03)

3. 性能参数 (Final Project Paper)

1.性能参数

1)处理能力

各虚拟音箱角度输出频率:       33Hz

音频信号输入周期:             22.7ms

    (即芯片工作采样率为44.1KHz

音频信号处理周期:             11.8ms

 PC3D刷新速率:               18Hz

 

2)定位芯片相关参数 

芯片尺寸         9×9×1.9mm  LCC封装

定位精度                      ±1度(实测大概在3度左右)

分辨率                       0.1

I2C接口速率                  100kbps

角度输出频率                  33Hz

 

2.资源使用情况

 

Compilation report

SOPC  builder

3. NiosII软核处理器在设计中的功能

   此次设计中主要用到的IP core就是NIOS II软核处理器。本系统中,使用了两颗NiosII软核处理器。3D空间坐标变换涉及大量三角反三角函数运算,而根据计算所得角度查找并更新滤波器系数逻辑比较复杂查找列表比较长,这两项核心工作分别在独立两颗NIOS上实现。

cpu_0是定位模块的核心。由于采用的罗盘使用I2C接口对外通信,我们用软件方式模拟I2C通信,十几分钟内调通了代码,这是使用verilog实现完整I2C功能所无法想象的效率,给我们的设计带来了很大的便利。同时,我们需要根据现实中音箱摆放位置(比如杜比5.1声道的音箱摆放标准),结合得到的头部位置数据,反推出输入的各个声道代表的虚拟音源的角度,并转换到极坐标系下。这样繁琐的三角函数运算在NIOS上实现,花费的设计时间也远远短于采用硬件方式实现。由于此模块还要向PC端发送头部角度数据进行3D演示,这只需要在SOPC中添加一个Uart模块,同时代码里只要一个fwrite函数就足够了,这样方便的设计方法实在是以前纯用硬件方式所无法比拟的。

cpu_1是声音变换模块的核心。即使采用了5°为步长的离散角度方位变换,要实现全方位角度,依然需要上千个方位角的系数,而每个方位角又需要200个系数。同时由于坐标系变换问题,我们不得不制作了一个index文件进行索引查找,这时NIOS对文件系统的强大支持再一次给我们的设计带来了方便,我们只要将index和数据库烧到flash里,就可以在NIOS中很方便的查找并调用。同时我们将系数和输入信号的乘累加过程放到了硬件中进行加速,这时我们将这个FIR滤波器“伪装”成了一个200长度的RAM,作为cpu的一个外设使用,这样我们只要根据角度,把查找所得的系数都写进去,它就会自己进行乘累加输出计算所得信号。这个模块中,音频的ADDA是用硬件方式设计的,并且和NIOS相对独立,只与乘累加部分的输入输出口相连。这样的设计也方便了系统的调试。

虽然系统使用了双核cpu,但是由于NIOS本身资源占用也较小,所以总的资源消耗也得到了很好的保证,可以说NIOS性价比非常高。

 

4.实际使用效果

1)定位模块中,虽然按芯片datasheet所述可以达到正负1度的误差,但是实际使用效果只能达到正负3度,不过由于人耳本身对声源方位的感知不是特别精准,一般人耳分辨率误差就是10度,同时我们对虚拟音源角度的变换也不是连续的,而是以5度为步长进行的变换,所以3度的误差完全在可接受范围内。唯一的不良影响是PC3D演示时可能会有微小的抖动,这是因为PC端的3D演示采用的是连续角度。

2)声音变换模块中,滤波器乘累加模块工作在16.9MHz时钟上,由于有200个系数,故需要200个时钟周期的运算时间,而音频芯片工作在44.1KHz的采样率上,提供给我们384个时钟周期的空余时间,所以延时还是得到了有效控制。实际听的效果也是无法听出声音的延时。

比较影响效果的是噪声,我们发现DE2板上的wm8731在进行AD采样时会有不算太小的误码率,同时高采样率下也存在一定的白噪声,实测静音输入下也会有80以内的AD值(芯片输出的上限为65535/2),而我们实验将AD值不加任何处理直接传给DA,还是会听到一定的噪声,尤其在信号声音较小时。为了提高信噪比,我们将AD所得信号右移了几位(相当于舍弃了小信号),同时将输入音乐的音量调大,这样才得到了较好的信噪比。

 

 

(Draft / 2009-09-14 21:48:17)

4. 设计结构 (Preliminary Paper)

总体结构图

如下图所示,其中左侧虚线为普通2声道播放设备路径,直接输出;右侧实线为我们的设计,即相当于在原有方案中添加了一步,这也使得与现有设备的兼容性得到了有效地保证

更详细的系统结构图如下所示包括了软件的数据流和硬件结构

 

下面我们详细阐述一下我们设计运作的整个流程。

 

首先即是定位芯片HMC6343通过I2C总线将头部角度信息发送给定位模块,即cpu_0,一方面cpu_0会将头部角度信息原封不动的通过UART接口发送到PC端上,另一面cpu_0会根据头部角度信息和事先设定的音源标准位置,推算出各个虚拟音源相对于人耳的位置,并以极坐标系的方式写入到双核共享的RAM中。

发送到PC端的数据,我们会在PC上以串口调试小助手的方式捕获,并且通过进程通信的方式告知我们自己编写的基于DirectX 3D的演示程序,对此刻检测到的头部位置进行3D演示。由于数据量不是很大,每次只是六个比特,所以串口的速率完全可以满足要求。

写入到RAM中的数据,则会被声音变换模块捕获,即cpu_1,然后cpu_1会根据收到的六个音箱的角度,从我们事先烧写到flash中的index文件查找出需要的系数位置,并且从数据库文件中提取出对应的12组系数(每个角度分别对应左右耳),然后会将这12组系数分别写到12个滤波器的RAM接口中。

滤波器内部实际有两个RAM,任何时刻都会有一个RAM参与和输入信号的乘累加过程,而另一个RAM则是等待新的系数到来,只有当新一组数据完全写入到备用RAM中后,备用RAM才会切换为使用中RAM,同时原先使用的RAM变为备用RAM等待下一组系数。通过这种方式,我们保证了更新系数时不会造成声音转换的不连贯。

另一方面,纯硬件的音频信号AD转换和DA转换模块,会将得到的声音信号输入到滤波器的输入队列中,同时将滤波器的输出信号经过DA转化通过耳机表现出来。

 

此外,还有一些模块,比较独立且不涉及我们作品的核心,比如音频芯片的寄存器配置模块等,在此就不多说了。

 

附:我们系统中预先设置的音源摆放位置标准

按杜比实验室对5.1声道定义的标准,其音箱配置如下图所示。其中两个低音炮6可以并作一个音箱。

 

 

 

 

(Revision: 4 / 2009-09-14 22:41:55)

5. 设计方法 (Final Project Paper)

在本系统的设计中,我们采用三轴加速度传感器和三轴电子罗盘完成对头部的定位,然后反推出虚拟的对地不动的音源在以头为原点的极坐标系中的角度,然后对输入的声音信号进行变换,使其听起来像是从这个角度发出。本系统主要主要由三个模块组成,包括FPGA上的头部定位模块和声音变换模块,以及PC端的3D演示模块。前两个模块的核心分别是高速型NIOS和经济型NIOS,这三个模块由双核cpu有机的联系在一起。下面我们逐一阐述各个模块的实现方法。

1.头部定位模块

   此模块由固定在耳机上定位芯片HMC6343DE2上的cpu_0组成。

 

我们选用了HMC6343honeywell公司出品的惯性导航芯片,在一片芯片上集成了3轴加速度计和3轴电子罗盘,给我们的设计带来了方便,当然完全可以采用分立的加速度计和电子罗盘。

 

我们将这款芯片固定在耳机上,只要耳机戴在头上不会晃动,那么这款芯片也就和头部是相对不动的。这样,只要知道地磁场在电子罗盘3个轴上的投影,以及重力场在加速度计的3个轴上的投影,就可以通过一定的运算,得到头的角度。

 

 

 

如上图所示,HMC6343被固定在耳机框架上,同时引出了两根电源线和两根I2C数据线。这四根线都接到了DE2的扩展口上,同时在cpu_0中用软件方式模拟I2C总线,完成HMC6343的数据读取。

 

得到头部角度数据后,还要根据现实中音箱摆放位置(比如杜比5.1声道的音箱摆放标准),计算出虚拟音箱的位置,比如说,开始我们假设声音是从正前方传来的,即在正前方有一个音箱,那么当我们低下头时,应该计算出这个音箱现在的角度是正上方。当然,如果本来是在左前方,这个运算就有些复杂了,涉及很多三角函数,这如果用硬件方式实现,算法上是很复杂很麻烦的,所以我们使用软件方式进行3维空间计算。这里我们是按照杜比5.1声道的摆放标准计算了6个音箱的角度(因为其他声道标准只需要套用5.1声道的某几个音箱位置),存到一个与声音变换模块的cpu_1共享的双口RAM里。

 

同时,此模块还添加了一个uart模块,将原始的头部转角信息发送到PC端以进行3D演示。

 

这个模块的典型特点就是信息量较小而计算很复杂,于是我们选用了高速型NIOSonchip memory的组合。外设包括I2C接口(IO口),uart和双口Ram

2.声音变换模块

此模块核心是一个经济型NIOS cpu_1,外设包括双口Ramflashsdram12个单口ram(乘累加部分)。独立的硬件部分为音频芯片的ADDA转换。

 

这个模块我们使用了UC Davis实验室测得的不同方位角时人的耳廓以及空间的响应数据库,我们按照这个数据库提供的资料,设计了一个200个系数的FIR滤波器。

 

首先我们将这个数据库在PC端进行修改计算,按我们方便调用的形式生成了分别对应于左右耳的两个二进制文件,由于全部方位角有1234个,每个方位角需要200个系数,这是一个很麻烦的查找过程,所以我们又做了一个index文件方便每个方位的系数查找,并将数据库文件和index文件以无压缩zip文件的格式烧写到flash中,方便以后NIOS用文件方式读取使用。

 

由于此滤波器需要200个系数和输入信号的乘累加,这是一个单调而大量的计算,所以我们使用了硬件加速的形式,同时为了设计方便,我们将这个滤波器的乘累加部分伪装成一个200长度的RAM型外设,而没有作为自定义外设。此部分包括音频信号输入口,音频信号输入口,以及和NIOS相连的外设接口,这样在NIOS中得到此声道音源的位置后,只要将查找到得所以系数按照向RAM里写数据的形式写到滤波器里,它就可以独立的进行声音信号的变换。结合纯硬件的ADDA转换,实现了预期的功能。

 

在这各模块里,我们主要借助了NIOS对文件系统的良好支持,以及软件查找数据库的便捷,又由于把主要的运算放在了硬件中进行加速,所以这颗NIOS我们只是采用了经济型,同时由数据库的复杂性以及大量待传输数据,我们给它分配了FLASHSDRAM

3.PC3D演示模块

 

通过串口把头部转动的角度传给PC机,通过进程通信把数据传给3D显示程序。我们通过修改串口调试助手的开源程序,简单快速地实现了通信。
程序中设置了三种观察方式。包括普通的第三人称视角、头部静止音箱转动的视角和以第一人称方式观察的视角。方便调试和验证音源位置是否变换准确,也是对我们用耳机实现音箱效果的较好说明。
(Revision: 2 / 2009-09-14 23:31:04)

6. 设计特点 (Preliminary Paper)

      1.设计思路独特

通过对头部的定位和对声音信号的方位角变换,可以在普通的双声道耳机上实现更为逼真立体的效果。它根据头部转角变换声音,可以说是交互式音响系统。目前耳机市场面临同质化竞争,花很多钱也几乎无法得到更好的效果,此款设计提出了一种进一步提高入耳式耳机音效享受的方案。
2.利用头传输函数实现音源位置的转化
在自由场(滤去环境反射声)的情况下,声源到双耳的传输过程可以用一个物理量——头相关传输函数表示(Head Related Transfer Function,HRTF),HRTF包含了有关声源的主要空间信息,因而在双耳空间听觉的研究方面有重要的意义。它是一项较新兴的技术,跟虚拟听觉的实现密不可分。国内一些近两三年的硕士毕业论文以HRTF为中心,实现声音变换,也局限在几个特定的角度,相当于只用了数据库的几个点。我们将它跟电子罗盘配合使用,将整个数据库以zip文件的格式烧在flash内,通过DE2实时演算,实现了虚拟听觉。
由于HRTF数据库给出的角度个数有限,我们尝试将MIT和UCdavis两个数据库的数据混合使用,用C语言实现两个数据库坐标系的统一,方便实现对各数据库的利用。
3.NIOS双核处理
而在我们的系统设计中,两颗分工明确性能互补的NIOS起到了关键的作用,使用双核分别处理定位信息和声音变换,使得系统整体延时得到了有效控制,实际上,最开始我们只是采用了一颗NIOS,由于必须先定位后变换,而且二者串行运行,结果延时较为严重,有时会明显感觉到声音角度滞后。
4.软核cpu和硬件滤波器的配合
在FIR滤波器的设计中,通过将滤波器伪装成RAM形式的外设,简化了数据流的流向,对cpu来说只要将系数单向的输出到滤波器中,同时接口也只需要采用最常见的RAM形式,而对于声音信号来说,它只需要经过AD转换后,进入滤波器的缓冲队列中,然后与各系数进行乘累加,最后流入DA转换输出到耳机上。数据流的简化使得我们的调试和检验也相应得到了简化,也更加容易理解。
5.转换系数变化的平滑处理
我们使用了2个RAM滤波器进行系数存储,每次更新系数时先写到备用RAM中,更新完后将此RAM切换成当前使用的RAM,参与和声音信号的乘累加过程。同时之前被使用的RAM被切换为备用RAM,供下次更新系数时使用。这样做也在一定程度上减轻了系统延时,而且在更新系数时声音信号不会被打断。
6.兼容多种格式音频
由于我们的滤波器是相对独立的,而系数由NIOS逐个分配,所以实际上我们可以兼容2.1声道和5.1声道输入,只要将声音信号输入到对应角度的借口即可。即是输入2.1声道,由于定位模块的作用,依然可以听到是对地不动,所以也可以提供优于直接听原信号的效果。
7.其他
而且我们的系统设计分为定位模块和声音变换模块,同时分别配置了NIOS处理器,二者之间仅由一个RAM共享角度,这也是有意无意设计的,目的是它们还可以作为两个系统独立使用。由我们对头部的3D演示可以看出我们对头部的定位还是比较精准的,误差可以控制在3度以内。所以这也可以作为一个带演示的测试仪器。而声音变换模块完全可以通过手工输入角度的形式,完成高品质立体声的录制,虽然这样做出来的不是对地不动的,但是立体声效果还是可以出来的,这依然好于普通的耳机。
在我们的设计中,NIOS处理无疑为各个功能的实现提供了强大而方便的支持,比如模拟I2C通信上,由于我们并没有I2C的ip核,由于开始设想通信功能由硬件完成,所以在写完整功能的I2C核时花费了很多天的时间,结果最后也没有实现预期功能,后来我们把通信这部分放到Nios里实现,发现只要几个小函数,十几分钟内就完成了I2C的通信。在其他的很多功能实现中,NIOS也提供了纯硬件所不能及的便捷。SOPC Builder的强大而方便的功能也给我们留下了深刻的印象,比如在与PC通信上,只要在其中加一个Uart外设,就可以在软件里用一句话将数据发送出去,这实在是没有SOPC理念进行系统设计时所无法想象的。
在我们的系统设计中,DE2上的丰富的逻辑资源给我们的设计带来了保证,尤其是多媒体资源很丰富,比如wm8731音频专用芯片,这给我们的设计带来了方便,同时还有VGA口等其他众多接口,这为后期设计改进的附加功能提供了更多的空间。
(Revision: 6 / 2009-09-15 00:58:17)

7. 总结 (Final Project Paper)

我们本次设计作品利用SOPC较好的完成了系统的设计任务,实现了对头部转动角度的检测,计算出音源位置,调用数据库完成音源方位的转换。

在这个过程中我们体会到了quartusNIOS IDE的方便性和易上手,想刚开始时甚至还没有接触过NIOS,摸索着就自然而然的学会了,一直到后来设计出整个系统,可以说这两个软件的设计还是非常友好的。

同时,由于之前所学课程一般只局限于纯硬件的verilog语言,这次作比赛让我们深深感受到SPOC理念对系统设计的便捷性,NIOS对资源占用这么小,围绕NIOS来进行硬件设计真的让很多东西变得轻松异常。刚开始想用硬件方式实现I2C通信、文件的读写和与PC机的通信,用硬件实现花费了大量的时间,效果也一般,有的还甚至没有任何效果。把这些功能放到NIOS上来实现,一下子变得很简单,若干复杂的功能逻辑都被封装好了,简简单单的几句命令就可以实现所有的功能。NIOS实在是FPGA系统设计不可或缺的元素。

最后,我们参赛小组很感谢Altera公司为提供这次机会。这一个暑假的每天都过得紧张而充实,终于把这件作品做出来了。作为两个人刚刚结束大二课程的学生,在开始的时候甚至不会用NIOS,刚学完数模电,对时序等很多东西理解也不是很深刻,而我们要做的恰好是对时序很敏感的声音信号处理。开始的时候磕磕碰碰,设计出雏形时没有实现很多功能,编译时间反而是最长的。但是这些辛苦和汗水都很值得,现在回头看,对FPGA或者SOPC,理解的层次已经提升了很多,兴趣也提高了不少。有了这次经历,我们两个迫不及待地想投入到下学期实验室的工作中。

 

 

 

(Revision: 2 / 2009-09-14 23:48:39)