当前位置: 首页 > news >正文

【FPGA】【DE2-115】DDS信号发生器设计

目录

一、基本概述

1.1 DDS简介

1.2 DDS工作原理

1.2.1 核心组成部分

1.2.2 工作流程

1.2.3 输出频率计算

1.3 常见的RAM、ROM、FIFO等IP核的参数设置和调用过程

1.3.1 RAM IP核的参数设置和调用过程

1.3.2 ROM IP核的参数设置和调用过程

1.3.3 FIFO IP核的参数设置和调用过程

二、波形仿真器的设计与制作

2.1 内容与要求

2.2 具体步骤

2.2.1 相位累加器

2.2.2 波形存储器ROM

2.2.3 顶层电路设计

三、DE2-115设计实现

一、基本概述

1.1 DDS简介

DDS信号发生器即直接数字频率合成(Direct Digital Frequency Synthesis,简称DDS)是一种利用数字技术生成信号的方法。它通过数字信号处理技术,将数字信号转换为模拟信号,从而生成高质量的正弦波、方波、三角波等信号。

1.2 DDS工作原理

1.2.1 核心组成部分

DDS系统主要由以下几个模块构成:

·相位累加器(Phase Accumulator)

· 波形查找表(Waveform Look-Up Table, LUT)

· 数模转换器(DAC)

· 低通滤波器(LPF)

1.2.2 工作流程

(1)相位累加

相位累加器是DDS信号发生器的核心部分,用于生成相位信息。它由一个累加器和一个频率控制字(Frequency Control Word, FCW)组成。每次时钟周期,频率控制字会被加到累加器中,累加器的输出即为当前的相位值。

· 输入:频率控制字(Frequency Tuning Word, FTW),由用户设定。

· 作用:相位累加器在时钟信号(fclkfclk)的驱动下,对FTW进行累加,生成线性递增的相位值(地址)。

· 公式

其中,NN 为相位累加器的位数(通常24~32位),决定频率分辨率。

(2)波形查找

查找表(Lookup Table, LUT)存储了正弦波或其他波形的幅度值。相位累加器的输出作为查找表的地址,查找表根据该地址输出对应的幅度值。查找表通常存储的是一个完整周期的波形数据。波形选择模块用于选择不同的波形,如正弦波、方波、三角波等。通过改变查找表的内容或逻辑控制,可以生成不同的波形。

· 波形存储器(LUT):预存目标波形(如正弦波、方波)的离散采样值。

· 寻址:相位累加器的输出作为地址,从LUT中读取对应的波形幅值数据。

· 分辨率:LUT的深度和位宽影响波形精度。

(3)数模转换(DAC)

DAC将数字幅度值转换为模拟信号。DAC的分辨率(如8位、12位、16位)决定了输出信号的精度和质量。

· 将查找表输出的数字幅值转换为模拟电压信号。

· DAC的转换速度和位数直接影响输出信号的质量(如信噪比、谐波失真)。

(4)低通滤波

· 滤除DAC输出的高频量化噪声和时钟馈通信号。

· 截止频率通常略高于所需信号的最大频率。

1.2.3 输出频率计算

DDS的输出频率由以下公式决定:

· fclkfclk:系统时钟频率(如100 MHz)。

· NN:相位累加器位数(如32位)。

· FTW:频率控制字,由用户编程设置。

比如: 若 fclk=100 MHzfclk=100MHz,N=32N=32,要输出 1 MHz1MHz 正弦波:

1.3 常见的RAM、ROM、FIFO等IP核的参数设置和调用过程

IP软核是预先设计好的、可重复使用的数字电路模块,用于简化复杂系统的设计。它们通常以Verilog HDL或VHDL等硬件描述语言编写,可以在FPGA或ASIC中实现。

1.3.1 RAM IP核的参数设置和调用过程

RAM 是随机存取存储器(Random Access Memory)的简称,是一个易失性存储器。 RAM 工作时可以随时从任何一个指定的地址写入或读出数据,同时我们还能修改其存储的数据,即写入新的数据,这是 ROM 所并不具备的功能。在 FPGA 中这也是其与 ROM 的最大区别。ROM 是只读存储器,而 RAM 是可写可读存储器,在我们 FPGA 中使用这两个存储器主要也是要区分这一点,因为这两个存储器使用的都是我们 FPGA 内部的 RAM 资源,不同的是 ROM 是只用到了 RAM 资源的读数据端口。

