1.1 uart协议

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

在学习uart之前有必要了解几个基础的数字通信概念

同步通信和异步通信  

  • 发送方和接收方按照同一个时钟节拍工作就叫同步;发送方和接收方按照自己的节拍工作就叫异步;
  • 同步通信中,通信双方按照统一节拍工作,所以配合很好;一般需要发送方给接收方发送信息同时发送时钟信号,接收方根据发送方给它的时钟信号来安排自己的节奏。同步通信用在通信双方信息交换频率固定,或者经常通信时。
  • 异步通信又叫异步通知。在双方通信的频率不固定时(有时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。

1.1.1 uart协议要点

(1)UART由波特率产生器、UART接收器、UART发送器组成。

(2)由三条信号线组成:RX、TX、GND

(3)UART包括RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范。它们的主要区别在于其各自的电平范围不相同。 嵌入式设备中常常使用到的是TTL、TTL转RS232的这种方式。

1.1.2 uart通信协议

(1)起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。

(2)数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。

(3)奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。

(4)停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。

(5)空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。

(6)波特率:数据传输的速率。有以下几个档位:300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200。在数据传输和接收双方,需要预先统一波特率,以便正确的传输数据。

1.2 uart design spec

1.2.1 模块介绍

①apb interface and register block是一个interface外部通信模块和寄存器模块,interface外部通信模块与一个apb uvc连接,将apb产生的并行数据写入②fifo中,寄存器模块进行内部的各种设置,包括④波特率产生设置,⑤transmitter ⑥receiver具体的uart协议中控制信号,状态信号的设置

②transmit fifo是一个8位宽,16位深度的内存缓冲区,存贮从①apb interface and register block写入的数据,放进16×8的transmit fifo,

⑤transmitter 具有将数据并行转串行并将写入数据按照uart协议中规定的起始位,数据位,奇偶校验位,停止位输出的一个功能

③receive fifo是一个12位宽,16位深度的内存缓冲区,存储从①apb interface and register block中读出的⑥receiver写入的数据,放进16×8的receive fifo

④波特率产生根据参考时钟与寄存器中对波特率的设置来规定系统波特率,参考时钟波特率一般比较大,类似于分频

⑥receiver具有将数据并行转串行并将写入数据按照uart协议中规定的起始位,数据位,奇偶校验位,停止位输出的一个功能

⑤transmitter ⑥receiver与uart uvc连接,⑤transmitter 连接uart模块的passive agent,⑥receiver连接uart模块的active agent

系统分为写入数据方向rx与读数据tx方向,rx方向为cpu通过①apb interface and register block写入并行数据,存入②transmit fifo中,在⑤transmitter中经过并行转串行uart协议,加上起始位,校验位,停止位后输出串行数据流;tx方向从⑥receiver收到串行数据,检查对比收到数据与寄存器设置的数据之后将起始位,校验位,停止位剥离,转换为并行数据流,将数据位存储到③receive fifo中,通过①apb interface and register block将③receive fifo中储存的数据按先进先出的原则读走。

1.2.2 接口信号

其中需要注意,paddr 地址低两位force为0,默认为0,即地址以0.4.8.12 4bit进行变化

pwdata 与prdata都为16位,数据存入小端,支持扩展到32bit

上述为uart待测模块的接口信号

uart项目验证(一)-uart协议与uart ip的理解相关推荐

  1. UART项目验证(一) uart协议与uart ip的理解

    1.1 uart协议 uart(universal asynchronous reciver and transmitter):通用异步收发器,是一种通用串行数据总线,用于异步通信,将数据的二进制位一 ...

  2. UART项目验证(二) spec阅读

    1.1 about uart UART(PL011)是一种先进的微控制器总线体系结构(AMBA)兼容片上系统(SoC)外围设备.UART是连接到高级外围总线(APB)的AMBA从模块.UART包括红外 ...

  3. UART模块验证-面试总结

    前言 本篇博客依旧针对UART模块的验证项目进行面试总结,也是笔者面试过众多公司所总结整理的 关于UART深挖的可问的知识点还是非常多,本篇博文可以说基本上涵盖大部分可问到的点 关于下列有一些问题我并 ...

  4. 几种常用通信协议:IIC协议、SPI协议、UART协议

    通信可以形象的比喻成两个人讲话:1.你说的别人得能听懂:双方约定信号的协议.2.你的语速别人得能接受:双方满足时序要求. 一.IIC协议: 2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一 ...

  5. 常用的嵌入式硬件通信接口协议(UART、IIC、SPI、RS-232、RS-485、RS-422、CAN、USB、IRDA)(一)

    一.概述 通信协议是两个(或多个)设备之间进行通信,必须要遵循的一种协议.通讯协议分为物理层和协议层. 物理层:规定通讯系统中具有机械.电子功能部分的特性,确保原始数据在物理媒体的传输: 协议层:规定 ...

  6. NRF52832在OTA基础上,同时支持UART升级(自定义串口协议、可远程升级)

    NRF52832的程序升级,即DFU,有通过无线方式(OTA)升级,也有通过UART,USB等硬件接口进行升级,目前资料最多的是通过无线方式进行升级,大家可以参考"青风带你学蓝牙" ...

  7. UART UVM验证平台平台搭建总结

    UART UVM验证平台平台搭建总结 tb_top是整个UVM验证平台的最顶层:tb_top中例化dut,提供时钟和复位信号,定义接口以及设置driver和monitor的virual interfa ...

  8. 【微信小程序控制硬件③】 从软件到硬件搭建一个微信小程序控制esp8266的项目,自定义通讯协议,为面试职位和比赛项目加分!

    微信物联网生态主要分在微信硬件开发平台与腾讯物联开发平台,前者已经停止维护,但依然有着很大的学习价值,而后者作为主推的平台,集成很多功能,包括从微信小程序实现配网到控制: 为了兼顾更多的朋友和自己的学 ...

  9. I2C虚拟项目验证结构

    文章目录 前言 一.验证结构 二.各组件功能 1.lvc_apb_master_agent 1.1 driver功能 1.2 monitor功能 1.3 sequencer功能 2.lvc_i2c_s ...

  10. BT级别的IC项目验证基本流程

    本文首发于公众号[木叶芯],版权所有,禁止转载. 如需转载,请在评论区留言或私信申请,经同意后可转载,否则属于侵权行为. 作者昵称:城外南风起 原文链接:BT级别的IC项目验证基本流程 ------- ...

最新文章

  1. 获得了知识(条件)后的概率称为后验概率 对先验概率的个性化调整
  2. flask 知识点总结
  3. 百度任务型对话系统小记
  4. 如何用python计算levenshteindistance_Levenshtein计算相似度距离
  5. 网络流性质及常见模型、改进空间的思考
  6. aiohttp保存MySQL_python链家网高并发异步爬虫asyncio+aiohttp+aiomysql异步存入数据
  7. 多维多重背包问题_动态规划--背包问题
  8. LINUX中nagios客户端安装步骤及遇到问题
  9. mysql xa 异常_面试官问我:MySQL中的XA事务崩溃了如何恢复??
  10. 【51nod 1439】互斥对【容斥原理】
  11. 从官方例程深度学习海思SDK及API(2)
  12. 适用于dev中c语言的图形库,Dev-C++中使用EGE图形库
  13. 《我的眼睛--图灵识别》第九章:训练:制作识别字库
  14. python使用matplotlib可视化线图(line plot)、使用semilogy函数将Y轴数据处理为对数坐标(logarithmic scale in Matplotlib)
  15. 奥城大学计算机专业,美国硕士双录取院校一览表:
  16. wget 整站下载
  17. 基于boost库的站内搜索引擎
  18. 次更新不适用您的计算机,Windows系统安装补丁时提示“此更新不适用于你的计算机”的解决方案!...
  19. Android 手机存储及路径
  20. Python简直是万能的,这5大主要用途你一定要知道!

热门文章

  1. 纯css3黑洞动画js特效
  2. 腾讯电脑管家卸载后的残留信息有哪些
  3. web高拍仪图片上传
  4. 超详细用实验教你如何配置OSPF
  5. 企业内部即时通讯工具WorkPlus,支持内网私有化部署
  6. 开发必备的文本比较工具
  7. Python爬虫:爬取酷狗音乐!动不动就给我来个付费音乐!没用的!
  8. 图像处理--最大内接圆
  9. 计算机应用基础与操作,计算机应用基础与操作
  10. HIBERNATE - 符合Java习惯的关系数据库持久化