从零开始讲DDR(8)——AXI 接口MIG 使用(1)
一、前言
在之前的系列文章中,我们已经讨论过了MIG ip的接口内容,配置方式和modelsim独立仿真相关的内容,因此,本文对于之前已经讨论过的相关内容只做简单描述,着重介绍AXI 接口MIG使用上与普通ui接口的不同之处。感兴趣的读者可以自行阅读之前的相关系列文章。
二、MIG配置
在配置上,我们选择AXI4 Interface。
在AXI接口的选择上选择64bit,写优先模式。然后就是通过打开xilinx提供的example project,并导出modelsim独立仿真所需要的相关文件,构建自己的独立仿真工程。
三、AXI 接口MIG仿真文件解析
从example project导出的仿真文件中,我们可以看到如下的一系列测试平台列表
3.1 sim_tb_top.sv
3.1.1 注释说明
根据官方给出的注释说明,我们可以看到这部分的内容主要的功能是:(1)整个测试平台的顶层模块(2)例化了内存模型(3)生成了时钟和复位逻辑。
3.1.2 代码解析
sim_tb_top.sv中首先完成了一些必要信号的定义,然后就是进行了复位信号和时钟信号的产生,接下来就是例化了example_top模块,再之后就是例化的内存模型。这里我们并不需要关心内存模型是怎么实现的,我们只需要理解在sim_tb_top中核心功能就是例化了example_top模块。
而如果我们希望仿真我们自己独立的代码逻辑,有2种可行的方式:(1)把自己的逻辑替换example_top模块(2)注释掉example_top模块,把相关的数据线从内部逻辑转换成input/output/inout的形式,形成对外的接口,这样我们就可以把整个sim_tb_top模块当做一个例化了内存模型,能自主进行复位和时钟产生的DDR测试模型,这样把我们自己的代码逻辑接到此文件,就可以进行独立的DDR模型仿真了。
3.2 example_top
在编写我们自己独立的DDR读写逻辑之前,学习一下官方给出的示例工程还是非常必要的,我们知道在sim_tb_top中主要的功能是例化了example_top模块,因此,我们接下来来学习example_top模块。
3.2.1 注释说明
从注释中我们可以发现, example_top模块的主要功能是作为一个测试的顶层文件,允许用户自定义他们的设计。主要例化了DDR MIG(就是我们生成的IP)和一个可综合测试平台,用于建模用户的后端逻辑和传输不同的流量模式。
3.2.2 代码解析
从代码角度看,首先还是一些必要参数和信号定义,然后就是实例化了一个DDR MIG的ip模型,接下来例化了一个ddr4_v2_2_8_axi_tg_top模块。tg就是Traffic Generator的缩写。
首先可以看到的是对于 c0_init_calib_complete 信号的一个寄存,这里的主要目的是为了在c0_init_calib_complete信号拉高后,生成一个boot_mode_start的pulse信号。简单推测就是在c0_init_calib_complete拉高后,开始进行boot mode的流量测试。
接下来就是对于ddr4_v2_2_8_axi_tg_top的例化,ddr4_v2_2_8_axi_tg_top从接口上来看,主要包含3个部分:(1)AXI tg Input control signals (2)AXI MIG接口(3)Axi tg Error status signals。AXI MIG接口相对简单,就是用来和MIG进行连接的interface。Axi tg Error status signals看起来是和debug相关的,我们后面有需要的时候再详细展开,AXI tg Input control signal这里我们稍微关注一下:
从信号的名称来看,大概指的是这个 Traffic Generator 支持的3种模式,分别是boot,custom和prbs。这里的执行逻辑是 custom 模式暂时没有使用,首先在c0_init_calib_complete 拉高后进行boot模式,然后,在boot_mode_done之后,boot_mode_done被接到了prbs_mode_start接口上,意味着在完成boot模式后,执行prbs模式。
3.3 ddr4_v2_2_8_axi_tg_top
接下来我们来重点关注ddr4_v2_2_8_axi_tg_top模块
3.3.1 注释说明
这个模块实例化了boot/prbs/custom-mode_gen模块。 根据用户输入,这些模式中的任何一个都可以处于运行状态,运行模式将驱动axi_opcode_gen模块的输入,该模块为AXI 从接口测试生成符合AXI4协议的流量。
- *_mode_start->模式启动
- *_mode_stop->模式停止
- *_mode_done->为高表示用户停止模式或模式完成其表中的所有指令,可以通过断言任*_mode_start来清除
简单判断就是提供了3种不同的模式,每种模式有各自的一组控制信号start,stop和done
3.3.2 代码解析
首先还是进行一系列的参数和信号定义,然后我们关注下图中的代码逻辑,这里设置了running信号,用来表示当时正在执行的时什么模式。
接下来,以running信号为依据,将正在运行的模式的相关控制信号,接到axi_opcode_gen的信号组上。
然后就是一组模块的实例化,分别例化了boot_mode_gen,prbs_mode_gen,custom_mode_gen和axi_opcode_gen。功能分析起来也并不复杂,首先用户通过start,stop和done控制运行的模式(同一时间只能运行一种模式),然后boot_mode_gen,prbs_mode_gen,custom_mode_gen是各自模式的激励生成器,会生成对应模式的测试激励,然后根据running信号,选择对应的激励驱动到axi_opcode_gen的输入端接口,axi_opcode_gen会将激励转换成符合axi4协议规范的信号,驱动到MIG的AXI4从接口上。
梳理清楚了核心逻辑,我们还需要关注一下最后的一部分自动化测试逻辑。
首先是watch_dog ,它的功能是检测AXI总线是否卡死——如果超过C_TG_WATCH_DOG_MAX_CNT
个时钟周期没有读写活动,触发watch_dog_hang
信号,终止仿真并报错($finish
)。
localparam C_TG_WATCH_DOG_MAX_CNT = 16'hFFFF;
reg [15:0] watch_dog_cnt;
wire watch_dog_enable;
reg watch_dog_rst;
wire watch_dog_hang;assign watch_dog_enable = 1'b1; // 看门狗常启// 任何AXI读写活动都会复位计数器
always@(posedge clk) beginwatch_dog_rst <= #TCQ ((axi_awready && axi_awvalid) || // 写地址通道活动(axi_wready && axi_wvalid) || // 写数据通道活动(axi_bready && axi_bvalid) || // 写响应通道活动(axi_arready && axi_arvalid) || // 读地址通道活动(axi_rready && axi_rvalid)); // 读数据通道活动
end// 看门狗计数逻辑
always@(posedge clk) beginif (tg_rst | watch_dog_rst) begin // 全局复位或AXI活动时清零watch_dog_cnt <= #TCQ 'h0;endelse if (watch_dog_enable && ~watch_dog_hang && (vio_axi_tg_boot_mode_running || // 在TG运行模式下递增计数vio_axi_tg_custom_mode_running || vio_axi_tg_prbs_mode_running)) beginwatch_dog_cnt <= #TCQ watch_dog_cnt + 'h1;end
end
assign watch_dog_hang = (watch_dog_cnt == C_TG_WATCH_DOG_MAX_CNT); // 超时标志
然后是错误状态记录与VIO调试接口,它的作用是记录首次发生的数据不匹配错误,并通过VIO接口输出详细的错误上下文(地址、ID、数据差异等),方便硬件调试。类似地处理写响应错误(vio_axi_tg_write_resp_error
)和读响应错误(vio_axi_tg_read_resp_error
)。
// 同步错误状态到VIO(Virtual Input/Output)可观察信号
always @(posedge clk) beginif (tg_rst) begin // 全局复位时清零vio_axi_tg_mismatch_error <= #TCQ 0; // 数据不匹配错误vio_axi_tg_expected_bits <= #TCQ 0; // 预期数据值vio_axi_tg_actual_bits <= #TCQ 0; // 实际收到的数据值vio_axi_tg_error_bits <= #TCQ 0; // 出错的数据位掩码vio_axi_tg_error_status_id <= #TCQ 0; // 错误交易IDvio_axi_tg_error_status_addr <= #TCQ 0; // 错误地址vio_axi_tg_error_status_len <= #TCQ 0; // 错误交易长度vio_axi_tg_error_status_size <= #TCQ 0; // 错误数据大小(字节)vio_axi_tg_error_status_burst <= #TCQ 0; // 错误突发类型endelse if(axi_tg_mismatch_error && ~vio_axi_tg_mismatch_error) begin// 捕获第一次出现的错误(Sticky Error)vio_axi_tg_mismatch_error <= #TCQ 1;vio_axi_tg_expected_bits <= #TCQ axi_tg_expected_bits;vio_axi_tg_actual_bits <= #TCQ axi_tg_actual_bits;// ...其他信号赋值省略...end
end
接下来是仿真调试输出,用来在仿真中实时报告错误,并在测试完成后统计成功率。
// 仿真时打印错误信息
always @(posedge clk) beginif(axi_tg_mismatch_error) begin$display("ERROR::数据不匹配");$display("地址='h%h, 长度='d%0d, 数据大小='d%0d, 突发类型='b%2b",...);endelse if(axi_tg_write_resp_error) begin$display("ERROR:: 时间 %t 写响应错误", $time);end// ...读响应错误处理类似...
end// 看门狗超时终止仿真
always @(posedge clk) beginif(watch_dog_hang) begin$display("ERROR:: 看门狗超时,AXI总线无响应");$finish; // 强制结束仿真end
end// 测试结束总结
initial beginwait(prbs_mode_done == 1); // 等待测试模式完成if(mismatch_err_cnt == 0) $display("测试通过");else $display("测试失败,错误次数 = %0d", mismatch_err_cnt);$finish;
end
最后是窄突发(Narrow Burst)断言检查,作用是当DDR控制器不支持窄突发(Narrow Burst)时,强制检查所有AXI传输的awsize/arsize
是否等于全数据宽度(避免配置错误导致数据错位)。
generate
if((C_AXI_NBURST_SUPPORT == 0) && (APP_DATA_WIDTH == C_AXI_DATA_WIDTH)) begin// 检查写请求的突发大小是否符合限制property narrow_burst_disabled_check_size_for_writes;@(posedge clk) disable iff (tg_rst) (axi_awready && axi_awvalid) |-> (axi_awsize == C_WSTRB_WIDTH_LOG2);endpropertyassert property(narrow_burst_disabled) else $error("错误:控制器不支持窄突发时发送了不匹配的AXI写请求大小(h%0h)",axi_awsize);// 读请求也有类似检查
end
endgenerate
四、小结
至此,我们已经简单拆解了MIG AXI接口中测试文件的整体框架,首先在sim_tb_top.sv文件中例化了DDR模型和example_top。在example_top中,又例化了MIG IP和一个流量产生器ddr4_v2_2_8_axi_tg_top。在ddr4_v2_2_8_axi_tg_top中的主要功能是分别例化了boot_mode_gen,prbs_mode_gen,custom_mode_gen和axi_opcode_gen。用户通过start,stop和done控制运行的模式(同一时间只能运行一种模式),boot_mode_gen,prbs_mode_gen,custom_mode_gen是各自模式的激励生成器,会生成对应模式的测试激励,然后根据running信号,选择对应的激励驱动到axi_opcode_gen的输入端接口,axi_opcode_gen会将激励转换成符合axi4协议规范的信号,驱动到MIG的AXI4从接口上。在后面的文章中,我们将继续展开介绍boot_mode_gen,prbs_mode_gen,custom_mode_gen和axi_opcode_gen的原理。
相关文章:
从零开始讲DDR(8)——AXI 接口MIG 使用(1)
一、前言 在之前的系列文章中,我们已经讨论过了MIG ip的接口内容,配置方式和modelsim独立仿真相关的内容,因此,本文对于之前已经讨论过的相关内容只做简单描述,着重介绍AXI 接口MIG使用上与普通ui接口的不同之处。感兴…...
字符和编码(python)
位数:英文字符使用 1 个字节表示,中文字符通常使用 3 个字节。示例:汉字 “汉” 的 UTF-8 编码是 \xE6\xB1\x89。优点:兼容 ASCII,广泛用于网络传输和文件存储。 Python 中的字符串类型 在 Python 中,字…...
【STM32】定时器输入捕获
STM32 定时器输入捕获功能笔记 一、什么是输入捕获(Input Capture) 输入捕获是利用定时器的输入通道,在检测到信号电平变化(如上升沿或下降沿)时,立即将当前计数器的值捕获并保存到捕获寄存器(…...
spring-ai集成langfuse
1、pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.…...
SALOME源码分析: ParaVis
本文分析SALOME中ParaVis模块。 注1:限于研究水平,分析难免不当,欢迎批评指正。注2:文章内容会不定期更新。 一、核心组件 二、关键流程 三、FAQs 网络资料 SALOME Scientific visualisationPARAVIS Module - Architecture …...
Ubuntu 安装 MySQL8
在 Ubuntu 下安装 MySQL 服务,推荐使用 apt install 官方的 APT 仓库安装方式,这种方式最安全、最稳定、能自动处理依赖关系,也支持后续升级。不推荐在官网手动下载 .deb 包的方式。 配置 Ubuntu 服务器 1. 确认 Ubuntu 系统版本 使用如下命…...
MATLAB图像加密案例
下面是一个使用 MATLAB 编写的简单图像块置乱加密/解密程序,主要利用了函数来组织代码。 这个程序通过将图像分割成小块,然后根据一个密钥(用于随机数生成器种子)打乱这些块的顺序来实现加密。解密过程则使用相同的密钥恢复原始块顺序。 核心思想: 分块: 将图像划分为 …...
同构字符串(简单)
新建两个哈希表,构建s到t中的字母的映射以及t到s中的字母的映射。 class Solution {public boolean isIsomorphic(String s, String t) {Map<Character,Character> s2tnew HashMap<Character,Character>();Map<Character,Character> t2snew Hash…...
红米Note9 4G版拆开后盖操作细节
先把sim卡槽整个拔出 然后如下图做试,4个箭头的位置塞塑料片或者指甲插入,弄开,然后从图中右侧抠开(左侧不行,有排线连着后面手机主板) 如果不按照这种办法,会把后盖很多地方抠烂...
Qt通过QXlsx库文件写入到excl文件,读取excl文件
第一:下载QXlsx库文件 https://download.csdn.net/download/qq_32663053/90739425 第二:在Qt项目中引入QXlsx库,需要把QXlsx库文件放在项目文件夹下 第三:将tableview中的数据存入到excl文件 代码: void MainWindow…...
ESP32 在Platform Arduino平台驱动外部PSAM,进行内存管理
一,基本介绍 本文中主要介绍ESP32、ESP32S3系列单片机,基于Vscode Platform Arduino和Arduino框架下如何使用外部PSAM,以及必要的API调用函数进行内存分配和管理。 使用前提是开发板有外部PSRAM。 二,平台配置 2.1 Arduino平台 …...
【AI论文】WebThinker:赋予大型推理模型深度研究能力
摘要:大型推理模型(LRMs),如OpenAI-o1和DeepSeek-R1,展示了令人印象深刻的长期推理能力。 然而,他们对静态内部知识的依赖限制了他们在复杂的知识密集型任务上的表现,并阻碍了他们生成需要综合各…...
Python爬虫基础总结
Python爬虫基础总结 一、爬虫概述 1.1 什么是爬虫 网络爬虫(Web Crawler)是一种自动浏览万维网的程序或脚本,它按照一定的规则,自动抓取互联网上的信息并存储到本地数据库中。 1.2 爬虫工作流程 URL管理器࿱…...
如何构建跨平台可复用的业务逻辑层(Web、App、小程序)
从传统的Web应用到移动端的App,再到近年来快速崛起的小程序,用户的触点变得异常分散且多样化。这种多端并存的现状一方面为企业提供了更广阔的市场机会,另一方面也对开发团队提出了更高的要求:如何在不同平台间实现高效开发、降低…...
本地大模型编程实战(32)用websocket显示大模型的流式输出
在与 LLM(大语言模型) 对话时,如果每次都等 LLM 处理完毕再返回给客户端,会显得比较卡顿,不友好。如何能够像主流的AI平台那样:可以一点一点吐出字符呢? 本文将模仿后端流式输出文字,前端一块一块的显示文字…...
MySQL数据库上篇
#作者:允砸儿 #日期:乙巳青蛇年 四月初五 笔者好久没有更新。今天来写一下MySQL数据库的内容还是老样子分为上中下三篇来写,话不多说咱们直接进入正题。 什么是数据库 数据库是统一管理的、长期储存在计算机内非仍、有组织的相关数据集合…...
Webug4.0靶场通关笔记13- 第22关越权修改密码
目录 第22关 越权修改密码 1.打开靶场 2.源码分析 3.越权修改密码 (1)获取渗透账号 (2)越权修改aaaaa账号的密码 (3)修改aaaaa用户密码渗透成功 (4)水平越权修改mooyuan账号…...
Python 基于 lstm,cnn 算法的网络舆情可视化系统
大家好,我是Python徐师兄,一个有着7年大厂经验的程序员,也是一名热衷于分享干货的技术爱好者。平时我在 CSDN、掘金、华为云、阿里云和 InfoQ 等平台分享我的心得体会。 🍅文末获取源码联系🍅 2025年最全的计算机软件毕…...
【免费】2007-2021年上市公司对外投资数据
2007-2021年上市公司对外投资数据 1、时间:2007-2021年 2、指标:股票代码、统计截止日期、货币编码、货币类型、投资事件类型编码、投资事件类型、报告期末投资金额总计、占报告期对外投资总额的比例(%) 3、范围:上市公司 4、来源&#x…...
每天学一个 Linux 命令(33):uniq
每天学一个 Linux 命令(33):uniq 命令简介 uniq 是 Linux 系统中一个非常实用的文本处理命令,全称为 “unique”。它主要用于从已排序的文本文件中检测、过滤或统计重复的行。该命令通常与 sort 命令配合使用,是 Shell 脚本编程和日常文本处理中的常用工具之一。 命令语…...
WebRtc11:SDP详解
SDP规范 会话层(全局)媒体层(局部) 会话层 会话的名称和目的会话的存活时间会话中包含多个媒体信息 SDP媒体信息 媒体格式传输协议传输IP和端口媒体负载类型 SDP格式 由多个< type > < value > 组成一个会话级…...
51单片机驱动 矩阵键盘
连接方式为8-1顺序连接P1端口P10-P17,代码返回键值 0-15. // 矩阵键盘扫描 uchar key_scan(void) {u8 key_value 255;u8 row, col;// 设置P1.0-P1.3为输出,P1.4-P1.7为输入P1 0xF0; // 1111 0000if((P1 & 0xF0) ! 0xF0) { // 有按键按下delay_m…...
解决The‘InnoDB’feature is disabled; you need MySQL built with ‘InnoDB’ to have it
出现如下语句:The ‘InnoDB feature is disabled; you need MySQL built with ‘InnoDB to have it working; 是mysql配置文件禁掉了这个选项! 关闭mysql数据库 在mysql的安装目录中找到my.ini文件 找到skip-innodb,在前面加上#号…...
大模型压缩技术详解(2025最新进展)
在2025年的AI技术格局中,像DeepSeek这样的顶尖模型开源已成为现实。那是否存在一种可行路径,让企业能够使用专注于自身领域的强力AI模型,同时大幅降低部署成本,仅需一张普通的4090显卡?本文将深入探讨两种主流的模型压…...
第 5 篇:红黑树:工程实践中的平衡大师
上一篇我们探讨了为何有序表需要“平衡”机制来保证 O(log N) 的稳定性能。现在,我们要认识一位在实际工程中应用最广泛、久经考验的“平衡大师”——红黑树 (Red-Black Tree)。 如果你用过 Java 的 TreeMap 或 TreeSet,或者 C STL 中的 map 或 s…...
spring-- 事务失效原因及多线程事务失效解决方案
事务失效原因 类的自调用:直接调用本类的方法,没有通过代理对象来调用方法,代理对象内部的事务拦截器不会拦截到这次行为。则不可能开启事务 使用私有方法:因为spring的事务管理是基于AOP实现的,AOP代理无法拦截目标对…...
MLPerf基准测试工具链定制开发指南:构建领域特异性评估指标的实践方法
引言:基准测试的领域适配困局 MLPerf作为机器学习性能评估的"黄金标准",其通用基准集在实际科研中常面临领域适配鸿沟:医疗影像任务的Dice系数缺失、NLP场景的困惑度指标偏差等问题普遍存在。本文通过逆向工程MLPerf v3.1工具…...
深度理解linux系统—— 进程切换和调度
前言: 了解了进程的状态和进程的优先级,我们现在来看进程是如何被CPU调度执行的。 在单CPU的系统在,程序是并发执行的;也就是说在一段时间呢,进程是轮番执行的; 这也是说一个进程在运行时不会一直占用CPU直…...
【凑修电脑的小记录】vscode打不开
想把vscode的数据和环境从c盘移到d盘 大概操作和这篇里差不多 修改『Visual Studio Code(VS Code)』插件默认安装路径的方法 - 且行且思 - 博客园 在原地址保留了个指向新地址的链接文件。 重新安装vscode后双击 管理员身份运行均无法打开࿰…...
2025五一数学建模竞赛A题完整分析论文(共45页)(含模型、可运行代码、数据)
2025年五一数学建模竞赛A题完整分析论文 摘 要 一、问题分析 二、问题重述 三、模型假设 四、符号定义 五、 模型建立与求解 5.1问题1 5.1.1问题1思路分析 5.1.2问题1模型建立 5.1.3问题1参考代码 5.1.4问题1求解结果 5.2问题2 5.2.1问题2思路分析 …...
从0搭建Transformer
0. 架构总览: 1. 位置编码模块: import torch import torch.nn as nn import mathclass PositonalEncoding(nn.Module):def __init__ (self, d_model, dropout, max_len5000):super(PositionalEncoding, self).__init__()self.dropout nn.Dropout(pdrop…...
生物化学笔记:神经生物学概论07 躯体感受器 传入方式 自主神经系统
功能各异的躯体感受器 解释张力: 形形色色的传入方式 脑中的“倒立小人” 自主神经系统...
滑动窗口leetcode 209和76
一、leetcode 209. 长度最小的子数组 代码: class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int n nums.size();int left 0;int sum 0;int res 100001;for(int right 0;right <n;right){sum nums[right];while(s…...
FPGA:介绍几款高速ADC及其接口形式
本文介绍了几款采样率至少为500Msps的高速ADC芯片,并详细介绍ADC与FPGA之间的常见接口形式,以及FPGA如何正确读取高速ADC的输出数据。以下内容基于当前的高速ADC技术趋势和常见的工程实践。 一、推荐的高速ADC芯片(采样率≥500Msps࿰…...
未使用连接池或配置不当的性能陷阱与优化实践
目录 前言一、传统连接管理的性能缺陷与风险1. 未使用连接池的致命代价2. 连接池配置不当的典型表现 二、高性能连接池选型与核心参数优化1. HikariCP:零开销连接池的标杆2. Druid:功能完备的国产连接池 三、连接池性能调优的黄金法则1. 科学设定最大连接…...
亚马逊云服务器性能深度优化方案(2025版)
亚马逊云服务器性能深度优化方案(2025版) 一、计算架构全面升级 1. 新一代AI算力引擎 • Trn2 UltraServer实例:搭载64颗第二代Trainium芯片,单节点FP8算力达83.2 PFlops,支持千亿参数大模型训练,训…...
【IPMV】图像处理与机器视觉:Lec9 Laplace Blending 拉普拉斯混合
【IPMV】图像处理与机器视觉 本系列为2025年同济大学自动化专业**图像处理与机器视觉**课程笔记 Lecturer: Rui Fan、Yanchao Dong Lec0 Course Description Lec3 Perspective Transformation Lec7 Image Filtering Lec8 Image Pyramid Lec9 Laplace Blending 持续更新中 …...
【东枫电子】AMD / Xilinx Alveo™ UL3422 加速器
AMD / Xilinx Alveo™ UL3422 加速器 AMD / Xilinx Alveo™ UL3422 加速器提供超低延迟网络和灵活应变的硬件,支持纳秒级交易策略。AMD Virtex™ UltraScale™ VU2P FPGA 为 AMD / Xilinx Alveo UL3422 加速器提供强大的支持。该加速器采用延迟优化的收发器技术&am…...
Linux架构篇、第一章_03安装部署nginx
Linux_基础篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:安装部署nginx 版本号: 1.0,0 作者: 老王要学习 日期: 2025.05.02 适用环境: Centos7 文档说明 本文档聚焦于 CentOS 7 环境下 Nginx 的安装部…...
Semantic Kernel 快速入门
文章目录 Semantic Kernel 快速入门一、什么是 Semantic Kernel?1.1 核心特性 二、安装和配置2.1 安装 .NET SDK2.2 创建新的 .NET 项目2.3 安装 Semantic Kernel 三、快速入门3.1 导入依赖包3.2 添加 AI 服务3.3 添加企业服务3.4 生成内核并检索服务3.5 添加插件创…...
MySQL进阶(一)
一、存储引擎 1. MySQL体系结构 连接层: 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限 服务层: 第二层架构主要完成大多数的核心服务…...
ThreadLocal理解
1.thread是线程,threadLocal是对象? 在 Java 中: Thread 是线程类,其实例代表线程:Thread 类用于创建和管理线程,每个线程都是 Thread 类的一个实例,用于执行具体的任务,例如&…...
PyTorch、Flash-Attn、Transformers与Triton技术全景解析+环境包
PyTorch、Flash-Attn、Transformers与Triton技术全景解析 包好难找 这里是下载链接 添加链接描述 摘要 本文系统性地介绍了深度学习领域的四大关键技术框架:PyTorch、Flash-Attn、Hugging Face Transformers和Triton,分别从核心特性、技术优势、应用场…...
mindyolo填坑
1、按照gitee上的文档跑预测代码,跑不通 更改: 将predict.py复制到跟目录。如果是cpu(本地测试比较常见),那么正确的命令行是: python predict.py --device_targetCPU --config ./configs/yolov7/yolov7.…...
【C++】平衡二叉树(AVL树)迭代版
目录 前言: 一:判断一棵树是否为平衡二叉树 二:明确思路 1.为什么使用平衡二叉树 2.旋转 2.1 左旋 2.2 右旋 3.冲突节点 4.平衡因子 5.双旋 5.1 左右双旋(LR) 5.2 右左双旋(RL) 6.平衡因子的更新 7.冲突节点问题补充 三&…...
双链表详解
一、双向链表介绍 二、实现双向链表 1.定义双向链表的结构 2.双向链表的初始化 3.双向链表的尾插 4.双向链表的头插 5.双向链表的打印 6.双向链表的尾删 7.双向链表的头删 8.查找指定位置的数据 9.在指定位置之后插入数据 10.删除指定位置的数据 11.链表的销毁 三、…...
6.9.单源最短路径问题-BFS算法
一.前言: 问题1: 以上述图片为例,比如从G港到Y城,可以是G港->R城->Y城,也可以是G港->P城->Y城等,有很多条路径都可以实现从G港到Y城,但要从中找出G港到Y城距离最短的那一条路径&am…...
react js 查看字体效果
起因, 目的: 想查看某个字体,对中英文的支持情况。 效果图: 完整项目见这里, 需要积分下载,不然的话,显得太水了。 过程: AI 对话, 生成代码。我检查运行, 来回修改。写个博客,…...
GZIPInputStream 类详解
GZIPInputStream 类详解 GZIPInputStream 是 Java 中用于解压缩 GZIP 格式数据的流类,属于 java.util.zip 包。它是 InflaterInputStream 的子类,专门处理 GZIP 压缩格式(.gz 文件)。 1. 核心功能 解压 GZIP 格式数据(RFC 1952 标准)自动处理 GZIP 头尾信息(校验和、时…...
数字智慧方案6206丨智慧园区大数据整体解决方案(45页PPT)(文末有下载方式)
资料解读:智慧园区大数据整体解决方案 详细资料请看本解读文章的最后内容。 在数字化快速发展的当下,智慧园区成为推动产业升级和城市发展的关键力量。这份智慧园区大数据整体解决方案,融合前沿技术与创新理念,为园区的高效管理、…...