uart16550详细说明
一、介绍
uart16550 ip core异步串行通信IP连接高性能的微控制器总线AXI,并为异步串行通信提供了
控制接口。软核设计连接了axilite接口。
二、特性
1.axilite接口用于寄存器访问和数据传输
2.16650串口和16450串口的软件和硬件寄存器都是兼容的
3.默认的core配置参数:9600bps波特率,8bit数据+1bit停止位+无极性
4.实现所欲标准的串行接口协议:
-每个字符可以是5bit,7bit或者8bit
-odd,even,no parity检测和生成
-stop_bit:1bit,1.5bit,2bit;
-使用内部波特率生成,和使用独立的接收时钟xin来生成波特率
-modem控制功能
-优先级传输和接收,线状态,模式控制中断
-错误的起始bit检测和恢复
-线打断检测和生成
-内部loopback环回功能
-16个字符的传输FIFO和接收FIFO.
三、总体说明
1.uart16550的传输和接收是相互独立的
2.ip core有内部寄存器来监视状态和配置状态
3.中断是可以masked可屏蔽的,也是具有优先处理的;
4.ip core包含16bit可编程的baud-rate波特率生成;
5.16个字符长度的传输FIFO和接收FIFO
6.FIFO可以enable使用和disable关闭使用
四、接口
1.axilite接口:这个模块实现axilite slave接口用于寄存器访问和数据传输
2.串口控制:
rx控制:模块采样接收数据依据波特率来进行,并将采样的数据存在receive data fifo中;
tx控制:模块从传输FIFO中读取数据,然后通过tx接口将数据发送出去
波特率生成模块:这个模块生成可变的波特率,用于用户可编程
中断控制:ip core提供独立的中断使能和中断识别寄存器。如果中断使能,电平触发中断
生成。
接收线状态,接收有效的数据,字符超时,接收数据fifo为空,modem状态都会产生中断。
五、关键说明
1.uart16550的axilite在各种fpga芯片上能够跑的最大时钟频率不一样,但是大概range范围
为:fmax为120MHZ~220MHZ之间。
2.端口描述
ip2intc_irpt中断信号,设备产生的中断输出给微控制器中断输入或者系统的中断控制器输入
3.freeze冻结
这个信号是用于冻结uart串口。如果拉高,中断被disable,串口ip core内部状态机回到IDLE状态。
4.sin信号:serial data input传输数据输入,也就是rx;
5.sout信号:serial data output传输数据输出,也就是tx;
6.xin用于当使用外部时钟,用于生成波特率的参考时钟
六、寄存器空间
1.LCR寄存器的bit7管控寄存器空间的内部寄存器的访问权限
2.寄存器空间总共有8个寄存器地址,但是有好多个不同的寄存器使用同一个寄存器的地址;
-接收buffer寄存器和发送保持寄存器都是使用0x1000这个寄存器地址;divisor latch低字节寄存器使用的也是0x1000这个寄存器;
-0x10004这个寄存器有时候代表中断使能寄存器,有时候代表divisor latch寄存器的高位;
3.这些寄存器复用,说明这些寄存器不能同时使用,只能分时复用!!!!!!!!串口性能有影响!!!!!---------这个地方是这样的吗??答案不是的!!
注意:
-
发送与接收寄存器独立
根据16550 UART标准协议和Xilinx官方文档(如PG142),接收缓冲寄存器(RBR)和发送保持寄存器(THR)是物理上分离的寄存器,地址分别为Base Address + 0
(RBR读)和Base Address + 0
(THR写)。
这种地址复用是通过读写操作方向区分的:-
读操作:访问
Base Address + 0
时,读取的是接收缓冲寄存器(RBR)的值。 -
写操作:向
Base Address + 0
写入时,数据会被存入发送保持寄存器(THR)。
因此,硬件层面并不存在“共用一个寄存器”的情况。
-
七、时钟和复位
1.系统时钟
2.xin时钟
xin时钟是外部时钟驱动,xin时钟频率不能太高,这个时钟如果使用,用于设置波特率的;
3.复位
八、编程顺序
1.指定异步数据传输格式,data bits,极性,校验,停止位,
以及divisor latch访问权限;主要是配置LCR寄存器;
2.写中断使能寄存器,用于激活独立的中断;
3.写FIFO控制寄存器,写FIFO,清理FIFO,设置FIFO触发门限
4.写DLR寄存器,配置波特率分频
5.中断产生后写中断服务程序的处理。
九、两个官网使用案例
上述两个案例的区别,是一个使用系统时钟作为参考,来产生波特率,一个是利用xin来产生波特率。
相关文章:

