当前位置:首页 > 通信技术 > 通信技术
[导读]摘要:介绍了一种基于Wishbone总线的UART IP核的设计方法。该设计采用了自顶向下的模块化划分和有限状态机相结合的方法,由于其应用了标准的Wishbone总线接口,从而使微机系统与串行设备之间的通信更加灵活方便。验证

摘要:介绍了一种基于Wishbone总线的UART IP核的设计方法。该设计采用了自顶向下的模块化划分和有限状态机相结合的方法,由于其应用了标准的Wishbone总线接口,从而使微机系统与串行设备之间的通信更加灵活方便。验证结果表明,这种新的架构设计是有效的。
关键词:Wishbone总线;UART;有限状态机;IP核

    随着集成电路与嵌入式技术的发展与广泛应用,许多嵌入式系统都需要进行串行通信,因此在片上嵌入式系统芯片中集成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.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所示。


    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、CHECK、RX_STOP,它们之间的状态转移,如图3所示。


    IDLE状态:当产生复位信号或运行至停止状态之后,接收状态机将复位到这种状态。处于IDLE状态时,它等待外部传来的信号从高向低转变,此时视为产生了一个有效的起始位。一旦有效起始位被检测到,有限状态机就会切换到下个状态。
    RX_DATA状态:当状态机跳转到此状态时,采样每得到一位数据,就把接收到数据放到准备好的接收移位寄存器中。在设计中需要一个接收计数器来进行计数。当计数器提示数据接收已完成,则状态机会转入下个状态。
    CHECK状态:当处于CHECK状态时,通过对实际接收到的数据进行判断得出实际数据的奇偶性,然后再与发送过来的数据的奇偶校验位进行奇偶校验。
    如果符合,那么表示接收数据有效,可以传入处理器;如不符,则不传,直接丢弃数据。
    RX_STOP状态:无论停止位长度设定为1位或者是2位,有限状态机总是等待1位样本的采样时间,然后抽样停止位。只要一个逻辑采样停止位被检测到,数据接收模块就不会去检查是否停止位的配置出现错误。此时,有限状态机将返回IDLE状态。
2.3 数据发送模块设计
    发送模块将从处理器接收到的数据,加上起始位,奇偶检验位和停止位组成规定的格式后串行输出。首先,利用缓存器FIFO存放需要发送的数据,这样处理器可以一次往FIFO中写入多个字节的数据。发送数据时依次从FIFO中每次取出1Byte进行串行输出。
    设计采用发送状态机来控制整个模块的发送过程。发送状态机由以下5个状态组成:IDLE、TX_START、TX_DATA、CHECK、TX_STOP,它们的转移关系如图4所示。


    IDLE状态:在没有接收到将要发送的数据时,发送模块一直处于该状态,此刻一直保持发送模块的数据位为高,当得到主机发出的工作信号时,发生状态跳转,进入下个状态。
    TX_START状态:发送模块会先发送一个数据“0”,作为起始位。起始位传送完毕后,转入下个状态。
    TX_DATA状态:发送完起始位后,接着发送由主机传来的有效数据。首先把数据存入模块内的移位寄存器中,利用移位寄存器实现并行输入到串行输出的转换。同时计数器开始计数,在发送完8位数据后,计数器清零,FSM随即跳入下个状态。
    CHECK状态:当状态机处于这个状态,最后1位数据仍然在传输。传输完成时,状态机将判断校验位。如果校验位无误,则进入下个状态。
    TX_STOP状态:在此状态下,根据发送模块的采样结果,将设置相关中断和状态位。发送完毕后,状态机返回IDLE状态。

3 UART IP核的验证方法
    对UART IP核的验证主要是在Modelsim软件构建的虚拟平台中进行的,通过编写Testbench(测试代码)作为激励信号,将得到的值与期望值进行比较,从而判断功能是否正确。验证系统框图,如图5所示。


    本次验证施加的测试激励包括两个部分,一部分是模拟发送数据的过程,如总线对于模块内部寄存器的读信号,UART串口输出信号和设备的硬件接口信号等,验证模块的正常功能是否实现;另一部分是模拟接收数据的过程,如外部设备对UART发送的数据接收过程,以及UART  将数据转换发送给微机系统。仿真波形图,如图6所示。


    仿真波形图模拟的是UART在全双工的模式下同时接收一个完整的数据(51,16进制)和发送一个完整的数据(11,16进制)的过程。以接收过程为例:UART首先输出发送UART_INT中断信号,通知处理器准备接收数据,处理器响应中断。UART通过采样脉冲(Baud)将信号写入RX_UDR接收寄存器中,同时接收计数器计数,计数到8时自动清零,中断信号自动清除,随后将接收到的8位数据通过总线模块传入处理器中。发送过程为接收的逆过程。

4 结束语
    IP核重用技术以及接口标准化问题是IC设计领域中的研究热点,其应用领域正在不断拓展。本文介绍的基于Wishbone总线的UART IP核的设计方法,通过验证表明了各项功能达到预期要求,为IP核接口的标准化设计提供了依据。此外,该IP核代码全部采用模块化的Verilog-HDL语言编写,便于以后不断完善,具有较强的实际效益。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