沈潇波 闫法钢
(第七一五研究所,杭州,310023)
FPGA与TMS320C67XX的McBSP接口设计
沈潇波 闫法钢
(第七一五研究所,杭州,310023)
多通道缓冲串行口McBSP(Multichannel Buffered Serial Port)是TI公司DSP产品中标准串行口的增强版本[1]。提出一种采用FPGA模拟McBSP接口的方法,基于Verilog HDL语言实现了McBSP接口的基本功能;通过与TMS320C67XX系列DSP的对接测试证明了设计的有效性和实用性。
串行接口;McBSP接口;对接测试;DSP;FPGA
在许多数字信号处理应用系统中,DSP担任的工作是快速而复杂的核心运算,但是对于运算结果的输出控制不够灵活;而DSP与FPGA相结合的设计则可以有效弥补这种不足。本文从实际项目需求出发,设计了一种基于FPGA的McBSP接口协议,与TI公司的TMS320C67XX系列DSP进行数据通信。DSP接收ADC采样后信号,经过一系列运算处理后,通过McBSP接口发送至FPGA,最终由FPGA通过以太网UDP/IP协议发送至上位机;同时,FPGA接收上位机的控制命令,解析后通过McBSP接口发送至DSP响应执行,从而完成双向通信任务。
McBSP接口是TI公司DSP产品中标准串行口的增强版本,提供了以下功能:全双工通信;允许连续数据流的双缓冲数据寄存器;接收与发送使用独立帧同步脉冲和时钟信号;提供与工业标准编码器、模拟接口芯片及其他串口连接的ADC、DAC器件的标准接口;支持用来进行数据传送的外部偏移时钟,或内部可编程的频率偏移时钟;另外,McBSP还具有以下能力:宽范围的数据字长选择,包括8位、12位、16位、20位、24位和32位字长;对帧同步和数据时钟的可编程电平表示;高度可编程的内部帧与时钟发送器[2]。
图1 系统框图
由图1可以看出,McBSP接口通过数据发送(DX)引脚和数据接收(DR)引脚,与连接到McBSP接口的设备进行数据通信。控制信息(时钟和帧同步)通过CLKX、CLKR、FSX和FSR引脚进行通信。
DSP端的McBSP接口通过配置相应寄存器实现,本文直接给出配置结果:发送与接收均固定帧长为32位;接收数据(DR)在周期时钟(CLKR)的下降沿采样,发送数据在(DX)上升沿定时;使用高电平帧同步信号;数据位与帧同步不延时;接收和发送时序如图2。
图2 McBSP收发时序
每帧数据32位,用同步信号(FSX/FSR)作为帧起始标志,即帧同步与紧接的31个时钟周期构成一个完整的帧传输周期;帧内32位数据,收发遵循高位在前、低位在后原则。
经DSP运算处理后的报文长度为固定1 024 Byte,而McBSP接口每帧发送长度为4 Byte(32位);因此,每个报文需拆分成256帧发送。同时,1 024 Byte的报文有如下特征:以每4 Byte为单位,高8位(D31~D24)为D23位的符号扩展,即每4 Byte的高9位相同。设计DSP至FPGA的McBSP接口传输协议如下:在1 024 Byte的报文前面增加3帧(12 Byte)首部信息,如图3。
· 4 Byte发方地址:C0B90182H,表示信息发送方的地址,不与有效数据冲突;
· 4 Byte收方地址:EAB90111H,表示信息接收方的地址,不与有效数据冲突;
· 1 Byte 00H,1 Byte报文标识(83H),2 Byte报文长度(0410H),4 Byte组成一帧;且高9位为:0000_0000_1,不与有效数据冲突。
图3 发送报文格式
FPGA通过UDP/IP协议接收上位机的控制命令,也为固定长度20 Byte,格式同样包含12 Byte的首部(C0B90150H,EAB9010BH,00E30014H,首部字段内容固定,但区分于DSP至FPGA的首部信息)及8 Byte命令内容。20 Byte的控制命令,拆分成5帧McBSP数据依次发送至DSP。
收发过程中,首部信息的添加,即保证其不会与数据部分内容重合,也方便报文同步信息的提取,确保报文有效传输。
由于McBSP串口支持全双工通信,FPGA内部结构划分为“接收”和“发送”两个独立的设计单元。“接收”和“发送”单元在各自时钟信号驱动下,实现与DSP的报文通信。
3.1 “接收”过程
FPGA端“接收”对应于DSP端的发送引脚DX、CLKX、FSX,“接收”单元根据McBSP协议约定,在接收到完整的报文后,通过以太网UDP/IP协议发送至上位机。
“接收”单元分为“数据通路”和“控制逻辑”两部分,“数据通路”如图4。
图4 McBSP“接收”数据通路
数据DX和同步信号FSX在时钟CLKX的下降沿存入各自对应的32位移位寄存器;FSX所对应的移位寄存器用作判断,当其对应32位并行数据为8000_0000H时,表明一个有效的McBSP数据帧被接收到;此时,将DX所对应的32位并行数据通过写指针存入DPRAM;当判断完整的McBSP报文接收完毕时,从DPRAM中读取数据,与以太网IP首部、UDP首部合并后,经MAC(Media Access Control)层后,由以太网物理层芯片发送至上位机。
“控制逻辑”用于McBSP协议过滤,确保接收到正确的McBSP报文后,转发至上位机;状态转移关系如图5。
图5 McBSP“接收”状态转移图
触发状态跳转的信号:
· Rcv:表示接收到一帧(32位)McBSP数据;
· hdr1_flag:表示当前所接收的帧为C0B90182H;
· hdr2_flag:表示当前所接收的帧为EAB90111H;
· hdr3_flag:表示当前所接收的帧为00830410H;
· Rcv_done:表示当前接收到McBSP帧数达到256帧,即完整的McBSP报文接收完毕;
· frame_vld:表示当前所接收的帧为有效McBSP报文的数据部分,即高9位相同。
状态转移逻辑描述:
· IDLE:初始化或复位后状态;当接收到“Rcv&hdr1_flag”时,跳转至HDR_1;否则保持原状态;
· HDR_1:表示当前处于已接收到“C0B90182H”帧状态;若接收到“Rcv&hdr2_flag”时,跳转至HDR_2;若接收到“Rcv&hdr1_flag”时,保持原状态;若接收的McBSP帧“!hdr1_flag&!hdr2_flag”,返回IDLE;
· HDR_2:表示当前处于已接收到“EAB90111H”帧状态;若接收到“Rcv& hdr3_flag”时,跳转至HDR_3;若接收到“Rcv&hdr1_flag”时,返回HDR_1;若接收的McBSP帧 “!hdr1_flag&!hdr3_flag”,返回IDLE;
· HDR_3:表示当前处于已接收到“00830410H”帧状态,此时,无条件跳转至FRAME准备接收McBSP报文的数据部分;
· FRAME:表示持续接收McBSP报文的数据部分状态;若接收到“Rcv&!Rcv_done&frame_vld”时,保持原状态;若接收到“Rcv& hdr1_flag”时,跳转至HDR_1;若接收到“Rcv&!hdr1_flag&! Rcv_done&!frame_vld”时,表示当前McBSP报文的数据部分未完整接收,返回IDLE;若接收到“Rcv_done”,表示完整的McBSP报文接收完成,跳转至DONE;
· DONE:完整的McBSP报文接收完毕,触发以太网UDP/IP发送流程,同时返回IDLE,等待下一帧McBSP数据。
3.2 “发送”过程
FPGA的“发送”过程是在完整接收以太网UDP/IP报文(20 Byte)后,对前12 Byte内容作“协议过滤”,若为有效控制命令,拆分成5帧McBSP数据依次发送至DSP;若前12 Byte不符合McBSP协议首部格式,则丢弃该报文。
图6 McBSP“发送”数据通路
FPGA的发送“时钟”,由内部分频器产生。时钟CLKR由该“时钟”直接驱动;数据DR及同步信号FSR根据“时钟”节拍产生。当接收到完整有效控制命令后,单次从DPRAM读取32位数据,按照高位在前规则,由移位寄存器输出至DR引脚;同时,在每个32位数据的最高位(D31)置高FSR;重复五次,完成一个控制命令报文的发送流程。
3.3 硬件验证
McBSP协议的接收与发送逻辑用Verilog HDL语言描述实现,经编译、布局、布线后,下载至Xilinx公司XC5VLX30T器件。该设计调用了一个器件内嵌的 MAC硬核用于网络传输,McBSP协议占用30%器件逻辑资源,实现了设计预期的传输功能。
经DSP处理后的报文速率为6.144 Mbps,DSP配置时钟CLKX频率10 MHz;上位机发送的控制命令速率小于1 Mbps,CLKR由FPGA内部分频器产生的7.8 MHz时钟提供。系统上电工作,上位机对接收到的以太网UDP/IP报文解析处理后,结果符合设计预期;同时DSP能快速有效响应上位机发出的控制命令;McBSP接口协议保证通信的有效性和实用性。
基于FPGA的McBSP接口设计,可以根据TMS320C67XX的配置模式,有效实现全双工通信。本文针对具体项目设计了定长报文传输,设计简洁,性能可靠;将来可以设计变长报文的传输协议,具备更好的通用性。
[1] Texas Instruments.TMS320C6000 DSP Multichannel Buffered Serial Port (McBSP)Reference Guide[Z].2004.
[2] 于凤芹.TMS320 C6000 DSP 结构原理与硬件[M] 北京: 北京航空航天大学出版社, 2008.
[3] Xilinx.Virtex–5 FPGA User Guide[Z].2012.
[4] Xilinx.Virtex–5 FPGA Embedded Tri-mode Ethernet MAC User Guide[Z].2012.