mujian870214 发表于 2012-9-24 17:37:05

DM642音频实时采集与处理

大家好,我最近在做一个音频的采集与处理,每次采集10秒钟音频,然后进行处理,处理大概用8秒,我先让DSP采集音频,然后处理,我想让DSP在处理数据的时候也采集音频,这样才能做到实时采集,但是我发现这两个线程不能同时进行,我想问一下,各位大侠,有什么方法可以让这两个线程同时进行???谢谢。。。

aworker 发表于 2012-9-24 17:41:49

网上有个叫张近东的高手,对这个很熟。

lyz1900 发表于 2012-9-24 18:08:57

没做过类似的,但是有个想法,乒乓操作,先用一个cpld或者fpga做音频采集的部分,AD读出来数据直接存到SRAM1里面,这时DSP处理SRAM2的数据,然后FPGA把第二个10秒的数据存到SRAM2里面,DSP处理SRAM1里面的数据,两部分轮换操作,FPGA需要的资源比较少,只有AD读取和SRAM的读写,所以不用太高端的就能实现,就是两块SRAM比较浪费,但是性能绝对能达到要求。

mujian870214 发表于 2012-9-24 19:04:59

aworker 发表于 2012-9-24 17:41 static/image/common/back.gif
网上有个叫张近东的高手,对这个很熟。

哥哥,张近东不是苏宁的老总吗?估计我要问他,他不带理我的。

mujian870214 发表于 2012-9-24 19:06:42

lyz1900 发表于 2012-9-24 18:08 static/image/common/back.gif
没做过类似的,但是有个想法,乒乓操作,先用一个cpld或者fpga做音频采集的部分,AD读出来数据直接存到SRAM ...

我买的是QXD-DM642的开发板,没有CPLD和FPGA,请问只用DSP有没有方法实现线程的并行运行,比如一个在前台运行,一个在后台运行??

lyz1900 发表于 2012-9-24 19:33:43

mujian870214 发表于 2012-9-24 19:06 static/image/common/back.gif
我买的是QXD-DM642的开发板,没有CPLD和FPGA,请问只用DSP有没有方法实现线程的并行运行,比如一个在前台 ...

一个CPU应该没办法实现真正的并行吧,只能是在两个线程上切换来切换去。。。没研究过DSP,但是如果是单片机的话可以ADC采集放在后台进行,可以用DMA或者ADC中断,因为ADC数据不是连续的,音频数据的采样率应该不会很高,所以可以等ADC采样完成中断,在中断里面存一个数据,再跳出中断在前台处理数据,等下一次ADC数据转换完再进入中断存储采样到的数据,然后再跳到前台,不过不知道可不可行,没具体研究过DSP的中断什么的,另外可以DMA,直接用DMA把ADC采样数据存到内存一段区域,寸够10秒的再去处理数据,DMA不需要CPU干预的,应该可以。感觉方法很多,楼主思路受到拘束了,不是上位机的线程,单片机、DSP这类工控的东西本身就可以轻易实现前后台的。

aworker 发表于 2012-9-24 20:51:25

mujian870214 发表于 2012-9-24 19:04 static/image/common/back.gif
哥哥,张近东不是苏宁的老总吗?估计我要问他,他不带理我的。

http://new.qzone.qq.com/37564275

BBC 发表于 2012-9-24 23:11:49

用DMA即可...

mujian870214 发表于 2012-9-25 08:11:16

lyz1900 发表于 2012-9-24 19:33 static/image/common/back.gif
一个CPU应该没办法实现真正的并行吧,只能是在两个线程上切换来切换去。。。没研究过DSP,但是如果是单片 ...

谢谢哈,我再研究一下

mujian870214 发表于 2012-9-25 08:12:23

aworker 发表于 2012-9-24 20:51 static/image/common/back.gif
http://new.qzone.qq.com/37564275

谢谢哈,我上网搜只搜到苏宁电器的老总叫张近东,呵呵。

mujian870214 发表于 2012-9-25 08:13:25

BBC 发表于 2012-9-24 23:11 static/image/common/back.gif
用DMA即可...

谢谢哈,我研究一下DMA,

liurangzhou 发表于 2012-9-25 08:46:05

真是大材小用,DM642做D1的图像采集都没有问题,你却慢了!用不用DMA都可以解决的

luck851 发表于 2012-9-25 08:56:23

张进东是我学长O(∩_∩)O~,想实时的话要么用DSP+fpga,FPGA采样缓存。要么用TI的达芬奇arm+DSP,ARM负责采样,DSP去做计算。

BBC 发表于 2012-9-25 11:43:04

mujian870214 发表于 2012-9-25 08:13 static/image/common/back.gif
谢谢哈,我研究一下DMA,

{:lol:} 其实就如上面一位兄弟说的,对于你要做的这个音频信号处理,不用DMA也行,更不需要外接ARM或FPGA。

另外,如果要实时处理,但是又要先采样10秒,处理后再输出,这样的实时也太抓狂了......

如果按照正常情况下,用的是外接ADC、IIS接口,采样率是44.1K的话,我自己会这样做:

1. 采用中断方式读AD,中断是定时器的中断,时间为1/44100s中断一次。

2. AD读出的数据存到RAM里去,缓存的长度是你的处理算法要求的最小点数。

3. 当采到足够的数据后,全部从RAM里取出来去处理,然后输出。当然,在处理数据的过程中,中断仍然会触发,并且采集数据。这样就勉强是实时采集和处理......

4. 输出也可以在采集中断里做.....可以保证采样率正确并且节省资源

仅供参考......{:tongue:}

mujian870214 发表于 2012-9-25 16:39:28

BBC 发表于 2012-9-25 11:43 static/image/common/back.gif
其实就如上面一位兄弟说的,对于你要做的这个音频信号处理,不用DMA也行,更不需要外接ARM或FPGA ...

谢谢您的回答,我是想做一个音频的校对,有两路音频,采样率是8Khz,假如两个音频都是10分钟,每10秒钟比对一次,在比对的时候音频也在输入,比对算法大概要7s(特征抽取,FFT,滤波、校验、比对),如果这两个音频在第5分钟12秒到5分钟18秒之间不同,要能够检测出来,请问一下,用中断的话处理数据的时候会不会把音频不同的部分略过去?除了用EDMA之外还有什么方法,我刚学DSP,发现EDMA看不大懂。谢谢哈

BBC 发表于 2012-9-25 17:13:52

mujian870214 发表于 2012-9-25 16:39 static/image/common/back.gif
谢谢您的回答,我是想做一个音频的校对,有两路音频,采样率是8Khz,假如两个音频都是10分钟,每10秒钟比 ...

因为你的采样率是8KHz,所以每秒钟对音频采样8K个点,就算是两个通道分别采样,那也只是16KHz,那么在每两个点之间就有大约 1/16000 s 的空闲时间,为什么不利用这些空闲时间来做处理呢?

我口拙......画个图吧...

mujian870214 发表于 2012-9-26 08:34:57

BBC 发表于 2012-9-25 17:13 static/image/common/back.gif
因为你的采样率是8KHz,所以每秒钟对音频采样8K个点,就算是两个通道分别采样,那也只是16KHz,那么在每 ...

谢谢哈,一语惊醒梦中人那,{:smile:}

leijiayou 发表于 2012-9-26 09:05:45

{:smile:}mark    不懂,帮顶!!!!

gongxd 发表于 2012-9-26 09:33:20

用音频采集芯片 AIC23b
页: [1]
查看完整版本: DM642音频实时采集与处理