0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于BC320处理器和Verilog语言实现TDM控制模块的设计

电子设计 来源:电子工程网 作者:电子工程网 2021-05-22 11:44 次阅读

TDM控制模块是VoIP网关系统设计中的重要部分,是连接来自PSTNPublic Switched TelephoneNetwork)串行的TDM数据格式和并行的Wishbone数据格式的桥梁,实现两边数据跨时钟域无丢失的转换。为满足高速数据转换的要求,采用了Wishbone总线,将多个IP核集成为VoIP网关系统。

Wishbone最先是由Silicore公司提出,现在已被移交给OpenCores组织维护。Wishbone总线规范是一种片上系统IP核互连体系结构,定义了一种IP核之间共公的逻辑接口,可用于软核、固核和硬核,对开发工具和目标硬件没有特殊要求,并且几乎兼容已有所有的综合工具,可以用多种硬件描述语言来实现。

TDM控制模块的设计

● TDM在VoIP语音网关系统中的作用

TDM控制模块同时接收来自ISDN(综合业务数字网)、E1专线或者语音编码器等不同信源的串行语音数据。如图1,VoIP语音网关的基本功能是完成以太网数据与外部语音设备数据的转换,TDM接口与以太网接口分别为外部语音设备的数据、以太网上数据与网关系统的通信桥梁。该网关SoC系统的处理器采用的是同济大学微电子中心自主沿发的高性能低功耗的32位嵌入式CPU BC320。

图1 TDM控制模块的作用

● 时分复用原理与TDM数据频率

时分复用是把对信道的使用时间划分为多个时间帧,进一步把时间帧划分为n个时间隙(时间间隔)。每一个时间隙分配给一个子信道,从而实现在一个信道上同时传输多路信号。时分复用循环使用时间帧,各路信号循环顺序插入时间帧中的时间隙传输。TDM控制模块的主要作用就是复用多路信号与解复用混合有多路信号的 TDM数据,如图2所示。

图2 时分复用的时隙

本设计的串行语音数据针对E1专线标准,E1主要应用于欧洲,中国也采用该标准。E1标准的数据率为2.048Mb/s,每一个时间帧包括30个B子信道,一个D子信道和一个同步子信道,共32个子信道。以语音模拟信道为例,信道带宽限制为3.4kHz,根据奈圭斯特定律,子信道采样速率至少是信号最高频率的两倍,通常选择采样速率为8kHz。因此,整个TDM信道的比特速率可以达到:

8kb/s×8×32=2048kb/s=2.048 Mb/s,即E1标准规定的TDM数据率。

● 模块设计

模块的主要功能是完成多路数据的复用和复用数据的分解,其关键部分就是复用和分解。本设计采用缓存器辅助完成复用和分解,实现两种协议数据跨时钟域的转换。本设计模块主要分三部分,见图3。

图3 TDM接口控制模块的基本结构

串行数据接口主要负责串行数据与8位宽并行数据的转换,因为存放数据的FIFO是以8bit为一地址空间的。转换由设计的状态机来控制:接收 (receive)操作、发送(transmit)操作和等待,接收就是将串行数据转换成8bit位宽数据的过程,发送与之相反。由于语音数据要求双工机制,由时钟高低电平来作为发送和接收状态的切换信号,即当时钟为低时由发送状态转为接收状态,当时钟为高时,由接收状态切换为发送状态,这样可以看作接收与发送是同时进行的。

发送、接收缓存器不仅包括用于暂时存储数据的FIFO,而且还设计有状态机来控制接收、发送数据流。由于跨时钟域,由双口RAM组成的FIFO可能会带来地址比较冲突的问题,本设计采用乒乓机制来完成FIFO,当一个缓存器进行读操作时,另一个缓存器则进行写操作,两者的切换由硬件来完成。以下以接收缓存器为例(数据方向从TDM串行数据到Wishbone总线并行数据)来描述本设计。缓存器的大小设计为包含四帧TDM数据,因此每个FIFO的大小为 8bit×32×4=1024bit,如图4。选用乒乓FIFO以及FIFO大小设计的原因如下。

