各算法/协议知识理论笔记(fpga)

2023-10-26

一、利用fifo对3行数据求和

需要2个fifo保存第0行和第1行的数据,如下图

比如有20行数据,则将一行一行的输给fifo2, fifo2出来的数据再给fifo1.当fifo和fifo1有数据时,在准备给 fifo2输入新的一行数据时,同时读出fifo2,fifo1保存的当行的第一个数据,将这三个数据做加法运算得到结果。

二、sobel边缘检测算法

针对灰度图像做边缘检测,Soble 算法的核心就是 Sobel 算子,该算子包含两组 3x3 的矩阵。

对于图像而言,取 3 行 3 列的图像数据,将图像数据与对应位置的算子的值相乘再相加,得到 x 方向的 Gx,和 y 方向的 Gy,将得到的 Gx 和 Gy,平方后相加,再取算术平方根,得到 Gxy近似值为 Gx 和 Gy 绝对值之和,将计算得到的 Gxy 与我们设定的阈值相比较,Gxy 如果大于阈值,表示该点为边界点,此点显示黑点,否则显示白点。

三、SPI协议

  1. SPI(Serial Peripheral Interface,串行外围设备接口)通讯协议,是 Motorola 公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线,在芯片中只占用四根管脚用来控制及数据传输,广泛用于 EEPROM、Flash、RTC(实时时钟)、ADC(数模转换器)、DSP(数字信号处理器)以及数字信号解码器上,是常用的也是较为重要的通讯协议之一。

  1. SPI 通讯协议的优点是支持全双工通信,通讯方式较为简单,且相对数据传输速率较快;缺点是没有指定的流控制,没有应答机制确认数据是否接收,与 IIC 总线通讯协议相比,在数据可靠性上有一定缺陷,

  1. SPI 通讯设备之间的连接方式可分为一主一从和一主多从

SPI 通讯协议包含 1 条时钟信号线、2 条数据总线和 1 条片选信号线, 时钟信号线为SCK,2 条数据总线分别为 MOSI(主输出从输入)、MISO(主输入从输出),片选信号线为CS

SCK (Serial Clock):时钟信号线,用于同步通讯数据。

MOSI (Master Output, Slave Input):主设备输出/从设备输入引脚。

MISO (Master Input,Slave Output):主设备输入/从设备输出引脚。

CS(Chip Select):片选信号线,也称为 CS_N,以下用 CS_N 表示,而每个从设备都有独立的这一条 CS_N 信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线,SPI 通讯以 CS_N 线置低电平为开始信号,以 CS_N 线被拉高作为结束信号

  1. 通讯模式

SPI 通讯协议一共有四种通讯模式,模式 0、模式 1、模式 2 以及模式 3,这 4 种模式分别由时钟极性(CPOL,Clock Polarity)和时钟相位(CPHA,Clock Phase)来定义,其中CPOL 参数规定了空闲状态CS_N 为高电平,设备未被选中)时 SCK 时钟信号的电平状态,CPHA 规定了数据采样是在 SCK 时钟的奇数边沿还是偶数边沿。

四、建立-保持时间

五、AXI协议

参考:AXI协议规范超详细中文总结版_Hack电子的博客-CSDN博客

AXI总线总结 - 个人学习笔记

AXI(Advanced eXtensible Interface),高级可扩展接口,是AMBA协议的一部分,AXI 协议就是 描述了主设备和从设备之间的数据传输方式,在该协议中,主设备和从设备之间通过握手信号(valid 和ready)建立连接。

信号线:

user   帧头

ready  握手信号

valid  握手信号

last   行尾

data 数据

AXI4 协议支持以下三种类型的接口:

1 AXI4 :高性能存储映射接口。
2 AXI4-Lite :简化版的 AXI4 接口,用于较少数据量的 存储映射 通信。
3 AXI4-Stream :用于高速数据流传输,非存储映射接口。
存储映射: 如果一个协议是存储映射的,那么 主机所发出的会话(无论读或写)就会标明一个地址
AXI协议的特点:
1 总线的地址/控制和数据通道是分离的
2 、支持不对齐的数据传输;
3 、支持突发传输,突发传输过程中只需要首地址;
4 具有分离的读/写数据通道;
5 支持显著传输访问和乱序访问
6 、更加容易进行时序收敛。
AXI4 接口,它由五个独立的通道构成
1、读地址
2、读数据
3、写地址
4、写数据
5、写响应
常用的接口定义

