APB-UART-1

这篇具有很好参考价值的文章主要介绍了APB-UART-1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.UART协议

uart(universal asynchronous reciver and transmitter)
通用异步收发器,是一种通用串行数据总线,用于异步通信,将数据的二进制位一位一位的进行传输。
该总线双向通信,可以实现全双工传输(rxd txd可同时工作)和接受。

基础的数字通信概念

同步通信和异步通信

  • 发送方和接收方按照同一个时钟节拍工作就叫同步;发送方和接收方按照自己的节拍工作就叫异步;
  • 同步通信中,通信双方按照统一节拍工作,所以配合很好;一般需要发送方给接收方发送信息同时发送时钟信号,接收方根据发送方给它的时钟信号来安排自己的节奏。同步通信用在通信双方信息交换频率固定,或者经常通信时。
  • 异步通信又叫异步通知。在双方通信的频率不固定时(有时3ms收发一次,有时3天才收发一次)不适合使用同步通信,而适合异步通信。异步通信时接收方不必一直在意发送方,发送方需要发送信息时会首先给接收方一个信息开始的起始信号,接收方接收到起始信号后就认为后面紧跟着的就是有效信息,才会开始注意接收信息,直到收到发送方发过来的结束标志

电平信号和差分信号

  • 电平信号和差分信号是用来描述通信线路传输方式的,即如何在通信线路上表达1和0。
  • 电平信号的传输线中有一个参考电平线(一般是GND),然后信号线上的信号值是由信号线电平和参考电平线的电压差决定。
  • 差分信号的传输线中没有参考电平,所有都是信号线,1和0的表达依靠信号线之间的电压差
  • 电平信号的2根通信线之间的电平差异容易受到干扰,传输容易失败;差分信号不容易受到干扰因此传输质量比较稳定,现代通信一般都使用差分信号。

并行接口和串行接口

  • 串行、并行主要是考虑通信线的根数,就是发送方和接收方同时可以传递的信息量的多少;
  • 譬如在电平信号下,1根参考电平线+1根信号线可以传递1位二进制;如果我们有3根线(2根信号线+1根参考线)就可以同时发送2位二进制;如果想同时发送8位二进制就需要9根线。
    在差分信号下,2根线(彼此差分)可以同时发送1位二进制;如果需要同时发送8位二进制,需要16根线。
  • 似乎并行接口比串行接口要快(串行接口一次只能发送1位二进制,而并行接口一次可以发送多位二进制)要更优秀;但是实际上串行接口才是王道,用的比较广。因为更省信号线,而且对传输线的要求更低、成本更低;而且串行时可以通过提高通信速度来提高总体通信性能,不一定非得要并行。经过这么多年发展,最终胜出的是:异步、串行、差分,譬如USB和网络通信。
  • 串口通信时因为是异步通信,所以通信双方必须事先约定好通信参数,这些通信参数包括:波特率、数据位、奇偶校验位、停止位(串口通信中起始位定义是唯一的,所以一般不用选择)

波特率

(1)波特率(bandrate),指的是串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制位。

  • 譬如每秒种可以传输9600个二进制位(传输一个二进制位需要的时间是1/9600秒,也就是104us),波特率就是9600。

(2)串口通信的波特率不能随意设定,而应该在一些值中去选择。

  • 一般最常见的波特率是9600或者115200(低端单片机如51常用9600,高端单片机和嵌入式SoC一般用115200)。
  • 为什么波特率不可以随便指定?第一,通信双方必须事先设定相同的波特率这样才能成功通信,如果发送方和接收方按照不同的波特率通信则根本收不到,因此波特率最好是大家熟知的而不是随意指定的。第二,常用的波特率经过长久发展,就形成了共识,大家常用就是9600或者115200。

UART通信协议

通信协议即数据传输的格式

APB-UART-1,# APB-UART,硬件工程

(1)起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
需要起始位的原因是,UART没有控制线,数据的传输只有一根线,如果想要让接收方知道什么时候开始接收数据,则需要在发送数据前,先发一位低电平信号作为数据发送的起始标志,接收方在空闲时,当检测到有一个低电平,则开始逐位接收数据。
(2)数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。
(3)奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。