uart16550详细说明
一、介绍 uart16550 ip core异步串行通信IP连接高性能的微控制器总线AXI,并为异步串行通信提供了 控制接口。软核设计连接了axilite接口。 二、特性 1.axilite接口用于寄存器访问和数据传输 2.16650串口和16450串口的软件和硬件寄存器都是兼容的 3.默认的core配置参数…...
deepin v23.1 音量自动静音问题解决
有的机器上会有音量自动静音问题, 如果你的电脑上也遇到, 这个问题是 Linux 内核的原因, ubuntu上也可能会遇到相同问题(比如你升级了最新内核6.14), 而我测试得6.8.0的内核是不会自动静音的. Index of /mainline 到上面这个链接(linux 内核的官方链接)下载6.8.0的内核, s…...

抢跑「中央计算+区域控制」市场,芯驰科技高端智控MCU“芯”升级
伴随着整车EE架构的加速变革,中国高端车规MCU正在迎来“新格局”。 在4月23日开幕的上海国际车展期间,芯驰科技面向新一代AI座舱推出了X10系列芯片,以及面向区域控制器、电驱和动力域控、高阶辅助驾驶和舱驾融合系统等的高端智控MCU产品E3系…...
《算法导论(第4版)》阅读笔记:p82-p82
《算法导论(第4版)》学习第 17 天,p82-p82 总结,总计 1 页。 一、技术总结 1. Matrix Matrices(矩阵) (1)教材 因为第 4 章涉及到矩阵,矩阵属于线性代数(linear algebra)范畴,如果不熟悉,可以看一下作者推荐的两本…...

day015-进程管理
文章目录 1. 服务开机自启动2. 进程3. 僵尸进程3.1 处理僵尸进程3.2 查看僵尸进程3.2 排查与结束僵尸进程全流程 4. 孤儿进程5. 进程管理5.1 kill三剑客5.2 后台运行 6. 进程监控命令6.1 ps6.1.1 ps -ef6.1.2 ps aux6.1.3 VSZ、RSS6.1.4 进程状态6.1.5 进程、线程 6.2 top6.2.1…...
traceroute命令: -g与-i 参数
[rootwww ~]# traceroute [选项与参数] IP 选项与参数:-i 装置:用在比较复杂的环境,如果你的网络接口很多很复杂时,才会用到这个参数;*举例来说,你有两条 ADSL 可以连接到外部,那你的主机会有两…...

POWER BI添加自定义字体
POWER BI添加自定义字体 POWER BI内置27种字体,今天分享一种很简单的添加自定义字体的方法。以更改如下pbix文件字体为例: 第一步:将该pbix文件重命名为zip文件并解压,找到主题json文件,如下图所示: 第二步…...
SpringAI更新:废弃tools方法、正式支持DeepSeek!
AI 技术发展很快,同样 AI 配套的相关技术发展也很快。这不今天刚打开 Spring AI 的官网就发现它又又又又更新了,而这次更新距离上次更新 M7 版本才不过半个月的时间,那这次 Spring AI 给我们带来了哪些惊喜呢?一起来看。 重点升级…...

