修改AXI UART D16550 FIFO深度的过程记录
仅限于AXI UART 16550 v. 2.0,其他版本可能存在差异,经过实际测试,可以将fifo深度从默认的16成功修改为32、128和256。参考了两篇帖子中提到的方法,分别是修改AXI UART D16550 FIFO深度 - 简书 (jianshu.com)和Increase FIFO Size in AXI_UART_16550 (xilinx.com)中jamsoft的两次回答。完整记录如下:
更改 AXI UART 16550 FIFO 大小,步骤如下:
- 备份 Vivado/your_version/data/ip/xilinx/axi_uart16550_v2_0 和 /Vivado/your_version/data/ip/xilinx/lib_srl_fifo_v1_0 文件夹
- 如果您的设计中有 AXI_UART_16550 IP 核,请将其移除,保存设计/项目并关闭 Vivado
- 清除项目目录中的 your_project.cache 文件夹
- 编辑 Vivado/your_version/data/ip/xilinx/lib_srl_fifo_v1_0/hdl 文件夹中的 lib_srl_fifo_v1_0_rfs.vhd:
- 第 677、381、981 行:根据需要更改 C_DEPTH 值
- 保存并关闭文件,使用编辑后的lib_srl_fifo_v1_0_rfs.vhd文件替换安装目录和项目目录下所有的同名文件。(这一步很关键)
请注意:clog2 函数用于确定存储值所需的位数。例如,在 Num_To_Reread 的情况下:在 std_logic_vector(0 to clog2(C_DEPTH)-1) 中,该函数将返回 4(位!)的值,因此该行将被处理为 Num_To_Reread :在 std_logic_vector(0 到 3) 中。为您的 C_DEPTH 值计算此值对于以下编辑很重要。clog2 函数返回上限 log2(C_DEPTH) 值,即存储 C_DEPTH 值的最小位数。
注2:如果您不了解 VHDL 或该函数究竟是做什么的,这里是 C/C+++ 版本:
int clog2(int x)
{
int r = 0;
int rp = 1;
while( rp < x )
{
r\+\+;
if( rp > std::numeric_limits<int>::max())
return std::numeric_limits<int>::max(); //or we could exit with some other value as -1...
rp \+= rp;
}
return r;
}
随着 rp 值呈指数增长,您可以通过 head 或在一些纸上评估函数 - 对于一些通常的 FIFO 大小值(32、64 ...),它只会是几个循环......
- 编辑 Vivado/your_version/data/ip/xilinx/axi_uart16550_v2_0/hdl 文件夹中的 axi_uart16550_v2_0_vh_rfs.vhd 文件:
- 第 89 行(Rx_fifo_count : in std_logic_vector(3 downto 0 ); -- Rx fifo count):将 3 的值更改为上一步中 clog2 函数返回的值减去 1(从 0 开始计数:-))。
- 第 510 行:添加库“use ieee.numeric_std.all;” (不带引号)
- 第 561 行:将 C_DEPTH 值更改为所需的 FIFO 深度
- 第 574 行:将 Num_To_Reread => X"0" 更改为
std_logic_VECTOR(to_unsigned(0,your_value_from_clog2_function))//这里不减一 - 第 1086 行:添加库“use ieee.numeric_std.all;” (不带引号)
- 第 1140 行:更改“信号 rx_fifo_count : std_logic_vector(3 downto 0);” - 将 3 的值更改为值
由上一步中的 clog2 函数返回减一(从 0 开始计数) - 第 1178 行:将 C_DEPTH 值更改为所需的 FIFO 深度
- 第 1191 行:将 Num_To_Reread => X"0" 更改为
Num_To_Reread => std_logic_VECTOR(to_unsigned(0,your_value_from_clog2_function))//这里不减一
- 重新打开您的 Vivado 项目/设计,添加 UART IP、合成、生成比特流……您就完成了 :-)
修改AXI UART D16550 FIFO深度的过程记录的更多相关文章
- docker的使用---创建新的镜像(通过修改容器,个人练手理解过程记录,不推荐使用)
docker基础命令 ##列出docker客户端命令 docker docker container --help ##显示docker的版本和信息 docker --version docker v ...
- webflux延迟队列逻辑更改过程记录
title : webflux延迟队列逻辑更改过程记录 author : simonLee date : 2022/11/22 10:26 目录 webflux延迟队列逻辑更改过程记录 一.问题背景 ...
- QNX的深度嵌入过程
QNX的深度嵌入过程 1.1 QNX目标系统嵌入 利用QNX的模块性和和可裁剪性,其嵌入过程一般是: 构建Buildfile -> 编译buildfile生成系统映象文件 ...
- 深入理解FIFO(包含有FIFO深度的解释)——转载
深入理解FIFO(包含有FIFO深度的解释) FIFO: 一.先入先出队列(First Input First Output,FIFO)这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行 ...
- 深入理解FIFO(包含有FIFO深度的解释)
FIFO: 一.先入先出队列(First Input First Output,FIFO)这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令. 1.什么是FIFO? FIFO是 ...
- 升级Windows 10 正式版过程记录与经验
升级Windows 10 正式版过程记录与经验 [多图预警]共50张,约4.6MB 系统概要: 预装Windows 8.1中文版 64位 C盘Users 文件夹已经挪动到D盘,并在原处建立了符号链接. ...
- 双系统Ubuntu分区扩容过程记录
本人电脑上安装了Win10 + Ubuntu 12.04双系统.前段时间因为在Ubuntu上做项目要安装一个比较大的软件,导致Ubuntu根分区的空间不够了.于是,从硬盘又分出来一部分空间,分给Ubu ...
- CentOS 5.5 下安装Countly Web Server过程记录
CentOS 5.5 下安装Countly Web Server过程记录 1. 系统更新与中文语言包安装 2. 基本环境配置: 2.1. NodeJS安装 依赖项安装 yum -y install g ...
- 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...
- 升级到 ExtJS 5的过程记录
升级到 ExtJS 5的过程记录 最近为公司的一个项目创建了一个 ExtJS 5 的分支,顺便记录一下升级到 ExtJS 5 所遇到的问题以及填掉的坑.由于 Sencha Cmd 的 sencha ...
随机推荐
- Autojs页面开发
概述: Autojs功能很强大! 可以打包成apk文件装在手机里运行,也可以做页面UI级别的开发.本文主要对基础页面开发常用方法.demo.资料做收集, 属于比较基础的文章.大佬请略过....... ...
- Delphi针对双字节字段处理
针对有些特殊的中文字如"错畸形安氏I类"中""字,属于特殊字符,在Oracle数据库中必须以双字节方式存储,字段定义为nVarchar2(100). 在Delp ...
- matlab读写文件操作
文件相对路径 在编码中尽可能使用相对路径: 1.当前路径下,直接:' xxx.bin ' 2.在下一级路径下,使用:' .\下一级路径文件名\xxx.bin ' 3.在上一级路径下,使用:' ..\x ...
- 查找数组中某个元素出现的次数,例如数组arr=[1,2,3,4,3,4,5,3]中target=3出现的次数
1 function(arr,target) { 2 3 let num = 0 4 5 arr.forEach((item, index) => { 6 7 if (item===target ...
- iOS数据持久化 - CoreData
前言 1 - CoreData 是苹果公司封装的进行数据持久化的框架,首次在 iOS 3.0 版本系统中出现,它允许按照实体-属性-值模型组织数据,并以 XML.二进制文件或者 SQLite 数据文件 ...
- tomcat代理,监控及性能优化
第1章 tomcat简介Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同 ...
- 转载安卓或苹果手机获取URL scheme方法
首先,打开支付宝,来到需要抓取的小程序页面.此处以上海的随申码为例演示,打开随申办小程序,点击顶部的「随申码」按钮进入页面. 可以看出这个一个二级页面,如果想要使用 URL Scheme 一键访问,同 ...
- 测试elasticsearch保存时报找不到类型的错误
java测试存储数据到es时报错:...ActionRequestValidationException: Validation Failed: 1: type is missing... /** * ...
- 记录php遇到的那些坑
首先按照网上指南搭建php.阿帕奇.数据库环境. 具体放上网站 http://www.cnblogs.com/ypr-09-23/p/10797153.html 这是mysql安装指南 需要注意的是 ...
- nginx代理出现上传文件过大解决办法
1.错误描述 2.错误原因 1.上传文件时,利用localhost访问系统,不会出现这个问题:用域名访问这个系统时,出现这个问题,提示是:请求实体太大 由于Nginx反向代理服务器client_max ...