低速接口项目之串口Uart开发(四)——UART串口实现FPGA内部AXILITE寄存器的读写控制

在这里插入图片描述

本节目录

一、设计背景
二、设计思路
三、逻辑设计框架
四、仿真验证
五、上板验证
六、往期文章链接

本节内容

一、设计背景

通常,芯片手册或者IP都会提供一系列的用户寄存器以及相关的定义,用于软件开发人员进行控制底层硬件来调试,或封装API提供给用户侧使用。相同的设计思路,也适用于FPGA开发,在FPGA内部自定义一系列的寄存器,包括:业务寄存器和调试寄存器等等。好处有两个方面,一方面方便FPGA工程师用来调试,定位bug,优化修改代码;二是可以灵活的开发给软件,由软件人员根据寄存器的手册进行二次封装,从而实现客户的各类需求。当然,若因为新增客户需求而不断修改调试FPGA代码,是否考虑前期设计的代码的兼容性,可以通过寄存器方式支持不同功能需求的切换,从而满足客户的应用场景。

二、设计思路

那么如何从串口实现FPGA内部寄存器的控制?
设计的想法,灵感来源于内部AXILITE总线,一种轻量级的寄存器读写访问总线,总线通过五个通道实现内部axilite寄存器的读写控制。
串口内容如何与AXILITE的五个通道进行一一映射?
用过AXILITE总线的FPGA开发者,或多或少都了解这个总线信号五个通道,相当多,也有直接逻辑控制各个通道的信号,而此处的思路是引入wishbone总线,通过控制wishbone总线的读写,借助于成熟开源的wishbone总线转换AXI总线的模块,从而实现axilite寄存器的读写控制。
在这里插入图片描述

三、逻辑设计框架

工程源码中vivado版本为2022.2,仿真采用Modelsim2020.4,当然用vivado自带的也可以进行仿真验证。
设计框架中,通过宏定义实现两套代码的仿真验证以及上板,需要对应修改xdc的管脚约束。①是frame实现axilite寄存器的读写控制;②是loop的fifo环回测试。
uart_frame代码:内部自定义AXILITE寄存器,包括只读寄存器、可读可写寄存器的定义。在uart_frame_ctrl中,当PC电脑端发送寄存器写数据帧时,解析来自串口的数据,生成wishbone的写控制,完成axilite的寄存器的写入操作,同时,将接收的数据组帧后,并发送至PC串口显示。当PC电脑端发送寄存器读数据帧时,解析来自串口的数据,生成wishbone的读控制,完成axilite的寄存器的读取操作,同时,将读取的数据组帧后,并发送至PC串口显示。
uart_loop代码,上篇文章已经描述了具体的实现细节,此处就不过多描述了。
在这里插入图片描述

四、仿真验证

在testbench文件中,通过组帧实现固定数据帧的发送,从而实现fpga内部寄存器的读写控制,包括:读FPGA的版本号,读写测试寄存器以及通过控制led寄存器修改led的状态。
在这里插入图片描述
在这里插入图片描述

五、上板验证

//读版本寄存器32’h80000000
//A1B2C3D4800000000000000000000001A6B7C8D9
在这里插入图片描述
在这里插入图片描述

//写测试寄存器32’h80000004
//A1B2C3D4800000046666666600000001A6B7C8D9
在这里插入图片描述

//读测试寄存器32’h80000004
//A1B2C3D4800000040000000000000000A6B7C8D9
在这里插入图片描述

六、往期文章链接

UltraScale+FPGA中Serdes的多lane对齐异常解决方案
vivado时序报告中slack是如何计算的?如何优化时序?
UltraScale+FPGA中GTY的TX路径时钟详解——以40G的ETH MAC IP为例
vivado时序优化——约束异步时钟组set_clock_groups
基于FDMA和AXI4接口的DDR4遍历读写测试
基于fpga的图像处理之3x3_5x5算子模板设计
基于fpga的图像处理之3x3_5x5算子模板中值排序
基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)
AXI协议之AXILite开发设计(一)
AXI协议之AXILite开发设计(二)
AXI协议之AXILite开发设计(三)
AXI协议之AXILite开发设计(四)
AXI协议之AXILite开发设计(五)
FPGA和Matlab的FFT功能验证(一)
FPGA和Matlab的FFT功能验证(二)
FPGA和Matlab的FFT功能验证(三)
跟小灰灰一起学vivado:7系列FPGA的MultiBoot和Fallback功能更新固件
跟小灰灰一起学vivado:7系列FPGA配置模式之配置数据文件格式和配置时序步骤
跟小灰灰一起学vivado:7系列FPGA配置模式之主SPI四路(x4)
跟小灰灰一起学vivado:PCIe XDMA实现远程更新FPGA固件
Xilinx UltraScale+DDR4项目开发(一)——DDR4 MIG的ip接口信号