协议不兼容?Profinet转Modbus TCP网关让恒压供水系统通信0障碍
在现代工业自动化领域中,通信协议扮演着至关重要的角色。ModbusTCP和Profinet是两种广泛使用的工业通信协议,它们各自在不同的应用场合中展现出独特的优势。本文将探讨如何通过开疆智能Profinet转Modbus TCP的网关,在恒压供水系统中实现高效的…...

ChatGPT + DeepSeek 联合润色的 Prompt 模板指令合集,用来润色SCI论文太香了!
对于非英语母语的作者来说,写SCI论文的时候经常会碰到语法错误、表达不够专业、结构不清晰以及术语使用不准确等问题。传统的润色方式要么成本高、效率低,修改过程又耗时又费力。虽然AI工具可以帮助我们来润色论文,但单独用ChatGPT或DeepSeek都会存在内容泛泛、专业性不足的…...

全栈项目搭建指南:Nuxt.js + Node.js + MongoDB
全栈项目搭建指南:Nuxt.js Node.js MongoDB 一、项目概述 我们将构建一个完整的全栈应用,包含: 前端:Nuxt.js (SSR渲染)后端:Node.js (Express/Koa框架)数据库:MongoDB后台管理系统:集成在同…...

RAGFlow Arbitrary Account Takeover Vulnerability
文章目录 RAGFlowVulnerability Description[1]Vulnerability Steps[2]Vulnerability Steps[3]Vulnerability Steps RAGFlow RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine developed by Infiniflow, focused on deep document understanding and d…...

Python 之 Flask 入门学习
安装 Flask 在开始使用 Flask 之前,需要先安装它。可以通过 pip 命令来安装 Flask: pip install Flask创建第一个 Flask 应用 创建一个简单的 Flask 应用,只需要几行代码。以下是一个最基本的 Flask 应用示例: from flask imp…...
微服务,服务粒度多少合适
项目服务化好处 复用性,消除代码拷贝专注性,防止复杂性扩散解耦合,消除公共库耦合高质量,SQL稳定性有保障易扩展,消除数据库解耦合高效率,调用方研发效率提升 微服务拆分实现策略 统一服务层一个子业务一…...

【Ragflow】22.RagflowPlus(v0.3.0):用户会话管理/文件类型拓展/诸多优化更新
概述 在历经三周的阶段性开发后,RagflowPlus顺利完成既定计划,正式发布v0.3.0版本。 开源地址:https://github.com/zstar1003/ragflow-plus 新功能 1. 用户会话管理 在后台管理系统中,新增用户会话管理菜单。在此菜单中&…...

使用PocketFlow构建Web Search Agent
前言 本文介绍的是PocketFlow的cookbook中的pocketflow-agent部分。 回顾一下PocketFlow的核心架构: 每一个节点的架构: 具体介绍可以看上一篇文章: “Pocket Flow,一个仅用 100 行代码实现的 LLM 框架” 实现效果 这个Web S…...
安卓基础(Bitmap)
Bitmap 是 Android 开发中一个非常重要的类,用于表示图像数据。它是一个位图对象,存储了图像的像素信息,可以用于显示、处理和保存图像。Bitmap 提供了丰富的 API,用于操作和处理图像数据。 1. Bitmap 的作用 显示图像࿱…...

记录:echarts实现tooltip的某个数据常显和恢复
<template><div class"com-wapper"><div class"func-btns"><el-button type"primary" plain click"showPoint(2023)">固定显示2023年数据</el-button><el-button type"success" plain cli…...

八股文--JVM(1)
⭐️⭐️JVM内存模型 程序计数器:可以看作是当前线程所执行的字节码的行号指示器,用于存储当前线程正在执行的 Java 方法的 JVM 指令地址。如果线程执行的是 Native 方法,计数器值为 null。是唯一一个在 Java 虚拟机规范中没有规定任何 OutOf…...

