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

利用quartus的DDS函数信号发生器设计

一、功能要求

采用数字频率合成(Direct Digital FrequencySynthesis,简称DDS)设计制作一个波形发生器,仿真后,在DE2-115开发板上实践。

要求:
1、利用DDS技术合成正弦波和方波;
2、输出信号的频率范围为10Hz~5MHz,最小频率分辨率小于1kHz;
3、使用嵌入式逻辑分析仪SignalTap II实时测试输出波形的离散数据。

二、设计分析

        在FPGA中,常用所示框图实现DDS。

        其中,m为地址加法器的数据宽度,其大小取决于基准时钟频率和所需步进精度。ROMaddr为n位存储器地址,n取决于波形样本个数。r为存储器输出数据的宽度。地址计数器也称为相位累加器,由地址加法器和地址寄存器组成。加法器有两个数据输入端:一个输入端B与地址寄存器的输出相连;另一个输入端为相位增量K,因为K是决定DDS输出频率的参量,所以被称为频率数据或频率控制字(Frequency Control Word, FCW),存放K的寄存器称为频率控制寄存器。频率控制字K是一个二进制数据,K+B(B的初值为0)就是相位累加器的输出Addr,相位控制字P用来调节相对于相位累加器输出相位的一个固定增量,对于一路信号来说没有任何意义,不过对于多路信号来说,可以通过相位控制字来调节多路信号的相位差。
        存储器地址ROMaddr截取的是PAddr的高n位,其变化速度取决于K的大小,从而实现了跳跃读数。当相位累加器为最大值时,再来一个时钟脉冲,其输出地址数据出现溢出,自动地从0开始重复先前的过程,这样就可以实现波形的连续输出。因此通过改变K值来调节输出频率。

【1】相位累加器的设计

Quartus新建工程,新建.v文件取名addr_cnt.v,代码如下:

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) beginAddress=Address+K;ROMaddr=Address[16:7];end
endmodule

保存后,右键点击文件Set as Top Level Entity,编译运行成功后再次右键单击,选择Create Symbol Files for Current File

Quartus打开.bsf文件,生成该模块的符号如下:

【2】波形存储器ROM

1、方波模块

代码:

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 beginif(Address<=17'h0FFFF)Qsquare=12'hFFF;else Qsquare=12'h000;end
endmodule

模块符号:

2、正弦波形存储器

        这个比较复杂,需要用IP核调用ROM存储。但是直接IP核生成ROM并更改存储数据太麻烦了,我们可以编写一个C语言程序,生成存储器的初始化文件Sine1024.mif。
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);}} 

编译运行该C程序后,可以在文件所在目录下看到一个myMIF.exe文件,双击即可生成Sine1024.mif文件。

使用Quartus调用LPM_ROM定制正弦波形存储器:点击Tools->IP Catalog

在IP Catalog界面搜索栏中输入ROM,双击ROM 1-PORT(如果点击没有反应那你可以看看右边QWQ)

命名为SineROM.v,点击OK

之后的除下图所示界面需要特别设置以外,其它点击Next跳过即可。

 

至此,ROM配置完成了。

【3】锁相环倍频电路

在IP Catalog搜索栏输入APTPLL,双击图示蓝框选项。

除如下所示图片需要更改一些设置外,其余界面next掉就好。

【4】顶层电路设计

将这个代码设为顶层文件,编译。

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;PLL100M_CP PLL100M_CP_inst(.inclk0(CLOCK_50),.c0(CLOCK_100),.locked(LEDG[0]));addr_cnt U0_instance(CPi,K,ROMaddr,Address);SineROM ROM_inst(.address(ROMaddr),.clock(CPi),.q(Qsine));squwave U1(CPi,RSTn,Address,Qsquare);always @(posedge CPi)begincase(WaveSel)2'b01:WaveValue=Qsine;2'b10:WaveValue=Qsquare;default:WaveValue=Qsine;endcaseend
endmodule

三、实验实现

使用DE2-115开发板来验证上述设计,根据DE2-115引脚配置表配置引脚。
SW16\SW17用来选择输出波形的种类,LEDG0作为PLL的锁定指示。

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

