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

FPGA 28 ,基于 Vivado Verilog 的呼吸灯效果设计与实现( 使用 Vivado Verilog 实现呼吸灯效果 )

目录

前言
一. 设计流程
1.1 需求分析
1.2 方案设计
1.3 PWM解析
二. 实现流程
2.1 确定时间单位和精度
2.2 定义参数和寄存器
2.3 实现计数器逻辑
2.4 控制 LED 状态
三. 整体流程
3.1 全部代码
3.2 代码逻辑
1. 参数定义
2. 分级计数
3. 状态切换
4. LED 输出控制
四. 注意事项
五. 本文总结
六. 更多操作

前言

在数字电路设计领域,呼吸灯是一个经典且有趣的项目,它模拟人类呼吸的节奏,使 LED 灯呈现出从暗到亮再从亮到暗的渐变效果,常被用于电子产品的状态指示、氛围营造等场景。这里将详细介绍如何使用 Verilog 硬件描述语言实现一个呼吸灯效果,并对实现过程中的关键知识点、设计流程、代码逻辑以及注意事项进行深入探讨。

实现的呼吸灯效果,渐明渐暗、渐明渐暗,循环往复:

一. 设计流程

1.1 需求分析

        呼吸灯的核心需求是让 LED 灯呈现出类似人类呼吸的渐变效果,即亮度从暗到亮再从亮到暗循环变化。为了实现这一效果,我们需要通过控制 LED 灯的驱动信号来改变其亮度,而在数字电路中,通常使用脉冲宽度调制(PWM)技术来模拟模拟电压,从而控制 LED 灯的亮度。

1.2 方案设计

        为了实现 PWM 控制,我们将采用分级计数的方式来实现不同时间尺度的延时。具体来说,我们会设计三个计数器:微秒级计数器、毫秒级计数器和秒级计数器。通过这三个计数器的协同工作,我们可以精确控制 PWM 信号的占空比,从而实现 LED 灯亮度的渐变。

1.3 PWM解析

        脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信、功率控制等领域中。


二. 实现流程

2.1 确定时间单位和精度

在进行 Verilog 代码编写之前,首先要明确时间单位和精度。这一步对于后续处理不同时间尺度的延时至关重要。在本例中,我们使用timescale编译指令来声明时间单位和精度。