从RPA项目说说RPC和MQ的使用。
去年我负责一个 RPA(机器人流程自动化)项目,帮某电商公司搭建订单处理系统。项目里有个场景特别有意思:当用户下单后,系统需要同时触发库存扣减、物流调度、积分发放三个模块。一开始我们想都没想,直接用 R…...
【大模型面试每日一题】Day 21:对比Chain-of-Thought(CoT)与Self-Consistency在复杂推理任务中的优劣
【大模型面试每日一题】Day 21:对比Chain-of-Thought(CoT)与Self-Consistency在复杂推理任务中的优劣 📌 题目重现 🌟 面试官:我们在数学推理和逻辑推理任务中发现,Self-Consistency方法比传统…...

UUG杭州站 | 团结引擎1.5.0 OpenHarmony新Feature介绍
PPT下载地址:https://u3d.sharepoint.cn/:b:/s/UnityChinaResources/EaZmiWfAAdFFmuyd6c-7_3ABhvZoaM69g4Uo2RrSzT3tZQ?e2h7RaL 在2025年4月12日的Unity User Group杭州站中,Unity中国OpenHarmony技术负责人刘伟贤带来演讲《团结引擎1.5.0 OpenHarmony新…...

Vue3——父子组件通信
在Vue开发中,组件通信是核心概念之一。良好的组件通信机制能让我们的应用更加清晰、可维护。 父传子defineProps defineProps是一个编译时宏,仅在内部可用,不需要显式导入。声明的 props 会自动暴露给模板。 还返回一个对象,其中…...

游戏引擎学习第276天:调整身体动画
运行游戏,演示我们遇到的拉伸问题,看起来不太好,并考虑切换到更顶视角的视角 我们开始讨论游戏开发中的一些美学决策,特别是在处理动画方面。虽然我们是游戏程序员,通常不负责设计或艺术部分,但因为这是一…...

从开发者角度看数据库架构进化史:JDBC - 中间件 - TiDB
作者: Lucien-卢西恩 原文来源: https://tidb.net/blog/e7034d1b Java 应用开发技术发展历程 在业务开发早期,用 Java 借助 JDBC 进行数据库操作,虽能实现基本交互,但需手动管理连接、编写大量 SQL 及处理结果集&a…...

Mipsel固件Fuzzing小记
Mipsel固件Fuzzing小记 0x01 准备 1.1 安装必要工具链 首先需要安装 MIPS 交叉编译工具链和相关依赖: sudo apt-get install -y gcc-mipsel-linux-gnu g-mipsel-linux-gnu binwalk qemu-user-static afl这些工具分别用于:交叉编译、固件解包、二进制…...

本土DevOps革命:Gitee如何撬动中国企业的数字化转型新动能
在数字化浪潮席卷全球的背景下,中国企业正面临前所未有的转型压力与机遇。随着《数据安全法》和《个人信息保护法》的全面实施,以及信创产业政策的深入推进,研发工具链的自主可控已成为关乎企业核心竞争力的战略命题。在这一关键赛道上&#…...
关于此站点更改通知.top域名后期将统一更换为snowytime.cn访问,其余top访问进入过渡期
随着互联网技术的不断发展和域名应用的日益普及,为了更好地满足用户需求,提升网站访问体验,我们决定对现有的.top域名进行一次重大调整。自2025年6月1日起,.top域名后期将统一更换为snowytime.cn访问,其余top访问将暂时…...
使用python进行人员轨迹跟踪
一、系统概述 该系统基于计算机视觉技术,实现对视频或摄像头画面中的人员进行检测、跟踪,并生成轨迹数据。支持透视变换校准(鸟瞰图显示)、多目标跟踪、轨迹存储及视频录制功能,适用于安防监控、行为分析等场景。 二…...

强化学习入门:马尔科夫奖励过程二
文章目录 前言1、动作2、策略总结 前言 最近想开一个关于强化学习专栏,因为DeepSeek-R1很火,但本人对于LLM连门都没入。因此,只是记录一些类似的读书笔记,内容不深,大多数只是一些概念的东西,数学公式也不会…...