编译通过后,再次点击一次Start Analysis & Systhesis,然后就可以使用SignalTap ll实时测试输出波形的离散数据,选择Tools->SignalTap ll Logic Analyzer。

注意,时钟Clock配置要选择GPIO_0[12]
Node添加只需要双击Setup上面的空白处即可添加。

更改Flitter,然后点击List

确认无误后,保存SignalTap文件,点击编译,连接DE2-115。

操作完成后,拨动SW16和SW17,波形会发生变化。GPIO_0的波形可能会很奇怪,需要你右键选择格式,这样才会有波形图。

相关文章:

利用quartus的DDS函数信号发生器设计

一、功能要求 采用数字频率合成&#xff08;Direct Digital FrequencySynthesis&#xff0c;简称DDS&#xff09;设计制作一个波形发生器&#xff0c;仿真后&#xff0c;在DE2-115开发板上实践。 要求&#xff1a; 1、利用DDS技术合成正弦波和方波&#xff1b; 2、输出信号的…...

2.1 腾讯校招通关指南-算法与数据结构

2.1腾讯校招算法与数据结构通关攻略&#xff1a;高频题型真题拆解实战技巧 在腾讯技术岗面试中&#xff0c;算法与数据结构是占比30%的核心考核项&#xff0c;直接决定了面试通过率的「生死线」。本文结合腾讯近三年校招真题&#xff0c;拆解4大高频题型的解题套路、专项训练方…...

数据一致性的守护神:深入Spring声明式事务管理 (@Transactional)

在前面几篇文章中&#xff0c;我们一路打怪升级&#xff0c;掌握了Spring IoC/DI、Bean管理、AOP&#xff0c;并用JdbcTemplate和Spring Data JPA简化了数据库访问。我们的代码越来越简洁、高效。但想象一下这个场景&#xff1a; 用户A向用户B转账100元。这至少需要两个数据库…...

神经网络复习

1 机器学习 1.1 定义 机器学习是人工智能的一个分支领域&#xff0c;它致力于让计算机系统能够自动从数据中学习规律&#xff0c;并利用这些规律对新的数据进行预测或决策&#xff0c;而无需显式地编写针对特定任务的规则。 1.2 分类 全监督学习 全监督学习是指在训练模型时…...

从代码学习深度学习 - 自注意力和位置编码 PyTorch 版

这里写自定义目录标题 前言一、自注意力:Transformer 的核心1.1 多头注意力机制的实现1.2 缩放点积注意力1.3 掩码和序列处理1.4 自注意力示例二、位置编码:为序列添加位置信息2.1 位置编码的实现2.2 可视化位置编码总结前言 深度学习近年来在自然语言处理、计算机视觉等领域…...

Web前端开发——图像与多媒体文件(上)

学习目标&#xff1a; 优秀的商业网站往往通过为页面添加大量的图像、声音、视频、动画等多媒体信息来丰富网站的内容&#xff0c;吸引更多网络访问者的关注。目前大型商业网站非常注重对Web前端开发技术的研究&#xff0c;通过组合各类前端开发技术来改善用户体验和增加用户互…...

C#核心学习(三)常见的泛型数据结构类(1)List和Dictionary

前面我们刚刚学习了&#xff0c;什么是泛型。今天我们就来看看C#中有哪些&#xff0c;常见的泛型数据结构&#xff0c;今天要介绍的是List,和Dictionary。 引言 在C#编程中&#xff0c;泛型集合是高效管理数据的核心工具。List<T>和Dictionary<TKey, TValue>作为两…...

运行时数据区

运行时数据区 Java 虚拟机在运行 Java 程序过程中管理的内存区域称之为运行时数据区&#xff0c;运行时数据区负责管理 JVM 使用到的内存&#xff0c;例如创建对象和销毁对象。 程序计数器 程序计数器又叫 PC 寄存器&#xff0c;每个线程都会通过程序计数器记录当前要执行的字…...

union all 关联查询

UNION ALL 并非用于表的关联查询&#xff0c;而是用于将多个 SELECT 语句的结果集合并成一个结果集。它会保留所有重复的行&#xff0c;不像 UNION 会去除重复行。下面为你提供几种使用 UNION ALL 的场景示例。 示例表结构 假设存在两个表 sales_2024 和 sales_2025&#xff…...

