【正点原子FPGA连载】 第四章Vivado软件的安装和使用 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

news2024/12/23 13:09:36

1)实验平台:正点原子MPSoC开发板
2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670
3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html

第四章Vivado软件的安装和使用

Vivado Design Suite是Xilinx公司的综合性FPGA开发软件,可以完成从设计输入到硬件配置的完整FPGA设计流程。本章我们将学习如何安装Vivado软件以及Vivado软件的使用方法,为大家在接下来学习实战篇打下基础。
本章包括以下几个部分:
444.1Vivado软件的安装
4.2Vivado软件的使用
4.3在线逻辑分析仪的使用
4.4在Vivado中进行功能仿真

4.1Vivado软件的安装

X Xilinx公司每年都会对Vivado设计套件进行更新,各个版本之间除界面以及其它性能的优化之外,基本的使用功能都是一样的,我们光盘中提供的是最新版Vivado 19.2版本,接下来安装Vivado 19.2(以下简称Vivado)版本的软件。
首先在DFZU2EG/4EV MPSoC开发板资料盘(B盘)→Vivado 19.2文件夹下找到Vivado 19.2的安装包文件,文件列表如下图所示:
在这里插入图片描述

图 4.1.1 Vivado安装包文件夹
将压缩包解压出来(注意,解压目录的路径名称只能够包含字母、数字、下划线,否则安装程序有可能出问题),为避免在安装过程中出错,在开始安装之前,请先关闭安全或杀毒软件。双击解压出来的文件夹下的“xsetup.exe”,开始安装Vivado软件,如下图所示:
在这里插入图片描述

图 4.1.2 双击“xsetup.exe”
进入Vivado的安装引导页面,如下图所示:
在这里插入图片描述

图 4.1.3 Vivado软件的安装引导页面
在接下来的页面中,勾选3个“I Agree”,然后点击“next”如下图所示:
在这里插入图片描述

图 4.1.4 勾选“I Agree”
接下来是选择版次,这里我们选择全功能的版次,即“System Edition”,其包含最多的子组件。如下图所示:
在这里插入图片描述

图 4.1.5 选择版次
接下来是选择工具组件和器件库。为了节省存储空间,我们将用不到的工具组件和器件库去掉,如下图所示:
在这里插入图片描述

图 4.1.6 选择组件和器件库
最下面的“Disk Space Required”表示在当前选项下Vivado在安装完成后所占用的磁盘空间大小,为76.42GB。由此可见,Vivado对硬盘存储空间的占用相对来说还是挺大的。
点击Next,进入安装目录设置页面,如下图所示:
在这里插入图片描述

图 4.1.7 安装目录设置
图中红色方框内是对安装目录的设置,默认安装在C盘下的“Xilinx”文件夹下,如果需要,可以点击后面的三个点来修改安装目录(注意,安装路径只能够包含字母、数字、下划线,否则安装程序有可能出问题)。其他的设置保持默认即可。
点击Next,进入Summary界面,该界面总结了前面所有安装的配置信息,供用户浏览确认。确认无误后,点击“Install”开始安装Vivado设计套件,如下图所示。(由于Vivado在安装期间会占用大量的电脑CPU资源和内存资源,所以笔者建议在开始安装之前,尽量关闭电脑中其他的不必要的应用软件)
在这里插入图片描述

图 4.1.8 开始安装
之后会出现下面的正在安装界面:
在这里插入图片描述

图 4.1.9 正在安装
安装过程可能会耗费一些时间,请读者耐心等待。
在安装期间可能会出面如下消息:
在这里插入图片描述

图 4.1.10 点击确定即可
弹出的这个界面是提示我们断开所有的Xilinx下载器与电脑的连接。值得注意是,在安装Vivado软件的过程中,会安装Xilinx下载器的驱动程序,这里必须断开Xilinx下载器和电脑的连接,否则下载器的驱动可能安装失败。断开连接后,点击确定即可。
最后出现了安装成功的消息窗口,如下图所示:
在这里插入图片描述

图 4.1.11 安装成功
我们直接点击确定即可。一同弹出的还有“Vivado License Manager”窗口,我们可以选择30天试用期,也可以通过购买Xilinx正版的License等途径来正常使用(请查看安装包目录下“安装说明.txt”)。如下图所示:
在这里插入图片描述

