自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(724)
  • 收藏
  • 关注

原创 python装饰器设计一

def innner(*args,**kwargs):##这里必须有一个变量a用于接收参数,否则就会报错。ret = function(*args,**kwargs) #这里也需要一个变量a接收参数。@outer #等价于send_wechat=outer(send_wechat)2.装饰器的写法是嵌套函数,外层实时包裹,并返回内层,其中内层的内容才是核心。ret = send_wechat("啊啊","您好")print("微信",to,body)print("准备发送")print("发送完成")

2026-02-24 22:23:59 5

原创 指针注册方式实现回调函数-c语言使用回调函数实现封装和多态

这种方式实现了c语言的多态。面向对象的多态的实现原理是一样的。指针注册方式实现回调函数-c语言使用回调函数实现封装和多态。//执行回调函数:接受一个回调函数参数。二、使用指针注册方式实现回调函数。1.回调函数实现C语言的多态。一、常见回调函数案例。//定义回调函数类型。//定义回调函数类型。

2026-02-03 14:35:19 538

原创 C语言中隐藏结构体的细节-使用struct结构体封装(定义和声明分离)

2.隔离的目的是用于结构体内部内容对外不可见,你可以用,但是里面的细节不告知你,做到封装的作用。1.在c语言接口和封装时候,结构体的定义和声明进行隔离。1.example.h文件。2.example.c文件。3.main.c文件。

2026-02-02 14:14:47 63

原创 图像算法优化常用方式-vivado hls设计

由于乒乓buffer既需要读,又需要写,所以工具容易形成伪依赖关系,这个时候需要使用去依赖关系来提高设计性能。由于使用乒乓buffer,就会造成写入和读出之间晚一行数据,那么这个时候height+1作为行结束索引。3.经常会用到将height高度加2的操作,比如图像要在第一行前加入包头信息,在最后一行要加入包尾信息。经常会使用两个line_buffer来组合成乒乓buffer来设计。2.经常会用到将height高度加1的操作,比如乒乓操作。对于灰度图像或者二值图像,一般使用双层循环。

2026-02-01 18:23:09 386

原创 Stable数组的使用

如无 stable 编译指示并假定 A 由 proc2 读取(因为 proc2 当前绕过任务),将出现性能损失。设计是正确无误的,确实能够移去掉,才去做stable修饰,否则不要使用stable修饰数组。如果使用stable修饰数组,那么无需要这个等待同步,proc1不需要等待proc2;2.stable修饰数组的目的,是用于移除对应的同步,但是移除同步之前,用户需要确保。上述代码如果不使用stable修饰数组,那么proc2准备好,才能启动Proc1;如果你不满足这个要求,不要使用stable数组。

2026-02-01 15:51:57 172

原创 ctrl_logic + axis架构设计思路

一、ap_memory + axilite + axi_stream架构。

2026-01-31 20:18:50 362

原创 python模块和包

不要无限制调用函数,需要在适当的时候return结束。3.面向过程在于分析问题处理的步骤和执行过程。2.面向过程编程是函数式编程的直观实现方式。1.以函数为主,进行项目开发的处理过程。1.通过函数的名称调用。四、递归函数的无限调用。2.函数之间相互调用。

2026-01-31 12:59:39 149

原创 python高阶函数

3.lambda表达式是一种特殊的表达式语法,用于简单函数的实现。多个开发人员可能在同一个文件中拥有自己的开发功能代码。2.匿名函数是通过lambda表达式来体现的。需求:开发应用软件的时候,功能点比较多,导致。匿名函数 & lambda表达式。1.目前总结出来有23种设计模式。1.匿名函数就是没有名称的函数。2.python设计模式。四、闭包----装饰器。

2026-01-31 12:19:57 126

原创 axilite对array数组之优化-vivado hls设计应用

使用#pragma HLS ARRAY_PARTITION variable=param_cfg complete dim=1后 ap_uint<32> param_cfg[128]将被全部打散,编程了register寄存器了,而不是block ram了,如果不使用这条指令,那么就成了block ram了。这个设计者一定要注意!3.ap_memory 接口可作为单端口接口或双端口接口来实现。1.当使用array数组,指定为axilite的时候,array是寄存器,不能够指定为bram,这个需要注意。

2026-01-29 15:58:44 662

原创 数组array和axilite配合使用

1.当使用array数组,指定为axilite的时候,array是寄存器,不能够指定为bram,这个需要注意。int coefficients[8], // 可配置的系数数组,通过AXI-Lite接口传入。ap_uint<1> load_coeff // 控制信号:为1时,从总线加载新系数。// 由于internal_coeffs已被完全分区,这个循环可以被完全展开并流水化,// 4. 配置逻辑:当load_coeff为真时,将总线数据载入内部寄存器。// 实现每个时钟周期完成一次完整的点积运算。