单端口RAM参数:

· 数据宽度(Data Width):8/16/32/64位等

· 存储深度(Depth):根据需求设置(如1024, 2048等)

· 操作模式:通常为"Write First"、"Read First"或"No Change"

· 初始化文件:可加载.mif或.hex文件初始化RAM内容

· 寄存器选项:输出是否寄存(增加一个时钟周期延迟但提高时序性能)

双端口RAM参数:

除单端口参数外还需设置:

端口A和端口B的操作模式

是否允许同时读写

冲突解决策略

1.3.2 ROM IP核的参数设置和调用过程

ROM 是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除,且资料不会因为电源关闭而消失。而事 实上在 FPGA 中通过 IP 核生成的 ROM 或 RAM(RAM 将在下一节为大家讲解)调用的都是FPGA 内部的 RAM 资源,掉电内容都会丢失(这也很容易解释,FPGA 芯片内部本来就没有掉电非易失存储器单元)。用 IP 核生成的 ROM 模块只是提前添加了数据文件(.coe 格式)(.mf/.nex格式),在 FPGA 运行时通过数据文件给 ROM 模块初始化,才使得 ROM 模块像个“真正”的掉电非易失存储器;也正是这个原因,ROM 模块的内容必须提前在数据文件中写死,无法在电路中修改。

常见参数设置

· 数据宽度:同RAM

· 存储深度:同RAM

· 初始化文件:必须提供.mif或.hex文件

· 输出寄存器:可选是否寄存输出

1.3.3 FIFO IP核的参数设置和调用过程

FIFO(First In First Out,即先入先出),是一种数据缓冲器,用来实现数据先入先出的读写方式。与 ROM 或 RAM 的按地址读写方式不同,FIFO 的读写遵循“先进先出”的原则,即数据按顺序写入 FIFO,先被写入的数据同样在读取的时候先被读出,所以 FIFO存储器没有地址线。FIFO 有一个写端口和一个读端口外部无需使用者控制地址,使用方便。

FIFO 存储器主要是作为缓存,应用在同步时钟系统和异步时钟系统中,在很多的设计中都会使用,后面实例中如:多比特数据做跨时钟域的转换、前后带宽不同步等都用到了FIFO。FIFO 根据读写时钟是否相同,分为 SCFIFO(同步 FIFO)和 DCFIFO(异步FIFO),SCFIFO 的读写为同一时钟,应用在同步时钟系统中;DCFIFO 的读写时钟不同,应用在异步时钟系统中。

数据的产生模块与数据使用模块不对应时就会使用到FIFO,如两者的时钟频率不同无法在同一时钟下进行传输(多比特数据做跨时钟域的转换) ;两者的数据带宽不同下传输(前后带宽不同步)。

基本参数:

· FIFO实现方式:基于Block RAM或Distributed RAM

· 数据宽度:8/16/32/64位等

· FIFO深度:16/32/64/128/256等

· 满/空标志:设置几乎满/几乎空的阈值

高级参数:

· 读写时钟域:同步或异步FIFO

· 握手信号:可选是否添加数据有效信号

· 复位类型:同步或异步复位

二、波形仿真器的设计与制作

2.1 内容与要求

采用数字频率合成(Direct Digital FrequencySynthesis,简称DDS)设计制作一个波形发生器,仿真后,在DE2-115开发板上实践。要求: 1)利用DDS技术合成正弦波和方波; 2)输出信号的频率范围为10Hz~5MHz,最小频率分辨率小于1kHz; 3)使用嵌入式逻辑分析仪SignalTap II实时测试输出波形的离散数据。

2.2 具体步骤

(1)在Quartus中创建新工程,步骤在之前的博客中有具体说明

2.2.1 相位累加器

(2)编写代码

module addr_cnt(CPi,K,ROMaddr,Address);
​input CPi;
​input [12:0] K;
​output reg [9:0] ROMaddr;
​output reg [16:0] Address;
​always @(posedge CPi) begin
​Address=Address+K;
​ROMaddr=Address[16:7];
​end
​
endmodule

(3)将 addr_cnt 设置为顶层文件

将Project Navigator 设置为 Files ,之后右键addr_cnt.v ,选中 Set as Top-Level Entity

打开生成的.bsf文件如下图所示:

生成并打开.bsf文件