读传输的过程:(读地址, 读数据)

主机首先在读地址通道给出读地址和控制信号,然后从机由读数据通道返回读出的数据,这是一次突发读操作,主机给出一个地址,突发读出4个数据
写传输的过程:(写地址, 写数据,写响应)

AXI 总线中的每个通道都包含了一组信息信号,还有一个 VALID 和一个 READY 信号。 VALID 信号由源端(source )产生,表示当前地址或者数据线上的信息是有效的;而 READY 信号由目的端( destination ) 产生,则表示已经准备好接收地址、数据以及控制信息。VALID READY 信号提供了 AXI 总线中的握手机制,如下图所示:
在图 16.1.3 中, ACLK 为时钟信号,在 AXI 协议中,所有的输入信号都在是 ACLK 的上升沿采样,所有的输出信号必须在 ACLK 的上升沿之后才能改变。在 T1 之后,源端将 VALID 拉高,表明 INFORMATION 信号线上传输的是有效的地址、数据或者控制信息。目的端在 T2 之后将 READY 拉高,表明它已经准备好接收数据,此时源端必须保持 INFORMATION 数据稳定不变,直到 T3 时刻进行数据传输。
需要注意的是,源端不允许等目的端的 READY 信号拉高之后,才将 VALID 信号置为有效状态。而且,一旦 VALID 拉高,源端必须保持其处于有效状态,直至成功握手(valid和ready都为1),
必须先等valid有效后,ready才能有效。
一个典型的AXI系统结构如下:

大多数的系统使用如下三种互联拓扑之一:
  • 共享的地址和数据总线

  • 共享的地址总线以及多条数据总线

  • 多层,具有多个地址和数据总线

AXI协议定义了三种突发类型:
  • 固定(FIXED):在突发事务中,每次传输的地址一致,有效的字节线也是一致的,但是可以通过WSTRB信号控制实际有效的字节。这种方式通常用于对同一位置的重复访问,如读取或清空FIFO时。
  • 递增(INCR):在一次递增突发事务中,每次传输,地址都会在之前的地址基础上递增,递增量为传输大小。
  • 回绕(WRAP):这种类型和递增方式类似,但是,地址到达上界后,地址就会回绕到下界。

六、I2C协议:

芯片间的通信,有SCL和SDA两条信号线组成,SCL:时钟线,SDA:数据线。

一般采用一主多从模式,当空闲状态时,数据线和时钟线都处于高电平状态,

读:

起始信号:当时钟为高电平时,数据线由高到低(下降沿),

1、发送7位的器件地址位和1位的读(1)写(0)位
2、接收1位的应答信号 (0有效)
3、发送8位的寄存器地址(写或读的地址)
4、接收1位的应答信号 (0有效)
5、发送8bit数据(要写的数据)
6、接收1位的应答信号 (0有效)
停止信号:当时钟为高电平时,数据线由低到高(下降沿)
写:

起始信号:当时钟为高电平时,数据线由高到低(下降沿),

1、发送7位的器件地址位和1位的读(1)写(0)位
2、接收1位的应答信号 (0有效)
3、发送8位的寄存器地址(写或读的地址)
4、接收1位的应答信号 (0有效)
5、再发生一次起始信号
6、再发送7位的器件地址位和1位的读(1)写(0)位
7、接收读出来的8位数据
8、接收1位的应答信号 (0有效)
停止信号:当时钟为高电平时,数据线由低到高(下降沿)

七、DDR容量计算

行地址总线为13,列地址位宽为 9 位,数据位宽16,含 4 L-Bank
存储容量(Bit) = L-Bank 存储单元数 ×数据位宽(Bit) × L-Bank 个数
        = 2^13 * 2^9 * 16 * 4 =   2^10 * 2^10 * 2^8 = 256M

八、fifo写入读出

写入是立刻写入,读出时候等待了一个时钟才开始输出

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

