当前位置:首页 > 思想汇报 > 通用异步串行收发器UART核在DSP芯片中的设计与实现|以太网收发器芯片
 

通用异步串行收发器UART核在DSP芯片中的设计与实现|以太网收发器芯片

发布时间:2019-02-16 04:38:32 影响了:

  摘要:UART是广泛使用的串行数据通信电路,因其要求的传输线少,可靠性高,传输距离远,所以系统间互联常采用RS-232接口方式。文章基于Verilog HDL语言,结合有限状态机的设计方法来实现UART,将其核心功能集成到DSP上,使整体设计紧凑、小巧,实现的UART功能稳定、可靠,为DSP的RS-2 32接口提供了一种新的解决方案。该IP核已用于一款32位浮点DSP芯片的设计中。
  关键词:Verilog HDL;UART;异步通信;状态机
  
  1 引言
  
  通用异步串行收发器主要用于DSP与DSP之间、DSP与计算机或其它外围设备之间串行数据传输与通信的连接。一般DSP/CPU在处理数据时均以并行的方式处理,但有的外设只能以串行的,即一位一位传送的方式接收,发送数据。通用异步串行收发器――UART(UniveRSal Asynchronous Receiverand Transmitter)作为系统I/O接口中的重要组成部分,它主要进行串行和并行数据流间的转换,它与微处理器的总线接口是并行接口,而与外界的接口是串行接口。随着DSP和微机系统的广泛运用,串行通信在数据通信及控制系统中得到了广泛的运用。
  
  2 通用异步串行收发器接口规范
  
  为确保异步通信帧数据收发同步,通过在帧数据中增加起始位和停止位符号判断一个字符是否传输完毕。每帧数据通常包括起始位(1位)、数据位(5~8位)、奇偶校验位(1位)和停止位(1~2位)。但每帧数据的具体长度根据需要可以通过编程设置(7~12位)。异步串行通信中数据帧的接收是从寻找起始位开始的,因而起始位是必需的且为1比特时间的低电平。数据位可根据需要通过编程实现5、6、7或8位。奇偶检验位可根据需要选择奇校验、偶校验或不要校验位。停止位代表数据帧的结束,它是l~2位的高电平。
  为了检测数据在传输过程中是否发生错误或丢失,在UART帧数据中添加奇偶校验位。UART发送数据时,检测有效数据中‘1’的个数,自动在奇偶校验位添加‘1’或‘0’,使得‘1’的总和(包括奇偶校验位)为偶数(偶校验)或奇数(奇校验)。UART接收数据时,其接收器始终监视着串行输入端,当发现一个起始位时,就开始一个新字符的接收过程,并自动检查数据位以及奇偶校验位‘1’的个数进行奇偶校验,以确定接收数据是否正确。若奇偶校验错误,则发出奇偶校验错误信号。若检测到字符的终止位(逻辑‘1’)为‘0’,则发出帧校验错误信号。
  
  3 UART电路结构设计
  
  3.1 UART内部结构
  UART核由内部控制单元(控制寄存器)、波特率发生器、发送单元和接收单元构成,如图2所示。发送单元和接收单元独立工作,采用全双工的通信方式。
  3.2 波特率发生器
  UART的波特率发生器含有一个串口波特率配置寄存器用于配置串口传输的波特率。同时给发送器和接收器提供发送数据和接收数据的采样时钟。它可以对系统时钟进行2N分频,输出的频率Baudrate_clk=系统时钟/波特率。这样通过设置波特率配置寄存器的值,就可以得到期望的内部波特率。
  
  
  UART的典型波特率最低为300 Hz,较高的为115200 Hz,BWDSP100的典型工作频率500 MHz。要满足从500 MHz分频得到300 Hz的波特率,需要的最大分频数为:500 MHz/300 Hz=1666667,因此设计的UART分频计数器应该能够对主频进行1666667分频。该值为21位二进制,考虑到BWDSP100是32位的处理器,及以后可能的主频提升,将UART分频计数器定义为32位宽度。
  
  3.3 发送模块
  发送器实现的功能是将输入的并行数据变为串行数据,同时在数据头部加起始位,在数据位尾部加奇偶校验位和停止位。
  1.指令向STDR发送寄存器写入一个值,在向STDR写值的同时,将发送器UART busy标志置位,表明UART发送器已经开始工作,不再接受对STDR的赋值,如果发送器UART busy标志有效期间,有对STDR的赋值,则赋值无效,并且引起UART发送器错误标志置位。
  2.STDR寄存器的写使能延迟一个主时钟周期,然后触发UART发送器开始工作。
  3.如果传输位宽设置为8,将STDR[7:0]载人UART发送寄存器,开始第一帧数据的并串转换与传输,将串行数据通过TXD送出(如果传输位宽设置为7,则将STDR[6:0]载入UART发送寄存器并传输,其他类推)。
  4.第一帧传输完毕(包括数据位、校验位、结束位等),将STDR[15:8]载人UART发送寄存器,开始第二帧数据的并串转换与传输(如果传输位宽设置为7,则将STDR[13:7]载人UART发送寄存器并传输,其他类推)。
  5.依此类推,直到第4个字节传输完毕,总共传输了4个字节数据(如果传输位宽设置为7,则总共传输了STDR[27:0],共28bit数据,其他类推)。
  6.全部传输完毕之后,清除发送器UART busy标志,并送出UART发送中断。
  发送器状态机如图3所示。
  
  3.4 接收模块
  串行数据帧和接收时钟是异步的,由逻辑1跳变为逻辑0可视为一个数据帧的开始,所以接收器首先要判断起始位。
  1.复位后,UART接收器用主频持续采样RXD的输入信号,当检测到RXD的下降沿,证明数据起始位到达,用RXD的下降沿,来复位接收器分频计数器,准备接收数据。
  2.在靠近每bit数据的中间位置用主频采样得到该bit的值。采样RXD所得到的每个bit,依次移位进入UART接收移位寄存器,收满8hit(或7、6、5 bit)之后,将其载入接收缓冲SRDR的[7:O]位域(或[6:01、[5:0]、[4:0]),第一帧数据接收完毕。
  3.第一帧数据接收完毕之后,等待第二帧数据的起始位,并开始接收第二帧数据,将第二帧数据存人SRDR[15:8](或[13:7]、[11:61、[9:5]),第三帧、第四帧数据依此类推。
  4.四帧数据全部接收完毕之后,送出串口接收中断,等待主机处理。
  接收器状态机如图4所示。
  
  3.5 控制逻辑单元
  控制逻辑单元包含有UART串口配置寄存器与标志寄存器。其中配置寄存器是用于配置串口的传输控制参数,使其根据DSP/CPU指令产生相应的控制逻辑让UART按照指令工作,例如配置传输位宽,配置停止位的位数,收,发送数据时采用奇校验或偶校验或不带校验。
  串口标志寄存器中的信息用于反映串口传输过程的错误或状态,表示接收器在接收数据中产生的各种状态信息,如:有/无奇偶校验错误、有/无溢出错误等;同时它也反映了UART串口处于空闲状态还是传输状态,接收器和发送器是否为下一帧数据的接收和发送工作已准备就绪。
  
  4 仿真结果
  
  在确定整体及各功能模块的结构之后,根据状态机用Verilog语言进行行为描述,此后在Aetive-HDL仿真器环境下针对其所有功能编写适当的激励文件进行了功能仿真,其结果达到了设计要求。下面给出功能仿真结果波形图。
  
  5 结束语
  
  利用VerilogHDL设计的灵活性,根据串行通信协议的要求,通过对波特率发生器、发送器和接收器的设计与仿真,能较容易地实现通用异步收发器总模块。对于收发的数据帧和波特率时钟频率能较灵活地改变,而且硬件实现不需要很多资源。该IP核具有很强的可修改性和可移植性,作为串行接口IP核已成功地用于一款32位浮点DSP芯片的设计中。
  
  参考文献
  [1]朱世鸿。微机系统和接口应用技术[M]。清华大学出版社,2006年。
  [2]夏宇闻。Verilog数字系统设计教程[M]。北京航空航天大学出版社,2003年。
  [3]王元奎,赵文兵,杨建宁。用VHDL设计通用异步接收/发送器[J]。计算机应用,2003,29。
  [4]季雄,段吉海。基于VerilogHDL的UART设计[J]。微计算机信息,2006年第22卷。
  
  作者简介
  汪灏,工程硕士,现为中国电子科技集团公司第38研究所高级工程师,主要从事雷达信号处理与集成电路设计工作;
  郭二辉,2001年毕业于合肥工业大学,现为中国电子科技集团公司第38研究所工程师。

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3