右键addr_cnt.v,在弹出的选项中选择 *Create Symbol Files for Current File,*之后生成的 .bsf 文件会保存在工程目录下,找到对应的文件打开即可

2.2.2 波形存储器ROM

方波模块

代码如下:

module squwave(CPi,RSTn,Address,Qsquare);
​input CPi;
​input RSTn;
​input [16:0] Address;
​output reg [11:0] Qsquare;
​always @(posedge CPi)
​if (!RSTn)Qsquare=12'h000; 
​else begin
​if(Address<=17'h0FFFF)
​Qsquare=12'hFFF;
​else Qsquare=12'h000;
​end
​
endmodule

将该模块设置为顶层文件,并编译生成 .bsf 如下图:

正弦波形存储器

首先编译一个C程序( Dev C++ 或者别的编译器都行),编译之前建议先在对应的Quartus工程目录下新建一个文件夹,将C程序保存在该文件夹内

/myMIF.c/

#include <stdio.h>
​
#include <math.h>
​
#define PI 3.141592
​
#define DEPTH 1024
​
#define WIDTH 12
​
int main(void)
​
{
​int n,temp;
​float v;
​FILE *fp;
​fp=fopen("Sine1024.mif","w+");
​if(NULL==fp)printf("Can not creat file!\r\n");
​else
​{
​printf("File created successfully!\n");
​fprintf(fp,"DEPTH=%d;\n",DEPTH);
​fprintf(fp,"WIDTH=%d;\n",WIDTH);
​fprintf(fp,"ADDRESS_RADIX=HEX;\n");
​fprintf(fp,"DATA_RADIX=HEX;\n");
​fprintf(fp,"CONTENT\n");
​fprintf(fp,"BEGIN\n");
​for(n=0;n<DEPTH;n++)
​{
​v=sin(2*PI*n/DEPTH);
​temp=(int)((v+1)*4095/2);
​fprintf(fp,"%04x : %03x;\n",n,temp);
​}
​fprintf(fp,"END;\n");
​fclose(fp);
​}
​} 

编译运行以上代码,会生成 myMIF.exe文件以及Sine 1024.mif 文件,如下图:

使用Quartus调用LPM_ROM定制正弦波形存储器:点击Tools--->IP Catalog,并在IP Catalog搜索框搜索 ROM ,双击 找到 ROM 1-PORT并双击

在弹出的弹框里面修改命名,如下图所示:

点击OK,会弹出如下界面:

修改以下参数:

取消 ‘q’output port的勾选

点击 Browse..,并选中之前生成好的 Sine1024.mif

之后一直Next,直到 Finish,ROM配置完成

锁相环倍频电路

在IP Catalog 搜索栏中搜索 ALTPLL,选中 ALTPLL 并双击

修改如图所示的参数

之后一直 Next 默认选项,直到出现以下界面,修改Clock multi...的参数

之后也是一直默认选项,直到 Finish

2.2.3 顶层电路设计

代码如下:

module DDS_top (CLOCK_50,RSTn,WaveSel,K,
​
WaveValue,LEDG,CLOCK_100);
​input CLOCK_50;
​input RSTn;
​input [1:0] WaveSel;
​​input [12:0] K;
​output reg [11:0] WaveValue;
​wire [9:0] ROMaddr/* synthesis keep */;
​wire [16:0] Address;
​wire [11:0] Qsine,Qsquare;
​output [0:0] LEDG;
​output CLOCK_100;
​wire CPi=CLOCK_100;
​myALTPLL PLL100M_CP_inst(
​.inclk0(CLOCK_50),
​.c0(CLOCK_100),
​.locked(LEDG[0])
​);
​​addr_cnt U0_instance(CPi,K,ROMaddr,Address);
​​myROM ROM_inst(
​.address(ROMaddr),
​.clock(CPi),
​.q(Qsine)
​);
​squwave U1(CPi,RSTn,Address,Qsquare);
​always @(posedge CPi)
​begin
​case(WaveSel)
​2'b01:WaveValue=Qsine;
​2'b10:WaveValue=Qsquare;
​default:WaveValue=Qsine;
​endcase
​end
​
endmodule

跟之前一样,将该模块设置为顶层文件并进行编译

三、DE2-115设计实现

配置引脚

可以直接导入DE2_115_pin_assignments.csv文件进行配置,也可以手动进行配置

module DE2_115_DDS_top(CLOCK_50,KEY,SW,GPIO_0,LEDG);
​input CLOCK_50;
​input [3:3] KEY;
​input [17:0] SW;
​output [12:0] GPIO_0;
​output [0:0] LEDG;
​wire CLOCK_100;
​assign GPIO_0[12]=CLOCK_100;
​wire RSTn=KEY[3];
​wire [1:0] WaveSel=SW[17:16];
​wire [12:0] K=SW[12:0];
​wire [11:0] WaveValue;
​assign GPIO_0[11:0]=WaveValue;
​DDS_top DE2(CLOCK_50,RSTn,WaveSel,K,WaveValue,LEDG,CLOCK_100);
​
endmodule

引脚配置完成要再次编译运行

接下来就可以使用SignalTap ll实时测试输出波形的离散数据,选择Tools-->SignalTap ll Logic Analyzer

右键 Setup 上方空白处,点击 Add Node... 进行添加

全部确认无误后,保存文件并编译(要连接开发板)

波形图如下:

相关文章:

【FPGA】【DE2-115】DDS信号发生器设计

目录 一、基本概述 1.1 DDS简介 1.2 DDS工作原理 1.2.1 核心组成部分 1.2.2 工作流程 1.2.3 输出频率计算 1.3 常见的RAM、ROM、FIFO等IP核的参数设置和调用过程 1.3.1 RAM IP核的参数设置和调用过程 1.3.2 ROM IP核的参数设置和调用过程 1.3.3 FIFO IP核的参数设置和…...

使用 OpenRewrite 简化 Java 和 SpringBoot 迁移

大家好&#xff0c;这里是架构资源栈&#xff01;点击上方关注&#xff0c;添加“星标”&#xff0c;一起学习大厂前沿架构&#xff01; 移民的挑战 随着 Spring Boot 2.x 等旧版本即将到期且不再获得支持&#xff0c;迁移到较新版本对于安全性、兼容性和性能改进至关重要。但…...

电脑怎么设置锁屏密码 分享详细设置教程

电脑不仅仅是工作的工具&#xff0c;更是存储着大量个人信息和重要数据的私人空间。设置电脑锁屏密码是保护这些信息&#xff0c;免受未经授权访问的基本安全措施之一。那么&#xff0c;电脑怎么锁屏密码呢&#xff1f;下面便为大家介绍在一些不同操作系统中怎么设置电脑锁屏密…...

【Netty篇】Handler Pipeline 详解

目录 一、 Handler & Pipeline——流水线上的“特种部队”与“生产线”1、 ChannelHandler —— 流水线上的“特种兵”&#x1f46e;‍♂️2、 ChannelPipeline —— 生产线上的“接力赛跑”&#x1f3c3;‍♀️&#x1f3c3;‍♂️ 二、 代码实例1、 服务端代码示例2、 客…...

Postman实现接口测试(附项目实战)

Postman实现接口测试&#xff08;附项目实战&#xff09; Postman实现接口测试 掌握如何安装Postman 掌握Postman的基本用法 掌握全局变量与环境变量 掌握Postman断言和关联 掌握如何读取外部文件实现参数化 掌握如何使用Newman生成HTML测试报告 1.Postman介绍和安装 Postman是…...

从零上手GUI Guider学习LVGL——Button

视频教程请关注我b站&#xff1a;同学_好好学习&#xff0c;这里只是做相应的笔记文稿 从零上手GUI Guider学习LVGL——Buttton 前言&#xff1a; 首先我们为什么要学习LVGL设计工具呢&#xff1f; 1 降低开发难度 2 提高开发效率 所以我们需要学习一款合适的设计工具 在b站很少…...

软件工程知识体系全面梳理

一、软件工程概述 1. 软件工程基本概念 定义&#xff1a;应用系统化、规范化、可量化的方法开发、运行和维护软件的学科 目标&#xff1a;提高软件质量、降低开发成本、控制开发周期 三要素&#xff1a;方法、工具、过程 2. 软件生命周期 可行性分析 → 需求分析 → 设计 …...

操作教程|通过DataEase制作MaxKB系统数据大屏

MaxKB&#xff08;Max Knowledge Brain&#xff09;是一款强大易用的企业级AI助手&#xff0c;支持RAG检索增强生成、工作流编排、MCP工具调用能力&#xff0c;目前正在被广泛应用于智能客服、企业内部知识库、学术研究与教育等场景。MaxKB可以帮助用户快速搭建面向不同应用场景…...

关于webpack的知识点

一、什么是webpack?它的核心概念是什么&#xff1f; webpack是现代JavaScript应用程序的打包工具 它的核心概念包括&#xff1a; 入口输出loaderplugin(插件)模式模块依赖图 二、webPack与Grunt\Grulp有什么区别&#xff1f; 首先Grunt/Gulp是任务运行器&#xff0c;用来实现流…...

Linux系统中的 sudo 权限会导致环境变量失效。

标题为什么 sudo 会破坏 配置的环境变量&#xff1f; 权限切换&#xff1a;sudo 以 root 用户 身份执行命令&#xff0c;root 用户的环境变量和当前用户&#xff08;user&#xff09;的环境变量是隔离的。 环境变量丢失&#xff1a;nvm 依赖的 PATH、等环境变量是通过用户 She…...

目标分割模型优化自身参数都是梯度下降算法吗?

在计算机视觉的深度学习任务中&#xff0c;诸如 CNN、FCN、U-Net、DeepLab 系列模型已成为图像分类与图像分割任务的核心架构。它们在网络结构和任务上有所差异&#xff0c;但是否共享同一种优化机制&#xff1f;是否都使用梯度下降&#xff1f;优化过程中又有什么本质区别&…...

前端请求传参与后端匹配的接收方式Content-Type类型

文章目录 一、Content-Type简介二、Content-Type类型三、常⽤类型3.1. application/json&#xff1a;JSON数据格式3.2. application/x-www-form-urlencoded&#xff1a;普通表单格式&#xff08;键值对&#xff09;3.3. multipart/form-data&#xff1a;多部分表单格式&#xf…...

解决:VSCode C++ conan 安装第三方库后 头文件报错

文章目录 1 头文件include路径查找报错参考 1 头文件include路径查找报错 找到conan_toolchain.cmake中 INCLUDE_PATH list(PREPEND CMAKE_INCLUDE_PATH "/Users/hanliqiang/.conan2/p/b/fmte8c4f7a755477/p/include")生成C编译配置 CtrlShiftP 中选择C Edit Confi…...

(leetcode算法题)309. 买卖股票的最佳时机含冷冻期

按照题目要求&#xff0c;研究对象是最后一天结束后获得的最大利润 那么就可以把问题拆分成 第 1 天结束后获得的最大利润&#xff0c; 第 2 天结束后获得的最大利润&#xff0c; 第 i 天结束后获得的最大利润&#xff0c; 由于规则中强调不能同时参与多笔交易&#xff0c…...

win10和win11系统修复工具各类故障解决

点赞关注一下哈&#xff1a; 在使用电脑时可能会遇到一些问题&#xff0c;通过上网查找解决方法费时费力&#xff0c;而有了这个小工具可以很方便的解决问题。有几十种解决方案&#xff0c;值得下载保存哦。 1、使用方法&#xff1a; 解压文件&#xff0c;双击文件夹内的exe文件…...

微硕WSP6949 MOS管在补水仪中的应用与市场分析

微硕WSP6949 MOS管在补水仪中的应用与市场分析 一、引言 补水仪作为一种常见的家用电器&#xff0c;其核心部件之一是驱动电路&#xff0c;而MOS管作为驱动电路中的关键元件&#xff0c;其性能直接影响到补水仪的运行效率和稳定性。微硕半导体推出的WSP6949 MOS管&#xff0c…...

【通过Zadig给鼠标适配器安装驱动后,鼠标动不了,无法恢复的解决办法】

【通过Zadig给鼠标适配器安装驱动后,鼠标动不了,无法恢复的解决办法 问题产生缘由感谢这位大佬提供的解决办法解决办法 问题产生缘由 通过Zadig给鼠标适配器安装USB GAMING MOUSE这个驱动后,鼠标动不了,无法恢复(重启电脑,卸载鼠标驱动再重装也不可以), 不过还好,我用的是笔记…...

基本表单的实现即登录注册页面的实现

1.登录页面&#xff08;opType.value0&#xff09; 2.注册页面&#xff08;opType.value1&#xff09; 3.注意 el-form-item中的prop对应的是rules里面的key值 <el-form-itemlabel"邮箱"prop"email"label-width"100px"> </el-form-i…...

JVM 什么是逃逸分析?它有哪些优化手段?

JVM 逃逸分析 (Escape Analysis) 是一种编译器优化技术&#xff0c;主要由即时编译器 (JIT Compiler) 在运行时进行&#xff0c;用于分析对象的作用域&#xff0c;判断对象是否会逃逸出方法或线程。 什么是逃逸&#xff1f; 在 JVM 的上下文中&#xff0c;“逃逸” 指的是对象…...

Spring AI与通义千问的完美结合:构建智能对话应用

Spring AI是Spring生态系统中的新成员,它为开发人员提供了一套简单而强大的工具,用于集成各种AI大模型。本文将介绍如何使用Spring AI与阿里云通义千问大模型进行集成,构建智能对话应用,帮助你快速掌握AI应用开发的核心技能。 引言 随着人工智能技术的快速发展,越来越多的…...

CST仿真天线流程

基础操作指导 如何建模、设置边界条件、端口激励等。 材料属性设置、网格划分优化。 仿真参数配置&#xff08;频域/时域仿真&#xff09;。 常见仿真案例 天线设计&#xff08;如微带天线、波导天线&#xff09;。 微波器件&#xff08;滤波器、功分器、耦合器&#xff0…...

Vue 组件化开发

引言 在当今的 Web 开发领域&#xff0c;构建一个功能丰富且用户体验良好的博客是许多开发者的目标。Vue.js 作为一款轻量级且高效的 JavaScript 框架&#xff0c;其组件化开发的特性为我们提供了一种优雅的解决方案。通过将博客拆分成多个独立的组件&#xff0c;我们可以提高…...

java + spring boot + mybatis 通过时间段进行查询

前端传来的只有日期内容&#xff0c;如&#xff1a;2025-04-17 需要在日期内容的基础上补充时间部分&#xff0c;代码示例&#xff1a; /*** 日志查询&#xff08;分页查询&#xff09;* param recordLogQueryDTO 查询参数对象* return 日志列表*/Overridepublic PageBean<…...

基于pycatia的CATIA自动化干涉检测系统开发全解析

引言 在智能制造时代&#xff0c;三维数模的干涉检测效率直接影响产品开发周期。本文基于Python的pycatia库&#xff0c;深入解析CATIA自动化干涉检测系统的开发要点与工业实践&#xff0c;结合达索系统最新技术趋势&#xff0c;为工程师提供一套高可靠性的二次开发方案。 一、…...

v-model进阶+ref+nextTick

一、v-model进阶 复习 v-model v-model: 双向数据绑定指令 数据 <-> 视图: 数据和视图相互影响, 因此被称为双向数据绑定指令 1> 数据变了, 视图也会跟着变 (数据驱动视图) 2> 视图变了, 数据也会跟着变 1. v-model 原理 v-model只是一个语法糖, 比较好用, …...

vscode+keil嵌入式软件开发全流程

vscodekeil嵌入式软件开发全流程 1 安装MinGW-w64 &#xff08;1&#xff09; MinGW-w64 是一个用于Windows操作系统的开发工具集&#xff0c;其包含了C语言编译器 GCC&#xff08;GNU Compiler Collection&#xff09;&#xff0c;官网地址&#xff1a;https://www.mingw-w6…...

GitHub 从入门到精通完全指南(2025版)

以下是GitHub 从入门到精通完全指南,整合优质教程及官方文档,涵盖基础操作、协作开发、高级功能及实战技巧,助你快速掌握 GitHub 全流程。 一、GitHub 入门篇 1. 注册与配置 注册 GitHub 账号 访问 GitHub 官网,点击“Sign Up”填写邮箱、用户名、密码完成注册。建议绑定双…...

总结【过往部分项目经历一(计算机图形学方向)】

总结【过往部分项目经历】 1.蜂窝填充算法2.孔洞识别算法3.扫掠轮廓计算4.二维排料算法5.最大内接圆算法 1.蜂窝填充算法 介绍: 主要从二维六角网格基本算法出发&#xff0c;基于自定义数据结构和拓扑关系&#xff0c;从二维到三维进行拓展&#xff0c;六角网格->六棱柱-&g…...

Flask(补充内容)配置SSL 证书 实现 HTTPS 服务

没有加密的http服务&#xff0c;就像在裸泳&#xff0c;钻到水里便将你看个精光。数据在互联网上传输时&#xff0c;如果未经加密&#xff0c;随时可能被抓包软件抓住&#xff0c;里面的cookie、用户名、密码什么的&#xff0c;它会看得一清二楚&#xff0c;所以&#xff0c;只…...

js逆向分享

某验三代 这玩意大家应该都人手一份了&#xff0c;也没啥好分享的了&#xff0c;需要注意的是&#xff0c;一共五个请求&#xff0c;分别是&#xff1a; "https://apiv6.geetest.com/gettype.php “https://apiv6.geetest.com/get.php” “https://api.geevisit.com/a…...

【cocos creator 3.x】速通3d模型导入, 模型创建,阴影,材质使用,模型贴图绑定

1、右键创建平面&#xff0c;立方体 2、点击场景根节点&#xff0c;shadows勾选enabled3、点击灯光&#xff0c;shadow enabled勾选 4、点击模型&#xff0c;勾选接收阴影&#xff0c;投射阴影&#xff08;按照需要勾选&#xff09; 5、材质创建 6、选中节点&#xff0c;找…...

CentOS 中安装 vim

1. 使用 Yum 安装 Vim 如果您的系统可以正常访问互联网&#xff0c;并且已经配置好了正确的 Yum 源&#xff0c;可以直接运行以下命令安装 vim&#xff1a; sudo yum install vim -y 如果默认的 vim 包不可用&#xff0c;可以尝试安装增强版 vim-enhanced&#xff1a; sudo yu…...

安全可靠+操作简捷——安科瑞预付费电表的用户体验升级

安科瑞顾强 在现代化用电场景中&#xff0c;预付费模式凭借其高效性与便捷性&#xff0c;已成为商业、工业及住宅用电管理的优选方案。安科瑞电气推出的DDSY1352/DTSY1352系列预付费电能表&#xff0c;搭配智能管理平台&#xff0c;为用户提供从精准计量、智能控制到数据分析的…...

AI与物联网的深度融合:开启智能生活新时代

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;和物联网&#xff08;IoT&#xff09;作为两大前沿技术&#xff0c;正在加速融合&#xff0c;为我们的生活和工作带来前所未有的变革。这种融合不仅提升了设备的智能化水平&#xff0c;还为各行各业带来了新的机…...

赛灵思 XCVU095-2FFVB2104E XilinxFPGA Virtex UltraScale

XCVU095-2FFVB2104I 是 Xilinx&#xff08;现 AMD&#xff09;Virtex UltraScale 系列中的高端 FPGA 器件&#xff0c;基于 20nm 工艺&#xff0c;提供卓越的逻辑密度和高速串行 I/O 能力&#xff0c;广泛应用于 400G 网络、ASIC 原型验证及大型数据中心互联 该器件集成 1 176…...

leetcode0212. 单词搜索 II - hard

1 题目&#xff1a;单词搜索 II 官方标定难度&#xff1a;难 给定一个 m x n 二维字符网格 board 和一个单词&#xff08;字符串&#xff09;列表 words&#xff0c; 返回所有二维网格上的单词 。 单词必须按照字母顺序&#xff0c;通过 相邻的单元格 内的字母构成&#xff…...

解决 VSCode 中 NVM 配置后无法识别 Node 和 NPM 的问题

在开发中&#xff0c;我们经常需要使用 Node.js 和 NPM 来管理 JavaScript 项目依赖&#xff0c;而 NVM&#xff08;Node Version Manager&#xff09;是开发者在本地环境中管理多个 Node.js 版本的得力工具。不过&#xff0c;有时候在 VSCode 中配置完 NVM 后&#xff0c;可能…...

67.评论日记

我的评论本身也就是一种回答 沈阳车展帖子灵异失踪&#xff0c;究竟是谁干的&#xff1f;_哔哩哔哩_bilibili 2025年4月17日17:32:10...

Vscode 插件开发

文章目录 1、使用vscode官方插件生成框架&#xff0c;下载脚手架2、使用脚手架初始化项目&#xff0c;这里我选择的是js3、生成的文件结构如下&#xff0c;重要的就是以下两个文件4、代码5、打包使用6、发布官网地址7、publisher ID undefined provided in the extension manif…...

数据结构(6)

实验步骤&#xff1a; 任务一&#xff1a; 编写算法实现带头结点单链表的就地逆置,即利用原带头结点单链表的结点空间把元素序列 a0,al,……,an-i 逆置为 an-1,……,al, a0 [程序参数设计] 定义了一个带头结点的单链表结构体&#xff0c;并提供了初始化、尾部插入、打印、就地…...

【ROS】恢复行为

【ROS】恢复行为 前言恢复行为&#xff08;recovery_behavior&#xff09;概述恢复行为的参数示例&#xff1a;recovery_behavior.yaml 配置文件参数说明与配置原则恢复行为模块的参数设置reset_recovery&#xff08;重置行为&#xff1a;清除代价地图&#xff09;参数冲突说明…...

HashMap中put方法的执行流程

在 Java 编程中&#xff0c;HashMap 是一种常用的集合类&#xff0c;它以键值对&#xff08;Key-Value&#xff09;的形式存储数据&#xff0c;它具有高效查找、插入和删除的优势。 一.HashMap底层数据结构 JDK 1.7&#xff1a;采用 数组 链表 的结构。JDK 1.8&#xff1a;优…...

基于深度学习并利用时间信息在X射线血管造影中进行冠状动脉血管分割|文献速递-深度学习医疗AI最新文献

Title 题目 Deep learning based coronary vessels segmentation in X-ray angiographyusing temporal information 基于深度学习并利用时间信息在X射线血管造影中进行冠状动脉血管分割 01 文献速递介绍 有创冠状动脉造影&#xff08;ICA&#xff09;在冠状动脉疾病&#…...

JVM详解(曼波脑图版)

(✪ω✪)&#xff89; 好哒&#xff01;曼波会用最可爱的比喻给小白同学讲解JVM&#xff0c;准备好开启奇妙旅程了吗&#xff1f;(๑˃̵ᴗ˂̵)و &#x1f4cc; 思维导图 ━━━━━━━━━━━━━━━━━━━ &#x1f34e; JVM是什么&#xff1f;&#xff08;苹果式比…...

深度理解指针之例题

文章目录 前言题目分析与讲解涉及知识点 前言 对指针有一定了解后&#xff0c;讲一下一道初学者的易错题 题目分析与讲解 先定义一个数组跟一个指针变量 然后把数组名赋值给指针变量————也就是把首地址传到pulPtr中 重点是分析这一句&#xff1a; *&#xff08;pulPtr…...

Electricity Market Optimization(VI) - 机组组合问题的 GAMS 求解

根据之前的博客&#xff0c;我们考虑机组的启动成本只讨论考虑以下几种约束的机组组合问题&#xff1a; 功率平衡约束火电机组启停约束和爬坡约束备用容量约束 min ⁡ ∑ t 1 T ( C t g e n C t u c C t curt ) s.t. C t g e n ∑ i ∈ [ G ] c i ( p i , t c ) C t u c …...

【Leetcode 每日一题】2176. 统计数组中相等且可以被整除的数对

问题背景 给你一个下标从 0 0 0 开始长度为 n n n 的整数数组 n u m s nums nums 和一个整数 k k k&#xff0c;请你返回满足 0 ≤ i < j < n 0 \le i < j < n 0≤i<j<n&#xff0c; n u m s [ i ] n u m s [ j ] nums[i] nums[j] nums[i]nums[j] 且…...

赛灵思 XCVU3P‑2FFVC1517I XilinxFPGA Virtex UltraScale+

XCVU3P‑2FFVC1517I AMD Xilinx Virtex UltraScale 系列中的高端 FPGA&#xff0c;基于 TSMC 16 nm FinFET 工艺及第三代 3D IC 堆栈互连技术&#xff08;SSI&#xff09;&#xff0c;旨在为数据中心互连、高性能计算、网络加速和信号处理等苛刻应用提供领先的性能‑功耗比。…...

Rust 与 JavaScript 的 WebAssembly 互操作指南

1. Rust 中导入和导出 JS 函数 导入 JS 函数 Rust 代码中可以通过 extern 块导入 JavaScript 函数&#xff1a; #[link(wasm_import_module "mod")] // 指定 JS 模块名 extern { fn foo(); // 声明导入的 JS 函数 }如果没有指定 wasm_import_module&#xff0c;默…...

2025年特种设备安全管理 A 证考试全解析

对于想要获取特种设备安全管理 A 证的人员来说&#xff0c;了解考试的具体内容与形式是备考的关键。下面将为大家全面解析特种设备安全管理 A 证考试&#xff0c;助力大家顺利备考&#xff0c;成功取证。 特种设备安全管理 A 证考试内容丰富&#xff0c;涵盖多个重要领域。特种…...