npm ERR! vue-admin-beautiful@1.0.0 dev: `vue-cli-service serve` 问题解决

笔者在跑实习公司的前端时&#xff0c;老是报这个错&#xff0c;并且网上(csdn)并没有好的解决方法&#xff0c;于是这篇文章就诞生了。[吐槽一下]&#xff1a;小公司的实习生干的活是真的多啊。。。 解决方案 依赖有些包装不上&#xff0c;换个源就行了&#xff0c;这里采用…...

玩转Docker | 使用Docker部署Xnote笔记工具

玩转Docker | 使用Docker部署Xnote笔记工具 前言一、Xnote介绍Xnote简介1.2 Xnote特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署Xnote服务下载镜像编辑配置文件编辑部署文件创建容器检查容器状态检查服务端口安全设置四、访问Xnote服务访问Xnote首页…...

TDengine 与其他时序数据库对比:InfluxDB/TimescaleDB 选型指南(二)

四、应用场景分析 &#xff08;一&#xff09;TDengine 适用场景 TDengine 适用于对写入性能和存储效率要求极高的物联网设备数据采集场景。在一个拥有数百万个传感器的智能工厂中&#xff0c;每个传感器每秒都会产生多条数据&#xff0c;TDengine 能够高效地处理这些高并发的…...

ARM Cortex汇编宏定义

在ARM架构(尤其是Cortex-M系列MCU)的汇编中,**宏定义(Macro)**用于复用代码片段,支持参数化编程,简化重复逻辑(如寄存器操作、循环、条件判断等)。以下是ARM汇编宏定义的核心语法、用法及示例: 一、宏定义的基本语法 使用 MACRO 和 MEND 伪指令包裹宏体,通过 参数…...

【含文档+PPT+源码】基于Python心理健康管理系统

项目视频介绍&#xff1a; 毕业作品心理健康管理系统 课程简介&#xff1a; 本课程演示的是一款基于Python心理健康管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Python学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软…...

Dockerfile项目实战-单阶段构建Vue2项目

单阶段构建镜像-Vue2项目 1 项目层级目录 以下是项目的基本目录结构&#xff1a; 2 Node版本 博主的Windows电脑安装了v14.18.3的node.js版本&#xff0c;所以直接使用本机电脑生成项目&#xff0c;然后拷到了 Centos 7 里面 # 查看本机node版本 node -v3 创建Vue2项目 …...

大数据驱动的供应链透明化:从数据孤岛到智能协同

大数据驱动的供应链透明化:从数据孤岛到智能协同 在全球化供应链环境下,透明化不仅是一种企业责任,更是提高效率、降低成本和增强供应链韧性的关键举措。然而,传统供应链体系因数据孤岛、信息滞后、信任缺失等问题,常常导致生产过剩、库存积压、资源浪费,甚至供应链断裂…...

第四篇:[特殊字符] 深入理解MyBatis[特殊字符] 掌握MyBatis Generator ——入门与实战

引言 什么是 MyBatis Generator&#xff1f; MyBatis Generator (MBG) 是一个代码生成工具&#xff0c;专为 MyBatis 框架设计。它可以根据数据库表结构自动生成 Java 实体类、Mapper 接口、Mapper XML 文件以及 Example 类。通过使用 MBG&#xff0c;开发者可以显著减少编写…...

LeetCode算法题(Go语言实现)_48

题目 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b; 值 1 代表新鲜橘子&#xff1b; 值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格中…...

ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(核心API详解之单个外设管理)

目录 单个外设管理APIesp_periph_createesp_periph_set_functionesp_periph_startesp_periph_stopesp_periph_set_dataesp_periph_get_dataesp_periph_get_stateesp_periph_get_idesp_periph_set_idesp_periph_initesp_periph_runesp_periph_destroy 单个外设管理API esp_peri…...

基于vue2+ElementUI的el-tree封装一个带搜索的树形组件

需求 实现一个如图带搜索框的下拉树形组件。 解决方案 利用el-inputel-tree实现自定义带搜索的下拉树形组件。 具体实现步骤 1、创建TreeSelect组件 <template><div class"tree-select-wrapper" v-clickoutside"handleClose"><el-inpu…...