Xilinx UltraScale+DDR4项目开发(二)——DDR4 MIG的时钟网络
Xilinx UltraScale+DDR4项目开发(三)——DDR4器件选型与MIG IP的配置
低速接口项目之串口Uart开发(一)——串口UART
低速接口项目之串口Uart开发(二)——FIFO实现串口数据的收发回环测试
低速接口项目之串口Uart开发(三)——串口发送模块和接收模块
低速接口项目之串口Uart开发(四)——UART串口实现FPGA内部AXILITE寄存器的读写控制
低速接口项目之串口Uart开发(五)——QT实现Uart串口寄存器读写工具
低速接口项目之串口Uart开发(六)——zynq系列ps-pl端uart实现共享Axilite内部寄存器的读写
低速接口项目之串口Uart开发(七)——如何在FPGA项目中实现自适应波特率串口功能
低速接口项目之串口Uart开发(八)——如何通过ps侧的串口实现zynq的在线升级(一)
低速接口项目之串口Uart开发(九)——如何通过ps侧的串口实现zynq的在线升级(二)
低速接口项目之串口Uart开发(十)——基于EMIO的自定义PL串口实现zynq的在线升级

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/61593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git branch -d 删除分支

Git进行版本控制时,删除分支是常见的操作。特别是当特定的功能开发完成或者分支不再需要时,删除分支可以帮助保持仓库的整洁。删除本地分支和删除远端分支是两个独立的操作。如果需要同时删除本地和远端的分支,需要分别执行以下两个命令。 一…

Linux环境开启MongoDB的安全认证

文章目录 1. MongoDB安全认证简介1.1 访问控制1.2 角色1.3 权限 2. MongoDB中的常见角色3. MongoDB Shell3.1 下载MongoDB Shell3.2 通过MongoDB Shell连接MongoDB 4. 创建管理员用户5. 为具体的数据库创建用户6. 开启权限认证7. 重启MongoDB服务8. 连接MongoDB9. MongoDB数据库…

Flutter封装Coap

前言 我们根据Coap数据通信流程写一个公共组件,用户只要在原本的组件外嵌套这个公共组件就可以使用Coap的功能,这样做更加的方便便捷。 具体步骤 封装一个udp函数 创建一个工厂函数,工厂函数初始化时监听广播数据发送广播函数&#xff1a…

探索 Vue.js:构建交互式前端的强大工具

在当今的 web 开发领域,前端技术日新月异,而 Vue.js 作为一款备受瞩目的 JavaScript 框架,以其简洁易用、高效灵活的特点,赢得了众多开发者的青睐。今天,就让我们深入了解一下 Vue.js 的相关知识,同时也探讨…

Java方法中的可变参数列表

在Java中,可变参数列表(Variable Argument List)允许方法接受不定数量的参数。可变参数列表通过在方法参数类型后加上三个点(...)来定义。可变参数列表实际上是一个数组,因此可以在方法内部像操作数组一样操…

PVE的优化与温度监控(二)—无法识别移动硬盘S.M.A.R.T信息的思考并解决

前情提要:空闲2.5英寸机械硬盘,直接放到PVE上测试NAS 使用,通过SATA线的方式让小主机不太美观,并且失去了前期调试的安全性。购入移动硬盘盒,缺点,USB 连接,会失去一些特性。比如本文中遇到的问…

嵌入式硬件实战基础篇(二)-稳定输出3.3V的太阳能电池-无限充放电

引言:本内容主要用作于学习巩固嵌入式硬件内容知识,用于想提升下述能力,针对学习稳压芯片和电容以及电池之间的运用,对于硬件PCB以及原理图的练习和前面硬件篇的实际运用;太阳能是一种清洁、可再生的能源,广…

Word和Excel使用有感

