位置:51电子网 » 技术资料 » 通信网络

带硬件地址识别的UART IP 的设计和实现

发布时间:2008/5/29 0:00:00 访问次数:278

摘要:在通信和控制系统中,常使用异步串行通信控制器(uart)实现系统辅助信息的传输。为实现多点通信,通常用软件识别发往本站点或其它站点的数据,这会加大cpu的开销。介绍了一种基于fpga的uart ip,由硬件实现多点通信时的数据过滤功能,降低了cpu的负担,提高了系统性能。

关键词:uart 多点通信 fpga 知识产权

在通信和控制系统中,常使用异步串行通信实现多块单板之间的辅助通信,各个单板通过总线方式连接。为了实现点对点通信,需要由软件定义一套较复杂的通信协议,过滤往来的数据,消耗了cpu较多的时间。89c51单片机有一种九位通信方式,采用一位地址位来实现通信对象的选择,只对发往本地址的地址发生中断进而接收数据。通用的uart芯片如16c550和89c51等构成总线式的通信系统时,需要由cpu通过软件处理接收到的地址和产生九位的数据。本文介绍的uart采用verilog hdl硬件描述语言设计,可以用fpga实现,可应用于soc设计中。其主要特性如下:

·全硬件地址识别,过滤数据不需要cpu的介入;支持一个特殊地址,可用于监听和广播。

·支持查询和中断两种工作方式,中断可编程。

·接收和发送通路分别有128byte fifo,每个接收字节附带状态信息。

·设计采用verilog hdl语言,全同步接口,可移植性好。

·支持自环测试功能。

·波特率可以编程,支持八位或者九位两种数据格式。

设计的uart的九位串行数据格式如图1所示。在空闲状态,数据线处于高电平状态。总线由高到低跳变,宽度为一个波特率时间的负脉冲为开始位,然后是8bit的数据位。数据位后面是lbit的地址信息位。如果此位是1,表示发送的字节是地址信息;如果此位是0,传输的是正常数据信息。地址指示位后是串行数据的停止位。

1 uart设计

uart采用模块化、层次化的设计思想,全部设计都采用verilog hdl实现,其组成框图如图2所示。整个uart ip由串行数据发送模块、串行数据接收模块、接收地址识别模块、接收和发送hifo、总线接口逻辑、寄存器和控制逻辑构成。串行发送模块和接收完成并/串及串/并的转换,接收地址的识别由接收地址识别模块完成。发送和接收hifo用于缓存发送和接收的数据。总线接口逻辑用于连接uart ip内部总线和host接口。寄存器和控制逻辑实现uart ip内部所有数据的收发、控制和状态寄存器、内部中断的控制及波特率信号的产生。以下详细说明主要部分的设计原理。

1.1 串行数据发送模块

串行数据发送模块将数据或地址码由并行转换为串行,并从串行总线输出。设计采用有限状态机实现,分为空闲、取数、发送三个状态。其状态迁移如图3所示。各个状态说明如下:

空闲状态:状态机不断检测发送使能位、uart使能位和发送fifo空/满标志位,如果使能位为高、uart使能打开且fifo空标志位为低,串行发送进入取数状态。

取数状态:在此状态,分两个周期从发送fifo中取出待发送的数据或者地址,然后进入发送状态。

发送状态:在此状态,状态机按照九位串行数据的格式依次发送开始位、数据位、地址指示位。待停止位发送完毕后,返回空闲状态。一个字节的数据发送完毕后,进行下一个字节数据的发送流程。

1.2 串行数据接收模块

串行数据接收模块用于检测串行数据的开始位,将串行总线上的串行数据转换成并行数据并输出。接收逻辑也采用有限状态机实现,分为空闲状态、寻找开始位、接收数据和保存数据四个状态。其状态迁移图如图4所示。各个状态说明如下:

空闲状态:在此状态,不断检测接收使能、uart使能和串行输入信号的状态。如果串行输入信号出现由高到低的电平变化且uart使能和接收使能都为高,则将采样计数器复位,并进入寻找开始位状态。