G2学习打卡

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 DCGAN实践 import torch, random, random, os import torch.nn as nn import torch.nn.parallel import torch.optim as optim import torch.utils.data im…...

【广州华锐互动】汽车生产引入数字孪生系统,优化生产流程,提升汽车产品质量

数字孪生系统的应用为企业带来了生产流程的革命性变革。以汽车制造企业为例&#xff0c;该企业在生产过程中引入数字孪生系统&#xff0c;实现了生产流程的全面优化和产品质量的显著提升 。​ 在生产流程优化方面&#xff0c;数字孪生系统对汽车生产线进行了全方位的模拟和实时…...

从Gradio App创建Discord Bot/Slack Bot/Website Widget(2)——从Gradio App创建Slack Bot

从Gradio App创建Discord Bot/Slack Bot/Website Widget&#xff08;2&#xff09;——从Gradio App创建Slack Bot 本篇摘要18. 从Gradio App创建Discord Bot/Slack Bot/Website Widget18.2 从Gradio App创建Slack Bot18.2.1 运作原理及前置条件1. 运作原理2. 前置条件 18.2.2 …...

基于STM32G474的SPI获取MT6816编码器绝对角度配置指南

前言&#xff1a;最近上手使用了一款编码器芯片&#xff0c;也是先艰难阅读了一下全英文版本的编码器的规格手册&#xff0c;然后通过SPI读取了一下绝对值角度。虽然发现使用起来还是挺简单的&#xff0c;但使用后还是会产生一个对其原理层面的好奇&#xff0c;比如磁编码器内部…...

深入学习ReentrantLock

ReentrantLock 0. 前言&#xff1a;为什么需要 ReentrantLock&#xff1f;1. 基础概念与核心特性1.1 什么是 ReentrantLock&#xff1f;1.2 ReentrantLock vs. synchronized1.3 核心特性详解1.3.1 可重入性 (Reentrancy)1.3.2 公平性选择 (Fairness Choice)1.3.3 可中断获取锁 …...

Spring Boot 集成金蝶 API 演示

✨ Spring Boot 集成金蝶 API 演示&#xff1a;登录 / 注销 Cookie 保存 本文将通过 Spring Boot 完整实现一套金蝶接口集成模型&#xff0c;包括&#xff1a; ✅ 普通登录✅ AppSecret 登录✅ 注销✅ Cookie 保存与复用 &#x1f4c5; 项目结构 src/ ├── controller/ │…...

适用于 HAL 的 AIDL

目录 设计初衷 注意 编写AIDLHAL接口 查找AIDLHAL接口 扩展接口 将现有HAL从HIDL转换为AIDL AIDL与HIDL之间的主要差异 针对HAL的供应商测试套件(VTS)测试 Android 11 中引入了在 Android 中使用 AIDL 实现 HAL 的功能, 从而可以在不使用 HIDL 的情况下实现 Android 的部分…...

49、Spring Boot 详细讲义(六)(SpringBoot2.x整合Mybatis实现CURD操作和分页查询详细项目文档)