图4 乒乓FIFO

串行数据的时钟相对于Wishbone总线的时钟要慢,当两时钟域上的数据相互转换时,Wishbone总线可以在很短时间内读写FIFO,而串行总线需要相对较长的时间读写相同数据量。尽管如此,在Wishbone总线时钟频率相对较慢时,Wishbone总线很可能在下一批串行数据写进FIFO前不能完全读空FIFO。以接收缓存器为例,如果不考虑处理器(BC320)中断响应时间和从RAM读数据的时间(待处理的数据都要先暂存在Wishbone 总线上挂的RAM中),从Wishbone总线读空一个FIFO中的四帧数据需要时间为:

1/25M x 32 x 4 = 5.12 x 10-6 s= 5.12us

25M是本设计在FPGA开发板进行测试时所采用的时钟频率,即测试系统时Wishbone总线上的时钟频率。 而在另一边串行数据,当四帧写满FIFO后,第五帧的第一个字节数据开始写入FIFO的准备时间为:

1/24M x 8 = 4 x 10-6?s = 4us

FIFO中的四帧数据被读空时间大于第五帧的第一个字节写入FIFO的准备时间,FIFO的写满与读空都是有硬件产生信号标识,此时FIFO读空信号标识未产生,不能对同一FIFO进行写操作,导致待写数据丢失。因此选用两个FIFO采用乒乓机制来切换读写操作,如图4所示。

在解复用时,数据的地址恢复很重要,一个TDM数据帧含有32个时隙,每一时隙中的数据均来自不同的信道源,本模块要将复用在一路的TDM数据恢复出32 路。TDM数据的每个时隙含8个bit,而Wishbone总线的数据位宽是32位,因此需要四帧的TDM数据才能拼接成一路完整32位宽数据。相邻时隙数据由于来自不同信道源,暂存在FIFO中的地址不能相邻,前一时隙中数据和后一时隙中数据在地址空间上相差4(如图4),这样从初始地址开始,每相邻四个地址对应的数据拼接成一路完整的信号,在Wish

bone总线读取FIFO中数据时的地址是按顺序的。

本文着重讨论了接收缓存器的设计,发送缓存器与之类似,这里就不再赘述。

Wishbone接口连接TDM控制模块与Wishbone总线,它的主要功能是设计正确的状态机产生有效控制信号来同步数据交换。

验证与结论

Verilog语言描述完成TDM控制模块的设计,并以VoIP语音网关系统为验证平台,利用Candence公司的NC-verilog仿真器进行代码仿真。仿真波形表明,处理器(BC320)对FIFO写满产生信号标识的反应时间大约为60个Wishbone总线时钟周期,这一时间加上 Wishbone总线读空第一个FIFO所用时间后,串行语音数据仍在写进另一个FIFO,Wishbone总线有足够的空闲等待这个FIFO写满标示信号的产生,不会有任何数据丢失。

VoIP语音网关系统在型号为Virtex-II Pro FF1152的FPGA开发板上进行了硬件验证,TDM控制模块外接型号为Le88221的SLIC(用户线接口电路)芯片作为语音信源,利用 Chipscope在线扫描TDM控制模块内部、Wishbone总线和处理器(BC320)寄存器的信号变化,并用示波器对SLIC芯片信号进行捕捉。从观察的信号来看,所设计的TDM控制模块能够与系统的其他IP模块,尤其是处理器(BC320)和以太网模块正确有效地协同工作,模块的功能达到设计要求。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18250

    浏览量

    222049
  • FPGA
    +关注

    关注

    1602

    文章

    21302

    浏览量

    593104
  • 开发板
    +关注

    关注

    25

    文章

    4420

    浏览量

    93930