2026-01-29 12:05:29 1100

原创 pythn中什么是命名空间?什么是作用域?他们之间有什么区别和联系?

内部作用域---》嵌套作用域----》全局作用域----》内建作用域。和作用域的嵌套关系有关,优先查询内部,然后嵌套,然后全局,然后内建。全局变量:声明在全局命名空间中,作用域在当前整个文件范围的变量。和命名空间的加载顺序是一致的,优先加载内部-》全局---》局部。内建命名空间---》全局命名空间-----》局部命名空间。局部变量:声明在局部命名空间之中,作用域在当前函数范围。出现函数后,将变量的声明位置进行区分:函数外部或者。变量:程序中临时存储数据的容器。3.变量的加载和查询顺序。

2026-01-27 21:05:27 157

原创 c语言中如何避免.h文件的重复包含

MYHEADER_H 是一个唯一的标识符,通常是文件名的大写形式加上一个前缀,以确保唯一性。那么上述c.pp是不是两次包含了a.h,这在设计中会出现什么问题?上面没有定义宏,而是使用了一条编译指令,告诉工具,本头文件只会被编译一次。通过定义一个宏来控制头文件的包含,在头文件的开始部分定义一个宏,二、c语言中,如何避免头文件.h文件被重复包含。3.有一个c.cpp包含c.h和b.h。1.有一个a.h头文件被b.h包含。2.有一个a.h头文件被c.h包含。下面是被包含的头文件.h的写法。

2026-01-27 17:16:39 453

原创 union_type using

/ 错误:2×8=16位,不匹配!// 3×4=12位,正确匹配。1.vivado hls中union联合体和标准的c/c++联合体的union使用规则类似。4.在 HLS 中使用联合体时,需要注意数据类型的位宽和对齐,因为这会直接影响生成的硬件。// HLS定点数类型。// 浮点位模式解释为整数。// data.bytes[1], [2], [3] 对应高8位。// 等效于:out_nibble = fu.bits.mid;

2026-01-27 12:55:54 677

原创 python lambda匿名函数

其中lambda是匿名函数关键字,arguments参数表示参数列表,可以是0个或多个参数,但是必须再冒号之前;6.lambda函数是匿名的,它没有函数名称,只能通过赋值给变量或者作为参数传递给其他函数来使用。numbers列表传递给lambda匿名函数的参数x,然后计算的结果返回给squared.3.lambda匿名函数具有任意数量的参数,但是只能有一个expression表达式。5.lambda匿名函数通常用于编写简单的,单行的函数,类似内联函数。2.lambda函数是一种小型的,匿名的,内联的函数。

2026-01-27 10:32:27 463

原创 python函数进阶

2.函数参数的数据类型的内存分析。5.匿名函数和Lambda表达式。1.函数参数的数据类型。3.命名空间和作用域。二、函数参数传递案例。

2026-01-26 21:56:49 241

原创 python之函数

以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型,它仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象。如 fun(a),传递的只是 a 的值,没有影响 a 对象本身。如果在 fun(a) 内部修改 a 的值,则是新生成一个 a 的对象。1.在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

2026-01-26 12:58:20 220

原创 python之with使用

with open("example.txt","r") as file:这条语句等价于。as variable 是可选的,用于将expression表达式结果赋值给变量.__enter__():进入上下文时调用,返回值赋给 as 后的变量。expression 返回一个支持上下文管理协议的对象。__exit__():退出上下文时调用,处理清理工作。三、with语句内部原理。

2026-01-26 09:45:39 252

原创 DDR带宽和容量

一、DDR3二、DDR4。

2026-01-25 18:22:33 214

原创 DDR3带宽计算

根据Part Number 中的“-125”我们就可以找到图中的“1”,根据这里tCK = 1.25ns,就可以算出芯片支持的最大IO时钟频率:1/1.25ns = 800Mhz;‌双通道DDR3-1600‌:带宽 = 1600 × 128 ÷ 8 = ‌25.6 GB/s‌(理论值)理论带宽(GB/s)= ‌有效数据传输速率(MT/s)× 内存总线位宽(bit) ÷ 8。实际可以使用的带宽受到内存控制器的限制,比如xilinx的mig核的效率的限制,2.结合实际应用需求进行评估。一、DDR3带宽计算。

2026-01-25 14:45:20 434

原创 python计划表

