波特率连续可调的串口通信技术
扫描二维码
随时随地手机看文章
摘要 在基于PCI接口波特率连续可调的串口通信技术中,串口通信模块作为整个PCI接口功能的本地模块,是实现PCI接口模块与外部串口信息的沟通。文中介绍了波特率连续可调技术的实现原理和方法,并基于PCI接口和FPGA技术完成通信模块的实现与测试验证。其具有设计的灵活性和应用的广泛性。
关键词 PCI接口;串口通信;波特率连续可调;DDS;FPGA
基于PCI总线的串口通信技术,在工业领域中有着重要的应用。而目前市场上基于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的核心结构如图1所示。
输出频率可由式(1)确定。
其中,fclk是时钟频率;FCW是频率控制字;L为相位累加字的字长。
1.2.3 产生频率连续可调的时钟信号
在传统的DDS技术中,频率最小步进值的尾数不是零,给后续的频率合成造成不便,所以采用改进的DDS技术,循环相位累加器设定一个可调的最大值作为溢出值,最大值溢出后,以余值而不是以零作为下一次累加的起始值。结构框图如图2所示。
改进后的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模块。
其中的循环相位累加器模块DDS_adder模块,相位寄存器模块DDS_addr_gen是基于硬件描述语言设计的模块,ROM模块DDS_ROM是基于FPGA的宏模块。
在本设计中实现发送时钟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的仿真中,所仿真的频率点是115 200 Hz,9 600 Hz,1 200 Hz,,对应的fword为0x00119400,0x00017700,0x00002EE0。
2 任意波特率串口通信模块
2.1 串口通信模块的框架
PCI接口模块向通信模块传送频率控制字,发送的数据,发送命令和接受命令。从通信模块获取中断信号,接收的数据。频率控制字fword经过DDS模块,产生COM模块所需的发送时钟频率,COM模块接收数据或发送数据受控于PCI接口模块,实现与外部串口的数据沟通,总体框架如图5所示。
2.2 串口通信模块
串口通信模块COM要实现数据的接收和发送双向工作,接收和发送均采用FIFO的方式,发送FIFO满,即自动向外部端口发送数据,接收FIFO半满即自动将FIFO中的数据向上传输。采用FIFO结构,而不采用RAM,可以免去复杂的地址问题。
COM模块的设计框架如图6所示。包括:rcvFIFO实现从串口接收数据的和用于Rcv模块。txmitFIFO实现向串口发送数据的和用于Tmit模块。
从PCI接口传送过来的数据是32位的,经过txmitFIFO,32位数据分4次传送到Txmit模块。
2.3 设计方案的验证
2.3.1 COM中各个模块的功能验证
要保证COM模块可以实现数据的发送与接收,其中的各模块必须实现各自的功能,再将各模块连接起来。
例如其中Rcv模块实现串口数据的接收,接收数据的频率由DDS接口产生的时钟信号fclk控制。接收的数据发送到revFIFO中。Rcv模块接受数据的仿真波形如图7所示,串口接收的数据是1,0,1,0,1,0,1,0,发出的数据是10101010。
2.3.2 COM模块功能的验证
各模块的功能验证通过后,再将各个模块连接起来,完成COM模块的设计,图8所示为COM模块发送端口的波形图。频率控制字是0x00119 400,DDS模块产生发送时钟fclk,Serial_port输出即为输出串口。
3 应用前景
文中研究的波特率连续可调的串口通信模块是基于PCI接口的,其在工业控制中有着广泛应用。实现频率连续可调可以满足很多特殊需求。PCI接口的设计和通信模块的设计可以同时基于FPGA,实现设计的灵活性。设计方案中只实现了一收一发的功能,基于本设计可以扩展成多串口的波特率连续可调的通信卡。