项目文档:银行借据信息CURD操作和分页查询 一、项目概述 1. 项目简介 本项目旨在使用Spring Boot框架整合MyBatis连接Mysql数据库实现借据信息的增加、删除、修改和查询功能,同时支持分页查询,并提供对应的Restful风格的接口。 2.环境准备 2.1.工具和软件准备 JDK(建议…...

C# 运行web项目

1、web项目直接点击顶部运行...

GPU服务器声音很响可以怎么处理

当GPU服务器运行时噪音过大&#xff0c;通常是由于高负载下散热风扇高速运转所致。以下是分步骤的解决方案&#xff0c;帮助您有效降低噪音并保持设备稳定运行&#xff1a; 一、排查噪音来源 定位声源 • 使用 声级计 或手机分贝检测APP&#xff0c;确定最大噪音位置&#xff0…...

Java如何选择ojdbc驱动

如何选择ojdbc驱动&#xff1f; 取决于短板。 如果JDK版本高&#xff0c;数据库版本低&#xff0c;根据Oracle数据库版本选择。如果JDK版本低&#xff0c;数据库版本高&#xff0c;根据Java版本选择。 Oracle官网OJDBC驱动和受支持的JDK版本 23ai 21c 19c 驱动类型选择 oj…...

【微思就业推荐 】T岗位-北京,福州,厦门等地

到微思学习&#xff0c;免费推荐就业&#xff01;学员内推&#xff01; 原创 厦门微思网络 2025年04月 有哪些大公司在招OCP认证人才&#xff1f; 有哪些大公司在招聘拥有HCIE认证的人才 ① 委托单位&#xff1a;润欣商业管理(厦门)有限公司 央企-华润资产的子公司 岗位&am…...

Linux 命令全解析:从零开始掌握 Linux 命令行

Linux 作为一款强大的开源操作系统&#xff0c;广泛应用于服务器、嵌入式系统以及超级计算机领域。掌握 Linux 命令行技能&#xff0c;是每一位开发者和系统管理员的必备能力。本文将从基础开始&#xff0c;为你详细介绍常用的 Linux 命令&#xff0c;以及它们的使用场景和示例…...

2025年4月份生活有感

今天在5000B培训的下午&#xff0c;一起入所来的小伙伴&#xff0c;有个申请了深圳大学的博士&#xff0c;已录取。哎&#xff0c;想起了当年申博时候信心和决心不足&#xff0c;导致后面匆匆的拿了offer去工作。看到同事的选择还是非常羡慕&#xff0c;想到自己5月份的婚礼&am…...

鸿蒙系统开发状态更新字段区别对比

在鸿蒙系统开发中&#xff0c;状态管理是构建响应式UI的核心机制&#xff0c;主要通过装饰器&#xff08;Decorators&#xff09;实现字段的状态观测与更新。根据鸿蒙的版本&#xff08;V1稳定版和V2试用版&#xff09;&#xff0c;支持的装饰器及其特性有所不同。以下是主要状…...

CEPH OSD_SLOW_PING_TIME_FRONT/BACK 警告处理

ceph config set mgr mon_warn_on_slow_ping_time 2000说明&#xff1a;mon_warn_on_slow_ping_time 该值默认为0&#xff0c;那么只要 osd 心跳超过 mon_warn_on_slow_ping_ratio of osd_heartbeat_grace. 也就是超过 mon_warn_on_slow_ping_ratio和mon_warn_on_slow_ping_rat…...

HTML应用指南:利用POST请求获取全国小菜园门店位置信息

小菜园作为一家以徽菜为主的快餐品牌&#xff0c;自2013年成立以来&#xff0c;凭借其独特的烹饪理念和精致的东方口味菜品&#xff0c;在中国市场上迅速崛起。该品牌强调少油少盐、减少调味品使用&#xff0c;旨在传承并发扬徽州风味的独特魅力。这种健康且不失美味的烹饪方式…...

Python在去中心化物联网中的应用:数据安全、智能合约与边缘计算的融合

Python在去中心化物联网中的应用:数据安全、智能合约与边缘计算的融合 在万物互联的时代,传统物联网(IoT)架构依赖于集中式服务器来管理数据、设备互联与身份认证。然而,随着设备数量激增,中心化架构的可扩展性、安全性和隐私问题逐渐暴露。去中心化物联网(DeIoT)通过…...

CEPH配置优化建议

一、硬件配置优化 磁盘选择&#xff1a; SSD 与 HDD 搭配&#xff1a;使用 SSD 作为 OSD 日志盘&#xff08;Journal&#xff09;或元数据存储&#xff0c;HDD 作为数据盘。推荐 SSD 与 HDD 的比例为 1:3~5&#xff0c;具体根据业务负载调整。 RAID 禁用&#xff1a;避免使用硬…...

深度学习入门:神经网络的学习

目录 1 从数据中学习1.1 数据驱动1.2 训练数据和测试数据 2损失函数2.1 均方误差2.2 交叉熵误差2.3 mini-batch学习2.4 mini-batch版交叉熵误差的实现2.5 为何要设定损失函数 3 数值微分3.1 数值微分3.3 偏导数 4 梯度4.1 梯度法4.2 神经网络的梯度 5 学习算法的实现5.1 2层神经…...

机器学习_决策树

决策树的特点 可以处理非线性的问题可解释强&#xff0c;没有θ模型简单&#xff0c;模型预测效率高 if else不容易显示的使用函数表达&#xff0c;不可微 决策树的生成和预测 生成&#xff1a;通过大量数据生成一颗非常好的树&#xff0c;用这棵树来预测新来的数据。 预测&…...

深入理解UML动态图:系统行为建模全景指南

目录 前言1. 动态图概述2. 用例图&#xff08;Use Case Diagram&#xff09;2.1 定义与作用2.2 应用价值2.3 实践建议 3. 顺序图&#xff08;Sequence Diagram&#xff09;3.1 定义与特征3.2 应用优势3.3 建模建议 4. 活动图&#xff08;Activity Diagram&#xff09;4.1 定义与…...

Linux驱动开发进阶(九)- SPI子系统BSP驱动

文章目录 1、前言2、SPI总线注册3、SPI设备注册4、SPI驱动注册5、SPI BSP驱动 1、前言 学习参考书籍以及本文涉及的示例程序&#xff1a;李山文的《Linux驱动开发进阶》本文属于个人学习后的总结&#xff0c;不太具备教学功能。 2、SPI总线注册 驱动源码文件&#xff1a;dri…...

wabpack学习记录

wabpack学习记录 前言 项目写了不少 对webpack了解甚少 只记住一些 必要的概念以及指令 所以像深究一下具体是什么 可以做什么 如何做等 package.json 文件详解 name: 项目的名称。 version: 项目的版本号。 description: 项目的描述。 author: 项目的作者或维护者信息。 l…...

计算机视觉——基于 Yolov8 目标检测与 OpenCV 光流实现目标追踪

1. 概述 目标检测&#xff08;Object Detection&#xff09;和目标追踪&#xff08;Object Tracking&#xff09;是计算机视觉中的两个关键技术&#xff0c;它们在多种实际应用场景中发挥着重要作用。 目标检测指的是在静态图像或视频帧中识别出特定类别的目标对象&#xff0…...

React 更新 state 中的数组

更新 state 中的数组 数组是另外一种可以存储在 state 中的 JavaScript 对象&#xff0c;它虽然是可变的&#xff0c;但是却应该被视为不可变。同对象一样&#xff0c;当你想要更新存储于 state 中的数组时&#xff0c;你需要创建一个新的数组&#xff08;或者创建一份已有数组…...

[250415] OpenAI 推出 GPT-4.1 系列,支持 1M token

目录 OpenAI 推出 GPT-4.1 系列 OpenAI 推出 GPT-4.1 系列 OpenAI 宣布&#xff0c;新一代 GPT-4.1 模型系列正式发布&#xff0c;包括 GPT-4.1, GPT-4.1 mini 和 GPT-4.1 nano 三款模型&#xff0c;该系列模型在各项性能指标上全面超越 GPT-4o 和 GPT-4o mini&#xff0c;尤其…...

分布式锁+秒杀异步优化

文章目录 问题思路setnx实现锁误删问题和解决方案Redis Lua脚本问题引出解决方案 setnx实现的问题Redission快速入门redission可重入锁原理 秒杀优化(异步优化)异步秒杀思路秒杀资格判断Redis消息队列 问题 比如我们两个机器都部署了我们项目&#xff0c;这里nginx使用轮询的方…...

数据服务化 VS 数据中台:战略演进中的价值重构

在企业数据战略的演进历程中&#xff0c;数据中台曾被视为解决数据孤岛的 “万能钥匙”&#xff0c;而数据服务化的兴起则标志着企业从 “数据资源囤积” 向 “数据价值释放” 的深刻转型。两者的核心差异不仅在于技术架构&#xff0c;更在于对数据资产的定位与使用理念的根本分…...

PL/SQL登录慢,程序连接Oracle 提示无法连接或无监听

PL/SQL登录慢&#xff0c;程序连接Oracle 提示无法连接或无监听 错误提示&#xff1a;ORA-12541: TNS: 无监听程序 的解决办法&#xff0c; 现象&#xff1a;PL/SQL登录慢&#xff0c;程序连接Oracle 提示无法连接或无监听 监听已经正常开起&#xff0c;但还是PL/SQL登录慢或…...