摘要:在通信和控制系统中,常使用异步串行通信控制器(uart)实现系统辅助信息的传输。为实现多点通信,通常用软件识别发往本站点或其它站点的数据,这会加大cpu的开销。介绍了一种基于fpga的uart ip,由硬件实现多点通信时的数据过滤功能,降低了cpu的负担,提高了系统性能。

关键词:uart 多点通信 fpga 知识产权

在通信和控制系统中,常使用异步串行通信实现多块单板之间的辅助通信,各个单板通过总线方式连接。为了实现点对点通信,需要由软件定义一套较复杂的通信协议,过滤往来的数据,消耗了cpu较多的时间。89c51单片机有一种九位通信方式,采用一位地址位来实现通信对象的选择,只对发往本地址的地址发生中断进而接收数据。通用的uart芯片如16c550和89c51等构成总线式的通信系统时,需要由cpu通过软件处理接收到的地址和产生九位的数据。本文介绍的uart采用verilog hdl硬件描述语言设计,可以用fpga实现,可应用于soc设计中。其主要特性如下:

·全硬件地址识别,过滤数据不需要cpu的介入;支持一个特殊地址,可用于监听和广播。

·支持查询和中断两种工作方式,中断可编程。

·接收和发送通路分别有128byte fifo,每个接收字节附带状态信息。

·设计采用verilog hdl语言,全同步接口,可移植性好。

·支持自环测试功能。

·波特率可以编程,支持八位或者九位两种数据格式。

设计的uart的九位串行数据格式如图1所示。在空闲状态,数据线处于高电平状态。总线由高到低跳变,宽度为一个波特率时间的负脉冲为开始位,然后是8bit的数据位。数据位后面是lbit的地址信息位。如果此位是1,表示发送的字节是地址信息;如果此位是0,传输的是正常数据信息。地址指示位后是串行数据的停止位。

1 uart设计

uart采用模块化、层次化的设计思想,全部设计都采用verilog hdl实现,其组成框图如图2所示。整个uart ip由串行数据发送模块、串行数据接收模块、接收地址识别模块、接收和发送hifo、总线接口逻辑、寄存器和控制逻辑构成。串行发送模块和接收完成并/串及串/并的转换,接收地址的识别由接收地址识别模块完成。发送和接收hifo用于缓存发送和接收的数据。总线接口逻辑用于连接uart ip内部总线和host接口。寄存器和控制逻辑实现uart ip内部所有数据的收发、控制和状态寄存器、内部中断的控制及波特率信号的产生。以下详细说明主要部分的设计原理。

1.1 串行数据发送模块

串行数据发送模块将数据或地址码由并行转换为串行,并从串行总线输出。设计采用有限状态机实现,分为空闲、取数、发送三个状态。其状态迁移如图3所示。各个状态说明如下:

空闲状态:状态机不断检测发送使能位、uart使能位和发送fifo空/满标志位,如果使能位为高、uart使能打开且fifo空标志位为低,串行发送进入取数状态。

取数状态:在此状态,分两个周期从发送fifo中取出待发送的数据或者地址,然后进入发送状态。

发送状态:在此状态,状态机按照九位串行数据的格式依次发送开始位、数据位、地址指示位。待停止位发送完毕后,返回空闲状态。一个字节的数据发送完毕后,进行下一个字节数据的发送流程。

1.2 串行数据接收模块

串行数据接收模块用于检测串行数据的开始位,将串行总线上的串行数据转换成并行数据并输出。接收逻辑也采用有限状态机实现,分为空闲状态、寻找开始位、接收数据和保存数据四个状态。其状态迁移图如图4所示。各个状态说明如下:

空闲状态:在此状态,不断检测接收使能、uart使能和串行输入信号的状态。如果串行输入信号出现由高到低的电平变化且uart使能和接收使能都为高,则将采样计数器复位,并进入寻找开始位状态。

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!