图 4.1.12 “Vivado License Manager”窗口
至此,Vivado设计套件的安装就成功完成了,我们可以在电脑桌面上看到Vivado2019.2的图标,如下图所示:
在这里插入图片描述

图 4.1.13 Vivado 2019.2的桌面图标
4.2Vivado软件的使用
在开始使用Vivado软件之前,我们先来了解一下Vivado软件的使用流程,如下图所示:
在这里插入图片描述

图 4.2.1 Vivado软件使用流程
从上图可以看出,首先打开Vivado软件,新建一个工程,在新建工程的时候,我们可以通过新建工程向导的方式来创建工程;工程建立完成后,我们需要新建一个Verilog顶层文件,然后我们将设计的代码输入到新建的Verilog顶层文件中;HDL源代码输入完毕之后,就是对设计文件进行分析与综合了。
在代码输入以及设计分析阶段,Vivado软件会检查代码,如果代码出现语法错误,那么Vivado软件将会给出相关错误提示。在FPGA设计中,综合(Synthesis)就是将RTL设计转变为由FPGA器件中的查找表(LUT)、触发器(FF)等各种底层电路单元所组成的网表,在这个过程中综合器也会对设计进行优化,例如,删除多余的逻辑等等。
综合完成后,我们需要进行约束的输入。约束表达了设计者期望满足的时序要求,规范了设计的时序行为,并在综合、实现阶段来指导工具进行布局、布线,工具会按照你的约束尽量去努力实现以满足时序要求,并在时序报告中给出结果。常用的约束包括时序约束、引脚约束等等。
接下来就可以实现整个设计了,包括布局和布线等。如果实现成功,则Vivado会给出提示结果。此时,就可以生成用于下载到器件中的比特流文件了。最后,我们会通过下载器来将这个比特流文件下载到FPGA中,完成整个开发流程。
在这里,我们只是简单的介绍了一下上述的流程图,让大家对Vivado软件的开发流程有个大致的了解。接下来我们就以LED灯闪烁实验的工程为例,对每个流程进行详细的操作演示,一步步、手把手带领大家学习使用Vivado软件。
4.2.1新建工程
我们直接双击桌面上的Vivado 2019.2软件图标,打开Vivado软件,Vivado软件启动界面如下图所示,我们点击“Create Project来创建一个新的工程”。
在这里插入图片描述

图 4.2.2 Vivado软件启动界面
出现下图所示窗口,我们直接点击“Next”,如下图所示。

图 4.2.3 新建工程向导
接下来输入工程的名称和路径。名称要能反应出工程所实现的功能,本次工程实现了LED闪烁的功能,因此项目名称命名为“led_twinkle”。工程路径是指定本次工程存放在电脑磁盘中的位置,这个大家可以自行选择路径,需要说明的是,工程路径不能包含中文、空格或者其它一些特殊的符号,否则工程会创建失败。工程名和路径的设置如下图所示。

图 4.2.4 输入工程名称和路径
注意,由于默认勾选了“Create project subdirectory”选项,Vivado会在所选工程目录下自动创建一个与工程名同名的文件夹,用于存放工程内的各种文件。并且Vivado会自动管理工程文件夹内的各种工程文件,并创建相应的子目录,这为我们的开发工作带来了很大的便捷。
我们继续点击“Next”按钮,接下来是工程类型的选择,我们选择“RTL Project”,如下图所示:
在这里插入图片描述

图 4.2.5 工程类型的选择
这里简单介绍下各个工程类型的含义。“RTL Project”是指按照正常设计流程所选择的类型,这也是常用的一种类型,“RTL Project”下的“Do not specify sources at this time”用于设置是否在创建工程向导的过程中添加设计文件,如果勾选后,则不创建或者添加设计文件;“Post-synthesis Project”在导入第三方工具所产生的综合后网表时才选择;“I/O Planning Project”一般用于在开始RTL设计之前,创建一个用于早期IO规划和器件开发的空工程;“Imported Project”用于从ISE、XST或Synopsys Synplify导入现有的工程源文件;“Example Project”是指创建一个Vivado提供的工程模板。
选择了“RTL Project”后,我们点击“Next”,进入添加源文件页面。注意,如果勾选中图 4.2.5中“RTL Project”下的“Do not specify sources at this time”,则不会出现添加源文件的界面。
在弹出添加源文件的界面后,可以在此处创建/添加源文件,当然也可以直接点击“Next”,创建完工程后再创建/添加源文件。这里直接点击“Next”,如下图所示:
在这里插入图片描述

