微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Wishbone总线的UART IP核的设计

基于Wishbone总线的UART IP核的设计

时间:09-28 来源:互联网 点击:

随着集成电路与嵌入式技术的发展与广泛应用,许多嵌入式系统都需要进行串行通信,因此在片上嵌入式系统芯片中集成uART(通用异步接发装置)的IP核已成为一种趋势。

  在基于IP核复用技术的集成电路设计中,片上总线的选取是最为关键的问题。目前,许多厂商已经开发了适用于各自片上总线标准的UART IP核,例如基于AMBA总线的UART IP核、基于CoreCONnect总线的UART IP核等。如果用户要使用这些商业化的UART核,则需要得到授权。因此从成本、性能、开放性的角度来看,采用开源、易于实现的Wishbone总线标准设计出的UART IP核将会拥有广泛的市场。

  1 UART IP核的设计原理

  1.1 UART工作原理

  通用非同步收发装置(UART)是计算机进行串行通信的重要组成部分。它将微机系统内部传送过来的并行数据转换为串行输出数据流,以电平的形式传输出去;将微机系统外部传送来的串行数据转换为字节,供微机系统内部使用并行数据的器件使用;在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验;在输出数据流中加入启停标记,并从接收数据流中删除状态标记。

  对于UART而言,总线上的所有信号都是至关重要的。这些信号包括所需的控制信息和数据。因此总线接口的设计决定着UART的设计细节。本设计采用Wishbone总线作为UART核与微机系统进行通信的主机接口。UART核的接口信号如图1所示。


图1 UART核的接口信号

  1.2 Wishbone总线接口

  在集成电路设计领域,Wishbone总线结构是一种灵活、开源的设计方法。其目的是促进设计的再利用,简化系统级芯片的集成问题。通过在IP核之间创建一个总线接口,从而将各个IP核能方便地进行连接。这就提高了设计的可复用性和系统的可靠性,加快了产品推向市场的速度。在此之前,IP核之间都是使用非标准的总线规范进行连接的,这就难以实现复用。因此采用标准化的E总线结构设计IP核,已成为IC设计行业的主流。

  在设计中,Wishbone总线为微机系统和UART控制器提供了操作接口。Wishbone总线接口的主要功能是协调处理器和UART核之间的信号,使处理器能正确地使用UART核进行数据通信。

  2 UART IP核的设计实现

  UART IP核的研发是遵照RS232协议和Wishbone总线标准进行的,集成了UART的基本功能。

  UART IP核的主要技术特征包括:

  (1)支持标准RSR232接口标准和Wishbone总线规范。

  (2)全双工独立收发功能。

  (3)接收通道进行奇偶校验,溢出,产生可选中断。

  (4)内置支持接收和发送的16 Byte FIFO。

  (5)发送“空”产生可选中断,接收“满”产生可选中断。

  UART IP核体系结构如图2所示。


图2 UART IP核体系结构

  UART IP核内部主要包括数据发送模块、数据接收模块以及Wishbone总线接口模块。各模块的设计如下。

  2.1 Wishbone总线接口模块设计

  Wishbone总线接口模块将UART IP核与微机系统相连。该模块提供Wishbone Master和Wishbone Slave接口。

  Wishbone总线接口模块的主要功能如下:

  (1)提供UART IP核与其他设备的接口,如存储器或者主机的接口。

  (2)包含缓冲描述符(储存于内部RAM)。

  (3)包含信号在主机时钟、发送时钟和接收时钟之间的同步逻辑。

  (4)发送功能。读取发送缓冲描述符,读取数据到发送FIFO并开始发送,其后将发送状态写到发送缓冲描述符。

  (5)接收功能。读取接收缓冲描述符,将获得的字节写入接收FIFO,其后通过Wishbone Muter接口与微机系统进行通信。最后,将接收状态写到接收缓冲描述符。

  当处理器需要串行发送数据时,先将数据以包的形式存储于主存储器中,然后将存储的所有包的起始地址、目的地址、长度以及发送控制信息写入发送描述符中。

  Wishbone接口模块读取到一个非空的发送描述符后即发送数据,发送的数据要通过Wishbone接口逻辑访问位于总线上的主存储器,读取到的数据首先放到发送FIFO中,其后再通过发送控制和同步逻辑与数据发送模块进行握手,将数据从TX_O端口串行发送出去。

  当接收数据时,数据由RX_I端口串行地移入接收FIFO中,每收满8位数据就移入接收保持寄存器,然后通过Wishbone总线并行传输给处理器核。

  2.2 数据接收模块设计

  由于外部信号是通过异步串行的形式传输,因此当接收端口检测到一个由高到低的数据就被视为一个帧的起始位。为了避免接收信号的噪声而产生的不正确的数据,检测到的起始位时钟至少要低于50%的波特率时钟。接收模块一旦接收到有效的起始位,就将通过RS232标准的波特率对数据位和校验位进行采样。

设计采用接收状态机控制整个模块的接收过程。接收状态机可分为5个状态,即IDLE、RX_START、RX_DATA、CH

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top