一种FPGA大型音频通道路由矩阵及其路由方法
技术领域
本发明涉及一种音频交换矩阵,尤其涉及一种FPGA大型音频通道路由矩阵,并涉及该FPGA大型音频通道路由矩阵的路由方法。
背景技术
现有的音频处理器(比如DSP)能处理的音频数据通道数有限,而且接口有限,无法接收数量巨大的音频通道,更没办法实现音频通道的矩阵路由;现有的音频通道路由都采用传统的DSP进行直接处理,能处理的路数非常少,且延时大;如果是几个级联起来处理音频通道,硬件成本将剧增,而且在技术方面更难的实现,不仅仅在硬件系统上很复杂,软件也是难以实现,能处理的通道数非常有限,更加致命的是音频(声音)的延时也是成倍的增加,这样的音频处理器就算做出来了,也是一个让用户无法接受的一个结果。
发明内容
本发明所要解决的技术问题是需要提供一种能够实现路由交换,降低成本降低技术难度且能够使得灵活性大大提高的大型音频通道矩阵,并提供其路由方法。
对此,本发明提供一种FPGA大型音频通道路由矩阵,包括:FPGA路由矩阵模块、模拟输入模块、模拟输出模块、DSP模块、网络音频模块、级联模块和控制模块,所述模拟输入模块、模拟输出模块、DSP模块、网络音频模块、级联模块和控制模块分别与所述FPGA路由矩阵模块相连接;其中,所述FPGA路由矩阵模块内部包括控制寄存器和用于实现路由配置的RAM,所述FPGA路由矩阵模块将接收到的数据按顺序排列,然后在FPGA路由矩阵模块内部开辟一个用于实现路由配置的RAM以存储路由配置信息,所述RAM中的路由配置信息通过所述控制模块写入至FPGA路由矩阵模块中,所述FPGA路由矩阵模块收到路由控制命令后送到RAM中存储起来。
本发明的进一步改进在于,所述FPGA路由矩阵模块所采用的音频参考时钟为网络音频时钟、本地晶振时钟和级联线路时钟中的一种,当一个网络音频模块正常连接至其他网络音频模块时,所述FPGA路由矩阵模块选择网络音频时钟作为系统的工作时钟,当所述网络音频模块之间连接异常时,根据用户配置的音频参考时钟作为系统的工作时钟。
本发明的进一步改进在于,所述FPGA路由矩阵模块分别对模拟输入模块、模拟输出模块、DSP模块、网络音频模块和级联模块的各个音频通道进行一一的编码地址排列,所述控制模块通过SPI接口给FPGA路由矩阵模块发送控制命令的路由配置信息;所述路由配置信息包括控制参数和路由参数;所述控制命令包括四个字节,前两个字节为控制字节,所述控制字节包括1个读写位和15个地址位,所述控制字节的最高位为读写位,所述控制字节的后15位为地址位;后两个字节为数据。
本发明的进一步改进在于,所述RAM为FPGA路由矩阵模块的数据存储中心,所述RAM通过时分复用的扫描方式分别读取所述模拟输入模块、DSP模块、网络音频模块和级联模块的输入数据,所述RAM通过时分复用的扫描方式将输出数据分别写入至所述模拟输出模块、DSP模块、网络音频模块和级联模块。在本发明中,所有的音频通道格式优选采用48K或者96K的采样率,在所述RAM中,数据从进来到输出的时间优选为(1/48k)*2,约41.7us;如果采样率是96K,则数据从进来到输出的时间优选为20.83us。
本发明的进一步改进在于,所述模拟输入模块、模拟输出模块和DSP模块的数量均为两个以上,所述两个以上的模拟输入模块、模拟输出模块和DSP模块均通过可插拔接口与所述FPGA路由矩阵模块相连接。
本发明的进一步改进在于,所述FPGA路由矩阵模块还包括第一先进先出缓冲模块和第二先进先出缓冲模块,所述模拟输入模块通过第一先进先出缓冲模块连接至所述FPGA路由矩阵模块的RAM,所述RAM通过第二先进先出缓冲模块连接至所述模拟输出模块。
本发明的进一步改进在于,所述FPGA路由矩阵模块还包括用于实现数据输入的第三先进先出缓冲模块和用于实现数据输出的第四先进先出缓冲模块,所述DSP模块分别通过所述第三先进先出缓冲模块和第四先进先出缓冲模块与所述RAM相连接。
本发明的进一步改进在于,所述FPGA路由矩阵模块还包括用于实现数据输入的第五先进先出缓冲模块和用于实现数据输出的第六先进先出缓冲模块,所述网络音频模块分别通过所述第五先进先出缓冲模块和第六先进先出缓冲模块与所述RAM相连接。
本发明的进一步改进在于,所述FPGA路由矩阵模块还包括用于实现数据输入的第七先进先出缓冲模块和用于实现数据输出的第八先进先出缓冲模块,所述级联模块分别通过所述第七先进先出缓冲模块和第八先进先出缓冲模块与所述RAM相连接。
本发明还提供一种FPGA大型音频通道路由矩阵的路由方法,用于实现如上所述的FPGA大型音频通道路由矩阵的路由交换,并包括以下步骤:
步骤S1,启动,通过所述RAM等待所述控制模块的控制命令,直到接收到控制命令后跳转至步骤S2;
步骤S2,所述FPGA路由矩阵模块通过配置RAM和控制寄存器解析控制指令;
步骤S3,所述FPGA路由矩阵模块根据解析后的控制指令实现路由切换;
其中,所述RAM设置有地址循环的读指针,将所述读指针作为配置RAM的读地址,读取所述读指针对应的数据就是对应的输出通道对应接收输入的通道号,进而通过读指针实现步骤S3所述的路由交换。
与现有技术相比,本发明的有益效果在于:通过FPGA交换矩阵处理大型音频通道矩阵的路由,使得其灵活性大大提高,延时达到微秒级,能够处理的音频通道数达到600*600以上,同时还降低了成本;在此基础上,相对于传统的固有电路设计,后续改进和升级不再需要修改电路,只需修改控制指令或者约束文件就能够实现,大大缩短了产品的研发周期和升级周期,可控性更高。
附图说明
图1是本发明一种实施例的系统结构示意图;
图2是本发明一种实施例的系统结构图;
图3是本发明一种实施例的FPGA路由矩阵模块的控制命令的时序控制示意图;
图4是本发明一种实施例的FPGA路由矩阵模块分别与模拟输入模块和模拟输出模块之间实现通信的时序图;
图5是本发明一种实施例的FPGA路由矩阵模块与网络音频模块之间实现通信的时序图;
图6是本发明一种实施例的FPGA路由矩阵模块与级联模块之间实现通信的时序图;
图7是本发明一种实施例的FPGA路由矩阵模块与DSP模块之间实现通信的时序图;
图8是本发明另一种实施例的工作流程示意图。
具体实施方式
下面结合附图,对本发明的较优的实施例作进一步的详细说明:
实施例1:
如图1所示,本例提供一种FPGA大型音频通道路由矩阵,包括:FPGA路由矩阵模块、模拟输入模块、模拟输出模块、DSP模块、网络音频模块、级联模块和控制模块,所述模拟输入模块、模拟输出模块、DSP模块、网络音频模块、级联模块和控制模块分别与所述FPGA路由矩阵模块相连接;其中,所述FPGA路由矩阵模块内部包括控制寄存器和用于实现路由配置的RAM,所述FPGA路由矩阵模块将接收到的数据按顺序排列,然后在FPGA路由矩阵模块内部开辟一个用于实现路由配置的RAM以存储路由配置信息,所述RAM中的路由配置信息通过所述控制模块写入至FPGA路由矩阵模块中,所述FPGA路由矩阵模块收到所述控制器发过来的指令后送到RAM中存储起来。
本例所述FPGA路由矩阵模块为通过FPGA芯片实现的音频交换矩阵,所述网络音频模块为用于实现网络音频传输的DANTE模块,所述FPGA路由矩阵模块根据控制模块发过来的控制命令进行路由配置,从而实现音频通道的矩阵交换,所述控制模块可以采用ARM或其他控制处理器,比如单片机;所述模拟输入模块、模拟输出模块、DSP模块、网络音频模块和级联模块优选采用IIS格式或TDM格式与FPGA路由矩阵模块实现数据的通信。
比如:RAM的路由配置地址0存的是1,那么意味着输出0通道的数据来自输入1通道的;配置RAM的地址3存的是2,那么意味着输出3通道的数据来自输入2通道的。如此类推就可以实现路由矩阵的功能。
首先在RAM里面设置有地址循环的读指针,把这个读指针作为配置RAM的读地址,那么配置RAM中相应读出来的数据就是RAM的读地址,那么相对应读指针读出来的数据就是输出通道对应接收输入的通道号。如此类推,这样就能够实现路由矩阵交换,简而言之,就是对应输出通道需要什么通道的数据就读相应地址的数据。比如,读指针为8时,从配置RAM中读出来的数据是2,那么输出8通道的数据就来自RAM地址2中的数据,也就是输入2通道的数据。如此类推就可以实现数据的任意读取,从而实现数据的矩阵交换。
本例所述模拟输入模块和模拟输出模块以板卡的形式插拔装载,并且可以通过多台CSAP(插卡式音频处理器)设备进行级联,进而形成大规模的FPGA大型音频通道阵列,灵活搭配,满足各种使用场合;本例相当于提供了一种插卡式的音频处理器,其整个系统有几百路的音频通道需要任意交换。相反的,如果像现有技术那样采用DSP做音频通道交换,一个DSP显然是做不到几百路矩阵交换的,如果用多个DSP处理音频通道交换,那么其灵活性又大大降低,而且延时大大升高,成本也剧增。用ARM等处理器来实现音频通道交换的难度就更大了。
本例采用FPGA路由矩阵模块处理音频通道交换,提出FPGA大型音频通道路由矩阵的路由方法,能够在插卡式音频处理器中实现了600*600的大型音频通道矩阵路由,使得音频处理器的配置相当灵活,而且成本大大降低;在此基础上,音频数据在FPGA路由矩阵模块中的延时更是做到了微秒级。
现有技术中,一般都采用传统的技术,利用额外的DSP专门做音频路由,而且能处理的路数有限、延时大、不灵活且成本高。与现有技术不同的是,本例提出用FPGA路由矩阵模块来实现处理音频通道交换的功能,给音频技术带来革命性的突破,使得音频处理器可以做得非常灵活,能处理的通道数也是剧增,延时也是达到了微秒级,可以说不受什么限制。
本例所述模拟输入模块、模拟输出模块和DSP模块的数量均为两个以上,所述两个以上的模拟输入模块、模拟输出模块和DSP模块均通过可插拔接口与所述FPGA路由矩阵模块相连接。
优选的,整个音频通道矩阵的交换都是由FPGA路由矩阵模块进行交互的,其中,设置了6个模拟板和8个DSP模块,6个模拟板的通道数量共为24*24,所述模拟板包括模拟输入模块和模拟输出模块;8个DSP模块的通道数量共为384*384,网络音频模块的通道数量共为64*64,级联模块的通道数量为128*128,那么所有的总通道数为600*600路。
对于FPGA大型音频通道路由矩阵自身而言,音频通道是600*600,只需要给输入通道做出顺序排列,意思就是排列从模拟输入模块、DSP模块、网络音频模块(DANTE)和级联模块过来的音频通道放在FPGA路由矩阵模块里的那个通道位置进行一一对应设置,那么具体对应输出是哪个输入通道过来的音频数据,这就需要控制模块通过SPI口给FPGA路由矩阵模块发送控制命令进行通道选择,这样,FPGA路由矩阵模块就可以完成600*600的音频矩阵交换系统,只需要根据控制模块的控制命令对模拟输入模块、DSP模块、网络音频模块(DANTE)和级联模块过来的音频通道进行不同时序的交换处理即可。
本例所述FPGA路由矩阵模块所采用的音频参考时钟为网络音频时钟、本地晶振时钟和级联线路时钟中的一种,当所述网络音频模块正常与其他网络音频模块连接时,所述FPGA路由矩阵模块选择网络音频时钟作为系统的工作时钟;当所述网络音频模块之间连接网异常时,根据用户配置的音频参考时钟作为系统的工作时钟。
本例所述FPGA路由矩阵模块分别对模拟输入模块、模拟输出模块、DSP模块、网络音频模块和级联模块的各个音频通道进行一一的编码地址排列,所述控制模块通过SPI接口给FPGA路由矩阵模块发送控制命令的路由配置信息;所述路由配置信息包括控制参数和路由参数;所述控制命令包括四个字节,前两个字节为控制字节,所述控制字节包括1个读写位和15个地址位,所述控制字节的最高位为读写位,所述控制字节的后15位为地址位;后两个字节为数据;其时序图如图3所示。
FPGA路由矩阵模块与模拟输入模块和模拟输出模块等采用IIS音频格式,时序如图4所示;FPGA路由矩阵模块与网络音频模块(DANTE)采用TDM8通道模式,时序如图5所示;FPGA路由矩阵模块与级联模块采用自定义的TDM64通道格式,时序如图6所示;FPGA路由矩阵模块与DSP模块采用TDM8通道的格式,时序如图7所示;所有的音频通道格式采用48K或者96K的采样率,高位在前,FPGA路由矩阵模块与各模块通信无论采用的是IIS格式还是TDM格式,信号线定义都分别为:帧时钟、位时钟和数据线。
本例的音频数据都是由FPGA路由矩阵模块进行交互的,总的通道数为600*600。那么怎么识别各个通道呢,本例给每个模块进行编号,编号就可以作为该通道的地址,比如SPI接口的前两个字节数代表操作地址,那么存在通道地址相应的数据就代表该通道接收哪个通道的来的音频数据,即SPI接口的后两个字节数代表操作数据。这样就可以实现音频通道的矩阵路由。下面是各个通道的表格说明。
其中,对模拟输入模块的通道定义可以为:
对象 |
AD0 |
AD1 |
AD2 |
AD3 |
AD4 |
AD5 |
通道号 |
0-3 |
4-7 |
8-11 |
12-15 |
16-19 |
20-23 |
对网络音频模块的通道定义为:
对级联模块的通道定义为:
对DSP模块的通道定义为:
整个音频系统一般采用48K/96K,本例以48K为例。音频系统主参考时钟为24.576MHz,每台机器在工作中必须时钟同步,否则会出现杂音,本例的音频参考时钟优选有三种:网络音频时钟、本地晶振时钟和级联线路时钟。因为网络音频模块(DANTE)的网络是支持IEEE1588协议的,所以整个系统网络时钟是同步的,在网络正常连接的时候,FPGA路由矩阵模块选择网络音频模块(DANTE)过来的时钟作为系统的工作时钟。但是异常情况下,虽然有网络音频模块(DANTE),但是网络音频模块(DANTE)未必连了网络,这时,通过配置选择参考时钟中的本地晶振时钟或级联线路时钟作为工作时钟,如下表的控制寄存器说明,在FPGA路由矩阵模块内部,能够定义很多控制寄存器,这些控制寄存器的操作采用SPI或IIC等控制口进行相应的接口模块控制即可。下表给出每个控制寄存器的代表意义做了一个优选的例子说明:
本例所述RAM为FPGA路由矩阵模块的数据存储中心,所述RAM通过时分复用的扫描方式分别读取所述模拟输入模块、DSP模块、网络音频模块和级联模块的输入数据,所述RAM通过时分复用的扫描方式将输出数据分别写入至所述模拟输出模块、DSP模块、网络音频模块和级联模块;在所述RAM中,数据从进来到输出的时间为(1/48k)*2,约41.7us;如果是96K,则为20.83us。
如图2所示,本例所述FPGA路由矩阵模块还包括第一先进先出缓冲模块和第二先进先出缓冲模块,所述模拟输入模块通过第一先进先出缓冲模块连接至所述FPGA路由矩阵模块的RAM,所述RAM通过第二先进先出缓冲模块连接至所述模拟输出模块;所述FPGA路由矩阵模块还包括用于实现数据输入的第三先进先出缓冲模块和用于实现数据输出的第四先进先出缓冲模块,所述DSP模块分别通过所述第三先进先出缓冲模块和第四先进先出缓冲模块与所述RAM相连接;所述FPGA路由矩阵模块还包括用于实现数据输入的第五先进先出缓冲模块和用于实现数据输出的第六先进先出缓冲模块,所述网络音频模块分别通过所述第五先进先出缓冲模块和第六先进先出缓冲模块与所述RAM相连接;所述FPGA路由矩阵模块还包括用于实现数据输入的第七先进先出缓冲模块和用于实现数据输出的第八先进先出缓冲模块,所述级联模块分别通过所述第七先进先出缓冲模块和第八先进先出缓冲模块与所述RAM相连接。
如图2所示,以FPGA路由矩阵模块为中心看的话,模拟输入模块、模拟输出模块、DSP模块、网络音频模块和级联模块等都是FPGA路由矩阵模块的接口对象,如果把所有接口统一起来,相对FPGA路由矩阵模块来说就只有输入和输出,只是通道数多少、接口数据线多少以及速率多少不同而已,那么对于FPGA路由矩阵模块来说,就能够实现600*600路甚至更多路数的音频信号的矩阵交换。
那么FPGA路由矩阵模块如何获取数据呢,这里通过举例来说明,比如FPGA路由矩阵模块与模拟板之间的通信为:FPGA路由矩阵模块为主,IIS的主时钟和帧时钟都由FPGA路由矩阵模块生成送给模拟板上的ADDA芯片,所述模拟板包括模拟输入模块和模拟输出模块;根据时序可知,模拟输入模块的AD芯片过来的数据是串行的,其他设备也是串行的,只是每根数据线的速率不一样,每个通道的数据为32bit,其中,里面的有效数据为24bit,每个通道的数据根据各自的帧时钟fclk对齐。
首先,FPGA路由矩阵模块对iis线上进来的数据进行串并转换,所述第一先进先出缓冲模块、第二先进先出缓冲模块、第三先进先出缓冲模块、第四先进先出缓冲模块、第五先进先出缓冲模块、第六先进先出缓冲模块、第七先进先出缓冲模块和第八先进先出缓冲模块均为乒乓fifo,因为RAM的读写时钟和各个接口的乒乓fifo读写时钟的速率是不一样的,如果不采用乒乓fifo,肯定会造成读写冲突,这样音频数据就会出错,声音肯定也是不对的。值得一提的是,只要保证每个模块的循环速率一致,也就是都保持48K的速率在轮回的工作。
FPGA路由矩阵模块内部每个fifo进来的数据都会放到RAM中,原理为RAM的写数据是从每个用于实现数据输入的乒乓fifo中读取的,每个乒乓fifo都是1bit进32bit出;那么什么时候读哪个相应的乒乓fifo呢,这里RAM会有一个写地址或写指针,前面提到对于FPGA路由矩阵模块有600*600的音频通道,那么写地址的范围应该是0~559就能够满足,但是本例用的写地址范围是0~607,这样就有8个地址是没有用到的;这是为了匹配速率的问题,因为48K*600=28.8MHz,意思就是RAM的读写速率是28.8MHz。FPGA路由矩阵模块在速度上肯定是可以满足的,但是28.8MHz的时钟是没办法通过DLL(数字锁相环)倍频出来的,即DLL在输入时钟24.576MHz的情况下,分频不了28.8MHz的时钟,而本例选了608的地址范围,那么在速率匹配的情况下48K*608=29.184MHz,这个时钟的频率是可以倍频出来的。还需要说明的是,各个接口的主时钟都是由DLL生成的。DLL的时钟参考输入是通过控制寄存器选取的,这样就保证所有的工作模块都是唯一的一个参考时钟出来的,才能保证每个模块工作的同步性。
也就是说,RAM的写地址范围设置于预留空间,所述预留控制可以为任意数,只要倍频的时钟频率能够生成。同时,所有模块的参考时钟均是通过控制寄存器选取的,以保证读写速率满足需求的基础上,实现各个模块的同步性,这是非常重要的。
所述RAM通过时分复用的扫描方式读取各个用于实现数据输入的乒乓fifo的数据到RAM,只要RAM的读写一个周期的速率也是48KHz;意思就是乒乓fifo进来的数据(1bit进32bit出)RAM保证在1/48K(S)的时间内把数据读走即可。当然了,RAM可以采用更高的速度去读取每个fifo的数据,这里为了简化,都采用48KHz;的速率。实际上96K的采用系统,这个route模块一样适用的,因为只改变模块的主时钟输入就可以了,其中。所有模拟,如DSP模块、级联模块和网络音频模块的帧时钟都是由route模块内部生成的。RAM就好比一个多宝箱,那么用于实现数据输出的乒乓fifo需要哪个通道就取哪个数据,如同RAM的写指针一样,RAM的读出来的数据也是通过时分复用的扫描方式送给各个用于实现数据输出的乒乓fifo的,然后用于实现数据输出的乒乓fifo刚好是用于实现数据输入的乒乓fifo的相反动作。
本例通过FPGA交换矩阵处理大型音频通道矩阵的路由,使得其灵活性大大提高,延时达到微秒级,能够处理的音频通道数达到600*600以上,同时还降低了成本;在此基础上,相对于传统的固有电路设计,后续改进和升级不再需要修改电路,只需修改控制指令或者约束文件就能够实现,大大缩短了产品的研发周期和升级周期,可控性更高。
实施例2:
如图8所示,本例还提供一种FPGA大型音频通道路由矩阵的路由方法,用于实现如实施例1所述的FPGA大型音频通道路由矩阵的路由交换,并包括以下步骤:
步骤S1,启动,通过所述RAM等待所述控制模块的控制命令,直到接收到控制命令后跳转至步骤S2;
步骤S2,所述FPGA路由矩阵模块通过RAM和控制寄存器解析控制指令;
步骤S3,所述FPGA路由矩阵模块根据解析后的控制指令实现路由切换;
其中,所述RAM设置有地址循环的读指针,将所述读指针作为配置RAM的读地址,读取所述读指针对应的数据就是输出通道对应接收输入的通道号,进而通过读指针实现步骤S3所述的路由交换。
这里需要说明下的是图8的工作流程图,该工作流程图只是说明FPGA路由矩阵模块在处理音频矩阵路由的一个过程,其中各个模块的处理都是并行执行的,并不是串行执行的;而且每个通道相互独立,不影响,都是并行实时进行的。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。