APB-UART-1,# APB-UART,硬件工程APB-UART-1,# APB-UART,硬件工程APB-UART-1,# APB-UART,硬件工程

(4)停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
(5)空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
(6)波特率:数据传输的速率。有以下几个档位:300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200。在数据传输和接收双方,需要预先统一波特率,以便正确的传输数据。

APB-UART-1,# APB-UART,硬件工程

UART 收发逻辑

  • UART的发送逻辑负责驱动发送端口。当发送端口对应的移位寄存器中被载入数据后,发送逻辑首先拉低发送端口电平,表示起始位开始。经过一个周期后,发送逻辑将数据从移位寄存器中依次取出,并在发送端口以高低电平的形式表现出来。该逻辑还可以根据配置添加不同类型的奇偶校验位以及停止位
  • UART 的接收逻辑往往工作在比波特率高的时钟频率下,一般使用 8 倍频采样或者 16倍频采样。在每个时钟的上升沿,接收逻辑都会去检测接收端口的电平信息,如果发现接收端口被输入了低电平且持续时间超过了半个波特率信号周期,则认为检测到了起始位信号,并开始接收数据,否则认为起始位无效。当后续数据接收完后,接收逻辑应该将此次接收的一帧数据放到对应的接收FIFO中,并产生一定的信号告知系统已获得有效数据。

2.AMBA-APB 协议

APB主要用在低速且低功率的外围,可针对外围设备做功率消耗及复杂接口的最佳化。APB在AHB和低带宽的外围设备之间提供了通信的桥梁,所以APB是AHB的二级拓展总线。

  • 它的架构不像AHB总线是多主设备的架构,主要应用在低带宽的外设上,如UART、I2C。
  • APB总线的唯一主设备是APB桥(与AXI或APB相连),因此不需要仲裁一些request/grant信号。
  • APB的协议十分简单,甚至不是流水的操作,固定两个时钟周期完成一次读或写的操作,支持最大32-bit的数据位宽。
  • 其特性包括:两个时钟周期传输,无需等待周期和回应信号,控制逻辑简单,只有四个控制信号。由于APB的两个通道没有自己的握手信号,因此两个通道不会同时使用,即不支持读写并行操作
APB-UART-1,# APB-UART,硬件工程APB-UART-1,# APB-UART,硬件工程

APB Slave(UART…):左侧的输入信号是来自bridge的,输出只有一个,那就是读出来的数据送给AHB

APB-UART-1,# APB-UART,硬件工程

APB信号

APB-UART-1,# APB-UART,硬件工程

APB传输时序

apb通过实现状态机来实现

APB-UART-1,# APB-UART,硬件工程

对每一笔数据的传送,均需花2个周期的时间
一是SETUP cycle,另一个是ENABLE cycle

APB读写

Write/read transfer with no wait states

APB-UART-1,# APB-UART,硬件工程
  • PENABLE表示传输的ENABLE阶段的开始
  • PREADY表示slave可以在PCLK的下一个上升沿完成传输

Write/read transfer with wait states

Write
APB-UART-1,# APB-UART,硬件工程

Read

APB-UART-1,# APB-UART,硬件工程
  • 当ENABLE阶段开始时,如果PENABLE拉高时,PREADY为低,那么传输会一直等待,直到PREADY拉高为止
  • 当PENABLE拉低时,PREADY可以取任何值。
  • 当PREADY保持低位时,其他信号应保持不变
  • 建议地址和写信号在传输后不要立即改变,而是保持稳定,直到另一个访问发生。这样可以降低功耗

3.APB-UART DUT 设计

APB-UART模块可以实现串行数据和并行数据的转换,发送和接收逻辑分别用FIFO来存储数据,CPU可以通过APB总线访问该模块,进而间接的实现对UART串行数据的访问。

APB-UART-1,# APB-UART,硬件工程APB-UART-1,# APB-UART,硬件工程

UART执行的动作为:

APB-UART-1,# APB-UART,硬件工程

• 接收receive:对从外围设备接收到的数据进行串行到并行转换。
在进行数据接收操作时,串行数据通过接收端口后会进入到接收逻辑模块,该模块对数据进行格式检测后,会将其中的起始位、校验位以及停止位移除,并把剩下的数据暂时存储在Receive FIFO中,等待CPU访问。