图 4.2.6 添加源文件
接下来是添加约束文件,我们也是直接点击“Next”,创建完工程后再创建/添加约束文件,如下图所示:
在这里插入图片描述

图 4.2.7 添加约束文件
接下来选择开发板的芯片型号,我们可以直接在搜素框中输入完整的芯片型号,大家根据自己所使用的开发板型号进行选择。如果使用的是XCZU4EV开发板,则输入“xczu4ev-sfvc784-1-i”,如下图所示:
在这里插入图片描述

图 4.2.8 MPSoC XCZU4EV开发板芯片型号
如果使用的是XCZU2EG开发板,则输入“xczu2eg-sfvc784-2-i”,如下图所示:
在这里插入图片描述

图 4.2.9 MPSoC XCZU2EG开发板芯片型号
在搜素框中输入完整的芯片型号后,在“Part”一栏会出现唯一匹配的型号,单击选中“Part”一栏的芯片型号,然后点击“Next”按钮。
需要说明的是,本次工程以XCZU4EV开发板为例,接下来的软件截图可能会出现XCZU4EV器件的芯片型号。大家使用XCZU4EV开发板和XCZU2EG开发板除了在创建工程向导选择的芯片型号不一样外,其余操作都是一样的,因此,我们接下来只贴XCZU4EV开发板器件的软件截图。
最后进入工程概览页面,这个页面将之前几个步骤中的设置全部列了出来,供用户检查,选择不同的芯片型号,概览页面列举的芯片型号也不一样,我们直接点击“Finish”按钮完成工程的创建,如图 4.2.10所示。
在这里插入图片描述

图 4.2.10 工程概览(Summary)页面
工程创建完成后,就进入了Vivado的工程主界面,如下图所示:
在这里插入图片描述

图 4.2.11 Vivado工程主界面
下面介绍Vivado工程主界面中的几个主要子窗口:
(1)Flow Navigator。Flow Navigator提供对命令和工具的访问,其包含从设计输入到生成比特流的整个过程。 在点击了相应的命令时,整个Vivado工程主界面的各个子窗口可能会作出相应的更改。
(2)数据窗口区域。默认情况下,Vivado IDE的这个区域显示的是设计源文件和数据相关的信息。
• Sources窗口:显示层次结构(Hierarchy)、IP源文件(IP Sources)、库(Libraries)和编译顺序(Compile Order)的视图。
• Netlist窗口:提供分析后的(elaborated)或综合后的(synthesized)逻辑设计的分层视图。
(3)Properties窗口:显示有关所选逻辑对象或器件资源的特性信息。
(4)工作空间(Workspace):工作区显示了具有图形界面的窗口和需要更多屏幕空间的窗口,包括:
• Project Summary。提供了当前工程的摘要信息,它在运行设计命令时动态地更新。
• 用于显示和编辑基于文本的文件和报告的Text Editor。
• 原理图(Schematic)窗口。
• 器件(Device)窗口。
• 封装(Package)窗口。
(5)结果窗口区域:在Vivado IDE中所运行的命令的状态和结果,显示在结果窗口区域中,这是一组子窗口的集合。在运行命令、生成消息、创建日志文件和报告文件时,相关信息将显示在此区域。默认情况下,此区域包括以下窗口:
• Tcl Console:允许您输入Tcl命令,并查看以前的命令和输出的历史记录。
• Messages:显示当前设计的所有消息,按进程和严重性分类,包括“Error”、“Critical Warning”、“Warning”等等
• Log:显示由综合、实现和仿真run创建的日志文件。
• Reports:提供对整个设计流程中的活动run所生成的报告的快速访问。
• Designs Runs:管理当前工程的runs。
(6)主工具栏:主工具栏提供了对Vivado IDE中最常用命令的单击访问。
(7)主菜单:主菜单栏提供对Vivado IDE命令的访问。
(8)窗口布局(Layout)选择器:Vivado IDE提供预定义的窗口布局,以方便设计过程中的各种任务。布局选择器使您能够轻松地更改窗口布局。或者,可以使用菜单栏中的“Layout”菜单来更改窗口布局。
4.2.2设计输入
下面我们就来创建工程顶层文件,我们点击“Sources”窗口中的“+”号,如下图所示:
在这里插入图片描述