第二阶段:前端开发html/css/javascript/jquery/bootstrap/vuejs。服务端开发/后端开发:Flask,Django,Tornado。第一阶段:python基础,Mysql,linux操作系统。第四阶段:数据分析,机器学习,深度学习,人工智能。第三阶段:数据爬虫,数据采集。

2026-01-24 22:12:57 164

原创 python内存分析和内存模型

python中常量区的对象是可以复用的,但是堆内存中的对象是不允许复用的。python认为如果字符串直接是字面量赋值,这样的数据是需要重复使用的,这样的数据一般都是动态变化的,不需要在内存中永久存储,所以运算得到的。程序软件在计算机中运行,需要运算的数据加载到内存中,由CPU从。内存中读取数据,然后进行运算,返回数据结果给内存。CPU中有寄存器,缓存,运算器,运算器负责运算的。S4的设计,是将S1和S2拼接放在堆内存中!变量是最不稳定的,随时改变,所以放在栈内存中。cpu负责从内存中读取数据,进行运算。

2026-01-24 13:38:23 434

原创 Amaranth HDL

2.可读性较高的Verilog代码,支持跨平台综合。1.通过Python生态简化硬件设计。

2026-01-23 09:41:35 256

原创 python之lession7-迭代器和生成器

yield 是一个关键字,用于定义生成器函数,生成器函数是一种特殊的函数,可以在迭代过程中逐步产生值,而不是一次性返回所有结果。案例三:关于StopIteration异常用于标识迭代完成,防止出现无限循环的情况。使用了yield的函数被称为generator生成器。案例二:使用class类创建一个迭代器。

2026-01-22 22:26:15 196

原创 异步FIFO_verilog代码实现

(// write// readlocalparamendendendendendendendendendmodule。

2026-01-22 18:15:52 912

原创 CRC-16/IBM代码设计

uint8_t i;data++;for (i = 0;i < 8;++i)elsereturn crc;

2026-01-22 16:06:56 309

原创 python的内存分区

静态区【static】:主要用于加载存储程序中的一些静态数据、常量数据等等,在PYTHON中的不可变数据类型的数据也会存储在静态常量区内存中。栈内存区【stack】:用于直接分配数据,存取数度较快,数据存储不稳定,适用于小数据块的快速存取,一般在程序中用于存储变量数据。堆内存【heap】:存储数据稳定持久,一般用于存储加载较为重量级的数据,如程序运行过程中的对象都是存在堆内存中的。方法区【data】:主要用于加载程序中的代码数据、二进制数据、方法数据等等程序运行需要的预加载数据。堆大小理论上是非常大的。

2026-01-22 10:29:03 204

原创 python之lession6

在ptyon中,语句的结束和开始是依据对齐来进行的。代码中不能一会儿空格对齐,一会儿Table键对齐,上述 TabError: inconsistent use of tabs and spaces in indentation表示代码对齐方式出现了问题。int类型,float类型,bool类型,str字符串类型。pass语句为空语句,是为了对齐格式。一、python代码的元素。八、pycharm单步调试。**表示的是幂指数的计算。//表示的是整数的除法。三、运算符要注意的是。/表示的是浮点的除法。

2026-01-21 14:37:07 692

原创 python之lession5

1.python程序是由模块组成,一个模块对应python源文件,后缀为.py。3.python程序的构造单元:创建对象,变量赋值,调用函数,控制语句。对象的本质就是一个内存块,拥有特定的值,支持特定类型的相关操作。对象的组成:ID标识,type类型,value值。变量存储的就是对象的地址,变量通过地址引用了对象。其中ID标识通常对应对象在计算机内存中的地址。栈中存储的是对象名/变量和ID/内存地址。在python中,变量被称为对象的引用。变量位于栈内存,对象位于堆内存。栈在内存中是一个连续的空间。

2026-01-20 14:04:29 270

原创 python的变量名&变量&名称空间

2.在内存里面创建了一个字符串'hello'1.在内存里面开辟了一个变量名X的名称空间。3.将字符串的内存地址和变量名X关联。2.变量的值的内存地址放在内存的堆区。1.变量名称放在内存的栈区。四、python的内存管理。二、声明一个变量的过程。

2026-01-20 09:39:04 331

原创 能使用一个算力很大的NPU进行模型训练,训练完成后,将这个模型布局到一个算力很小的NUP上做推理吗?

为什么能这样做,关键在于模型转换和优化。需要说明训练通常在高精度环境进行,但部署前必须为小NPU做专门优化,比如量化、剪枝等操作。还要指出虽然理念相通,但实际中NPU生态碎片化是个挑战,不同厂商的NPU可能需要不同的工具链。用大算力NPU(或更常见的GPU)训练,然后在小算力设备上部署推理,被称为“训练与推理解耦”,是产业界的通用做法。训练是“学习知识”,需要大量数据反复迭代,算力越大,时间越短。首先在大算力平台训练出基准模型,然后通过模型压缩技术减小尺寸,最后用目标NPU的专用工具进行转换和调优。

2026-01-19 15:55:25 117

原创 python之lession4

可以看到Tuple的指向是可以修改的,就是Tuple这个元组的变量名字tuple1,你可以决定tuple1让其指向谁,但是你不能改变其指向内容的修改。从上述代码中可以看出,不能够改变字符串的内容,但是可以改变str这个变量指向的位置。print(a ^ b) # a 和 b 中不同时存在的元素。print(a - b) # a 和 b 的差集。print(a | b) # a 和 b 的并集。print(a & b) # a 和 b 的交集。# a 和 b 的交集。

2026-01-19 15:07:44 162

原创 python之lession3

注意,Tuple元组虽然不能修改,但是如果Tuple包含List,可以修改Tuple内部List中的内容。从上图可以看出,List列表的元素内容是可以修改的,Tuple元组的元素内容是不可以修改的。不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);2.python中,变量就是变量,它没有类型,我们说的类型是变量所指的内存中对象的类型。可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。五、List列表和Tuple元组的差异。