• 发送transmit:对传输到外围设备的数据进行并行到串行转换。
在进行数据发送操作时,需要发送的数据通过 APB 总线被写入到APB-UART模块后,会暂时存储在发送 FIFO(TFIFO)中。发送逻辑模块会在特定的时刻从 Transmit FIFO 中取走数据,并添加上起始位、奇偶校验位以及停止位,形成一个完整的数据帧。最后发送逻辑会将该数据帧放入到发送端口一侧的移位寄存器中,按照特定的波特率将数据串行移位,实现数据发送的功能。当没有数据发送时,发送端口保持为高电平。

UART接口信号

1.面向APB总线接口信号

APB-UART-1,# APB-UART,硬件工程

2.面向外围设备接口信号

APB-UART-1,# APB-UART,硬件工程

UART模块设计

1.波特率配置Baud Rate Generator Module

  • UART包括红外数据关联(IrDA)串行红外(SIR)协议编码器/解码器(ENDEC)。
  • 包括一个可编程波特率发生器,从UART内部参考时钟输入UARTCLK生成一个通用的发送和接收内部时钟。
  • 波特率生成器包含自由运行计数器,用于生成内部x16时钟、Baud16和IrLPBaud16信号。
    Baud16为UART发送和接收控制提供定时信息。Baud16是一个脉冲流,宽度为一个UARTCLK时钟周期,频率为波特率的16倍。
    IrLPBaud16提供定时信息,以在低功率模式下生成IrDA编码传输比特流的脉冲宽度。
APB-UART-1,# APB-UART,硬件工程
  • 由于外部环境存在各种干扰,传输信号很容易产生毛刺,所以该 Uart_Monitor 还需要在 16 倍频采样下,对最开始接收到的 8个电平进行检测。如果这 8 个电平是连续的低电平,就认为采集到了起始位,否则就认为是噪声干扰,需要重新进行采样
  • UART 的物理接口可以是 RS-232、RS-485 和 IrDA 红外线等,它们的主要区别在于其各自的电平范围不相同
  • 这个模块用于为 UART 的收/发器提供时钟,这个时钟为 UART 的波特率的 16 倍频,即如果波特率要求为 9600bps 时,该模块输出的时钟为 9600Hz×16=153600Hz。输出时钟需要可配置

2.接收器UART receiver Module

  • 接收器时刻监视 UART 总线的 RXD 线的电平,当检测到起始位,接收器启动接收状态机,根据寄存器(UCSRB、UCSRC)的设定,解析RXD 线的电平,当完成一个字节接收,输出接收到的数据和线状态。
    接收器的设计主要是围绕“有限状态机”而进行。
APB-UART-1,# APB-UART,硬件工程APB-UART-1,# APB-UART,硬件工程

3.发射器UART Transmitter Module

  • 发送器是监视 EBI 总线,当检测需要发送一个字节时,发送器启动发送状态机,同样时,发送器会根据寄存器(UCSRB、UCSRC)的设定,逐位往 UART 总线的 TXD 线发送数据。当发送完成一个字节,发送器输出发送状态。
    和接收器相似地,发送器的设计也是围绕“有限状态机”而进行

RTL代码结构详解

APB-UART-1,# APB-UART,硬件工程
  • apb_uart_top

    • apb_slave

    • apb_uart

      (1)Configuration Registers

      (2)tick_generator

      APB-UART-1,# APB-UART,硬件工程

      input 波特率 产生 output 发送数据和接收数据的时钟

      由apb_uart的寄存器进行配置(Configuration Registers)

      APB-UART-1,# APB-UART,硬件工程

      input

      APB-UART-1,# APB-UART,硬件工程

      output

      APB-UART-1,# APB-UART,硬件工程

      (3)uart_transmitter

      发送数据到外围设备,进行并行到串行转换。
      添加上起始位、奇偶校验位以及停止位,形成一个完整的数据帧
      从帧长度计算出校验位
      帧长度分为5/6/7/8位
      校验方式分为奇校验偶校验

      (4)uart_rx_BB

      从外设接收数据,从串行转回并行,将起始位、校验位、停止位移除
      波特率计数文章来源地址https://www.toymoban.com/news/detail-643481.html

