1引言
IP核就是具有知识产权(IntellectualProperty)的模块,随着片上系统和系统级设计的出现,IP核的设计及其复用成为集成电路设计的关键手段。IP核按照ASIC设计学的要求可分为硬核,固核和软核。硬核是按照特定工艺,对设计进行了所有的验证和仿真,以达到最佳优化。复用硬核所需时间和技术难度都较小,但用户难以再修改硬核。固核是完成了综合的模块,它比软核更多完成了门级综合和时序仿真,提供门级网表。软核只完成RTL级的设计,是独立于工艺条件的HDL描述语言生成的源代码,使用者可以利用它针对不同工艺修改或重新综合设计,给后续者提供了更大的创作空间,软核具有很大灵活性,成为IP复用的主流。
本文设计的UART软核,不仅支持UART通用的RS232协议,还支持IRDA1.0协议,以适用于红外接口。
2UART的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)的控制字来决定采用哪种通信协议。
3IP核仿真验证
本设计用Candence公司的Ncverilog和Synopsys的DesignCompiler进行仿真,综合调试。图4为UART依次传送8’b10101100,8’b10101101,8’b10101110的通用RS232协议串行输出结果和IRDA的输出结果(奇检验)。利用XilinxXPLA3CPLD验证,其最大频率可达78MHz。
结果表明设计满足要求,其传输速率和工作频率均远大于工业实际应用。
图4UART发送数据的输出结果
4结语
IP核在集成电路中的应用越来越广,尤其是目前的工艺朝着深亚微米尺寸发展,IP核的设计和复用更变得异常重要。IP核技术的出现提高了设计效率和质量,缩短了产品的开发周期,有利于优化设计资源,避免重复劳动。使超大规模的系统芯片设计方便,快捷。本文采用Verilog-HDL语言设计的支持红外通信协议IRDA1.0UART的软核既可单独作为UART使用,也可复用于多种芯片中。