- 博客(95)
- 收藏
- 关注
原创 以太网:ARP和信息处理状态机+代码实现
使用这种方式的原因是上位机可能不知道你的IP地址(当然如果使用的是开发好的上位机的话,被动ARP也是可以的,例如原子上位机);主要过程是:一次主动ARP之后,进入NORMAL状态,当NORMAL状态下接收到ARP请求的时候,再发送ARP ACK;在实际实现协议栈的时候我个人认为要以主动ARP开始;主动ARP:发送一次ARP请求,接受一个ARP报文;ARP过程只需要一次发送和一次接受就可以完成了;
2024-06-06 14:25:47 488
原创 【IP层的校验和与UDP的校验和】+【FPGA实现】
IP头校验和是一种错误检测机制,用于在互联网协议(IP)中保证IP头的数据完整性。当一个IP数据包从源主机发送到目的主机时,它经过许多路由器和交换机,校验和可以帮助这些中间设备检查数据包在传输过程中是否出现错误。这个校验和随后被填充在IP头中专门为校验和预留的字段内。在接收端,同样的计算会被执行在收到的IP头上,包括校验和字段本身。如果数据包在传输过程中没有错误,所有段的总和加上接收到的校验和的结果应该是一个全1的二进制数(因为原始计算中结果取反了)。
2024-04-08 15:05:37 878 2
原创 CMD FIFO的深入理解:一种避免占用总线带宽的仲裁方法
3.虽然CMD FIFO能够让地址也具有缓存的能力,但是突发事件的执行本身也需要很长的时间(相对仲裁),这个方案的意义可能更在于使得每次仲裁的时间都不需要在总线空闲的时候,避免了总线带宽的占用;2.不使用CMD FIFO也是可以达到这些目的的,但你需要在更根源的情况下(请求)的时候进行好请求;1.1.每满足一次需求向FIFO中写入一次地址和命令,这些地址和命令会在总线空闲的时候被执行;
2024-03-14 14:04:47 383
原创 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 538
原创 DDR3 NATIVE接口
APP和AXI接口有许多相似的地方(握手部分),但是由于和物理芯片直接相关,有更多不一样的地方。addr的计算方式;写命令和写数据到达时间可以各有前后等;
2024-03-09 17:03:35 1086
原创 Matlab作为上位机TCP/IP发送视频给FPGA
对象配置通信和配置读写行为,可以用来配置缓存区,上半部分是用以前版本的函数写的,下半部分是新的;配置缓冲区已经成为了历史。
2024-02-05 20:51:11 1697
原创 TCP/IP LWIP FPGA 笔记
break;break;如果启用了DHCP,定义一个计数器mscnt。如果目标平台是 XPS_BOARD_ZCU102,则执行,这可能是与PHY相关的初始化。调用进行lwIP协议栈的初始化。通过创建一个名为 "nw_thread" 的新线程,该线程执行函数。这个函数主要用于网络接口的配置和启动lwIP协议栈中的相关功能。在启动网络线程后,通过暂停当前任务,直到网络线程完成。
2024-02-02 23:48:00 1529 1
原创 将文件以指定格式存储~BMP~C的实现~FAT32格式
指向接收写入字节数的 UINT 变量的指针。指向指定逻辑驱动器的以 null 结尾的字符串的指针。这个结构的长度是固定的,为14个字节。这个结构的长度也是固定的,为40个字节(LONG为32位整数)。指向要注册和清除的文件系统对象的指针。空指针取消注册已注册的文件系统对象。指向以 null 结尾的字符串的指针,该字符串指定要打开或创建的文件名。指定文件的访问类型和打开方法的模式标志。bw:指向变量的指针,返回写入的字节数。指向空白文件对象结构的指针。指向打开文件对象结构的指针。指向打开的文件对象的指针。
2024-01-24 22:56:32 1022
原创 图像处理算法:白平衡、除法器、乘法器~笔记
LUTMultLUTMult除数的倒数和乘数的简单查找估计。由于倒数估计中需要偏差,因此仅支持余数输出类型。如果用于创建小数输出,此偏差会引入偏移(误差)。对于小于或等于 12 位的操作数宽度,建议这样做。该实现使用 DSP Slice、Block RAM 和少量 FPGA 逻辑原语(寄存器和 LUT)。对于可以使用 Radix2 或 LUTMult 选项的操作数宽度,LUTMult 解决方案提供了一种使用更少 FPGA 逻辑资源的解决方案,因为使用了 DSP 和 Block RAM 原语。
2024-01-23 21:56:50 1263
原创 实现3x3卷积的手写FIFO
因为不同平台之间调IP会变麻烦,重新阅读手册太花时间了(虽然我觉得fifo这种常用IP尽量掌握为好),使用手写的FIFO可以节约开发的流程。通过这个例子也可以优化自己所使用的手写FIFO。例子来自米联科例程,
2024-01-01 16:34:32 840
原创 相机解析驱动小记
通过字同步获得Offset解析出合适的数据以后(Lvds),通过分析信号到来的先后顺序完成Lane同步(类似MIPI模块里的操作);2.根据Lane的数量进行拼接,查阅手册知道输到Lane的方式,哪个前哪个后,raw8/10/12?Lvds需要先进行差分转单端、串并转换操作后可进行解析;1.阅读配置单,知道怎么配置、配置完输出来是什么。DVP接口知道同步头,大致时序后可以写解析驱动;2.搞清楚是什么接口,Dvp or Lvds?3.拼接完以后按照恰当的时序输出完整的像素。
2024-01-01 14:37:14 804
原创 项目前置知识整理(1):图像增强技术之多曝光融合
目的:输出高质量图像;理论参考:采集曝光程度不同的图像后,通过图像算法实现融合;实际实现:采集单张图片,通过算法生成曝光度(亮度不同)的两张图像,进行融合;
2023-12-26 21:29:56 546
原创 伽马校正:FPGA
Book_VIP: 《基于MATLAB与FPGA的图像处理教程》此书是业内第一本基于MATLAB与FPGA的图像处理教程,第一本真正结合理论及算法加速方案,在Matlab验证,以及在FPGA上加速实现的书籍,填补了行业的空缺,书中选择了几十个图像处理算法进行硬件加速,希望真正能够让从业者了解如何采用FPGA进行加速,如何掌握精髓,改变未来。这里,借用Gitee,托管本书相关的图像算法代码及相关资料等,与您共享。* 代码是从这里拿来的程序改的。目的:把图片变亮或变暗。
2023-12-21 20:40:37 803
原创 失败的2x2 Mipi Raw10转RGB565
我的Padding方式是:在传输完该行数据以后,再进行一次传输,可是因为FIFO的位宽设置为4个像素(raw10的高八位)比较方便,所以最小的执行单位是4个像素,这就是Padding产生的原因!但是Padding操作会遇到一个问题:此处是四个像素一同进来的,而我仅需要填充一行一列,也就是说,padding会产生额外的三个无用像素,并写进DDR3中,这三个无用像素如何产生的呢?但是拼接不可避免地需要考虑到:传输速率是4个像素/一个时钟周期的问题,那我还不如写到DDR3中,再读出来,那一定容易很多!
2023-12-13 21:28:10 528
原创 常用系统函数
系统函数 $clog2 应返回参数以 2 为底的对数的上限(对数四舍五入为整数值)。参数可以是整数或任意大小的向量值。参数应被视为无符号值,参数值为 0 将产生结果 0。该系统函数可用于计算对给定大小的存储器进行寻址所需的最小地址宽度或表示给定数量的状态所需的最小向量宽度。
2023-11-21 11:49:31 169
原创 循环优先级仲裁~位屏蔽仲裁算法
位屏蔽算法:描述:对输入的多通道请求进行仲裁。步骤:(1)原码减去对应位数(优先级最高的位次)(2)求得(1)中输出的反码(3)通过(2)中输出与原码进行相与,留下优先级最高的请求。举例:【1】四通道输入请求,ABCD。破解后为:4‘b1000,此时D通道优先级最高。仲裁完成,准许A通道请求。【2】四通道输入请求,ABCD。破解后为:4‘b1110,此时B通道优先级最高。仲裁完成,准许B通道请求。此外,为了仲裁A通道,需要对输入的请求进行拼接操作,实现向高位借位的过程。
2023-11-17 16:12:56 674
原创 ZYNQ PS端的Cache问题
CacheFlush把Cache里的数据清空,将Cache内容推到DDR中;而Cache Invalidate表示当场宣布Cache内容无效,需要从DDR中重新加载数据,即把数据从DDR中拉到Cache中。可以禁用掉0x1F00 0000区域的Cache,以上是让CPU将直接访问DDR内存,读写都是直接的。这样显然会降低CPU性能,但简化了数据传输操作,属于极端的方法。这个操作在双核读取同一片区域来通信的操作中常用。以上是相对柔和的方法,使用。
2023-11-13 13:02:50 1721
原创 帧同步的思想与异步FIFO复位
这个过程中的复位信号可能需要拓展,这是因为异步FIFO的复位可能需要多个周期的复位使能,否则会带来BUG,这一点请参考UG057。图像从外部传输进来的时候,会产生若干延迟,可能会出现各种各样的问题(断帧等),此时可以通过VS信号清空FIFO进行复位。
2023-11-11 20:54:49 419 2
原创 MIPI配置的OV5640的使用
———逆转LLP:Unpacked 处理。此后写入Wfifo并且存入DDR3。————Byte转Pixel处理。————Lane同步处理处理。N Lane 差分串行输入。————字节对齐处理。
2023-11-10 20:37:00 574
原创 OV5640 自用资料
基本 CCI 消息由 START 条件、带读/写位的从机地址、从机确认、指向从机设备内部寄存器的子地址(索引)、来自从机的确认信号、来自主机的写操作数据字节组成,来自从机的确认/否定确认和停止条件。在读操作中,数据字节来自从机,应答/否定应答来自主机。有关串行控制端口的详细用法,请参阅 OmniVision Technologies 串行摄像机控制总线 (SCCB) 规范。CCI 支持 8 位索引和 8 位数据或 16 位索引和 8 位数据。组保持起始地址范围为0x40~0x7F,单位为16字节。
2023-11-09 19:31:01 2469
原创 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 1192
原创 原语:串并转换器
OFB也是输出端口,但是他有特殊的作用,一个是与ISERDESE2上的OFB引脚相连,作为反馈端口,一个是与ODELAYE2相连,作延迟输出使用,这个端口在正常使用过程一般悬空即可。因此我们可以把它们端口分成三大类,一部分是关于三态控制,一部分是关于时钟复位信号,一部分串并数据转换输入输出。在时钟复位信号中,CLK是串行数据时钟,是高速时钟,CLKDIV是并行数据时钟,是低速时钟。OSERDESE2原语将并行数据转换为串行数据,减少数据传输端口数量的同时也提高了频率,将低速数据转换为高速数据,方便传输。
2023-11-06 21:05:28 926
原创 手写MIPI(一):MIPI-CSI-2 RAW10笔记
虚拟通道标识符的目的是为数据流中交错的不同数据流提供单独的通道。外设中的虚拟通道标识符应该是可编程的,以允许主机处理器控制数据流的解复用方式。规范的这一部分记录了传输介质的特性、信令的电气参数以及时钟和数据通道之间的定时关系。低级协议 (LLP) 包括为 SoT(传输开始)和 EoT(传输结束)事件之间传输的串行数据建立位级和字节级同步以及向下一层传输数据的方法。前两类表示短包数据类型。32 位数据包标头 (PH)、具有可变数量的 8 位数据字的应用程序特定数据有效负载以及 16 位数据包页脚 (PF)。
2023-11-06 19:37:23 4100
原创 XIlinx提供的DDR3 IP与 UG586
DDR系统需要关注的三样东西:控制器、PHY、SDRAM颗粒,但这是实现一个DDR3 IP所需要的,如果只希望调用IP的话,则只需要调用IP即可,目前时间紧急,我先学一学如何使用IP,解决卡脖子的问题,自研日后再说。使用的DDR3器件:MT41J128M16JT-093K。
2023-10-22 22:38:17 1868
原创 芯片手册自用
UG586 MIG:Zynq-7000 SoC 和 7 系列器件内存接口解决方案。UG585 ZYNQ BOOK:Zynq 7000 SoC 技术参考手册。DS182:Kintex-7 FPGA 电气特性。
2023-10-22 16:23:32 469
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人