收藏 人收藏

    评论

    相关推荐

    ARM9处理器C语言编程(全) ADS开发环境创建简介

    `高等学校嵌入式系统设计教材 ARM9处理器C语言编程(全)ADS开发环境创建简介第一章:ARM技术简介 1.1ARM处理器简介 1.1.1ARM系列微处理器1.1.2ARM9系列微
    发表于 07-28 15:06

    verilog语言实现电子钟

    各位大神求救啊用verilog语言实现电子钟
    发表于 05-04 16:37

    如何基于OMAPL138处理器实现蓝牙+WiFi功能

    我们目前使用的是OMAPL138处理器,然后在处理器上运行嵌入式Linux系统;在这个平台基础上,我们希望使用蓝牙+WiFi功能。 1、请问我们可以使用什么模块进行操作? 2、考虑过WL1831mod
    发表于 06-21 03:55

    基于TMS320F2812处理器的智能接口板设计

    结构为PMC底板结构,具有一定的通用性。系统设计接口板采用TMS320F2812处理器,对串行数据的接收和发送采用智能控制方式,它通过一个512K(32K×16)双端口存储(DPRA
    发表于 05-22 05:01

    TMS320C6678处理器的VLFFT该怎么演示?

    本白皮书探讨了TMS320C6678处理器的VLFFT演示。通过内置8个固定和浮点DSP内核的TMS320C6678处理器来执行16K-1024K的一维单精度浮点FFT算法样本,检测其
    发表于 09-29 10:05

    FPGA技术如何用VHDL语言实现8位RISC微处理器

    设计RISC微处理器需要遵循哪些原则?基于FPGA技术用VHDL语言实现的8位RISC微处理器
    发表于 04-13 06:11

    TMS320C6678处理器的性能怎么样?

    TMS320C6678处理器的性能怎么样?怎么探讨TMS320C6678处理器的VLFFT演示?
    发表于 04-19 10:53

    DSPtms320c6748处理器通过emifa连接ad7606的读取采样后的数据怎么储存

    DSPtms320c6748处理器通过emifa连接ad7606的读取采样后的数据怎么储存
    发表于 07-02 21:08

    Cortex-M3处理器是什么

    STM32单片机STM32的核心Cortex-M3处理器是一个标准化的微控制器结构,希望思考一下,何为标准化?简言之,Cortex-M3处理器拥有32位CPU,并行总线结构,嵌套中断向量控制
    发表于 07-16 06:33

    RK3399处理器与AR9201处理器有哪些不同之处呢

    RK3399处理器与AR9201处理器有哪些不同之处呢?hi3559A处理器与RV1126处理器有哪些不同之处呢?
    发表于 02-21 07:29

    ARM Cortex-M4处理器的参数传递机制是怎样的

    ARM Cortex-M4处理器在C源文件里面调用汇编函数,参数传递机制是怎样的?比如C源文件里面调用汇编语言实现的函数uint8_t Code(uint8_t a,uint32_t b
    发表于 08-22 15:23

    Sitara AM62处理器的资料分享

    和预测性维护),有助于赋予HMI全新的意义,而不是仅限于实现人机交互的界面。AM62处理器能够以低功耗实现边缘器件的分析功能(挂起状态功耗低至7mW且无需特殊考虑散热设计),支持工程师灵活地在尺寸受限
    发表于 11-03 06:11

    ARM Cortex-M85处理器技术参考手册

    Cortex®-M85处理器是一款完全可合成的高性能微控制器处理器,它实现ARM®v8.1-M主线架构,其中包括对M-Profile向量扩展(MVE)的支持。该
    发表于 08-09 07:28

    ARM Cortex-M85处理器软件优化指南

    Cortex®-M85处理器是一款完全可合成的高性能微控制器处理器实现了Arm®v8.1‑M主线架构,其中包括对M‑profile矢量扩展(MVE)的支持。该
    发表于 08-10 07:43

    ARM Cortex-A34处理器技术参考手册

    Cortex-A34处理器Verilog HDL语言描述的可合成寄存传输级(RTL)形式交付。 在使用它之前,您必须实现、集成和编程它。
    发表于 08-18 07:46