Blackfin ADSP-BF533在音频处理系统中的应用
扫描二维码
随时随地手机看文章
0 引言
随着数字电子技术的普及,广播领域的数字信号也逐步取代了传统的模拟信号。近年来,随着DSP技术的普及和高性能DSP芯片的出现,DSP已越来越多地被广大的工程师所接受,并被越来越广泛地应用于语音处理、图像处理、模式识别及工业控制等各个领域,并已日益显示出其巨大的优越性。DSP可利用专门或通用的数字信号处理技术,以数字计算的方法对信号进行处理,具有处理速度快、灵活、精确、抗干扰能力强、体积小及可靠性高等优点,可以满足对信号快速、精确、实时处理及控制的要求。
1 ADSP-BF533芯片简介
ADSP-BF533处理器是Blackfin系列中的高性能产品,专门针对多媒体(特别是视频处理)和通信方面的各种应用。该处理器内核包含2个16位乘法器(MAC),2个40位的累加器,2个40位的ALU,4个视频ALU和1个40位移位器。BF533内核的工作时钟高达600MHz,运算单元可处理来自寄存器组的8位、16位或者32位数据。
Blackfin处理器这种体系结构将艺术级的dual-MAC信号处理引擎、简洁的RISC式微处理器指令集的优点以及单指令多数据(SIMD)多媒体能力结合起来,从而形成了一套独特的指令集结构。
该处理器包含丰富的外设,可通过不同的高速宽带总线与内核相连,从而使系统不但配置灵活而且具有极好的性能。通用外设如UART、带有PWM (脉冲宽度调制)和脉冲测量能力的定时器、通用的I/O标志引脚、以及一个实时时钟和一个“看门狗”定时器。
该处理器有多个独立的DMA控制器,能够以最小的处理器内核开销完成自动的数据传输。DMA传输可以发生在ADSP-BF533处理器的内部存储器和任何有DMA能力的外设之间。此外,DMA传输也可以在任何有DMA能力的外设和已连接到外部存储器接口的外部设备之间完成(包括SDRAM控制器、异步存储器控制器)。具有DMA传输能力的外设包括SPORTS、SPI端口、UART和PPI端口。每个独立的有DMA能力的外设至少有一个专用DMA通道。
BF533处理器有16个双向通用可编程I/O引脚(PF15-0)。每一个可编程引脚都能通过编程标志控制寄存器、标志状态寄存器和标志中断寄存器被独立控制。每个独立的PFx引脚都可为处理器提供中断。与用于设置和清除标志的2个标志控制寄存器类似,一个标志屏蔽寄存器可通过设置相应的位来使能中断,另一个标志屏蔽寄存器则通过清除相应的位来禁止中断功能。当PFx引脚定义为输入时,能够设置为产生硬件中断;定义为输出时,能够设置为软件中断触发。标志中断敏感寄存器可用于规定每个PFx引脚是电平还是边沿敏感,如果是边沿敏感,还规定是仅上升沿敏感,还是信号的上升沿和下降沿都敏感。
该处理器提供有1个全双工的通用异步接收/发送(UART)端口,它与PC标准的UART完全兼容。UART端口可为其它外设或主机提供一个简化的UART接口,可支持全双工、有DMA能力的异步串行数据传输。UART端口支持5~8个数据位、1或2个停止位以及无校验、奇校验、偶校验位。UART端口的波特率、串行数据格式、错误代码的产生和状态及中断均可编程。
该处理器包含有一个32位定时器,可用于执行软件的“看门狗”功能。软件“看门狗”可以提高系统的可靠性,如果在软件复位前定时器溢出,软件“看门狗”则可通过产生一个硬件复位、不可屏蔽中断(NMI)或通用中断来强迫处理器进人一个已知状态。[!--empirenews.page--]
2 系统硬件设计
该系统设计是以ADSP-BF533为核心的音频信号处理系统,其主要硬件单元有ADSP-BF533、flash、SDRAM、总线接口、以及电源、时钟、JTAG调制器。此外还有CPLD芯片辅助处理。该系统的电源模块选用TPS70302,外围设备有不同的RC值,以构成不同的电压,这里需要产生3.3V和1.2V两种电压,此外,还有JTAG调试端口。整个处理器系统的硬件框图如图1所示。
2.1 SDRAM存储器
SDRAM存储器选用HY57V281620,其存储容量为4×2 Mx16位(16MB),工作电压为3.3 V,具有16位数据宽度,可以满足存储要求。HY57V281620的时钟由DSP的系统时钟提供。数据总线D[15:0]连接到DSP的16位数据总线。其接口电路连接如图2所示。
2.2 外部FLASH
由于BF-533内部的存储容量有限,因此必须外接FLASH以用于存储程序,FLASH芯片可选用AT49BV322AT,每次上电复位后,BF-533首先将FLASH中的程序引导到内核中,其电路连接如图3所示。
2.3 以太网芯片LAN91C111
由于LAN91C111是按通用标准时序设计的高速芯片,又是专为嵌入式系统设计的,因此,其外围电路相对比较简单。图4所示是LAN91C111与BF533的接口电路,图中,BF533的地址总线ADDR0~ADDR14与LAN91C111和A1~A15相连。A0没有被LAN91C111使用而悬空;数据总线则与D0~D15相连,用于16位数据传输。LAN91C111端的D16~D32悬空;LAN91C111的片选信号AEN由DSP提供。
[!--empirenews.page--]
2.4 CPLD部分
控制模块与选择分配板卡的数据通信可在CPLD中实现。在并口转串口时,BF533每次通信都向CPLD发送16位并行数据,其中低8位为串口数据,可通过触发器将数据发出。高8位中的低4位决定发送到第几号分配板,并由此判断选通信号,同时按一定波特率将串口数据发送至相应通道。在串口转并口时,首先模拟出相应的波特率时钟,并以此时钟对管脚进行采样,当检测到串口起始位后,即存储采样数据,同时将数据及通道状态送入与BF533并口相连的引脚。之后,再将与BF533的PF相连的引脚置位,以引起BF533中断,读取并口数据。这样,就可通过DSP的并行数据总线来控制10路异步串口的数据收发。EPM7160采用24.576NHz的晶振输入,并根据外部的串口的波特率在内部通过编程对此输入时钟进行相应的分频。其CPLD接口电路连接如图5所示。
3 系统软件设计
Blackfin系列DSP在软件方面可支持C语言和汇编语言,同时支持两者的混合编程。C语言程序结构好、可读性强、易移植,但处理速度慢。而汇编语言处理速度快,但是可读性差,不容易调试。C语言和汇编语言混合编程可结合各自优势,能构造出结构好且执行速度快的程序。但在编程过程中应注意以下事项:第一,无论是用C语言还是汇编语言,系统中只有一组相同的寄存器可供使用,因此在使用寄存器之前,子函数必须先保存,并在返回之前恢复。第二,要严格按照寄存器的类型使用,不同类型的寄存器不可混用。第三,为了提高代码的运行速度,要善于使用并行指令。
本系统在对BF533程序初始化后,主程序将随时接受由SPORT口送人的解析后的音频信号,并存储对应的最大电平值,同时打开UART中断和TIMER0中断。在TIMER0中断中(本系统初始化设置为10 ms),可对存储的数据进行处理并提取状态。如不满足要求,则打开TIMER1中断(本系统初始化设置为6 s),并跳回主程序继续检测,如在相应TIMER1中断时还不符合要求,则进行切换。UART中断可完成与控制板和上位机的数据交换。
各程序模块中,主程序模块main()主要完成系统与各种接口的初始化工作,检测记录电平、监控状态、等待中断发生等,其中Timer0中断子程序模块EX_INTERRUPT_HANDLER(Timer0_ISR)可完成对存储的数据进行处理并提取状态功能。Timer1中断子程序模块EX_INTERRUPT_HANDLER(Timerl_ISR)则可在设定的延时中,完成电平检测以判断是否切换。异步串口中断子程序模块EX_INTERRUPT_HANDLER(Uart_ISR)用于完成接收上位机及板卡信号控制功能。
4 结束语
采用ADI公司的BF533可实现新品信号的处理,并可扩展SDRAM作为大容量存储器。该系统成本低,效率高,实时性好,性能十分优越。