FPGA学习
文章平均质量分 60
NoNoUnknow
这个作者很懒,什么都没留下…
展开
-
【IP层的校验和与UDP的校验和】+【FPGA实现】
IP头校验和是一种错误检测机制,用于在互联网协议(IP)中保证IP头的数据完整性。当一个IP数据包从源主机发送到目的主机时,它经过许多路由器和交换机,校验和可以帮助这些中间设备检查数据包在传输过程中是否出现错误。这个校验和随后被填充在IP头中专门为校验和预留的字段内。在接收端,同样的计算会被执行在收到的IP头上,包括校验和字段本身。如果数据包在传输过程中没有错误,所有段的总和加上接收到的校验和的结果应该是一个全1的二进制数(因为原始计算中结果取反了)。原创 2024-04-08 15:05:37 · 490 阅读 · 2 评论 -
CMD FIFO的深入理解:一种避免占用总线带宽的仲裁方法
3.虽然CMD FIFO能够让地址也具有缓存的能力,但是突发事件的执行本身也需要很长的时间(相对仲裁),这个方案的意义可能更在于使得每次仲裁的时间都不需要在总线空闲的时候,避免了总线带宽的占用;2.不使用CMD FIFO也是可以达到这些目的的,但你需要在更根源的情况下(请求)的时候进行好请求;1.1.每满足一次需求向FIFO中写入一次地址和命令,这些地址和命令会在总线空闲的时候被执行;原创 2024-03-14 14:04:47 · 317 阅读 · 0 评论 -
单AXI总线多通道仲裁状态机V2.0(代码+tb文件)
【代码】仲裁状态机V2.0(代码+tb文件)原创 2024-03-11 18:08:35 · 278 阅读 · 0 评论 -
DDR3 APP接口的两种时序写法
3.每当计数器来到一次burst事件的总需求的时候,向CMD FIFO写入需要操作的地址;1.当写数据FIFO内的数值达到一次burst事件的需求的时候,进行请求;3.完成写操作以后地址增加这一整个burst的便宜了;读操作和写操作类似,仅把FIFO的请求规则改换即可;4.利用CMD FIFO的空信号取反作为请求的来源;2.每当写数据时,利用写数据使能来增加计数器;2.请求通过仲裁器传递到写模块,启动写;1.创建命令FIFO CMD FIFO;个人觉得第一种更好。原创 2024-03-14 11:37:16 · 445 阅读 · 0 评论 -
实现3x3卷积的手写FIFO
因为不同平台之间调IP会变麻烦,重新阅读手册太花时间了(虽然我觉得fifo这种常用IP尽量掌握为好),使用手写的FIFO可以节约开发的流程。通过这个例子也可以优化自己所使用的手写FIFO。例子来自米联科例程,原创 2024-01-01 16:34:32 · 788 阅读 · 0 评论 -
图像处理算法:白平衡、除法器、乘法器~笔记
LUTMultLUTMult除数的倒数和乘数的简单查找估计。由于倒数估计中需要偏差,因此仅支持余数输出类型。如果用于创建小数输出,此偏差会引入偏移(误差)。对于小于或等于 12 位的操作数宽度,建议这样做。该实现使用 DSP Slice、Block RAM 和少量 FPGA 逻辑原语(寄存器和 LUT)。对于可以使用 Radix2 或 LUTMult 选项的操作数宽度,LUTMult 解决方案提供了一种使用更少 FPGA 逻辑资源的解决方案,因为使用了 DSP 和 Block RAM 原语。原创 2024-01-23 21:56:50 · 1154 阅读 · 0 评论 -
Sony IMX222相机的配置和解析
【代码】IMX222:寄存器。原创 2023-12-27 21:07:28 · 491 阅读 · 0 评论 -
Zynq SPI
事件:触发事件的时候启动,类似Uart中的相关事件函数。原创 2023-12-27 20:38:59 · 591 阅读 · 0 评论 -
OV5640:寄存器 自用
【代码】OV5640:寄存器 自用。原创 2023-12-23 17:44:47 · 879 阅读 · 0 评论 -
MIPI配置的OV5640的使用
———逆转LLP:Unpacked 处理。此后写入Wfifo并且存入DDR3。————Byte转Pixel处理。————Lane同步处理处理。N Lane 差分串行输入。————字节对齐处理。原创 2023-11-10 20:37:00 · 396 阅读 · 0 评论 -
伽马校正:FPGA
Book_VIP: 《基于MATLAB与FPGA的图像处理教程》此书是业内第一本基于MATLAB与FPGA的图像处理教程,第一本真正结合理论及算法加速方案,在Matlab验证,以及在FPGA上加速实现的书籍,填补了行业的空缺,书中选择了几十个图像处理算法进行硬件加速,希望真正能够让从业者了解如何采用FPGA进行加速,如何掌握精髓,改变未来。这里,借用Gitee,托管本书相关的图像算法代码及相关资料等,与您共享。* 代码是从这里拿来的程序改的。目的:把图片变亮或变暗。原创 2023-12-21 20:40:37 · 705 阅读 · 0 评论 -
Bayer 转 RGB
【代码】Bayer 转 RGB。原创 2023-12-21 20:38:17 · 351 阅读 · 0 评论 -
失败的2x2 Mipi Raw10转RGB565
我的Padding方式是:在传输完该行数据以后,再进行一次传输,可是因为FIFO的位宽设置为4个像素(raw10的高八位)比较方便,所以最小的执行单位是4个像素,这就是Padding产生的原因!但是Padding操作会遇到一个问题:此处是四个像素一同进来的,而我仅需要填充一行一列,也就是说,padding会产生额外的三个无用像素,并写进DDR3中,这三个无用像素如何产生的呢?但是拼接不可避免地需要考虑到:传输速率是4个像素/一个时钟周期的问题,那我还不如写到DDR3中,再读出来,那一定容易很多!原创 2023-12-13 21:28:10 · 393 阅读 · 0 评论 -
dbug_hub 错误 使用多个ILA导致
解决方法参考以上链接。或,使用高速下载器?原创 2023-12-07 22:03:59 · 496 阅读 · 0 评论 -
常用系统函数
系统函数 $clog2 应返回参数以 2 为底的对数的上限(对数四舍五入为整数值)。参数可以是整数或任意大小的向量值。参数应被视为无符号值,参数值为 0 将产生结果 0。该系统函数可用于计算对给定大小的存储器进行寻址所需的最小地址宽度或表示给定数量的状态所需的最小向量宽度。原创 2023-11-21 11:49:31 · 94 阅读 · 0 评论 -
内存映射:PS和PL DDR3的一些区别
可见,PS端的DDR3需要从已经映射好的地址去写。PL不需要,从零开始。原创 2023-11-12 20:12:13 · 313 阅读 · 0 评论 -
DDR3 MIG的仿真加速
可用BRAM生成AXI协议接口来代替,MIG的仿真模型实在太慢了。今天才知道的小技巧。原创 2023-11-12 15:29:09 · 132 阅读 · 0 评论 -
OV5640 自用资料
基本 CCI 消息由 START 条件、带读/写位的从机地址、从机确认、指向从机设备内部寄存器的子地址(索引)、来自从机的确认信号、来自主机的写操作数据字节组成,来自从机的确认/否定确认和停止条件。在读操作中,数据字节来自从机,应答/否定应答来自主机。有关串行控制端口的详细用法,请参阅 OmniVision Technologies 串行摄像机控制总线 (SCCB) 规范。CCI 支持 8 位索引和 8 位数据或 16 位索引和 8 位数据。组保持起始地址范围为0x40~0x7F,单位为16字节。原创 2023-11-09 19:31:01 · 2030 阅读 · 0 评论 -
FDMA 3.1 米联客的Axi-DDR3控制器及其配套的Dbuf
自定义的FDMA Brust Length,能够接收比实际Axi Brust Lengtht更多的数据,这是通过这个模块实现的:即通过设置的Axi总线最大brust len后,通过对比其位宽过一位的数据是否为高,来判断需求的brust长度是否是否超过了max brust len,如果超过了则进行截断。。FDMA的一次读写操作的分界线是一次FDMA Brust Length的完成,其中可以涵盖多个Axi Brust Length。原创 2023-11-09 15:12:02 · 785 阅读 · 0 评论 -
SPI协议与FPGA的自动升级和多启动
以本文中使用的M25P16为例,16MB,八比特一个地址,则为2MB深度,32个扇区,一个扇区256页,一页256个字节地址,如果存储空间更大,扇区会更多,扇区地址的长度也会增加,比如32就有64个扇区之类的,根据厂商策略的不同,也可能改一个扇区内页的大小等。FPGA中的SPI协议主要通过片选线,时钟线,输入数据线和输出数据线进行连接(四线制),三线制的SPI协议通过三态门来构建数据线,SPI协议主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有。FLASH则分为扇区擦除和全擦除。原创 2023-08-22 20:54:23 · 144 阅读 · 0 评论 -
DDR3笔记 频率配置
可参考1.DDR3器件的手册。2.开发板芯片的手册。原创 2023-10-22 16:35:16 · 184 阅读 · 0 评论 -
手写MIPI(一):MIPI-CSI-2 RAW10笔记
虚拟通道标识符的目的是为数据流中交错的不同数据流提供单独的通道。外设中的虚拟通道标识符应该是可编程的,以允许主机处理器控制数据流的解复用方式。规范的这一部分记录了传输介质的特性、信令的电气参数以及时钟和数据通道之间的定时关系。低级协议 (LLP) 包括为 SoT(传输开始)和 EoT(传输结束)事件之间传输的串行数据建立位级和字节级同步以及向下一层传输数据的方法。前两类表示短包数据类型。32 位数据包标头 (PH)、具有可变数量的 8 位数据字的应用程序特定数据有效负载以及 16 位数据包页脚 (PF)。原创 2023-11-06 19:37:23 · 1929 阅读 · 0 评论 -
原语:串并转换器
OFB也是输出端口,但是他有特殊的作用,一个是与ISERDESE2上的OFB引脚相连,作为反馈端口,一个是与ODELAYE2相连,作延迟输出使用,这个端口在正常使用过程一般悬空即可。因此我们可以把它们端口分成三大类,一部分是关于三态控制,一部分是关于时钟复位信号,一部分串并数据转换输入输出。在时钟复位信号中,CLK是串行数据时钟,是高速时钟,CLKDIV是并行数据时钟,是低速时钟。OSERDESE2原语将并行数据转换为串行数据,减少数据传输端口数量的同时也提高了频率,将低速数据转换为高速数据,方便传输。原创 2023-11-06 21:05:28 · 628 阅读 · 0 评论 -
手撕同步FIFO~带tb文件
【代码】手写同步FIFO。原创 2023-10-26 16:55:45 · 70 阅读 · 0 评论 -
芯片手册自用
UG586 MIG:Zynq-7000 SoC 和 7 系列器件内存接口解决方案。UG585 ZYNQ BOOK:Zynq 7000 SoC 技术参考手册。DS182:Kintex-7 FPGA 电气特性。原创 2023-10-22 16:23:32 · 398 阅读 · 0 评论 -
SDRAM学习与实现串口传图
总之只要阅读操作手册,按照时序来,完全不难!器件记录:小梅哥AC620上SDRAM:M12L2561616A-6TG2T其的存储空间为16M*16=256MB,第二行的数字则与其速度等级有关;其分为:4bank*16bit*4M 即:8192*512 = 2^13 * 2^9 = 2^22 = 4Mbank数目*数据位宽*存储深度HY57V281620F,所以其具备的是4bank*16bits*2M 即 2^12 * 2^9 = 2^21 = 2M。原创 2023-09-17 16:13:47 · 299 阅读 · 0 评论 -
存储器~Zynq book第九章
还有小梅哥和正点原子的一些资料。原创 2023-10-21 12:29:41 · 190 阅读 · 0 评论 -
使用Axi Lite接口访问寄存器列表作为缓冲区
AXI Interconnect互连内核将一个或多个 AXI 内存映射主设备连接到一个或多个内存映射从设备。原创 2023-10-18 21:53:20 · 584 阅读 · 0 评论 -
中断:Zynq Uart中断的流程和例程~UG585的CH.19
ug585 P595。原创 2023-10-18 19:53:11 · 1525 阅读 · 0 评论 -
Vitis导入自制IP导致无法构建Platform
【代码】Vitis导入自制IP导致无法构建Platform。原创 2023-10-15 21:04:00 · 561 阅读 · 0 评论 -
中断:PL硬中断,基地址,优先级。
1.编写RTL文件,设置中断的触发条件和频率,将其封装成IP;2.配置BD,为上述IP提供CLK和RST,注意敏感列表;3.配置BD内中断,分配中断号:PL终端号可选:#61 至 #68 和 #84 至 #914.启动Vitis,在C文件中绑定CPUID,并使能硬中断的中断号,连接,配置优先级和灵敏度类型。原创 2023-10-14 21:13:36 · 450 阅读 · 0 评论 -
中断:AMP 软中断的过程和GPIO中断差别
相较于GPIO中断,省去了对中断触发敏感类型的配置(软中断不可配),对中断管脚(Bank)的中断使能,对GPIO回调函数的设置(GPIO中断自己也可以省略这个步骤)。这是因为GPIO中断实际上是共享同一个中断号的,所以要使能,设置具体的管脚。原创 2023-10-10 16:58:40 · 100 阅读 · 0 评论 -
中断:利用GPIO中断实现的I2C温度显示器
【代码】利用GPIO中断实现的温度显示器。原创 2023-10-07 16:42:54 · 58 阅读 · 0 评论 -
中断:ZYNQ GPIO
将中断控制器中断处理程序连接到ARM 处理器中的硬件中断处理逻辑。我在新的例子中没有看到这个函数了。* @brief 该函数是一个通用 API,用于在所有支持的手臂上初始化异常处理程序 *处理器。对于 ARM Cortex-A53、Cortex-R5、* 和 Cortex-A9,异常处理程序正在静态初始化,并且该函数不执行任何操作。* 然而,它仍然存在以解决向后兼容性 * 问题(在早期版本的 BSP 中,此 API 用于 * 初始化异常处理程序)。/**return;原创 2023-10-06 18:08:36 · 750 阅读 · 0 评论 -
IIC控制器(2):PS端与EEPROM读写例程
本文主要做一些基本知识的补充和工程参考。写IIC需要注意的事情:1.查询芯片手册获得slave地址,以及寄存器地址(或者叫寄存器命令)。2.约定好每次读/写的数据长度。对于这类芯片而言,读取一般都使用了顺序读,即读完一个地址自动读下一个地址,所以约定好长度通过no ack来打断很重要。(SPI设备是通过停止输入时钟和拉高CS_N来打断的)原创 2023-10-04 15:05:51 · 452 阅读 · 0 评论 -
PS与PL互联与SCU以及PG082
Global模式可以理解为全局综合,当整个工程中的某个文件修改综合时,之前生成的IP核将被重新综合,而out of context per IP模式被称为OOC模式,在生成综合IP核时,已经将IP核综合为网表文件和IP调用文件,在后续整个工程实现时,不再对IP核的源文件进行综合实现,而是直接将网表与其他模块一起实现。PS的54个MIO引脚可以用于连接不同的外设接口,如图 1.3.13中的MIO14和MIO15,既可以配置成UART0 的引脚接口,也可以配置成 I2C0 或 CAN0 的引脚接口。原创 2023-09-28 22:15:22 · 557 阅读 · 0 评论 -
ZYNQ的程序固化~AMP跑双核
确定启动方式后,BootROM 从相应的启动设备(SD Card/QSPI Flash)加 载 First Stage Bootloader (FSBL)或 用 户 代 码 到 On Chip Memory(OCM)的 RAM 上,并且将执行权交付给 FSBL,这个被拷贝到片上 RAM 执行的程序就来自用户自设计的BOOT.bin。标头搜索将继续,直到找到有效的标头或搜索整个范围。这里,BootROM 配置 PS 来访问引导设备,读取引导标头,验证标头,然后通常将 FSBL/用户代码复制到 OCM 内存。原创 2023-10-09 20:34:03 · 640 阅读 · 0 评论 -
Zynq双核通信和中断小结
Xil_Out32(CPU1STARTADR, CPU1STARTMEM)来使加载boot镜像以后去跳转到CPU1程序的地址,并且发送事件代码sev()来进行唤醒。其次,在编写elf文件的时候,需要通过配置lscript.ld来规定程序的起始位置和长度。CPU1的文件起始位置为CPU1STARTMEM;双核通信和程序固化的实例。原创 2023-10-10 13:18:38 · 658 阅读 · 2 评论 -
PS端GPIO配置和基本介绍
Xilinx PS GPIO 驱动程序。该驱动程序支持 Xilinx PS GPIO 控制器。GPIO 控制器支持以下功能:该驱动程序旨在独立于 RTOS 和处理器。任何对动态内存管理、线程或线程互斥、虚拟内存或高速缓存控制的需求都必须由该驱动程序之上的层来满足。该驱动程序支持上面列出的所有功能(如果适用)。原创 2023-10-04 21:21:27 · 277 阅读 · 0 评论 -
Sobel算子实现(公式)
而要对图像使用的情况下由于求极限也只能趋于1,则取近似为f'(x) = [f(x+1)-f(x-1)]/2,通常sobel核的范围是3x3,而其中的中间需要加权一倍。通过高等数学的知识易得,这个公式可以通过求微分来取得数值变化的大小。整体呈现:(来自百度百科)原创 2023-08-15 15:10:02 · 508 阅读 · 0 评论