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

【入门教程一】基于DE2-115的My First FPGA 工程

1.1. 概述
这是一个简单的练习, 可以帮助初学者开始了解如何使用Intel Quartus 软件进行 FPGA 开发。
在本章节中,您将学习如何编译 Verilog 代码,进行引脚分配,创建时序约束,然后对 FPGA 进行编程,驱动开发板上8 个绿色 LED 的其中一个。您将使用一个 50MHz 的时钟输入(来自 板载晶振)来驱动计数器,并将LED 指定给其中一个计数器的输出位。
教程级别 初学者
1.2. 准备工作
硬件
Terasic DE2-115 套件
基于 Cyclone IV  FPGA 芯片。
作为扬名海内外的DE2开发板的升级款,DE2-115凭借功耗低、逻辑资源多、1存储器容量大、DSP功能、以及接口丰富等特性,可满足用户对多媒体、高品质图像处理、数字信号处理等各类开发要求,深受国内外高校师生的青睐。到目前为止,成千上万片的DE2-115已经在全球千余所名校实验室里“安家”,扮演着数字逻辑、EDA、数字系统设计等多项课程的“实力派网红”!主角儿,可谓是FPGA 教育界的新一代。
软件
Intel Quartus Prime 软件套件 Lite
此版本 FPGA 设计软件非常适合初学者,因为它可以免费下载而且不需要任何许可文
件。您可以通过链接:https://fpgasoftware.intel.com/?edition=lite 或者是 https://www.intel.com/content/www/us/en/software-kit/669444/intel-quartus-prime-lite-edition-design-software-version-17-1-for-windows.html 下载。
:安装文件较大(几千兆字节),而且需要花费很长时间才能下载和安装。为了最大
限度减少下载时间和所需的磁盘空间,我们建议您只下载本练习中所需的项目。取消选
中的“ Select All , 仅选择 Quartus Prime Cyclone V device support 。如下图。
当下载并安装完 Intel Quartus 软件,您可以开始准备创建工程。
? 为什么 Intel Quartus 软件下载如此之大(请参考 1.5 章节的解释)
:本文档中的截图基于 v17.1 。使用较早版本或更高版本的 Intel Quartus 软件时,用 户体验可能有所差异。
1.3. 创建 FPGA 工程
步骤 1. 创建 Intel Quartus 软件工程
1a. 打开 Intel Quartus Prime 软件套件 Lite 版本
1-2 Intel Quartus Prime 软件窗口
4 1b. 打开 New Project Wizard
1-3 点击 New Project Wizard 按钮
1c. Introduction 对话框下点击 Next
1-4 Introduction 对话框
5 1d. Directory Name Top-Level Entity
选择目录,用于存放工程。直接在桌面新建一个my_first_fpga的文件夹,并将工程路径指定到这个文件夹,工程名称和顶层实体都取名为my_first_fpga:
夹。点击 Next
1-5 工程位置明细
此工程目录用于本示例教程,但对于以后创建新的工程我们不做推荐。
? 以后的工程文件放在哪里 (请参考 1.5 章节的解释)
6 1e. 工程类型
继续选择Next,选择 Empty Project ,然后点击 Next
1-7 Project Type 对话框
1f. 添加文件
此处不必添加任何文件。点击 Next
1-8 Add Files 对话框
7 1g. Family, Device & Board Settings
:您可能需要展开窗口查看更多器件名称。
选择以下器件:
Family : Cyclone IV E
Device name : EP4CE115F29C7
:为了选择指定的器件,您需要点击向上 / 向下箭头,滚动器件支持清单直到 发现 EP4CE115F29C7 。或者您可以在 Name filter 框中输入器件名称,以缩小器 件清单。您也可能要展开 Name 区域查看整个器件名称。
1-9 Family Device 对话框
点击 Next
1h. EDA Tool Settings
我们将使用默认的 EDA 工具和设置,所以不需要改变。点击 Next
8 1-10 EDA Tools 对话框
1i. Summary
点击 Finish
1-11 Summary 对话框
9 将显示以下窗口。
1-12 Your First Project 窗口
步骤 2. 创建 HDL 文件
硬件描述语言( HDL
我们以 Verilog 作为 HDL 来使用。如果您熟悉 C 编程语言但对于 HDL 还是新 手,Verilog C 相似。
2a. 前往 File 选项( Quartus 软件主窗口),点击 New 。选择 Verilog HDL File ,然 后点击 OK
1-13 选择 New Verilog HDL File
10 2b. 选择 File > Save As ,选择 my_first_fpga 作为文件名。这是顶层文件名(my_first_fpga.v)。点击 Save
1-14 保存 Verilog HDL 文件
步骤 3. 设计 Verilog 模块
3a. my_first_fpga.v 文件内容如下:
module my_first_fpga(input  wire clk,        // 50MHz input clockoutput wire LED         // LED ouput
);// create a binary counter
reg [31:0] cnt;                 // 32-bit counterinitial begincnt <= 32'h00000000;            // start at zeroendalways @(posedge clk) begincnt <= cnt + 1;                 // count upend//assign LED to 25th bit of the counter to blink the LED at a few Hz
assign LED = cnt[24];endmodule
拷贝如上代码到 my_first_fpga.v 文件中:
1-15 在文本编辑器中粘贴 Verilog HDL 代码
3b. Analysis & Synthesis
右键点击 Analysis & Synthesis ,然后点击 Start ,对 Verilog 代码执行语法检查和
综合。
或者直接点击Task窗格的Analysis & Synthesis如果您没有看到 Task 窗格,请到 View 菜单选择 Utility Windows ,然后选 择 Tasks
再或者直接点击如下如的按钮进行Analysis & Synthesis:
1-16 开始 Analysis & Synthesis
12 ? Analysis & Synthesis 过程中发生了什么?(请参考 1.5 章节的解释)
如果该过程成功完成, Analysis & Synthesis 旁边将显示一个绿色勾型标记。如果在该过程
中提示有错误,请检查您的 Verilog 代码语法 , 确保与上述代码模块完全一致。
1-17 Analysis 完成
步骤 4. 选择引脚分配
4a. Quartus 顶部导航栏,选择 Assignments > Pin Planner
1-18 Pin Planner 窗口
请注意, input (clk) output (LED) Node Name 下面已经列出,因为您已经运行
Analysis & Synthesis
1-19 Pin Planner Location 设置
4b. 依次点击每一个引脚,使 Location 列突出显示,然后输入以下表格中的 LED 和 clk 信号的引脚位置。其余列会自动填充数据(目前保持 默认值即可)。
1-20 Pin Planner 全部设置完成
其实上面表格的引脚分配信息来自DE2-115_v.x.x.x_SystemCD\DE2_115_schematic\de2-115_mb.pdf文件或者来自DE2-115_v.x.x.x_SystemCD\\DE2_115_user_manual\DE2_115_User_manual.pdf:
4f. 关闭 Pin Planner Pin Planner 退出时会自动保存修改。
步骤 5. 创建 SDC 文件
编译 Verilog 代码之前,您需要为设计提供时序约束。您将创建 SDC(Synopsis
Design Constraints) 文件,其中包含有指示 Quartus 软件如何关闭设计中的时序的指
令。如果没有这个文件的话,您将在编译过程中遇到警告消息,因为 IntelQuartus
软件不知道如何关闭设计中的时序。
5a. my_first_fpga  工程目录下创建 my_first_fpg.sdc 文件。与 Verilog 文件( .v 扩展文件)在同一
个目录下。将 如下 文件内容拷贝到 my_first_fpg.sdc 文件。
# inform quartus that the clk port brings a 50MHz clock into our design so
# that timing closure on our design can be analyzedcreate_clock -name clk -period "50MHz" [get_ports clk]# inform quartus that the LED output port has no critical timing requirements
# its a single output port driving an LED, there are no timing relationships
# that are critical for thisset_false_path -from * -to [get_ports LED]

15 5b. 保存 blink.sdc 文件。
? 什么是 SDC 文件,为什么需要它(请参考 1.5 章节的解释)
1-21 SDC 文件位置
5c. 现在把该 SDC 文件添加到 Intel Quartus 软件工程。选择 Project > Add/Remove
Files in Project . 在出现的 Settings 对话框中,点击 File name 文本框右侧的 “…”
浏览按钮。显示文件浏览对话框。选择 blink.sdc 文件,并点击 Open 按钮关闭
该对话框。这时候 blink.sdc 文件会在工程文件清单里,点击 OK 按钮关闭
Settings 对话框。
步骤 6. 编译 Verilog 代码
6a. 右键点击 Compile Design ,然后点击 Start . 这些工具会对设计进行综合、布局
布线、组合和执行时序分析。因为只有少数代码行,编译只需花几分钟就可完
成。
? 布局布线过程中发生了什么(请参考 1.5 章节的解释)
? Assembler 过程中发生了什么(请参考 1.5 章节的解释)
? 什么是时序分析(请参考 1.5 章节的解释)
16 1-22 编译设计
编译完成后,将会出现类似于如下的总结报告。
1-23 编译总结
编译完 Verilog 代码后,就可以对 FPGA 进行编程。
步骤 7. FPGA 编程
最后一步就是对 FPGA 进行编程。
FPGA 进行编程,需要通过 USB Blaster 端口将开发板与电脑连接。
17 7a. 通过 USB Blaster  端口将开发板与电脑连接。
7b. 开发板连接电源
7c. 右键点击 Program Device (Open Programmer) 打开 Programmer 窗口。
1-24 打开 Quartus 软件的 Programmer 工具
7d. 选择 Hardware Setup
1-25 硬件设置
Currently selected hardware 的下拉项中选择 USB-Blaster[USB-0] ,然后点击 Close
1-26 Cable 选择
7e. 添加 .sof 文件
右键点击 EP4CE115F29 器件的 File 栏,选择 Change File
1-29 Change File
7g. 导向 output_file 文件夹,选择 my_first_fpga .sof ,然后点击 Open
20 1-30 选择 .sof 文件
这里的 my_first_fpga.sof 是配置文件, SRAM Object Files (.sof 文件 ) 是二进制文件包含
配置 SRAM-based 器件的数据,我们的 FPGA 是基于 SRAM 的。 Intel Quartus
件的 Program Device ( 也称为 Quartus Programmer) 查看 SOF 文件并为 FPGA
件获取下载的 bit stream
7h. 勾选 Program/Con fi gure ,然后点击 Start
1-31 开始编程
21 步骤 8. 观察闪烁的 LED
如果 Progress 进度显示 100% (Successful) LED[0] 将闪烁。
1-32 编程成功
1-33 LED 闪烁
1.4. 拓展实验
更改闪烁频率
到此,您已经获得一个成功的 LED 闪烁工程,可以使用计数器的不同 bit 来修改 LED 的闪烁 22频率。 1HZ 1 次每秒( 1 秒一个周期),以 1HZ 的频率闪烁意味着 LED 每秒闪烁一次。 2HZ 就 是LED 每秒闪烁 2 次。 0.25HZ 就是指每 4 LED 闪烁一次(慢闪)。使用计数器更高的 bit 获得 更慢的闪烁,使用低位的bit 可以获得更快闪烁(例如 cnt[22] )。测试不同的计数器位来观察 LED闪烁情况。
时钟和计数器公式
cnt[n] 其中 n 等于计数器位
2 𝑛 ; verilog 示例代码中设置 n 24
2 24 = 16777216
时钟是 50MHZ 50 000 000HZ
Clock / 2 n 等于每秒闪烁次数
50,000,000 / 16,777,216 = 2.9802
大约每秒三次闪烁。
您需要做以下三点进行更改
1. 修改 Verilog 文件( blink.v ),在赋值语句中选择一个不同的计数器 bit
2. 重新编译设计
3. 重新为 FPGA 器件编程
添加更多 LED
试着将剩余的 7 LED 中的一个或多个连到其他计数器 bits, 每个 LED 以不同的频率闪烁。例 如,可以将一个新LED 连到计数器 bit23 ,会闪烁两次,和 bit 24 闪烁一样快。或者添加其余 全部7 LED ,每一个都连到特定的计数器 bit
您需要做以下几点进行更改:
1. 修改 verilog 代码
(a) 在模块定义中添加新的 LED
(b) 列出新的 LED ,作为输出
(c) 将每个新的 LED 赋给特定的计数器 bit cnt[n]
? 我对硬件设计不熟悉,在哪能获取包含这些更改的 Verilog 代码?(请参考 1.5 章节的解
释)
2. 运行 Analysis & Synthesis
3. Pin Planner 分配 LED 输出给引脚
23 确保设置合适的 I/O standard, current strength slew rate I/O 引脚与 LED 的连接如
下所示:
4. 重新编译设计
5. 重新对器件编程
1.5. 解释
为什么 Intel Quartus 下载量如此之大?
Intel Quartus 下载包含很多不同精密工具,用于创建自定义芯片设计,比如模拟 , 综合工具,
布局和布线引擎,时序分析仪和器件编程。几乎所有的这些功能都嵌入到 Intel Prime
Software 套件 FPGA 设计软件本身。下载也包括针对 Nios II soft CPU 的嵌入式软件设计
套件,以及一个或多个 FPGA 种类数据库 如本实例中的 Cyclone V FPGA 数据库。
以后的工程文件需要放在哪?
以下是在为工程选择目录时应该采取的一些指导 :
• 不要将工程放到 Intel Quartus 软件工具目录。新的 Intel Quartus 版本每 6 个月发布,
所以将它们放到具体版本的目录,会使得它们在每个新版本安装后会显得孤立。更坏
的情况是,如果您删除旧版本的工具,工程可能会丢失。
• 避免工程路径名称有空格,因为一些工具的目录路径不允许有空格。在路径名称中,
需要用下划线或连接符代替空格
• 使用您有读 / 取权限的路径作为目录。听起来很直观,但是有时候 IT 部门会限制管理
员权限。确保创建的文件夹不需要管理员权限。
analysis &synthesis 过程中发生了什么?
Analysis & Synthesis 过程:
24 • 检查设计文件的语法和语义错误。
• 执行 netlist extraction 构建一个集成了所有设计文件的数据库。
• 将硬件描述语言 (HDL) 代码综合到适合目标 FPGA 种类的硬件模块
什么是 SDC 文件?为什么需要他?
SDC 代表 Synopsys Design Constraints ,是一种行业标准格式,它定义了硬件 (silicon) 设计的
时序约束,例如器件的目标频率,以及外围设备的时序。 SDC 文件为 Intel Quartus 软件提
供了一种验证所生成的系统是否满足其计时要求的方法。
FPGA 的综合过程中, Intel Quartus 软件调用了一个名为 TimeQuest 的设计工具,它读取
时序约束文件,计算内部 FPGA 信号的时序,并将这些时序与 SDC 文件指定的时序要求进
行比较。此过程将会创建一个报告,该报告验证是否满足时序要求,并 / 或识别未能满足时
序要求并需要优化的信号。
布局布线过程中会发生什么?
fitter 将综合设计的逻辑布局布线到目标器件资源中。把它想象成一个布线器,上面陈列一
块印制电路板,用铜线把各种器件连接在一起。在这里,器件是逻辑资源 ( 例如查找表、寄
存器、内存、乘法器等 ) ,而 traces FPGA 器件内的“导线”。
Assembler 过程中发生了什么?
Assembler 从一个成功的布局布线生成一个编程镜像,然后下载到 FPGA 器件。
什么是时序分析?
时序分析是对器件中的逻辑的时序进行综合、布局布线,以确保满足所有时序要求的过程。
目的是在满足所有时序约束的情况下实现“时序收敛”。
我对硬件设计不熟悉,我在哪能获得包含这些更改的 Verilog 代码?
就在这里:
1. // create module
2. module blink(
3. input wire clk, // 50MHz input clock
4. output wire [7:0] LED // array of 8 LEDs
5. );
6.
7. // create a binary counter
8. reg [31:0] cnt; //32 bit counter
9.
10. initial begin
11.
12. cnt <= 32’h00000000; // start count at zero
13.
14. end
15.
16. always @(posedge clk) begin
17.
18. cnt <= cnt+1; // count up
19.
20. end
21.
22. //assign LEDs to bits 28 through 21 of the counter
23.
24. assign LED = cnt[28:21];
25.
26. endmodule

相关文章:

【入门教程一】基于DE2-115的My First FPGA 工程

1.1. 概述 这是一个简单的练习&#xff0c; 可以帮助初学者开始了解如何使用Intel Quartus 软件进行 FPGA 开发。 在本章节中&#xff0c;您将学习如何编译 Verilog 代码&#xff0c;进行引脚分配&#xff0c;创建时序约束&#xff0c;然后对 FPGA 进行编程&#xff0c;驱动开…...

mysql中的索引和分区

目录 1.编写目的 2.索引 2.1 创建方法 2.2 最佳适用 2.3 索引相关语句 3.分区 3.1 创建方法 3.2 最佳适用 Welcome to Code Blocks blog 本篇文章主要介绍了 [Mysql中的分区和索引] ❤博主广交技术好友&#xff0c;喜欢文章的可以关注一下❤ 1.编写目的 在MySQL中&…...

项目实战--C#实现图书馆信息管理系统

本项目是要开发一个图书馆管理系统&#xff0c;通过这个系统处理常见的图书馆业务。这个系统主要功能是&#xff1a;&#xff08;1&#xff09;有客户端&#xff08;借阅者使用&#xff09;和管理端&#xff08;图书馆管理员和系统管理员使用&#xff09;。&#xff08;2&#…...

信号【Linux】

文章目录 信号处理方式&#xff08;信号递达&#xff09;前后台进程 终端按键产生信号kill系统调用接口向进程发信号阻塞信号sigset_tsigprocmasksigpending内核态与用户态&#xff1a;内核空间与用户空间内核如何实现信号的捕捉 1、信号就算没有产生&#xff0c;进程也必须识别…...

Kafka Producer之ACKS应答机制

文章目录 1. 应答机制2. 等级03. 等级14. 等级all5. 设置等级6. ISR 1. 应答机制 异步发送的效率高&#xff0c;但是不安全&#xff0c;同步发送安全&#xff0c;但是效率低。 无论哪一种&#xff0c;有一个关键的步骤叫做回调&#xff0c;也就是ACKS应答机制。 其中ACKS也分…...

【深入理解SpringCloud微服务】深入理解Eureka核心原理

深入理解Eureka核心原理 Eureka整体设计Eureka服务端启动Eureka三级缓存Eureka客户端启动 Eureka整体设计 Eureka是一个经典的注册中心&#xff0c;通过http接收客户端的服务发现和服务注册请求&#xff0c;使用内存注册表保存客户端注册上来的实例信息。 Eureka服务端接收的…...

算法——滑动窗口(day7)

904.水果成篮 904. 水果成篮 - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 根据题意我们可以看出给了我们两个篮子说明我们在开始采摘到结束的过程中只能有两种水果的种类&#xff0c;又要求让我们返回收集水果的最大数目&#xff0c;这不难让我们联想到题目…...

Django学习第一天(如何创建和运行app)

前置知识&#xff1a; URL组成部分详解&#xff1a; 一个url由以下几部分组成&#xff1a; scheme&#xff1a;//host:port/path/?query-stringxxx#anchor scheme:代表的是访问的协议&#xff0c;一般为http或者ftp等 host&#xff1a;主机名&#xff0c;域名&#xff0c;…...

VScode连接虚拟机运行Python文件的方法

声明&#xff1a;本文使用Linux发行版本为rocky_9.4 目录 1. 在rocky_9.4最小安装的系统中&#xff0c;默认是没有tar工具的&#xff0c;因此&#xff0c;要先下载tar工具 2. 在安装好的vscode中下载ssh远程插件工具 3. 然后连接虚拟机 4. 查看python是否已经安装 5. 下载…...

通义千问AI模型对接飞书机器人-模型配置(2-1)

一 背景 根据业务或者使用场景搭建自定义的智能ai模型机器人&#xff0c;可以较少我们人工回答的沟通成本&#xff0c;而且可以更加便捷的了解业务需求给出大家设定的业务范围的回答&#xff0c;目前基于阿里云的通义千问模型研究。 二 模型研究 参考阿里云帮助文档&#xf…...

[k8s源码]6.reflector

Reflector 和 Informer 是 Kubernetes 客户端库中两个密切相关但职责不同的组件。Reflector 是一个较低级别的组件&#xff0c;主要负责与 Kubernetes API 服务器进行交互&#xff0c;执行资源的初始列表操作和持续的监视操作&#xff0c;将获取到的数据放入队列中。而 Informe…...

前台文本直接取数据库值doFieldSQL插入SQL

实现功能&#xff1a;根据选择的车间主任带出角色。 实现步骤&#xff1a;OA的“字段联动”功能下拉选项带不出表“hrmrolemembers”&#xff0c;所以采用此方法。 doFieldSQL("select roleid from HrmResource as a inner join hrmrolemembers as b on a.id b.resource…...

【06】LLaMA-Factory微调大模型——微调模型评估

上文【05】LLaMA-Factory微调大模型——初尝微调模型&#xff0c;对LLama-3与Qwen-2进行了指令微调&#xff0c;本文则介绍如何对微调后的模型进行评估分析。 一、部署微调后的LLama-3模型 激活虚拟环境&#xff0c;打开LLaMA-Factory的webui页面 conda activate GLM cd LLa…...

数学建模学习(1)遗传算法

一、简介 遗传算法&#xff08;Genetic Algorithm, GA&#xff09;是一种用于解决优化和搜索问题的进化算法。它基于自然选择和遗传学原理&#xff0c;通过模拟生物进化过程来寻找最优解。 以下是遗传算法的主要步骤和概念&#xff1a; 初始化种群&#xff08;Initialization&a…...

NumPy冷知识66个

NumPy冷知识66个 多维切片: NumPy支持多维切片&#xff0c;可以通过指定多个索引来提取多维数组的子集。 复杂数支持: NumPy可以处理复数&#xff0c;提供了复数的基本运算和函数。 比特运算: NumPy支持比特运算&#xff0c;如与、或、异或等。 数据存储格式: NumPy可以将数…...

Wi-SUN无线通信技术 — 大规模分散式物联网应用首选

引言 在数字化浪潮的推动下&#xff0c;物联网&#xff08;IoT&#xff09;正逐渐渗透到我们生活的方方面面。Wi-SUN技术以其卓越的性能和广泛的应用前景&#xff0c;成为了大规模分散式物联网应用的首选。本文将深入探讨Wi-SUN技术的市场现状、核心优势、实际应用中的案例以及…...

在 Ubuntu Server 22.04 上安装 Docker 的详细步骤

在 Ubuntu Server 22.04 上安装 Docker 的详细步骤 本文档详细记录了在 Ubuntu Server 22.04 上安装 Docker 的完整过程&#xff0c;包括解决过程中遇到的问题。希望能对读者有所帮助。 安装过程&#xff0c;重点需要看官方文档。https://docs.docker.com/engine/install/ubu…...

前端使用 Konva 实现可视化设计器(18)- 素材嵌套 - 加载阶段

本章主要实现素材的嵌套&#xff08;加载阶段&#xff09;这意味着可以拖入画布的对象&#xff0c;不只是图片素材&#xff0c;还可以是嵌套的图片和图形。 请大家动动小手&#xff0c;给我一个免费的 Star 吧~ 大家如果发现了 Bug&#xff0c;欢迎来提 Issue 哟~ github源码 g…...

vue3 -layui项目-左侧导航菜单栏

1.创建目录结构 进入cmd,先cd到项目目录&#xff08;项目vue3-project&#xff09; cd vue3-project mkdir -p src\\views\\home\\components\\menubar 2.创建组件文件 3.编辑menu-item-content.vue <template><template v-if"item.icon"><lay-ic…...

Spring AOP(1)

目录 一、AOP 概述 什么是Spring AOP&#xff1f; 二、Spring AOP 快速入门 1、引入AOP依赖 2、编写AOP程序 三、Spring AOP 详解 1、Spring AOP的核心概念 &#xff08;1&#xff09;切点&#xff08;Pointcut&#xff09; &#xff08;2&#xff09;连接点&#xff…...

第1关 -- Linux 基础知识

闯关任务 完成SSH连接与端口映射并运行hello_world.py ​​​​ ssh -p 37367 rootssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyCheckingno可选任务 1 将Linux基础命令在开发机上完成一遍 可选任务 2 使用 VSCODE 远程连接开发机并创建一个conda环境 …...

tensorflow keras Model.fit returning: ValueError: Unrecognized data type

题意&#xff1a;TensorFlow Keras 的 Model.fit 方法返回了一个 ValueError&#xff0c;提示数据类型无法识别 问题背景&#xff1a; Im trying to train a keras model with 2 inputs: an image part thats a tf.data.Dataset and a nor mal part represented by a pd.DataF…...

虚拟机固定配置IP

在Hyper-V中&#xff0c;vEthernet (Default Switch) 是Hyper-V自带的默认虚拟交换机&#xff0c;它允许虚拟机直接连接到宿主机网络或外部网络。这个虚拟交换机可以通过Hyper-V管理器或PowerShell等工具进行管理和配置。以下是具体的操作步骤&#xff1a; 一、通过Hyper-V管理…...

【Pytorch实用教程】pytorch中random_split用法的详细介绍

在 PyTorch 中,torch.utils.data.random_split 是一个非常有用的函数,用于将数据集随机分割成多个子集。这在机器学习和深度学习中非常常见,特别是当你需要将数据集分割成训练集和测试集或验证集时。这里是 random_split 的详细用法介绍: 功能 random_split 用于随机地将…...

第二讲:NJ网络配置

Ethernet/IP网络拓扑结构 一. NJ EtherNet/IP 1、网络端口位置 NJ的CPU上面有两个RJ45的网络接口,其中一个是EtherNet/IP网络端口(另一个是EtherCAT的网络端口) 2、网络作用 如图所示,EtherNet/IP网络既可以做控制器与控制器之间的通信,也可以实现与上位机系统的对接通…...

pytorch中常见的模型3种组织方式 nn.Sequential(OrderedDict)

在nn.Sequential中嵌套OrderedDict组织网络,以对层进行命名 import torch import torch.nn as nn from collections import OrderedDictclass OrderedDictCNN(nn.Module):def __init__(self):super(OrderedDictCNN, self).__init__()# 使用 OrderedDict 定义网络层self.model …...

达梦数据库DM8-索引篇

目录 一、前景二、名词三、语法1、命令方式创建索引1.1 创建索引空间1.2.1 创建普通索引并指定索引数据空间1.2.2 另一种没验证&#xff0c;官方写法1.3 复合索引1.4 唯一索引1.5 位图索引1.6 函数索引 2、创建表时候创建索引3、可视化方式创建索引3.1 打开DM管理工具3.2 找到要…...

【中项】系统集成项目管理工程师-第4章 信息系统架构-4.5技术架构

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…...

随机梯度下降 (Stochastic Gradient Descent, SGD)

SGD 是梯度下降法的一种变体。与批量梯度下降法不同&#xff0c;SGD 在每次迭代中仅使用一个样本&#xff08;或一个小批量样本&#xff09;的梯度来更新参数。它能更快地更新参数&#xff0c;并且可以更容易地跳出局部最优解。 原理 SGD 的基本思想是通过在每次迭代中使用不…...

TDengine 3.3.2.0 发布:新增 UDT 及 Oracle、SQL Server 数据接入

经过数月的开发和完善&#xff0c;TDengine 3.3.2.0 版本终于问世了。这一版本中既有针对开源社区的功能优化&#xff0c;也有从企业级用户需求出发做出的功能调整。在开源版本中&#xff0c;我们增强了系统的灵活性和兼容性&#xff1b;而在企业级版本中&#xff0c;新增了关键…...

Ubuntu 24.04 LTS 无法打开Chrome浏览器

解决办法&#xff1a; 删除本地配置文件&#xff0c;再次点击Chrome图标&#xff0c;即可打开。 rm ~/.config/google-chrome/ -rf ref: Google chrome not opening in Ubuntu 22.04 LTS - Ask Ubuntu...

linux中RocketMQ安装(单机版)及springboot中的使用

文章目录 一、安装1.1、下载RocketMQ1.2、将下载包上传到linux中&#xff0c;然后解压1.3、修改runserver.sh的jvm参数大小&#xff08;根据自己服务器配置来修改&#xff09;1.4、启动mqnamesrv &#xff08;类似于注册中心&#xff09;1.5、修改runbroker.sh的jvm参数大小&am…...

亚信安全终端一体化解决方案入选应用创新典型案例

近日&#xff0c;由工业和信息化部信息中心主办的2024信息技术应用创新发展大会暨解决方案应用推广大会成功落幕&#xff0c;会上集中发布了一系列技术水平先进、应用效果突出、产业带动性强的信息技术创新工作成果。其中&#xff0c;亚信安全“终端一体化安全运营解决方案”在…...

Django视图与URLs路由详解

在Django Web框架中&#xff0c;视图&#xff08;Views&#xff09;和URLs路由&#xff08;URL routing&#xff09;是Web应用开发的核心概念。它们共同负责将用户的请求映射到相应的Python函数&#xff0c;并返回适当的响应。本篇博客将深入探讨Django的视图和URLs路由系统&am…...

怎么关闭 Windows 安全中心,手动关闭 Windows Defender 教程

Windows 安全中心&#xff08;也称为 Windows Defender Security Center&#xff09;是微软 Windows 操作系统内置的安全管理工具&#xff0c;用于监控和控制病毒防护、防火墙、应用和浏览器保护等安全功能。然而&#xff0c;在某些情况下&#xff0c;用户可能需要关闭 Windows…...

洛谷看不了别人主页怎么办

首先&#xff0c;我们先点进去 可以看到&#xff0c;看不了一点 那我们看向上方&#xff0c;就可以发现&#xff0c;我们那有个URL&#xff0c;选中 把光标插到n和/中间 把.cn删了&#xff0c;变成国际服 我们就可以看了 但是国际服还没搭建完&#xff0c;跳转的时候可能503&a…...

邮件安全篇:企业电子邮件安全涉及哪些方面?

1. 邮件安全概述 企业邮件安全涉及多个方面&#xff0c;旨在保护电子邮件通信的机密性、完整性和可用性&#xff0c;防止数据泄露、欺诈、滥用及其他安全威胁。本文从身份验证与防伪、数据加密、反垃圾邮件和反恶意软件防护、邮件内容过滤与审计、访问控制与权限管理、邮件存储…...

软件测试09 自动化测试技术(Selenium)

重点/难点 重点&#xff1a;理解自动化测试的原理及其流程难点&#xff1a;Selinum自动化测试工具的使用 目录 系统测试 什么是系统测试什么是功能测试什么是性能测试常见的性能指标有哪些 自动化测试概述 测试面临的问题 测试用例数量增多&#xff0c;工作量增大&#xff…...

记录解决springboot项目上传图片到本地,在html里不能回显的问题

项目场景&#xff1a; 项目场景&#xff1a;在我的博客系统里&#xff1a;有个相册模块&#xff1a;需要把图片上传到项目里&#xff0c;在html页面上显示 解决方案 1.建一个文件夹 例如在windows系统下。可以在项目根目录下建个photos文件夹&#xff0c;把上传的图片文件…...

C++ 中 const 关键字

C 中 const 关键字 2009-02-19 2024-07-23 补充C11后的做法 在 C 中&#xff0c;const 是一个关键字&#xff08;也称为保留字&#xff09;&#xff0c;它用于指定变量或对象的值在初始化后不能被修改。关键字是编程语言中具有特殊含义的词汇&#xff0c;编译器会识别这些词并…...

客梯自动监测识别摄像机

当今社会&#xff0c;随着城市建设的快速发展&#xff0c;客梯作为现代化建筑不可或缺的一部分&#xff0c;其安全性与效率显得尤为重要。为了提升客梯的安全管理水平&#xff0c;智能监测技术应运而生&#xff0c;尤其是客梯自动监测识别摄像机系统的应用&#xff0c;为乘客和…...

为什么那么多人学习AI绘画?工资香啊!

在当今这个科技日新月异的时代&#xff0c;AI绘画作为数字艺术与人工智能融合的璀璨成果&#xff0c;正吸引着无数人投身其中&#xff0c;而“工资香啊&#xff01;”无疑是这一热潮背后不可忽视的驱动力之一。 AI绘画的高薪待遇是吸引众多学习者的关键因素。随着市场对AI艺术…...

国产JS库(js-tool-big-box)7月度总结

js-tool-big-box开发已经有3个月了&#xff0c;团队内的小伙伴进行了热烈的讨论&#xff0c;持续做了功能迭代。小伙伴们也做了艰苦卓绝的文档分享&#xff0c;有纯功能分享类的&#xff0c;有带有小故事的&#xff0c;有朋友们利用自己独自网站分发分享的。7月份快要结束了&am…...

c++ 高精度加法(只支持正整数)

再给大家带来一篇高精度&#xff0c;不过这次是高精度加法&#xff01;话不多说&#xff0c;开整&#xff01; 声明 与之前那篇文章一样&#xff0c;如果看起来费劲可以结合总代码来看 定义 由于加法进位最多进1位&#xff0c;所以我们的结果ans[]的长度定义为两个加数中最…...

python键盘操作工具:ctypes、pyautogui

这里模拟 Win Ctrl L 组合键 1、ctypes ctypes库&#xff0c;它允许我们直接调用Windows API来模拟键盘输入。 import ctypes import time# 定义所需的常量和结构 LONG ctypes.c_long DWORD ctypes.c_ulong ULONG_PTR ctypes.POINTER(DWORD) WORD ctypes.c_ushortclass…...

计算机网络发展历史

定义和基本概念 计算机网络是由多个计算设备通过通信线路连接起来的集合&#xff0c;这些设备能够互相交换数据、消息和资源。计算机网络的核心功能是实现数据的远程传输和资源共享&#xff0c;它使得地理位置的限制被大大减弱&#xff0c;极大地促进了信息的自由流动和人类社…...

记录安装android studio踩的坑 win7系统

最近在一台新电脑上安装android studio,报了很多错误&#xff0c;也是费了大劲才解决&#xff0c;发出来大家一起避免一些问题&#xff0c;找到解决方法。 安装时一定要先安装jdk&#xff0c;cmd命令行用java -version查当前的版本&#xff0c;没有的话&#xff0c;先安装jdk,g…...

Python图形编程-PyGame快速入门

PyGame快速入门 文章目录 PyGame快速入门1、什么是PyGame2、安装PyGame3、创建PyGame窗口4、处理事件5、绘制对象6、移动对象7、加载和显示图像8、播放声音9、处理用户输入10、碰撞检测11、动画精灵12、管理游戏状态13、Pygame 中的典型主游戏循环1、什么是PyGame Pygame 是一…...

邦芒宝典:8种方法调整职场心态

在职场中拼斗当然要有好的心态&#xff0c;您知道职场心态如何调整吗&#xff1f; ​ ​方法1&#xff1a;自我调整 ​“思想可以使天堂变成地狱&#xff0c;也可以使地狱变成天堂。”你不能样样顺利&#xff0c;但可以事事尽心;你不能左右天气&#xff0c;但可以改变心情;你…...

华为OD2024D卷机试题汇总,含D量50%+,按算法分类刷题,事半功倍

目录 专栏导读华为OD机试算法题太多了&#xff0c;知识点繁杂&#xff0c;如何刷题更有效率呢&#xff1f; 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…...