2026-01-19 14:02:07 191

原创 python之lession 2

从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc。user_name = "alice"或者user_name = ‘alice’ #字符串。将某个模块中的全部函数导入,格式为: from somemodule import *from...import...用于将某个模块中导入某个函数。_total = 100 #下划线开头表示内部使用或者私有。MAX_SIZE = 100 #全大写通常表示的是常量。

2026-01-19 13:01:26 294

原创 python之lession 1

在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。4.安装时候python的环境变量设置::如果没有勾选 Add Python3.6 to PATH」,会导致命令行无法识别 python/python3 命令,需手动配置环境变量。1.pip是python的官方包管理工具,用于安装,卸载和升级,以及管理第三方python包。4.所以你想安装其他第三方的包,你需要安装pip工具才行,因为pip是python的管家。

2026-01-19 11:50:42 391

原创 RK3588_NPU

时钟频率(Clock Frequency)频率决定了NPU芯片及其MAC单元每秒运行的周期次数(赫兹,Hz)。厂商在公布TOPS时,使用的是NPU的峰值运行频率(即能达到的最高频率)。目标跟踪的过程本质上是利用一个已经训练好的检测模型(比如YOLOv8),对视频的每一帧进行目标检测,然后通过跟踪算法(如BoT-SORT、ByteTrack)将这些检测框在时间序列上关联起来,形成连续的轨迹。1.训练是AI模型在学习阶段,使用样本,不停调整模型内部的大量。2.推理是AI模型的应用阶段,是使用已经训练号的模型。

2026-01-19 09:52:50 282

原创 数字图像处理基础知识(一)

当delata比较小的时候,高斯曲线就比较陡峭,高斯曲线越窄,那么中间像素权重越大,那么这就有点类似中值滤波了。当delta比较大的时候,高斯曲线越平缓,高斯曲线越宽,那么这个将接近均值滤波的效果,图像就变得平滑了。均值滤波,滤波核的参数都是一样,滤波核叠加到图像区域内像素所占用的权重一样,那么滤波后,图像。中值滤波对椒盐噪声的滤波效果很好,因为椒盐噪声一般是白点或者黑点,白点或者黑点在。就比较平滑,这样,就将图像边缘的地方进行了平滑,边缘就变得模糊了。2.图像像素访问使用三层for循环,高,宽,和通道。

2026-01-18 21:56:43 382

原创 python_and_pycharm安装教程

2.在命令窗口使用python --version来查询python的版本号。1.使用WIN+R键,输入cmd,打开windows的命令窗口。1.可以在环境变量和系统变量中都加入python的安装路径。三、验证python安装是否成功。pip --version来验证。一、python安装。

2026-01-18 10:42:20 232

原创 图像像素的位深对图像质量的影响

即在原本平滑的渐变区域,出现明显的阶梯状跳跃,因为可用的颜色数量不足以平滑过渡。例如,在天空、阴影等平滑渐变区域,8位图像可能显示出色带,而16位或更高位深则可以平滑过渡。3.位宽大的图像抗处理损耗能力比较强,图像在处理过程中(如调整曲线、色彩平衡、锐化等)会损失信息。高位深图像由于有更多的数据,可以承受更多的处理步骤而不出现明显的质量下降。位深越高,能够捕获的动态范围越大。1.图像的像素位深bit_depth是数字图像中一个非常重要的参数,它决定了。1.灰度图像中,位深表示每个像素的灰度级别数。