到了这里,关于APB-UART-1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 硬件工程师——电感

    电感是闭合回路的一种属性,是一个物理量。当电流通过线圈后,在线圈中形成磁场感应,感应磁场又会产生感应电流来抵制通过线圈中的电流。它是描述由于线圈电流变化,在本线圈中或在另一线圈中引起感应电动势效应的电路参数。电感是自感和互感的总称。提供电感的

    2024年02月09日
    浏览(56)
  • 硬件工程师学习-硬件的单元测试(UT)(1)电源与时钟的测试

    调试功能基本OK后,进入单元测试阶段。 单元测试,一般是指基于开发人员自行开展的功能测试及各个功能单元的单元测试,是硬件信号级的测试,分为基本测试和信号完整性测试。也被称作硬件的白盒测试。 1、单元测试开始前,全项目组人员一起学习《硬件单元测试规范

    2024年02月06日
    浏览(50)
  • 硬件工程师成长之路(0)----认识元件

    系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 送给大学毕业后找不到奋斗方向的你(每周不定时更新) 中国计算机技术职业资格网 上海市工程系列计算机专业中级专业技术职务任职资

    2024年02月03日
    浏览(54)
  • 关于一个硬件测试工程师的若干思考

    前段时间生病停更了一段时间,中间请了很长时间的病假在家养病,闲暇之余对工作产生了一丝丝思考。作为一个工作了1609天的入门硬测工程师,一时觉得工作枯燥无味,一时又对工作充满希望。硬件测试工程师!懂得都懂!大部分的工作是枯燥乏味的,在一家公司工作时间

    2024年02月02日
    浏览(40)
  • 硬件工程师成长之路(11)——职业规划

    系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 送给大学毕业后找不到奋斗方向的你(每周不定时更新) 【牛客网】构建从学习到职业的良性生态圈 中国计算机技术职业资格网 上海市工

    2024年02月17日
    浏览(58)
  • 【Verilog刷题篇】硬件工程师进阶1|序列检测

    硬件工程师近年来也开始慢慢吃香,校招进大厂年薪总包不下30-40w的人数一大把!而且大厂人数并没有饱和! - 本期是【Verilog刷题篇】硬件工程师进阶1|序列检测,有不懂的地方可以评论进行讨论! 推荐给大家一款刷题、面试的神器 ,我也是用这一款神器进行学习 Verilog硬件

    2024年02月03日
    浏览(48)
  • FPGA硬件工程师Verilog面试题(基础篇一)

    ✅作者简介:大家好我是:嵌入式基地,是一名嵌入式工程师,希望一起努力,一起进步! 📃个人主页:嵌入式基地 🔥系列专栏:FPGA Verilog 习题专栏 微信公众号:嵌入式基地 点击进行在线练习 描述 制作一个四选一的多路选择器,要求输出定义上为线网类型 状态转换:

    2023年04月26日
    浏览(44)
  • 硬件系统工程师宝典(12)-----EMC应该知道的事

    各位同学大家好,欢迎继续做客电子工程学习圈,今天我们继续来讲这本书,硬件系统工程师宝典。上篇我们说到在做电源完整性分析时去耦电容要遵循的规则,大电容的去耦半径大,小电容的去耦半径小,电容焊盘扇出时,双过孔可以减少寄生电感等。今天我们开始学习

    2023年04月23日
    浏览(50)
  • 硬件系统工程师宝典(17)-----你的PCB符合工艺要求吗?

    各位同学大家好,欢迎继续做客电子工程学习圈,今天我们继续来讲这本书,硬件系统工程师宝典。上篇我们说到PCB设计中板子要符合EMC,信号的走线要平顺,信号回流阻抗尽量小。今天我们开始看看板子在生产制造时的工艺问题。 DFX全称是Design for X(面向产品生命周期各环

    2024年02月04日
    浏览(48)
  • 硬件工程师必会电路模块之MOS管应用

    MOS管开关电路 学习过模拟电路的人都知道三极管是流控流器件,也就是由基极电流控制集电极与发射极之间的电流;而MOS管是压控流器件,也就是由栅极上所加的电压控制漏极与源极之间电流。 MOSFET管是FET的一种,可以被制造为增强型或者耗尽型,P沟道或N沟道共四种类型,

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包