1.画图 折线图:适用于多个y值的画图 散点图:适合需要对x轴进行自定义时使用 2.word和excel的联动 1)excel中的数据导入word直接复制即可 若是表格中的数据要导入word 则先将表格中的数据拆分出来,再直接复制到word中 2&#…

OpenCV相机标定与3D重建(3)校正鱼眼镜头畸变的函数calibrate()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::fisheye::calibrate 函数是 OpenCV 中用于校正鱼眼镜头畸变的一个重要函数。该函数通过一系列棋盘格标定板的图像来计算相机的内参矩阵和畸变…

【过程控制系统】第6章 串级控制系统

目录 6. l 串级控制系统的概念 6.1.2 串级控制系统的组成 6.l.3 串级控制系统的工作过程 6.2 串级控制系统的分析 6.2.1 增强系统的抗干扰能力 6.2.2 改善对象的动态特性 6.2.3 对负荷变化有一定的自适应能力 6.3 串级控制系统的设计 6.3.1 副回路的选择 2.串级系…

24/11/22 项目拆解 艺术风格转移

我们有时候想把两种艺术风格整合,创造更具艺术特色的艺术品,人很难办到,但是人工智能可以,比如下面将艺术画的风格转移到照片上。 我们先来初步了解一下实现上述功能的数学原理 所谓艺术风格,其实就是边缘,颜色&#…

中断的详细流程

一、中断请求 中断请求是中断过程的起始阶段,由需要CPU服务的外设(中断源)向CPU发出请求信号。这个信号可以是电平信号或边沿信号,具体取决于中断系统的设计和中断源的类型。 二、中断判优 当系统中存在多个中断源时&#xff0…

Unity图形学之CubeMap立方体贴图

1.CubeMap:有六个面的贴图组成 2. 假反射:反射天空盒子 (1)正常UV采样: (2)Cube的采样:利用反射角采样,反射角X和Cube的交点采样 Shader "Custom/TestReflect"…

LLM Inference Unveiled

题目:LLM Inference Unveiled: Survey and Roofline Model Insights 链接:https://arxiv.org/abs/2402.16363 这也是一篇推理加速的综述,重点关注一下它的组织结构吧,也就是它对推理加速方法的分类 论文给的全文结构图&#xff…

Cesium的ClearCommand的流程

ClearCommand是在每帧渲染前可以将显存的一些状态置为初始值,就如同把擦黑板。当然也包括在绘制过程中擦掉部分的数据,就如同画家在开始绘制的时候会画导览线(如透视线),轮廓出来后这些导览线就会被擦除。 我画了一个…

【系统架构设计师】真题论文: 论企业应用系统的分层架构风格 (包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2013年 试题1)解题思路论文素材参考常见分层架构模式分层架构风格的优势分层架构风格在企业应用系统中的应用案例真题题目(2013年 试题1) 软件架构风格是描述一类特定应用领域中系统组织方式的惯用模…

【Linux】重定向,dup

目录 文件描述符分配规则 重定向 dup ​编辑 输出重定向 追加重定向 输入重定向。 重定向会影响后面的程序替换吗? 1号文件和2号文件 2号文件输出重定向 下标之间的重定向 文件描述符分配规则 重定向 把显示器文件关闭后,本来应该写给显示器…

大语言模型---梯度的简单介绍;梯度的定义;梯度计算的方法

1. 梯度介绍 如果我们在一座山上(一个山的坡度有很多,陡峭的,平缓的),想要从山顶下山。而梯度就像告诉我们如何沿着最陡的下坡路线走,以尽快到达山脚(最低点)。 2. 梯度的定义 梯度…

【JAVA】一次操蛋的nginx镜像之旅

一、前言 由于我们的项目中使用到了nginx,同时我们的nginx是通过docker镜像进行安装的,由于nginx出现了问题,需要重新安装。于是。。。 二、通过docker进行安装 docker pull nginx:latest 1.5.2 脚本文件 在/home/docker/script路径下创…

ubuntu24挂载硬盘记录

1、显示硬盘及所属分区情况。在终端窗口中输入如下命令: sudo fdisk -l 找到自己硬盘的分区 我的地址/dev/sda 2、显示硬盘及所属分区情况。在终端窗口中输入如下命令,格式化自己硬盘: sudo mkfs -t ext4 /dev/sda 3、在终端窗口中输入如下…