2026-01-17 22:05:06 240

原创 信号与系统第一课

3.所以三大变换的核心还是傅里叶变换,也就是F变换,当F变换搞清楚了,S变换和Z变换就比较简单了。1.S变换是为了解决F变换来产生的变换。2.Z变换是为了解决S变换来产生的变换。一、信号与系统的课程。二、信号与系统的变换。

2026-01-17 20:34:16 338

原创 图像像素和图像的亚像素

亚像素则是纯粹的计算产物,通过分析相邻像素间的颜色或亮度渐变来反推边界。这种技术能将测量精度提升到物理像素间距的十分之一甚至更高,在需要高精度定位的场景(如工业检测、天文观测、超分辨率成像)中至关重要。3.亚像素精度的实现,并非在传感器上增加了更小的感光单元,而是基于一个关键观察:在成像时,目标的边缘或特征点通常会覆盖多个相邻像素,并导致这些像素的亮度值产生连续的、渐变的过渡。而亚像素,是在像素内部或之间、通过算法“计算”出的更精细的虚拟点,目的是获得超越物理像素极限的精度。二、像素和亚像素的说明。

2026-01-17 19:08:58 122

Bicubic-Interpolation双三次插值算法verilog代码实现

1.图像算法中插值算法 2.包括双线性插值算法 3.包含双三次样条插值算法

2026-01-29

hls高层次综合设计宝藏

hls设计你不会,那是你对底层设计不懂,来不,看下hls蓝宝书,你就会了。

2025-12-20

vesa标准时序和参数

vesa标准时序和参数

2025-11-28

video-stream-scaler设计

1.输入输出接口为stream接口 2.参数可以配置 3.带有源代码和仿真设计。

2025-11-04

bt.656国产芯片资料

bt.656国产芯片资料

2025-08-28

高云FPGA-DVI设计资料

高云FPGA-DVI设计资料

2025-08-27

DVI设计资料V1.0

DVI设计资料

2025-08-27

sdi-aritex-7参考设计demo

sdi-aritex-7参考设计demo

2025-08-26

xilinx flash spi-4byte mode

xilinx flash spi-4byte mode

2025-08-23

MT25QL256型号的Flash芯片datasheet

MT25QL256型号的Flash芯片datasheet

2025-08-18

uart驱动代码demo

uart驱动代码demo

2025-05-19

VESA-DEC视频电视信号时序波形协议资料

VESA-DEC视频电视信号时序波形协议资料

2025-05-15

航空常用通信接口协议ARINC818

航空常用通信接口协议ARINC818

2025-04-26

sdi-tx-rx-demo

1.verilog实现sdi RX; 2.verilog实现sdi tx; 代码经过测试,稍微改改就能用。

2025-03-08

axilite-uart设计verilog代码

1.verilog代码设计; 2.代码都经过验证和商用; 3.在大量FPGA板卡上使用。

2024-10-24

SG-DMA裸机API代码

各种模式SG_DMA数据搬移操作。

2024-10-17

pcie windows info信息工具

1.工具可以用于查看pcie板卡的相关信息; 2.可以看pcie是2.0还是3.0还是4.0还是5.0; 3.可以看pcie的带宽; 4.可以看bus号,或者slot号。

2024-10-16

dma方式进行pcie数据传输

1.VHDL实现sg_dma; 2.VHDL实现pcie大数据传输; 3.完成vivado工程。

2024-10-16

基于VHDL实现axi接口的uart

1.uart实现串口逻辑; 2.uart实现axi接口; 3.仿真; 4.各个模块仿真; 5.工程经过验证,已经确认无误; 6.工程可以直接挂载到axilite总线上。

2024-10-15

亚历山大鉴相器,用于对时钟信号进行鉴相

1.亚历山大鉴相;

2024-09-14

海康相机 + 采集IO控制

1.海康相机和采集卡方案设计手册; 2.IO控制时序; 3.设计说明。

2024-09-11

工业相机CameraLink v2.0协议文档

1.本协议为最新的cameralink协议文档; 2.协议详细接收了camera link协议的接口设计内容; 3.介绍了POCL供电要注意的问题; 4.协议介绍了lite,base,medium,full,full+五种模式配置和开发要点; 5.协议介绍了硬件设计外围电路。

2024-08-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除