波特率连续可调的串口通信技术
摘要 在基于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模块。
- 超宽带无线通信技术的发展(08-04)
- 无线微波通信技术MMDS全解(03-16)
- LTE:更优化的无线通信技术(05-30)
- 比WiFi快20倍的THz无线通信技术(05-20)
- 全面解析UWB无载波通信技术及市场前景(02-03)
- 基于ZigBee的短距离无线通信网络技术(02-15)