各算法/协议知识理论笔记(fpga) 的相关文章

  • 在vivado中使用tcl脚本(UG894)

    本文源自UG894 主要介绍如何在vivado中使用tcl脚本 1 vivado中如何获取tcl help vivado中任何自带的命令都可以通过 help 获取帮助信息 也可以直接输入 help 取得vivado命令合集 并通过 help
  • STM32【复习串口】

    串口复习加深理解笔记 杂谈 USART FLAG TXE发送缓冲区空标志 说明可以往数据寄存器写入数据了 但并不代码数据发送完成了 USART FLAG TC发送完成标志 这个才是代表USART在缓冲区的数据发送完成了 即从机接收到了数据
  • 【FPGA入门】第八篇、FPGA驱动VGA实现动态图像移动

    目录 第一部分 实现效果 第二部分 动态VGA显示的原理 1 将动态显示的区域提前进行赋值 2 图像块的移动是每张图片叠加后的效果 3 如何实现图像块位置的改变 第三部分 系统结构和驱动波形 1 系统的Top down结构 2 图像块移动的
  • PLL时钟约束

    方法 1 自动创建基时钟和 PLL 输出时钟 例 derive pll clocks 这一方法使您能够自动地约束 PLL 的输入和输出时钟 ALTPLL megafunction 中指定的 所有 PLL 参数都用于约束 PLL 的输入和输出
  • 硬件基础知识

    SPI是串行外设接口 Serial Peripheral Interface 的缩写 是一种高速的 全双工 同步的通信总线 SCLK SCLK是一种有固定周期并与运行无关的信号量 CLK CLK是一种脉冲信号 TDNN 时延神经网络 它的两
  • 手把手教你Modelsim仿真【2020.4版本】

    首先新建一个文件夹 test5 打开Modelsim 依次选择 File gt Change Directory 把目录选择到创建的 test5 文件夹 创建库 依次选择 File gt New gt Library 一般我们选择第三个 库
  • verilog中wire和reg类型的区别

    module counter parameter CNT MAX 25 d24 999 999 input wire sys clk input wire sys rst n output reg led out reg 24 0 cnt
  • 关于Keil中Memory中观察不到数据变化的问题以及启动文件栈的初始化

    关于Keil中Memory中观察不到数据变化的问题 在KEIL中观察Memory数据变化 一定要记得只能在RAM地址或ROM之内观察 如下图所示 RAM的地址设置在地址为0x20000000开始的地方 大小为0x20000 因此只有在这个范
  • 用Vscode编辑verilog代码配置

    这篇教程感觉很详细了 我这里分享一下vscode和插件的安装包链接 都是官网下载的 放心食用 用VSCode编辑verilog代码 iverilog编译 自动例化 自动补全 自动格式化等常用插件 链接 https pan baidu com
  • Verilog实现两路组相联cache

    cache代码 timescale 1ns 1ps cache共32块 分为16组 每组2块 即两路组相联 1块 4字 1字 4字节 主存共1024块 4096个字 主存地址共12位 1 0 为块内偏移 5 2 为组地址 11 6 为Tag
  • FPGA提示产生latch的报错

    在fpga的设计中有时会遇到 latch 的报错 1 latch是什么 Latch 就是锁存器 是一种在异步电路系统中 对输入信号电平敏感的单元 用来存储信息 锁存器在数据锁存使能时 数据被锁存 输入信号不起作用 这违背了组合逻辑中输出随输
  • 关于xilinx BRAM IP的延迟以及流程

    关于RAM IP的延迟 1 选择了output registers 可以在RAM输出端口添加register 也可以在core的输出添加 在primitives添加 降低clock to out到primitive的延迟 在core添加re
  • 八段数码管动态显示(输入数据为BCD编码)

    八段数码管动态显示 输入数据为BCD编码 一 数码管概述 图1 八段共阴数码管内部等效原理图 图2 八段共阳数码管内部等效原理图 上面两图分别是对应八段共阴 共阳的数码管内部等效图 共阴是将八个LED数码管的阴极连接在一起接低 阳极segm
  • IC数字后端

    在 innovus 里面 有时候我们需要控制 tie cell 的 fanout 和 net length 来避免 tie cell 可能出现 max transition 或者 max fanout 的违例 一般来说 只要 fanout
  • TestBench编写_激励产生

    TestBench编写 激励产生 TestBench编写 激励产生 基本背景 读取函数介绍 a fopen函数使用 b fread函数使用 c fclose函数使用 实际使用 TestBench编写 激励产生 基本背景 最近遇到项目中需要对
  • 【FPGA】通俗理解从VGA显示到HDMI显示

    注 大部分参考内容来自 征途Pro FPGA Verilog开发实战指南 基于Altera EP4CE10 2021 7 10 上 贴个下载地址 野火FPGA Altera EP4CE10征途开发板 核心板 野火产品资料下载中心 文档 hd
  • 【ZYNQ学习】PL第一课

    这节课讲什么 这节课的名字本来是想写为LED 但这一课里除了LED也有按键 又想换为GPIO控制 但关于PL的GPIO控制 不应该这么草率和简单 而且这一课有很多和ZYNQ或者PL关联性不强的东西要说 所以我写了删删了写改了好几遍 终于定为
  • 无线网络管理系统与无线路由器的区别

    第5章 波形发生器软件设计 本章我们将介绍系统的软件设计 系统中控制软件占有很重要的地位 它不仅要产生波形数据 控制波形的发生 还要控制显示电路和键盘电路 因此系统软件的好坏直接决定着系统的功能和稳定 5 1软件的总体结构 在本系统中 由于
  • [Verilog] Verilog 基本格式和语法

    主页 元存储博客 全文 3000 字 文章目录 1 声明格式 1 1 模块声明 1 2 输入输出声明 1 3 内部信号声明 1 4 内部逻辑声明
  • TRICONEX MA2211-100 芯片上相互连接

    TRICONEX MA2211 100 芯片上相互连接 TRICONEX MA2211 100 所有相同的组件 io的电源 处理器 和内存将需要 但是 你可以看到所有这些带存储器和处理器的OO板 针不能嵌入到一个小的单片机上 现在是 普拉克