// 时间尺度声明,仿真时间单位为1ns,仿真精度为1ps
`timescale 1ns / 1ps

这里选择 1ns 作为时间单位,1ps 作为时间精度,意味着在仿真过程中,时间的最小步进是 1ps,能够满足处理微秒(us)、毫秒(ms)等较大时间尺度的需求。这样的设置可以让我们更精确地模拟时间流逝,从而实现对呼吸灯渐变效果的精细控制。

2.2 定义参数和寄存器

确定好时间单位和精度后,接下来要定义一些关键的参数和寄存器。这些参数和寄存器将用于控制计数器的行为,进而影响 LED 灯的状态变化。

// 定义呼吸灯模块,模块开始
module breath_led(input clk,      // 时钟信号,用于同步电路的操作input rst_n,    // 复位信号,低电平有效,用于初始化电路状态output reg led  // 输出信号,控制LED灯的亮灭);
// 定义参数,用于延时计数
parameter us_delay = 50;  // 定义微秒级延时的计数值
parameter ms_delay = 1000; // 定义毫秒级延时的计数值
parameter s_delay = 1000;  // 定义秒级延时的计数值
// 定义计数器寄存器
reg [5:0] cnt_lus;  // 微秒级计数器,6位宽,最大计数值为63
reg [9:0] cnt_lms;  // 毫秒级计数器,10位宽,最大计数值为1023
reg [9:0] cnt_ls;   // 秒级计数器,10位宽,最大计数值为1023
reg led_en;         // LED使能信号,用于控制LED的亮灭模式
  • 参数部分

    • us_delay:用于设置微秒级延时的计数值。当微秒级计数器cnt_lus达到us_delay - 1时,会触发一些操作,如毫秒级计数器的递增。
    • ms_delay:定义毫秒级延时的计数值。毫秒级计数器cnt_lms达到ms_delay - 1时,会影响秒级计数器的状态。
    • s_delay:表示秒级延时的计数值。秒级计数器cnt_ls达到s_delay - 1时,会引发 LED 使能信号led_en的状态切换。
  • 寄存器部分

    • cnt_lus:微秒级计数器,6 位宽,其最大计数值为 63。在时钟信号的驱动下,它会不断递增,用于精确计时微秒级的时间间隔。
    • cnt_lms:毫秒级计数器,10 位宽,最大计数值为 1023。它依赖于微秒级计数器的状态进行递增,用于计时毫秒级的时间。
    • cnt_ls:秒级计数器,同样是 10 位宽,最大计数值为 1023。它在微秒级和毫秒级计数器满足特定条件时才会递增,用于计时秒级的时间。
    • led_en:LED 使能信号,用于控制 LED 灯的亮灭模式。通过改变led_en的值,可以实现 LED 灯亮度的渐变效果。

2.3 实现计数器逻辑

为了模拟时间的流逝,我们需要实现三个层次的计数器:微秒计数器、毫秒计数器和秒计数器。每个计数器根据不同的条件进行递增或重置,从而实现精确的时间控制。

// 微秒级计数器逻辑
always@(posedge clk)beginif(!rst_n)  // 如果复位信号有效(低电平)cnt_lus <= 0;  // 微秒级计数器清零else if(cnt_lus == us_delay - 1)  // 如果微秒级计数器达到设定的延时值减1cnt_lus <= 0;  // 微秒级计数器清零elsecnt_lus <= cnt_lus + 1;  // 微秒级计数器加1
end// 毫秒级计数器逻辑
always@(posedge clk)beginif(!rst_n)  // 如果复位信号有效(低电平)cnt_lms <= 0;  // 毫秒级计数器清零else if(cnt_lus == us_delay - 1)begin  // 当微秒级计数器达到设定的延时值减1if(cnt_lms == ms_delay - 1)  // 如果毫秒级计数器达到设定的延时值减1cnt_lms <= 0;  // 毫秒级计数器清零elsecnt_lms <= cnt_lms + 1;  // 毫秒级计数器加1end// 其他情况保持不变,由于时序逻辑,不需要写
end// 秒级计数器逻辑
always@(posedge clk)beginif(!rst_n)  // 如果复位信号有效(低电平)cnt_ls <= 0;  // 秒级计数器清零else if(cnt_lus == us_delay - 1)begin  // 当微秒级计数器达到设定的延时值减1if(cnt_lms == ms_delay - 1)begin  // 当毫秒级计数器达到设定的延时值减1if(cnt_ls == s_delay - 1)  // 如果秒级计数器达到设定的延时值减1cnt_ls <= 0;  // 秒级计数器清零elsecnt_ls <= cnt_ls + 1;  // 秒级计数器加1endend
end
  • 微秒级计数器 cnt_lus:在每个时钟信号的上升沿,首先检查复位信号rst_n是否有效。如果有效,将微秒级计数器清零,以确保电路在复位时能够恢复到初始状态。如果复位信号无效,接着检查计数器是否达到us_delay - 1。若达到该值,说明已经完成了一次微秒级的延时,将计数器清零,重新开始计时;若未达到,则将计数器加 1,继续计时。
  • 毫秒级计数器 cnt_lms:同样在时钟信号的上升沿进行操作。当复位信号有效时,将毫秒级计数器清零。当微秒级计数器达到us_delay - 1时,说明已经经过了一个微秒级的时间间隔,此时检查毫秒级计数器是否达到ms_delay - 1。若达到,则将毫秒级计数器清零,开始新的毫秒计时;若未达到,则将毫秒级计数器加 1。
  • 秒级计数器 cnt_ls:在时钟上升沿,当复位信号有效时,秒级计数器清零。只有当微秒级计数器达到us_delay - 1且毫秒级计数器达到ms_delay - 1时,才会进一步检查秒级计数器是否达到s_delay - 1。若达到,则将秒级计数器清零,重新开始秒计时;若未达到,则将秒级计数器加 1。

通过这三个计数器的协同工作,我们可以实现从微秒到毫秒再到秒的精确计时,为后续控制 LED 灯的状态变化提供时间基础。

2.4 控制 LED 状态

在完成计数器逻辑的实现后,接下来要根据计数器的状态来控制 LED 灯的状态。这里我们通过一个 LED 使能信号led_en来切换 LED 灯的亮灭模式,从而实现呼吸灯的渐变效果。

// LED使能信号逻辑
always@(posedge clk)beginif(!rst_n)  // 如果复位信号有效(低电平)led_en <= 0;  // LED使能信号清零else if(cnt_lus == us_delay - 1 && cnt_lms == ms_delay - 1 && cnt_ls == s_delay - 1)// 当微秒级、毫秒级和秒级计数器都达到设定的延时值减1时led_en <= ~led_en;  // 取反LED使能信号
end
// LED输出逻辑
always@(posedge clk)beginif(!rst_n)  // 如果复位信号有效(低电平)led <= 0;  // LED输出信号清零else if(led_en == 0)  // 如果LED使能信号为0// 如果秒级计数器大于毫秒级计数器,LED输出高电平,否则输出低电平led <= (cnt_ls > cnt_lms)? 1 : 0;  else if(led_en == 1)  // 如果LED使能信号为1// 如果秒级计数器大于毫秒级计数器,LED输出低电平,否则输出高电平led <= (cnt_ls > cnt_lms)? 0 : 1; 
end
//模块结束
endmodule
  • LED 使能信号逻辑:在时钟信号的上升沿,首先检查复位信号rst_n。若复位信号有效,将 LED 使能信号led_en清零。当微秒级计数器cnt_lus、毫秒级计数器cnt_lms和秒级计数器cnt_ls都达到各自设定的延时值减 1 时,说明已经经过了一个完整的计时周期,此时将 LED 使能信号取反,从而切换 LED 灯的亮灭模式。
  • LED 输出逻辑:同样在时钟上升沿进行操作。当复位信号有效时,将 LED 输出信号led清零。当 LED 使能信号led_en为 0 时,比较秒级计数器cnt_ls和毫秒级计数器cnt_lms的大小。如果cnt_ls > cnt_lms,则 LED 输出高电平,使 LED 灯点亮;否则输出低电平,使 LED 灯熄灭。当 LED 使能信号led_en为 1 时,逻辑相反,即cnt_ls > cnt_lms时 LED 输出低电平,否则输出高电平。

随着时间的推移,计数器的值不断变化,LED 使能信号也会周期性地切换,从而使 LED 灯的亮度呈现出从暗到亮再从亮到暗的渐变效果,模拟出呼吸的节奏。


三. 整体流程

3.1 全部代码

// 时间尺度声明,仿真时间单位为1ns,仿真精度为1ps
`timescale 1ns / 1ps// 定义呼吸灯模块
module breath_led(input clk,      // 时钟信号,用于同步电路的操作input rst_n,    // 复位信号,低电平有效,用于初始化电路状态output reg led  // 输出信号,控制LED灯的亮灭);// 定义参数,用于延时计数
parameter us_delay = 50;  // 定义微秒级延时的计数值
parameter ms_delay = 1000; // 定义毫秒级延时的计数值
parameter s_delay = 1000;  // 定义秒级延时的计数值// 定义计数器寄存器
reg [5:0] cnt_lus;  // 微秒级计数器,6位宽,最大计数值为63
reg [9:0] cnt_lms;  // 毫秒级计数器,10位宽,最大计数值为1023
reg [9:0] cnt_ls;   // 秒级计数器,10位宽,最大计数值为1023
reg led_en;         // LED使能信号,用于控制LED的亮灭模式// 微秒级计数器逻辑
always@(posedge clk)beginif(!rst_n)  // 如果复位信号有效(低电平)cnt_lus <= 0;  // 微秒级计数器清零else if(cnt_lus == us_delay - 1)  // 如果微秒级计数器达到设定的延时值减1cnt_lus <= 0;  // 微秒级计数器清零elsecnt_lus <= cnt_lus + 1;  // 微秒级计数器加1
end// 毫秒级计数器逻辑
always@(posedge clk)beginif(!rst_n)  // 如果复位信号有效(低电平)cnt_lms <= 0;  // 毫秒级计数器清零else if(cnt_lus == us_delay - 1)begin  // 当微秒级计数器达到设定的延时值减1if(cnt_lms == ms_delay - 1)  // 如果毫秒级计数器达到设定的延时值减1cnt_lms <= 0;  // 毫秒级计数器清零elsecnt_lms <= cnt_lms + 1;  // 毫秒级计数器加1end// 其他情况保持不变,由于时序逻辑,不需要写
end// 秒级计数器逻辑
always@(posedge clk)beginif(!rst_n)  // 如果复位信号有效(低电平)cnt_ls <= 0;  // 秒级计数器清零else if(cnt_lus == us_delay - 1)begin  // 当微秒级计数器达到设定的延时值减1if(cnt_lms == ms_delay - 1)begin  // 当毫秒级计数器达到设定的延时值减1if(cnt_ls == s_delay - 1)  // 如果秒级计数器达到设定的延时值减1cnt_ls <= 0;  // 秒级计数器清零elsecnt_ls <= cnt_ls + 1;  // 秒级计数器加1endend
end// LED使能信号逻辑
always@(posedge clk)beginif(!rst_n)  // 如果复位信号有效(低电平)led_en <= 0;  // LED使能信号清零else if(cnt_lus == us_delay - 1 && cnt_lms == ms_delay - 1 && cnt_ls == s_delay - 1)// 当微秒级、毫秒级和秒级计数器都达到设定的延时值减1时led_en <= ~led_en;  // 取反LED使能信号
end// LED输出逻辑
always@(posedge clk)beginif(!rst_n)  // 如果复位信号有效(低电平)led <= 0;  // LED输出信号清零else if(led_en == 0)  // 如果LED使能信号为0led <= (cnt_ls > cnt_lms)? 1 : 0;  // 如果秒级计数器大于毫秒级计数器,LED输出高电平,否则输出低电平else if(led_en == 1)  // 如果LED使能信号为1led <= (cnt_ls > cnt_lms)? 0 : 1;  // 如果秒级计数器大于毫秒级计数器,LED输出低电平,否则输出高电平
endendmodule

3.2 代码逻辑

1. 参数定义
  • us_delay:微秒级延时计数值,用于控制微秒级计数器重置条件。
  • ms_delay:毫秒级延时计数值,用于控制毫秒级计数器重置条件。
  • s_delay:秒级延时计数值,用于控制秒级计数器重置条件。
2. 分级计数
  • 微秒级(cnt_lus:时钟上升沿,复位信号 rst_n 有效则清零;否则计到 us_delay - 1 清零,未到则加 1。
  • 毫秒级(cnt_lms:时钟上升沿,复位有效则清零;cnt_lusus_delay - 1 时,计到 ms_delay - 1 清零,未到则加 1。
  • 秒级(cnt_ls:时钟上升沿,复位有效则清零;cnt_lusus_delay - 1cnt_lmsms_delay - 1 时,计到 s_delay - 1 清零,未到则加 1。
3. 状态切换

led_en 控制 LED 亮灭模式。三个计数器均达延时值,led_en 取反,依其值比较 cnt_lscnt_lms 控制 led 输出。

4. LED 输出控制
  • led_en 为 0,cnt_ls > cnt_lmsled 高电平,反之低电平。
  • led_en 为 1,逻辑相反。 随时间推进,cnt_lscnt_lms 大小关系变化,使 LED 呈呼吸渐变效果。


四. 注意事项

  1. 参数设置:代码中的参数 us_delayms_delays_delay 决定了呼吸灯渐变的速度。若参数设置不合理,可能导致呼吸灯渐变速度过快或过慢,甚至因计数值过大造成资源占用过多或仿真时间过长。例如,若 us_delayms_delays_delay 设置过小,呼吸灯渐变过程会极快,人眼难以察觉;反之,设置过大则渐变过程缓慢,影响用户体验。
  2. 时钟频率:代码依赖输入的时钟信号 clk 进行同步操作。时钟频率不合适会影响呼吸灯效果。若时钟频率过高,计数器计数速度快,呼吸灯渐变过程难以察觉;若时钟频率过低,呼吸灯渐变过程慢,甚至可能出现闪烁不连贯的情况。因此,实际设计中需根据具体需求和硬件条件选择合适的时钟频率。
  3. 硬件实现:若将代码烧录到实际硬件中,需考虑硬件特性和限制。如硬件驱动能力、LED 灯特性等都可能影响呼吸灯实际效果。若硬件驱动能力不足,可能无法正常驱动 LED 灯;若 LED 灯响应速度慢,也可能无法实现理想的渐变效果。进行硬件实现时,需对硬件充分测试和调试,确保呼吸灯正常工作。


五. 本文总结

通过本文的分享记录,我们详细了解了如何使用 Verilog 硬件描述语言实现一个呼吸灯,涵盖了相关时间单位知识、设计流程、代码逻辑以及注意事项。呼吸灯设计不仅是一个有趣的项目,还涉及数字电路设计中的许多重要概念,如分级计数、状态切换和 PWM 控制等。希望这里能帮助你更好地掌握数字电路设计相关知识和技能。


六. 更多操作

完整FPGA系列,请看

FPGA系列,文章目录https://blog.csdn.net/weixin_65793170/article/details/144185217?spm=1001.2014.3001.5501https://blog.csdn.net/weixin_65793170/article/details/144185217?spm=1001.2014.3001.5501

相关文章:

FPGA 28 ,基于 Vivado Verilog 的呼吸灯效果设计与实现( 使用 Vivado Verilog 实现呼吸灯效果 )

目录 前言 一. 设计流程 1.1 需求分析 1.2 方案设计 1.3 PWM解析 二. 实现流程 2.1 确定时间单位和精度 2.2 定义参数和寄存器 2.3 实现计数器逻辑 2.4 控制 LED 状态 三. 整体流程 3.1 全部代码 3.2 代码逻辑 1. 参数定义 2. 分级计数 3. 状态切换 4. LED 输…...

单片机简介

一、单片机简介 电脑和单片机性能对比 二、单片机发展历程 三、CISC VS RISC...

C++ 设计模式-桥接模式

C桥接模式的经典示例&#xff0c;包含测试代码&#xff1a; #include <iostream> #include <string>// 实现化接口 class Device { public:virtual ~Device() default;virtual bool isEnabled() const 0;virtual void enable() 0;virtual void disable() 0;vi…...

不小心删除服务[null]后,git bash出现错误

不小心删除服务[null]后&#xff0c;git bash出现错误&#xff0c;如何解决&#xff1f; 错误描述&#xff1a;打开 git bash、msys2都会出现错误「bash: /dev/null: No such device or address」 问题定位&#xff1a; 1.使用搜索引擎搜索「bash: /dev/null: No such device o…...

16.React学习笔记.React更新机制

一. 发生更新的时机以及顺序## image.png props/state改变render函数重新执行产生新的VDOM树新旧DOM树进行diff计算出差异进行更新更新到真实的DOM 二. React更新流程## React将最好的O(n^3)的tree比较算法优化为O(n)。 同层节点之间相互比较&#xff0c;不跨节点。不同类型的节…...

【Elasticsearch】词干提取(Stemming)

词干提取是将一个词还原为其词根形式的过程。这确保了在搜索过程中&#xff0c;一个词的不同变体能够匹配到彼此。 例如&#xff0c;walking&#xff08;行走&#xff09;和walked&#xff08;走过&#xff09;可以被还原到同一个词根walk&#xff08;走&#xff09;。一旦被还…...

【AI论文】10亿参数大语言模型能超越405亿参数大语言模型吗?重新思考测试时计算最优缩放

摘要&#xff1a;测试时缩放&#xff08;Test-Time Scaling&#xff0c;TTS&#xff09;是一种通过在推理阶段使用额外计算来提高大语言模型&#xff08;LLMs&#xff09;性能的重要方法。然而&#xff0c;目前的研究并未系统地分析策略模型、过程奖励模型&#xff08;Process …...

【设计模式】【行为型模式】状态模式(State)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f4eb; 欢迎V&#xff1a; flzjcsg2&#xff0c;我们共同讨论Java深渊的奥秘 &#x1f…...

PostgreSQL错误: 编码“UTF8“的字符0x0xe9 0x94 0x99在编码“WIN1252“没有相对应值

错误介绍 今天遇到一个错误&#xff0c;记录一下 2025-02-10 17:04:35.264 HKT [28816] 错误: 编码"WIN1252"的字符0x0x81在编码"UTF8"没有相对应值 2025-02-10 17:04:35.264 HKT [28816] 错误: 编码"UTF8"的字符0x0xe9 0x94 0x99在编码&quo…...

Mac ARM 架构的命令行(终端)中,删除整行的快捷键是:Ctrl + U

在 Mac ARM 架构的命令行&#xff08;终端&#xff09;中&#xff0c;删除整行的快捷键是&#xff1a; Ctrl U这个快捷键会删除光标所在位置到行首之间的所有内容。如果你想删除光标后面的所有内容&#xff0c;可以使用&#xff1a; Ctrl K这两个快捷键可以帮助你快速清除当…...

Vue2下判断有新消息来时以站内信方式在页面右下角弹出

以下是完整的Vue2全局通知组件实现方案&#xff0c;包含自动挂载和全局调用方法&#xff1a; 第一步&#xff1a;创建通知组件 <!-- src/components/Notification/index.vue --> <template><div class"notification-container"><transition-g…...

AI语言模型的技术之争:DeepSeek与ChatGPT的架构与训练揭秘

云边有个稻草人-CSDN博客 目录 第一章&#xff1a;DeepSeek与ChatGPT的基础概述 1.1 DeepSeek简介 1.2 ChatGPT简介 第二章&#xff1a;模型架构对比 2.1 Transformer架构&#xff1a;核心相似性 2.2 模型规模与参数 第三章&#xff1a;训练方法与技术 3.1 预训练与微调…...

网络安全中的account和audit区别

一、AWD介绍 AWD&#xff1a;Attack With Defence&#xff0c;即攻防对抗&#xff0c;比赛中每个队伍维护多台服务器&#xff08;一般两三台&#xff0c;视小组参赛人数而定&#xff09;&#xff0c;服务器中存在多个漏洞&#xff08;web层、系统层、中间件层等&#xff09;&a…...

Visual Studio 使用 “Ctrl + /”键设置注释和取消注释

问题&#xff1a;在默认的Visual Studio中&#xff0c;选择单行代码后&#xff0c;按下Ctrl /键会将代码注释掉&#xff0c;但再次按下Ctrl /键时&#xff0c;会进行双重注释&#xff0c;这不是我们想要的。 实现效果&#xff1a;当按下Ctrl /键会将代码注释掉&#xff0c;…...

【密评】 | 商用密码应用安全性评估从业人员考核题库(23)

在GM/T0048《智能密码钥匙密码检测规范》中,产品的对称算法性能应满足哪个标准中的要求()。 A.GM/T 0016《智能密码钥匙密码应用接口规范》 B.GM/T 0017《智能密码钥匙密码应用接口数据格式规范》 C.GM/T 0027《智能密码钥匙技术规范》 D.GM/T 0028《密码模块安全技术要求》…...

【MySQL】幻读 案例分析

目录 假设1&#xff1a;只在 id5 这一行加锁&#xff0c;其他行不加锁&#xff1f; 幻读的定义 幻读的场景 假设1 产生的问题&#xff1a;语义被破坏 假设1 产生的问题&#xff1a;数据一致性 结论&#xff1a; 假设1不成立 假设2&#xff1a;扫描过程中每一行都加上写锁…...

10bit VS 8bit 视频:色彩深度的较量,谁才是视觉盛宴的王者?

10bit 和 8bit 视频 10bit 视频和 8bit 视频的主要区别在于色彩深度和细节表现能力。10bit 视频具有更高的色彩深度和更丰富的细节表现,能够提供更平滑的色彩过渡和更真实的图像质量,但需要更多的存储空间和带宽。8bit 视频则在存储和传输方面更加高效,适合于对存储空间和带…...

讲解下MySql的外连接查询在SpringBoot中的使用情况

在Spring Boot中使用MySQL的外连接查询时&#xff0c;通常通过JPA、MyBatis或JDBC等持久层框架来实现。外连接查询主要用于从多个表中获取数据&#xff0c;即使某些表中没有匹配的记录。外连接分为左外连接&#xff08;LEFT JOIN&#xff09;、右外连接&#xff08;RIGHT JOIN&…...

蓝桥杯试题:归并排序

一、问题描述 在一个神秘的岛屿上&#xff0c;有一支探险队发现了一批宝藏&#xff0c;这批宝藏是以整数数组的形式存在的。每个宝藏上都标有一个数字&#xff0c;代表了其珍贵程度。然而&#xff0c;由于某种神奇的力量&#xff0c;这批宝藏的顺序被打乱了&#xff0c;探险队…...

物联网(IoT)如何与人工智能(AI)的结合

物联网&#xff08;IoT&#xff09;与人工智能&#xff08;AI&#xff09;的结合是当前技术发展的重要趋势&#xff0c;通常被称为 AIoT&#xff08;人工智能物联网&#xff09;。这种结合通过将AI的计算能力和数据分析能力与物联网的海量设备连接能力相结合&#xff0c;实现了…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

day51 python CBAM注意力

目录 一、CBAM 模块简介 二、CBAM 模块的实现 &#xff08;一&#xff09;通道注意力模块 &#xff08;二&#xff09;空间注意力模块 &#xff08;三&#xff09;CBAM 模块的组合 三、CBAM 模块的特性 四、CBAM 模块在 CNN 中的应用 一、CBAM 模块简介 在之前的探索中…...