基于FPGA的UART接口开发之二
基于FPGA的UART接口开发之二微软雅黑, 接口, 开发
通常使用的数据多为并行数据,为了方便与系统中其他电路互连,UART接收器的输出数据和UART发送器的输入数据均为8比特并行数据。UART接收器将串行数据接收下来并将其转化为并行数据送出,UART发送器将输入的并行数据转换为串行数据并按照UART的帧格式输出。
图3 UART接收器符号图
图3为UART接收器的符号图,其中rst为全局复位信号,rxd为串行数据输入端,baudClk16x为输入时钟,dataOut为并行数据输出口,irq为输出数据的指示信号。首先接收器等待起始位的到来,在每个时钟上升沿检测输入数据是否为低电平,若检测到低电平,则开始计数,如果连续8个时钟内输入数据均为低电平,则认为起始信号有效,其中若有一次采样得到的为高电平则认为起始信号无效,返回初始状态重新等待起始信号的到来。认定起始信号有效后,每隔16个时钟采样一次,这样就可以保证每次都在数据的中点出采样,将采样结果送入8比特的移位寄存器,8比特数据采样结束后,间隔16个时钟采样停止位。如果采得的是高电平,则认为这帧数据有效,将移位寄存器中的数据并行送出同时将输出数据的指示信号置高,然后接收器复位,重新等待下一帧的到来;若采得的为低电平,则认为这不是一帧有效数据,不将移位寄存器中的数据输出,直接返回初始状态。
图4 UART发送器符号图
图4 为UART发送器的符号图,其中flag为输入数据指示信号,rst为全局复位信号,clkin为输入时钟,din为并行数据输入端,tdo为串行数据输出端。接收器在每个时钟的上升沿检测输入数据指示信号,若检测到其为高电平,则将并行输入数据锁存入内部的8比特移位寄存器,接下来先送出一个低电平并保持16个时钟,然后每隔16个时钟将移位寄存器中的数据移出一位,最后送出高电平,返回初始状态。
系统调试
UART接收器和发送器可根据实际需要单独使用,但在调试时为了方便,将两者对接起来,如图5所示。UART接收器的输出与UART发送器的输入相连,复位信号和时钟信号共用,时钟信号由片外晶振提供,输入FPGA后通过锁相环转换为需要的频率。
图5 调试系统模块图
串口的调试需要借助于串口调试工具,可以用VC编程实现,也可以直接使用网上已有的调试工具。直接选用网上的串口调试助手进行了测试,将数据从计算机送出,经过UART接口接收后再送回计算机。经过长达数十分钟的不间断接收和发送后,将送回计算机的数据与原始数据进行比较,多次测试均没有发生任何错误,这充分说明了这一UART接口程序具有高度的可靠性和稳定性,可以满足设计要求。
结束语
用FPGA 来对UART接口进行开发,可以减小系统的PCB面积,降低系统的功耗,提高设计的稳定性和可靠性,并可以充分利用了FPGA 的剩余资源。综合报告显示这一UART接口部分仅消耗了68 个逻辑单元,对于FPGA来说,这点资源实在是微不足道的,用如此少的资源就可以为系统增添一条新的数据通道,这是十分值得的。该设计具有很大的灵活性,虽然这一UART接口工作在每秒9600波特,但通过调整锁相环的参数,就可以使其工作在其他频率,十分方便。这仅仅是一个简单的通信接口,可根据不同系统的需要,增加FIFO等内容。该模块也可以作为一个完整的IP核,灵活地移植进各种型号的FPGA中,通用性很强。
基于FPGA的UART接口开发之二
页:
[1]