支持红外通信协议的UART IP核方案

时间:2011-08-22

  1 引言

  IP核就是具有知识产权(IntellectualProperty)的模块,随着片上系统和系统级设计的出现,IP核的设计及其复用成为集成电路设计的关键手段。IP核按照ASIC设计学的要求可分为硬核,固核和软核。硬核是按照特定工艺,对设计进行了所有的验证和仿真,以达到优化。复用硬核所需时间和技术难度都较小,但用户难以再修改硬核。固核是完成了综合的模块,它比软核更多完成了门级综合和时序仿真,提供门级网表。软核只完成RTL级的设计,是独立于工艺条件的HDL描述语言生成的源代码,使用者可以利用它针对不同工艺修改或重新综合设计,给后续者提供了更大的创作空间,软核具有很大灵活性,成为IP复用的主流。

  本文设计的UART软核,不仅支持UART通用的RS232协议,还支持IRDA1.0协议,以适用于红外接口

  2 UART的IP核设计及分析

  根据Top-Down的设计方法,对UART功能进行整体分析研究,划分为包括接口模块,发送模块,接收模块,中断控制模块,红外接口模块,波特率发生模块等主要功能模块。利用Verilog-HDL设计相应的IP核,UART模块图如图1所示。

功能模块图

图1 功能模块图

  2.1 接口模块设计

  接口模块包括各个控制寄存器和状态寄存器,这些寄存器的各个控制字控制其它各个功能模块。

  它是UART与外界通信的接口,处理器通过它对UART进行控制。UART工作方式和传送的数据及其格式均由UART接口模块控制。

  2.2 发送模块设计

  发送模块将从处理器接收到的数据,按规定的格式加上起始位,奇偶检验位和停止位后串行输出。

  发送数据格式由一个有限状态机来控制。如图2所示。

  空闲状态:UART复位时,状态机自动到空闲状态。发送模块检查是否发送数据,有则进入开始状态。开始状态:开始状态将给待发送的数据加上起始位(低位)。

  移位状态:发送模块将待发送的数据从发送缓冲寄存器THR或发送FIFO中移出,按规定格式一位一位发送,直到一位数据位。发送模块根据发送数据格式控制字判断是否进入校验状态。若无,则到停止1位状态,如有校验,则到检验状态。

发送模块状态机

图2 发送模块状态机

  校验状态:发送状态机按控制字格式,给数据加入奇偶检验位。

  停止1位状态:状态机根据控制字,给数据加上1,0.5,2位数据位。发送模块首先进入停止1位状态,给数据加上1位停止位(高位)。若只需一位停止位,则回到空闲状态。否则根据要求到停止0.5位状态或停止2位状态。

  停止0.5状态:发送模块在此状态下,给数据位加入5个发送时钟周期长度的高电平。

  停止2位状态:发送模块对需要2位停止位的数据再加一位停止位。

  2.3 接收模块设计

  接收模块将从UART外部接收串行数据,将所接收的数据放到接收FIFO中存放起来,以便处理器读取。接收过程同样由有限状态机控制。如图3所示。

接收模块状态机

图3 接收模块状态机

  接收器模块不仅对接收的数据滤出噪声干扰,还要对数据位的溢出出错,奇偶检验出错,帧出错,BREAK等进行检验,并根据检验结果设置线状态寄存器相应的状态位。

  空闲状态:UART复位时,接收状态机进入空闲状态。一旦接收到有用起始位,状态机进入接收数据状态,到移位状态。

  移位状态:状态机根据接收控制字,对接收数据移位,并按正确格式将数据放入接收缓冲器或接收FIFO中。

  校验状态:对接收的数据根据接收的校验位进行判断。并置相关位。

  停止状态:状态机在此状态下,根据接收数据是否在正确时间采样到停止位,置相关位。

  2.4 中断控制模块设计

  中断控制模块要求当任何中断发生时,使中断使能寄存器的相应位允许中断发生,输出端口INTER将为高电平。中断识别寄存器保存着多级中断类型:接收器线状态(溢出出错,奇偶检验出错,帧格式出错,BREAK)出错,接收数据准备好,接收超时,发送器空。外界将通过中断识别寄存器识别中断类型。同样中断级别判定由有限状态机来控制,以决定中断的优先权。

  2.5 波特率发生器模块设计

  波特率发生器模块提供UART进行通信时所需时钟,还需对外部接收时钟进行同步处理,本设计的波特率发生器模块利用时钟分频寄存器(PSD和DL)对主频fclk分频提供给UART所需的各标准波特率BR(如式1)。DL可以提供1到65536的任意分频,PSD还可以提供针对主频过高的分频因子,以适用于更广的主频。BR的计算公式如下:

  2.6 红外接口模块设计

  通用发送模块和接收模块传送的是RS232协议要求的不归零码NRZ,传送的每一位数据都是占用一位数据的全部时间来保持为“1”或为“0”。红外协议与RS232协议一样都是按照每个字符为一帧来进行传送的,包括起始位,数据位,奇偶检验位和停止位。但与RS232协议不一样的是,红外协议按照数据为“1”时传送的是“0”,数据为“0”时传送的是数据位的3?16宽的脉冲。本设计的红外接口模块完成这两种协议的电平转换,以实现传送红外数据的功能。主要由编码模块和解码模块完成,编码模块完成RS232到IRDA之间的转换,解码模块完成IRDA到RS232之间的转换。UART在使用中,通过控制寄存器(MCR)的控制字来决定采用哪种通信协议。

  3 IP核仿真验证

  本设计用Candence公司的Ncverilog和Synopsys的DesignCompiler进行仿真,综合调试。图4为UART依次传送8’b10101100,8’b10101101,8’b10101110的通用RS232协议串行输出结果和IRDA的输出结果(奇检验)。利用XilinxXPLA3CPLD验证,其频率可达78MHz。

  结果表明设计满足要求,其传输速率和工作频率均远大于工业实际应用。

UART发送数据的输出结果

图4 UART发送数据的输出结果

  4 结语

  IP核在集成电路中的应用越来越广,尤其是目前的工艺朝着深亚微米尺寸发展,IP核的设计和复用更变得异常重要。IP核技术的出现提高了设计效率和质量,缩短了产品的开发周期,有利于优化设计资源,避免重复劳动。使超大规模的系统芯片设计方便,快捷。本文采用Verilog-HDL语言设计的支持红外通信协议IRDA1.0UART的软核既可单独作为UART使用,也可复用于多种芯片中。

上一篇:一种模目信号设计方法
下一篇:嵌入式UART接口模块的设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料