APP下载

基于FPGA 的PCM解调器设计

2016-08-31李盘文蒋宏娜

中国科技信息 2016年6期
关键词:电平数据流解析

李盘文 王 亮 蒋宏娜

基于FPGA 的PCM解调器设计

李盘文 王 亮 蒋宏娜

针对航空测试中常用的PCM数据流,提出一种双通道PCM解调器设计。系统以FPGA为控制器,实现两路PCM数据流的实时解析。PCM解码过程中进行,帧同步和位同步的检测,帧和位都同步则此帧数据有效。解析出一帧完整数据后通过USB发送给终端。

在航空测试领域,PCM作为数据传输和遥测的数据格式被广泛使用。信息接收端需要解调器,对PCM进行解调,以便进行数据处理和数据记录。FPGA具有结构灵活,设计周期短,可扩展性强,接口丰富等优点,在高速信号实时处理领域越来越重要。本文提出使用FPGA同时对两路输入的PCM 数据流进行解析,解析出一帧完整数据后放入FPGA内部RAM缓存,通过USB接口发送给外部设备。

硬件电路设计

系统硬件由RS232电平转换芯片,RS422电平转换芯片,EEPROM芯片,USB驱动芯片和FPGA组成。上位机通过串口对系统进行配置,PCM数据流经过RS422电平转换芯片转换为TTL电平,FPGA将解析出的PCM数据通过USB芯片发送出去。

控制器FPGA

FPGA选用altera公司的 EP3C80F484I7,此FPGA自带多种接口的IP核,内部有2810880位的存储空间可以使用,可用IO 296个。此款芯片资源满足系统需求。

电平转换模块

上位机通过串口对系统进行配置,使用MAX232将电平转换为TTL电平供FPGA使用。PCM数据流为422电平,使用MAX3490将电平转换为TTL电平供FPGA使用。

存储器控制模块

存储器使用二线制I2C串行EEPROM AT24C02,此芯片有两种写入方式,一种是字节写,一种是页写,允许一个周期内同时对一个字节到一页的若干字节进行编程写入。

USB驱动模块

此模块使用FTDI公司的USB接口芯片FT245BM,此芯片支持USB协议与并行I/O协议之间的转换。使用时无需考虑固件设计以及驱动程序的编写,从而能大大缩短产品的开发周期。FT245BM支持USB2.0规范,数据传输速度可达12M bps。

软件设计

软件按模块进行设计。系统的运行由FPGA控制完成,软件由以下模块:UART收发模块,PCM解析模块,控制模块,数据缓存模块,接口模块。各功能模块在控制模块的控制下工作,来完成对PCM数据的采集和处理工作。组合模块如图2所示。

UART收发模块

系统选用9600bit/s的波特率传输数据,上位机按照表1所示的格式将配置信息下发给FPGA,经过奇校验数据无误,将数据通过I2C总线写入EEPROM。

表1 配置信息格式

在接收串口数据时,如图3所示,在每个数据中间进行采样,此时数据最为稳定,第0位数据时起始位忽略,接下来是8位数据位和一位奇偶校验位都被采集,最后一位是停止位忽略。在每个码元的每个采样点处间隔两个时钟连续采样三次,然后将这三次的采样值两两按位与,再将相与的结果相或便得到该采样点处的真实值,有效地防止了干扰造成的信号误判。取到数据后将每一位按位取异或后与接受到的奇偶校验位对比,一致则数据正确有效,否则数据错误,给上位机回发aaaa。

PCM解析模块

图1 系统硬件结构图

图2 组合模块结构图

图3 串口接受数据时序

PCM帧结构如图4所示,一个主帧有多个子帧组成,每个子帧由同步头,帧计数器,数据字构成。字长度为4~16,同步头长度为4~32位,且同步头长度是字长度的倍数。

图4 PCM帧格式

图5 状态转移图

图6 数据接收流程

图7 数据缓存

图8 PCM解析功能仿真

PCM解析流程

PCM解析模块负责完成位同步,子帧同步,串并转换功能。PCM解析如图5按如下步骤进行:

(1)Idle状态初始化计数器

(2)进入SYN1状态检测同步头

(3)当检测到同步头时,进入RX_PCM 状态检测是否为第一帧

(4)当一帧数据接收完毕,进入SYNX状态检测后面跟着的是否是同步头

(5)当检测到同步头时,判断主帧数据是否接收完毕

(6)一主帧数据接受完毕,进入下一次数据接收

帧同步头检测

同步头检测分为两种,一种主帧开始的同步头检测即SYN1状态,如图6左图所示。一种是子帧数据接收完成后同步头检测即SYNX状态,如图6中图所示。

PCM数据接收

PCM有多种编码模式,系统设计有NRZL和BiΦL两种码型,以NRZL为例。数据在时钟上升沿发生变化,在时钟的下降沿处于稳定状态,所以当检测到时钟下降沿时进行采样,每个采样点处间隔两个时钟连续采样三次,然后将这三次的采样值两两按位与,再将相与的结果相或便得到该采样点处的真实值。

如图6右图所示,接收PCM数据,一子帧数据接收完毕后需检测后面的数据是否为同步头,如果不是则将此帧数据丢弃并重新检测主帧同步头。

数据缓存模块

数据在被处理的同时被写入双口RAM,当一主帧数据处理完毕,产生一个完成标志,同时将高位地a16 取反。系统检测到完成标志就将数据从RAM通过USB接口发出去,同时继续接收下一帧PCM数据。

系统调试

通过modesim进行功能仿真。,对系统配置,同步头FE6B2840,字长16,一帧有4个字,一主帧有三个子帧。如图8所示,系统在处理数据时将有效的数据写入RAM。

结语

通过对PCM格式进行研究,设计了基于FPGA的两路PCM解调器,解调器可以在接受PCM数据的同时,进行位同步和帧同步的检测并将数据写入RAM。处理后的数据通过USB发给外部设备。经过调试系统工作正常,可以实现PCM解调功能,满足设计要求。

DOI:10.3969/j.issn.1001-8972.2016.06.024

猜你喜欢

电平数据流解析
三角函数解析式中ω的几种求法
三电平PWM整流器下的地铁牵引供电系统探讨
汽车维修数据流基础(上)
汽车维修数据流基础(下)
三相三电平PFC(VIENNA)控制策略研究
基于数据流特性的MPTCP数据流调度算法研究
睡梦解析仪
电竞初解析
三电平H桥逆变器差模干扰源研究
对称巧用解析妙解