随机推荐

  • 微信扫码登录详细操作流程(微信公众平台开发)

    在平常的业务开发中 经常会涉及到扫码登录的案例 下面我将对扫码登录流程做简要概述 1 概念 首先需要清楚的是扫码登录大体上有两种实现方式 重点 一种是基于微信公众平台的扫码登录 另一种是基于微信开放平台的扫码登录 注意这两个平台一定要区分开
  • org.mybatis.generator.exception.XMLParserException: XML Parser Error on line 12: 对实体 “useUnicode“ 的

    org mybatis generator exception XMLParserException XML Parser Error on line 12 对实体 useUnicode 的引用必须以 分隔符结尾 在使用mybatis逆向工
  • shell编程基础

    1 它必须以如下行开始 必须放在文件的第一行 bin sh 符号 用来告诉系统执行该脚本的程序 本例使用 bin sh 编辑结束并保存后 如果要执行该脚本 必须先使其可执行 chmod x filename 此后在该脚本所在目录下 输入 f
  • 华为OD机试 - 字符串变换最小字符串(Java)

    题目描述 给定一个字符串s 最多只能进行一次变换 返回变换后能得到的最小字符串 按照字典序进行比较 变换规则 交换字符串中任意两个不同位置的字符 输入描述 一串小写字母组成的字符串s 输出描述 按照要求进行变换得到的最小字符串 备注 s是都
  • Oracle环境变量配置

    情况描述 最近在配置plsql环境后 plsql总是连接不上 由于对自己的记忆力过度自信 导致这个简单的问题不能得到解决 现在记录下来作为以后的参考 一 客户端安装 官网下载orcle对应版本的客户端 然后执行安装 二 环境变量 需要配置以
  • Futter 屏幕适配框架flutter_ScreenUtil 用法

    参考 前言 各位同学大家好 大家在做app开发的时候都会遇到屏幕适配的问题 安卓里面有dp iOS里面有pt 单位给我们用来处理屏幕适配 除此之外安卓还有 autosize等框架给我们使用 iOS也对应屏幕适配方案给我们使用 那么在flut
  • 基于Python的接口自动化unittest测试框架和ddt数据驱动详解

    这篇文章主要介绍了基于Python的接口自动化unittest测试框架和ddt数据驱动详解 本文给大家介绍的非常详细 对大家的学习或工作具有一定的参考借鉴价值 需要的朋友可以参考下 目录 引言 一 unittest测试框架 二 ddt数据驱
  • 用QML实现简单音视频播放器的实践

    用QML的MediaPlayer控件配合VideoOutput对可以对音频文件和视频文件进行播放 代码如下 VideoOutput id video out anchors fill parent source mediaPlayer Me
  • 给定一个无序整数数组,找出两个数字满足他们的和等于目标数字

    给定一个整数数组numbers 从数组中找出两个数满足相加之和等于目标数target 假设每个输入只对应唯一的答案 而且不可以使用重复的元素 返回两数下标值 以数组的形式返回 原始暴力算法 这个好想 建立两个嵌套的for循环 从头到尾遍历数
  • 【JDK新特性】一篇搞懂Lambda表达式 & 函数式接口

    必看 原创声明 转载请注明作者 文章来源 给伙伴们聊一下刷题事项 Lambda表达式 概述 Lambda是JDK8的语法糖 它可以对某些匿名内部类的写法进行简化 它是函数式编程的一个重要体现 让我们不用关注什么是对象 重点关注我们对数据做了
  • 夯实基础-JavaScript异步编程

    异步编程 JavaScript中异步编程问题可以说是基础中的重点 也是比较难理解的地方 首先要弄懂的是什么叫异步 我们的代码在执行的时候是从上到下按顺序执行 一段代码执行了之后才会执行下一段代码 这种方式叫同步 synchronous 执行
  • redis 配置

    root localhost hufh cd usr local src root localhost src ls redis 4 0 10 tar gz root localhost src tar zxvf redis 4 0 10
  • Vue 模拟通讯录列表用 js-pinyin 获取汉字首字母,形成字母索引

    效果图 流程 获取数据 提取首个字的拼音的首个字母 排序并分组 此功能用到Vant组件的 IndexBar 索引栏 1 安装 js pinyin npm地址 npm install js pinyin save 2 引入及使用
  • WindowsAPI 程序

    include
  • GZIP .gz 文件解压与压缩工具类

    package com ucf gatewaycheck utils import java util zip GZIPInputStream import java io FileOutputStream import java io F
  • 怎么提取图片里的颜色?图像颜色特征提取

    图像的颜色一直是研究和关注的热点 也是特征工程不可或缺的feature 今天就简单介绍一种非常基础的颜色的rgb特征 目的 我们希望图片的rgb特征转化成一个可衡量的指标 例如人的身高 体重 这样的指标173cm 60kg 用于后续工作 那
  • 在中断程序中,需要清中断标志,作用是什么?

    清中断标志的作用 响应中断条件是 中断使能和中断标志同时成立 一般来讲 响应中断后 有硬件清标志和软件清标志两种 如果硬件不能清标志 说明书会说明 单片机要靠查询中断标志来判断是否要进入中断 如果你不清除中断标志 本次中断退出 单片机又会检
  • ChatGPT 再遭禁用

    近日 三星电子宣布禁止员工使用流行的生成式AI工具 原因在于4月初三星内部发生的三起涉及 ChatGPT 误用造成的数据泄露事件 报道称 三星半导体设备测量资料 产品良率等内容或已被存入ChatGPT学习资料库中 去年11月上线以来 Cha
  • GoFrame系列:6、Swagger使用总结

    GoFrame系列 6 Swagger使用总结 文章目录 GoFrame系列 6 Swagger使用总结 1 swagger简述 2 GF框架使用swagger流程 3 示例 3 1 GET示例 3 2 POST示例 3 3 其它 4 最后
  • 各算法/协议知识理论笔记(fpga)

    一 利用fifo对3行数据求和 需要2个fifo保存第0行和第1行的数据 如下图 比如有20行数据 则将一行一行的输给fifo2 fifo2出来的数据再给fifo1 当fifo和fifo1有数据时 在准备给 fifo2输入新的一行数据时 同