图 4.2.12 添加源文件按钮
弹出下图所示界面,我们选择添加设计源文件(注意,Vivado不支持使用原理图的方式来输入设计),然后点击“Next”按钮,如下图所示。
在这里插入图片描述

图 4.2.13 选择添加设计源文件
接下来在弹出的页面中添加或者创建一个文件。如果事先有编写好的代码,可以点击“Add Files”按钮来添加文件;如果没有,则点击“Create File”创建一个新的设计文件。由于我们事先没有编写好的设计文件,这里点击“Create File”来创建一个新的设计文件,如下图所示:
在这里插入图片描述

图 4.2.14 点击创建源文件
接下来会弹出一个对话框,对创建的设计文件进行命名。这里我们输入源文件的名称“led_twinkle”,然后点击“OK”按钮,如下图所示:
在这里插入图片描述

图 4.2.15 输入源文件名称
这时我们看到列表中已经出现了刚刚新创建的设计文件,点击“Finish”按钮,如下图所示:
在这里插入图片描述

图 4.2.16 添加的源文件
接下来会弹出一个定义模块的页面,用于设置源文件的模块名称和端口列表,Vivado会根据在此窗口中的设置,自动地在HDL源文件中写入相应的verilog语句。我们会手动输入代码,所以这里不作任何设置,直接点击“OK”按钮即可,如下图所示。
在这里插入图片描述

图 4.2.17 定义顶层模块名和模块端口
接下来会弹出一个模块定义确认的页面,直接点击“YES”即可,如下图所示:
在这里插入图片描述

图 4.2.18 模块定义确认页面
这时工程主界面的“Sources”窗口中就出现了我们刚刚创建的源文件,如下图所示:

图 4.2.19 源文件创建完毕
我们双击打开“led_twinkle”文件,删除文件中默认的代码,然后替换成LED灯闪烁代码,代码如下:

