APP下载

波特率连续可调的串口通信技术

2011-05-08曹赛男

电子科技 2011年12期
关键词:累加器波特率串口

曹赛男,刘 方

(南京航空航天大学电子信息工程学院,江苏南京 2 10016)

基于PCI总线[1]的串口通信技术,在工业领域中有着重要的应用。而目前市场上基于PCI总线的串口通信卡,虽然可以实现多串口收发且波特率可调,但可调的波特率只是几个点,不能实现连续可调。但在一些军事通信中,经常会需要波特率连续可调,以满足军事通信中对波特率的特殊要求。文中基于这个要求,采用硬件描述语言,实现这一功能要求在FPGA上的研究、开发、测试与验证。

1 波特率连续可调的串口通信

1.1 串口通信中的波特率技术

在数据通信中,波特率等于每秒钟传输的数据位数。在串行通讯中,收发双方基于同一波特率实现数据的发送与接收。波特率即为发送或接收信号的频率。

1.2 波特率连续可调的DDS方法

1.2.1 设计要求

例如RS232标准中串行通信波特率的一般要求范围是300~115 200 bit·s-1。而传统的串行通信卡支持波特率可调只是在某几点可调。文中研究的目标是波特率连续可调,例如要求波特率在300~115 200 bit·s-1之间可以实现步进为1 bit·s-1甚至0.1 bit·s-1的调节。

改变波特率即改变信号发送或信号接收时钟的频率,可以采用对基准时钟进行数据分频的方法,但达不到调节的连续性。文中采用改进的DDS方法,实现对发送时钟fclk步进为1 bit·s-1的调节。

1.2.2 DDS原理介绍

直接数字频率合成DDS(Direct Digital Synthesis)是种把一系列数字信号通过D/A转换器转换为模拟信号的合成技术。传统DDS的核心结构[2]如图1所示。

图1 传统DDS的核心结构图

输出频率可由式(1)确定。

最小频率精度可由下式确定

其中,fclk是时钟频率;FCW是频率控制字;L为相位累加字的字长。

1.2.3 产生频率连续可调的时钟信号

在传统的DDS技术中,频率最小步进值的尾数不是零,给后续的频率合成造成不便,所以采用改进的DDS技术[3],循环相位累加器设定一个可调的最大值作为溢出值,最大值溢出后,以余值而不是以零作为下一次累加的起始值。结构框图如图2所示。

图2 改进之后的DDS结构图

改进后的DDS输出频率可由式(3)确定

最小频率精度可由式(4)确定

其中,Mode为循环相位累加器的最大值,即模值,可以预先设定。N为一个周期所包含的采样点数。Mode,N的取值要综合考虑fclk和FCW的值,以获得一个随FCW线性变化的fclk,即实现了fclk随FCW变化而变化的连续可调。

1.2.4 采用的DDS技术

针对RS232标准中串行通信中波特率的一般要求范围300~115 200 bit·s-1,采用改进的DDS技术,基于FPGA,设计如图3所示的DDS模块。

图3 采用改进的DDS技术设计时钟信号发生器

其中的循环相位累加器模块DDS_adder模块,相位寄存器模块DDS_addr_gen是基于硬件描述语言设计的模块,ROM模块DDS_ROM是基于FPGA的宏模块[4]。

在本设计中实现发送时钟fclk在300~115 200 bit·s-1范围内步进为0.1 bit·s-1的调节。其中,Mode取7 812 500,N取4,fclk为外部晶振提供的频率为50 MHz时钟。

因此,有ΔF=1.6 FCW。其中,FCW为应用程序所传送的实际控制频率的10倍,根据UART协议,发送时钟的频率至少是串口通信波特率的16倍。所以,以上的参数设置即实现了步进为0.1 bit·s-1的连续可调的波特率设置。

1.2.5 连续可调信号的验证

文中DDS技术是基于FPGA实现的。根据不同的频率控制字fword输入,经过几个过渡时钟后,DDS模块即可以稳定产生随频率变化的时钟信号fclk。

在图4的仿真中,所仿真的频率点是115200Hz,9600Hz,1200Hz。对应的fword为0x00119400,0x00017700,0x00002EE0。

图4 时钟信号发生器所产生的时钟信号图

2 任意波特率串口通信模块

2.1 串口通信模块的框架

PCI接口模块向通信模块传送频率控制字,发送的数据,发送命令和接受命令。从通信模块获取中断信号,接收的数据。频率控制字fword经过DDS模块,产生COM模块所需的发送时钟频率,COM模块接收数据或发送数据受控于PCI接口模块[5],实现与外部串口的数据沟通,总体框架如图5所示。

图5 整体设计框架图

2.2 串口通信模块

串口通信模块COM要实现数据的接收和发送双向工作,接收和发送均采用FIFO的方式[4],发送FIFO满,即自动向外部端口发送数据,接收FIFO半满即自动将FIFO中的数据向上传输。采用FIFO结构,而不采用RAM,可以免去复杂的地址问题。

COM模块的设计框架如图6所示。包括:rcvFIFO实现从串口接收数据的和用于Rcv模块。txmitFIFO实现向串口发送数据的和用于Txmit模块。

图6 COM模块的设计框架图

从PCI接口传送过来的数据是32位的,经过txmitFIFO,32位数据分4次传送到Txmit模块。

2.3 设计方案的验证

2.3.1 COM中各个模块的功能验证

要保证COM模块可以实现数据的发送与接收,其中的各模块必须实现各自的功能,再将各模块连接起来。

例如其中Rcv模块实现串口数据的接收,接收数据的频率由DDS接口产生的时钟信号fclk控制。接收的数据发送到rcvFIFO中。Rcv模块接受数据的仿真波形如图7所示,串口接收的数据是1,0,1,0,1,0,1,0,发出的数据是10101010。

图7 Rcv模块的仿真图

2.3.2 COM模块功能的验证

各模块的功能验证通过后,再将各个模块连接起来,完成COM模块的设计,图8所示为COM模块发送端口的波形图。频率控制字是0x00119400,DDS模块产生发送时钟fclk,Serial_port输出即为输出串口。

图8 COM模块发送端口仿真图

3 应用前景

文中研究的波特率连续可调的串口通信模块是基于PCI接口的,其在工业控制中有着广泛应用。实现频率连续可调可以满足很多特殊需求。PCI接口的设计和通信模块的设计可以同时基于FPGA,实现设计的灵活性。设计方案中只实现了一收一发的功能,基于本设计可以扩展成多串口的波特率连续可调的通信卡。

[1]PCI Special Interest Group.PCI local bus specification(v2.2)[EB/OL].(2003-08-07)[2011-03-15]http://www.pcisig.com.

[2]李春剑,吉望西,刘达伦.基于VerilogHDL的DDS设计与仿真[J].现代电子技术,2008,33(20):51-53.

[3]李晓芳,常春波,高文华.基于FPGA的DDS算法的优化[J].仪器仪表学报,2006,27(6):896-898.

[4]Altera Corp.Megafunction overview user guide[EB/OL].(2003-08-07)[2011-03-15]http://www.altera.com/literature/lit-ip.jsp.

[5]李贵山,陈金鹏.PCI局部总线及其应用[M].西安:西安电子科技大学出版社,2003.

猜你喜欢

累加器波特率串口
UART 波特率检测电路的FPGA 设计算法与实现
密码累加器研究进展及应用
浅谈AB PLC串口跟RFID传感器的通讯应用
CAN 总线波特率自适应程序设计
波特率自适应的CAN驱动在嵌入式Linux下的实现①
Fpga的信号发生器设计原理
基于霍夫变换的工位点识别算法设计与实现
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信