1  module led_twinkle(
2      input          sys_clk_p,      //系统差分输入时钟
3      input          sys_clk_n,      //系统差分输入时钟
4      input          sys_rst_n,      //系统复位,低电平有效
5  
6      output  [1:0]  led              //LED灯
7  );
8  
9  //reg define
10 reg  [26:0]  cnt;
11 
12 //*****************************************************
13 //**                    main code
14 //*****************************************************
15 
16 //对计数器的值进行判断,以输出LED的状态
17 assign led = (cnt <  27'd5000_0000) ? 2'b01 : 2'b10;
18 //assign led = (cnt <  27'd5)           ? 2'b01 : 2'b10;  //仅用于仿真
19 
20 //转换差分信号
21 IBUFDS diff_clock
22 (
23     .I (sys_clk_p),     //系统差分输入时钟
24     .IB(sys_clk__n),    //系统差分输入时钟
25     .O (sys_clk)        //输出系统时钟
26 ); 
27 
28 //计数器在0~10000_0000之间进行计数
29 always @ (posedge sys_clk or negedge sys_rst_n) begin
30     if(!sys_rst_n)
31         cnt <=  27'd0;
32     else if(cnt < 27'd10000_0000)
33     //else if(cnt <  27'd10)  //仅用于仿真
34         cnt <= cnt + 1'b1;
35     else
36         cnt <=  27'd0;
37 end
38 
39 endmodule

这里需要注意的是,源代码前面的序号是为了方便大家查看代码的,在将源代码拷贝到软件编辑区的时候,需要去掉前面的序号,大家也可以直接从我们光盘中提供的源码代码中拷贝,源代码位于资料盘(A盘)下的4_SourceCODE\ MPSoC_XCZU4EV(MPSoC_XCZU2EG)\ 1_FPGA_Design\ 1_led_twinkle\ led_twinkle.srcs\ sources_1\ new\ led_twinkle.v(如果是压缩包的话,需要先解压)。
本章我们只是带领大家熟悉Vivado软件的使用流程,不对代码做讲解,在后面的例程中,再来对代码做详细的介绍。
代码编写完成后,软件中显示的界面如下图所示。
在这里插入图片描述

图 4.2.20 Verilog文件编写完成界面
另外,如果读者认为Vivado的Text Editor默认的字体比较小,也可以依次点击“Settings”→“Text Editor” →“Fonts and Colors”,在窗口中的“Size”选项中来修改字体大小,默认是12,我们修改为20,如下图所示:
在这里插入图片描述

图 4.2.21 修改代码的字体大小
接下来我们单击工作空间中的保存按钮或者按下键盘的“Ctrl+S”,来保存编辑完成后的代码,如下图所示:
在这里插入图片描述

图 4.2.22 保存源文件按钮
每次保存后,Vivado都会对源文件进行部分语法的检查,如果有语法的错误,Vivado会给出提示。另外,在大多数情况下,Vivado IDE会自动识别设计的顶层模块,当然,用户也可以手动指定顶层模块。从“Sources”窗口的右击菜单中选择“Set as Top”来手动定义顶级模块。
4.2.3分析与综合
代码输入完毕之后,就可以对设计进行分析(Elaborated)了。点击“Flow Navigator”窗口中的“Open Elaborated Design”按钮,如下图所示:
在这里插入图片描述

图 4.2.23 “Open Elaborated Design”按钮
此时,Vivado会编译RTL源文件并进行全面的语法检查,并在Messages窗口中给出相应的“Error”和“Warning”。如果出现“Error”,则分析失败,用户必须修改设计文件,并重新编译源文件来取消“Error”。如果出现“Warning”,用户也可逐一查看,以确定哪些是设计缺陷,哪些是可以忽略的。打开分析后(Elaborated)的设计,Vivado会生成顶层原理图视图,并在默认view layout中显示设计,如下图所示:
在这里插入图片描述

图 4.2.24 打开的Elaborated Design
可以看到,此时窗口布局已经发生了变化,新增了Schematic(原理图)、Netlist(网表)等窗口。此时,底部的Messages窗口会显示分析阶段产生的消息,如下图所示:
在这里插入图片描述

图 4.2.25 Messages窗口中的消息
可以看出,我们LED闪烁实验的代码并没有产生警告或者错误。
此时,我们也可以进行I/O引脚分配,在右上角的窗口布局(Layout)选择器中选择“I/O Planing”,如下图所示:
在这里插入图片描述

图 4.2.26 点击“I/O Planing”Layout
此时,窗口布局会打开IO相关的子窗口,如下图所示:
在这里插入图片描述

图 4.2.27 I/O Planing窗口布局
在下方的“I/O Ports”窗口中,就可以进行IO的分配了。这里我们暂时不分配,先对设计进行综合,综合之后再统一输入时序约束和IO引脚的物理约束。
我们关闭分析后的界面。在工作区域的顶部标题栏处,用鼠标右击,在弹出的命令列表中选择“close”,如下图所示:
在这里插入图片描述

图 4.2.28 关闭分析后的设计
接下来点击“Flow Navigator”窗口中的“Run Synthesis”按钮,来对代码进行综合,如下图所示:
在这里插入图片描述

图 4.2.29 “Run Synthesis”按钮
在弹出的窗口中我们直接点击OK,如下图所示:
在这里插入图片描述

图 4.2.30 Launch Runs窗口
这时可以看到在“Design Runs”窗口中显示正在综合,如下图所示:
在这里插入图片描述

图 4.2.31 “Design Runs”窗口
综合完成后,弹出如下窗口:
在这里插入图片描述

图 4.2.32 综合完成
我们关闭该窗口。接下来进行约束的输入。
4.2.4约束输入
首先,我们需要先创建一个约束文件。点击“Sources”窗口中的“+”号,在弹出的窗口选择“Add or create constraints”,点击“NEXT”按钮,如下图所示:
在这里插入图片描述

图 4.2.33 添加约束文件
在接下来的界面中点击“Create File”创建一个新的约束文件,如下图所示:
在这里插入图片描述

图 4.2.34 Create File
在弹出的对话框中输入约束文件的名称“led_twinkle”,然后点击“OK”按钮,如下图所示:
在这里插入图片描述

图 4.2.35 输入约束文件的名称
接下来点击“Finish”按钮,完成约束文件的创建,如下图所示:
在这里插入图片描述

图 4.2.36 点击Finish
这时我们就可以在“Sources”窗口中看到添加的这个约束文件了,如下图所示:
在这里插入图片描述

图 4.2.37 添加完成的约束文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Design Compiler工具学习笔记(3)

目录 引言 知识储备 时钟创建 时钟偏差 时钟延迟 转换时间 输入路径约束 输出路径延迟 组合逻辑路径约束 时间预算 寄存器输出 总结 实际操作 设计文件 check_design reset_design 时序约束 check_timing compile report_constraint -all_violators remove_des…

conda创建虚拟环境命令、jupyter notebook启动打开和使用

一、conda创建虚拟环境命令步骤 1.1创建虚拟环境命令 首先使用conda -V命令检查是否已安装Anaconda&#xff0c;这里安装步骤省略 打开终端运行以下前两个命令&#xff0c;即可创建 1.创建名为env-name的虚拟环境&#xff1a;conda create --name [env-name] 2.进入env-n…

5个月的精华:Spring/SpringBoot扩展点手册:手册在手,编码无忧:全网独一份 - 第451篇

历史文章&#xff08;文章累计450&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 利用Spring扩展点模拟Feign实现远程调用…

使用Cpolar+freekan源码 创建在线视频网站

文章目录1.前言2.本地网页搭建1.1 环境使用1.2 支持组件和环境设置1.3 支持组件选和环境设置1.4 网页安装1.5 测试和使用1.6 问题解决3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置4.公网访问测试5.结语1.前言 随着网络条件的改善和移动智能设备的普及&#xff0c;在线…

C++语法——右值引用、移动构造和赋值、万能引用和转发、move和forward底层实现

目录 一.右值引用 &#xff08;一&#xff09;.何为右值 &#xff08;二&#xff09;.右值引用 &#xff08;三&#xff09;.右值和左值的互相传递 ①左值->右值引用 ②右值->左值引用 &#xff08;四&#xff09;.右值引用的自身属性 二.移动构造和移动赋值 &…

艾美捷Bio-Helix CCH321 超敏ECL化学发光试剂盒(皮克级)特点

UltraScene Pico Plus Western底物是一种基于鲁米诺的增强化学发光底物&#xff0c;它敏感且与辣根过氧化物酶&#xff08;HRP&#xff09;偶联的二级抗体进行免疫印迹兼容。UltraScene Pico Plus Western Substrate具有卓越的灵敏度和长信号持续时间&#xff0c;可实现抗原的低…

Day09--导入小程序项目,初步安装和使用vant组件库

1.拿到老师的资料mp_5 ************************************************************************************************************** 2.Day09--的大概流程 *****************************************************************************************************…

MySQL数据库期末考试试题及参考答案(04)

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 一、填空题 MySQL中提供了____关键字&#xff0c;可以在查询时去除重复的值。使用ORDER BY对查询结果进行排序时&#xff0c;默认是按____排列。SELECT语句中&#xff0c;用…

Android启动优化之多线程依赖线程池

背景 开发中会存在多个任务之间互相依赖&#xff0c;运行非常慢的情况&#xff0c;譬如Android在主线程中初始化多个SDK导致App启动慢的情况&#xff0c;搜索一下发现业界的通用做法是构造任务的有向无环图&#xff0c;拓扑排序生成有序的任务列表&#xff0c;然后用线程池执行…

[JavaScript] 用电脑计算圆周率评估计算性能

据说全球第一台计算机是在1946年面世的&#xff0c;那它的计算性能是怎样的&#xff0c;至今2022年&#xff0c;发展这么多年&#xff0c;现在的普通计算机性能又是怎样的呢&#xff0c;接下来做一个实验&#xff0c;评估计算性能 文章目录1. 设计2. 编程3. 测试1. 设计 先写一…

[第十三篇]——Docker Compose

Docker Compose Compose 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可以使用 YML 文件来配置应用程序需要的所有服务。然后&#xff0c;使用一个命令&#xff0c;就可以从 YML 文件配置中创建并启动所有服务。 如果你还不了解…

G1D18-WarshallFloyd课程报告matlab下载

今天先从算法开始吧嘿嘿~ 一、DP &#xff08;一&#xff09;Warshall求闭包 1、DP大概看明白啦~ 2、一会再看一下基于邻接表的暴搜 &#xff08;二&#xff09;Floyd完全最短路径的Floyd算法 欸嘿~~基本上好啦还差一点图的遍历晚上问问同学吧&#xff01; 啊哈大概看了一…

BUUCTF·[WUSTCTF2020]大数计算·WP

BUUCTF在线评测 (buuoj.cn) 附件 flag等于 wctf2020{Part1-Part2-Part3-Part4} 每一Part都为数的十六进制形式&#xff08;不需要0x)&#xff0c;并用 - 连接 Part1 2020*2019*2018* ... *3*2*1 的前8位 Part2 520^1314 2333^666 的前8位 Part3 宇宙终极问题的答案 x,y,z绝…

CF461B Appleman and Tree题解

洛谷题面 感觉是非常经典的一道题&#xff0c;最近好像总是见到&#xff0c;今天也算给它做了&#xff0c;发一篇题解来记录一下。 这道题是一道树形 DP 题&#xff0c;设 f[u][0/1]f[u][0/1]f[u][0/1] 表示 uuu 点属于一个无黑点 /// 有且仅有一个黑点的联通块时的方案数。我…

【HDR】Deep high dynamic range imaging of dynamic scenes

文章目录一、贡献二、数据集构建三、算法框架3.1 对齐模块3.2 合成模块3.3 损失函数四、实验一、贡献 Paper&#xff1a; Deep high dynamic range imaging of dynamic scenes Code&#xff1a;https://github.com/TH3CHARLie/deep-high-dynamic-range 首次提出使用机器学习方…

Pdfjs使用

pdfjs使用一、下载二、Springboot引入pdfjs三、利用PDFJS预览pdf文件并加水印四、后端将pdf添加水印参看链接一、下载 pdfjs官方地址 二、Springboot引入pdfjs 针对于pdfjs方面有用的只是pdf这个包下面和viewer.html这个html页面viewer.html是我们用来展示pdf的页面不需要改但…

高压功率放大器在超声悬浮中的应用研究

高压功率放大器的叫法对于不同的人来说是完全不同的&#xff0c;有人叫功率放大器&#xff0c;也有人叫电压放大器&#xff0c;但它们都是指同一个电子测量仪器设备&#xff0c;主要是指内部能够拥有电压和功率放大电路&#xff0c;可以把微弱的外部信号进行放大输出的放大器。…

在华为云 OSC 上快速部署 EMQX MQTT 集群

EMQX Kubernetes Operator 是 EMQ 发布的一个封装、部署和管理工具&#xff0c;也是一个特定的应用控制器&#xff0c;方便 DevOps 人员在 Kubernetes 上编排 EMQX MQTT 消息服务集群&#xff0c;管理其生命周期。 华为云原生基础设施&#xff08;云容器引擎 CCE、容器镜像服务…

索引数据结构千千万 , 为什么B+Tree独领风骚

索引的由来 大数据时代谁掌握了数据就是掌握了流量&#xff0c;就是掌握的号召力。面对浩瀚的数据如何存储并非难事&#xff0c; 难点在于如何在大数据面前查询依旧快如闪电&#xff01; 这时候索引就产生了&#xff0c;索引的产生主要还是借鉴于图书管理员书签的功能。在大数…

谷歌、微软、Meta?谁才是 Python 最大的金主?

你知道维护 Python 这个大规模的开源项目&#xff0c;每年需要多少资金吗&#xff1f; 答案是&#xff1a;约 200 万美元&#xff01; PSF&#xff08;Python 软件基金会&#xff09;在 2022 年 6 月发布了 2021 的年度报告&#xff0c;其中披露了以下这份支出明细&#xff08;…