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

EDA-课设

EDA-课程设计-电子闹钟

一、实验目的

1.掌握多层电路在 QuartusII 集成开发环境中的实现;
2.熟练掌握基于 QuartusII 集成开发环境的组合逻辑电路设计流程;
3.掌握基于 QuartusII 集成开发环境的时序逻辑电路设计流程;
4.理解有限状态机设计的基本原理;
5.掌握采用有限状态机设计电路的方法;
6.掌握有限状态机的 VerilogHDL 实现;
7.熟练开发板的使用;
8.锻炼综合设计电路能力。

二、实验任务及要求

基本功能:正常时间显示,闹钟时间显示,闹钟触发。

三、实验原理和步骤

3.1 功能介绍

FPGA 实现电子闹钟。具有的功能为:

  1. 基础功能:
    1)正常时间的显示。
    2)闹钟时间的显示。
    3)闹钟触发
  2. 设计功能:
    1)手动调整当前时间。
    2)手动设置闹钟时间。
    3)闹钟触发时,LED会呈花式闪烁,闪烁时间为一分钟。
    4)秒表功能,可以选择正向计时或者倒计时。
    5)温度显示功能,可以根据时间的变化,显示不同的温度。

3.2 设计思路

  1. 对本次设计所需要的彩灯、七段数码管、开关、和按键进行一个汇总,并提前查阅其各自的管脚,进行分配。对于彩灯,选取8个作为闹钟触发时闪烁用;选取6个七段数码管,每两个显示时或分或秒,剩余两个表示温度;选取15个开关,每五个对应时、分、秒的设置,再用两个开关用于手动设置现在时间和闹钟时间;4个按键,一个表示计时显示按键,一个表示设置正计时,一个设置倒计时,一个用于启动计时。
  2. 用偶数分频的方法设计出来一个1s的时钟,用于后面的时间显示以及状态转移的持续时间。
  3. 设计时分秒的显示。
  4. 设计温度的显示。
  5. 用有限状态机的设计方法进行8路彩灯的显示。
  6. 设计正常时间运行的模块
  7. 设计设置闹钟时间的模块
  8. 设计调整现在时间的模型
  9. 设计正计时和倒计时模块

3.3 模块结构

  1. 模块一:设计1s的时钟信号。
  2. 模块二:正常时间显示模块。
  3. 模块三:设置闹钟时间与闹钟触发。
  4. 模块四:手动调整时间。
  5. 模块五:时间显示模型。
  6. 模块六:闹钟触发的8路彩灯显示。
  7. 模块七:计时模块。
  8. 模块八:温度显示模块。

四、代码

主模块

module syks(clk,set1,set2,JS3,JS2,JS1,JS0,in_S,in_F,in_M,out_S,out_F,out_M,out_LED,out_WD);
(*chip_pin = "Y2"*) input clk;
(*chip_pin = "AC27"*) input set1;
(*chip_pin = "AC28"*) input set2;
(*chip_pin = "R24"*) input JS3;
(*chip_pin = "N21"*) input JS2;
(*chip_pin = "M21"*) input JS1;
(*chip_pin = "M23"*) input JS0;
(*chip_pin = "Y23,Y24,AA22,AA23,AA24"*) input[4:0] in_S;
(*chip_pin = "AB23,AB24,AC24,AB25,AC25"*) input[4:0] in_F;
(*chip_pin = "AB26,AD26,AC26,AB27,AD27"*) input[4:0] in_M;
(*chip_pin = "AD17,AE17,AG17,AH17,AF17,AG18,AA14,AA17,AB16,AA16,AB17,AB15,AA15,AC17"*) output[13:0] out_S;
(*chip_pin = "AD18,AC18,AB18,AH19,AG19,AF18,AH18,AB19,AA19,AG21,AH21,AE19,AF19,AE18"*) output[13:0] out_F;
(*chip_pin = "V21,U21,AB20,AA21,AD24,AF23,Y19,AA25,AA26,Y25,W26,Y26,W27,W28"*) output[13:0] out_M;
(*chip_pin = "H15,G16,G15,F15,H17,J16,H16,J15"*) output[7:0] out_LED;
(*chip_pin = "M24,Y22,W21,W22,W25,U23,U24,G18,F22,E17,L26,L25,J22,H22"*) output[13:0] out_WD;
wire clk1;
reg[5:0] count_S = 6'd0,count_F = 6'd0,count_M = 6'd0,count = 6'd60;
reg[5:0] tmp_S = 6'd0,tmp_F = 6'd0,tmp_M = 6'd0,tmp_WD = 6'd0;
reg[5:0] set_S = 6'd10,set_F = 6'd10,set_M = 6'd10;
reg[5:0] MB_S = 6'd0,MB_F = 6'd0,MB_M = 6'd0;
reg flag = 1, flag1 = 1,flag2 = 0,flag3 = 0,flag4 = 1,flag5 = 1,flag6 = 1;
fenpin(clk,clk1);
always@(negedge JS0) flag1 = ~flag1;
always@(negedge JS1,negedge JS2) 
beginif(!JS1)beginflag2 = 1;flag3 = 0;endif(!JS2)beginflag2 = 0;flag3 = 1;end
end
always@(negedge JS3) 
beginflag6 = ~flag6;
end
always@(posedge clk1,negedge set1,negedge set2,negedge flag1)
begin//if(!flag1) beginif(flag2)begin tmp_S = 6'd0;tmp_F = 6'd0;tmp_M = 6'd0;tmp_WD = 6'd0;MB_S = {1'b0,in_S};MB_F = {1'b0,in_F};MB_M = {1'b0,in_M};flag5 = 1;endelse if(flag3)begintmp_S = {1'b0,in_S};tmp_F = {1'b0,in_F};tmp_M = {1'b0,in_M};tmp_WD = 6'd0;MB_S = 6'd0;MB_F = 6'd0;MB_M = 6'd0;flag5 = 0;endendelse if(!set2)beginset_S = {1'b0,in_S};set_F = {1'b0,in_F};set_M = {1'b0,in_M};count = 6'd60;flag = 1;endelse if(!set1) begincount_S = {1'b0,in_S};count_F = {1'b0,in_F};count_M = {1'b0,in_M};count = 6'd60;tmp_S = count_S;tmp_M = count_M;tmp_F = count_F;tmp_WD = count_S;flag = 1;endelsebeginif(flag6 == 0)beginif(flag5)beginif(flag4)beginif(tmp_M == 59) begintmp_M = 6'd0;if (tmp_F == 59)begintmp_F = 6'd0;if(tmp_S == 23) tmp_S = 6'd0;else tmp_S = tmp_S + 1;endelse tmp_F = tmp_F + 1;endendelse tmp_M = tmp_M + 1;if ((tmp_S == MB_S) && (tmp_F == MB_F) &&(tmp_M == MB_M)) flag4 = 0;endelse beginif(flag4)beginif(tmp_M == 6'd0) beginif(tmp_F == 6'd0) beginif(tmp_S == 6'd0) flag4 = 0;elsebegintmp_S = tmp_S - 1;tmp_F = 6'd59;endendelsebegintmp_F = tmp_F - 1;tmp_M = 6'd59;endendelse tmp_M = tmp_M - 1;endendendelse begin if(count_M == 59) begincount_M = 0;if (count_F == 59)begincount_F = 0;if(count_S == 23) count_S = 0;else count_S = count_S + 1;endelse count_F = count_F + 1;endelse count_M = count_M + 1;if ((count_S == set_S) && (count_F == set_F) &&(count_M == set_M)) count = 6'd0;if(count < 6'd60)begin count = count + 1;flag = 0;endelse flag = 1;tmp_S = count_S;tmp_M = count_M;tmp_F = count_F;tmp_WD = count_S;flag4 = 1;endend
end
show_LED(clk1,flag,out_LED);
show_SZ(clk1,tmp_S,out_S);
show_SZ(clk1,tmp_F,out_F);
show_SZ(clk1,tmp_M,out_M);
show_WD(clk,tmp_WD,out_WD);
endmodule

分频模块

module fenpin(clk,clk1);
input clk;
output reg clk1;
reg[30:0] count;
always@(posedge clk) 
beginif (count == 24999999) begincount = 0;clk1 = ~clk1;endelse count = count + 1;
end
endmodule

LED显示模块

module show_LED(clk,in,out);
input in,clk;
output reg[7:0] out;
parameter s0 = 3'b000,s1 = 3'b001,s2 = 3'b010,s3 = 3'b011,s4 = 3'b100;
reg[2:0] cs,ns;always@(posedge clk)
beginif(in) cs = s4;else cs = ns;
end
always@(cs)
begincase(cs)s0:ns = s1;s1:ns = s2;s2:ns = s3;s3:ns = s4;s4:ns = s0;endcase
end
always@(cs)
begincase(cs)s0:out = 8'b10000001;s1:out = 8'b11000011;s2:out = 8'b11100111;s3:out = 8'b11111111;s4:out = 8'b00000000;endcase
end
endmodule

时钟显示模块

module show_SZ(clk,count,out);
input clk;
input[5:0] count;
output reg[13:0] out;
always @(posedge clk)
begincase(count)6'd0:out = 14'b0000001_0000001;6'd1:out = 14'b0000001_1001111;6'd2:out = 14'b0000001_0010010;6'd3:out = 14'b0000001_0000110;6'd4:out = 14'b0000001_1001100;6'd5:out = 14'b0000001_0100100;6'd6:out = 14'b0000001_0100000;6'd7:out = 14'b0000001_0001111;6'd8:out = 14'b0000001_0000000;6'd9:out = 14'b0000001_0000100;6'd10:out = 14'b1001111_0000001;6'd11:out = 14'b1001111_1001111;6'd12:out = 14'b1001111_0010010;6'd13:out = 14'b1001111_0000110;6'd14:out = 14'b1001111_1001100;6'd15:out = 14'b1001111_0100100;6'd16:out = 14'b1001111_0100000;6'd17:out = 14'b1001111_0001111;6'd18:out = 14'b1001111_0000000;6'd19:out = 14'b1001111_0000100;6'd20:out =14'b0010010_0000001;6'd21:out = 14'b0010010_1001111;6'd22:out = 14'b0010010_0010010;6'd23:out = 14'b0010010_0000110;6'd24:out = 14'b0010010_1001100;6'd25:out = 14'b0010010_0100100;6'd26:out =14'b0010010_0100000;6'd27:out = 14'b0010010_0001111;6'd28:out = 14'b0010010_0000000;6'd29:out = 14'b0010010_0000100;6'd30:out = 14'b0000110_0000001;6'd31:out = 14'b0000110_1001111;6'd32:out = 14'b0000110_0010010;6'd33:out = 14'b0000110_0000110;6'd34:out = 14'b0000110_1001100;6'd35:out = 14'b0000110_0100100;6'd36:out = 14'b0000110_0100000;6'd37:out = 14'b0000110_0001111;6'd38:out = 14'b0000110_0000000;6'd39:out = 14'b0000110_0000100;6'd40:out = 14'b1001100_0000001;6'd41:out = 14'b1001100_1001111;6'd42:out = 14'b1001100_0010010;6'd43:out = 14'b1001100_0000110;6'd44:out = 14'b1001100_1001100;6'd45:out = 14'b1001100_0100100;6'd46:out = 14'b1001100_0100000;6'd47:out = 14'b1001100_0001111;6'd48:out = 14'b1001100_0000000;6'd49:out = 14'b1001100_0000100;6'd50:out = 14'b0100100_0000001;6'd51:out = 14'b0100100_1001111;6'd52:out = 14'b0100100_0010010;6'd53:out = 14'b0100100_0000110;6'd54:out = 14'b0100100_1001100;6'd55:out = 14'b0100100_0100100;6'd56:out = 14'b0100100_0100000;6'd57:out = 14'b0100100_0001111;6'd58:out = 14'b0100100_0000000;6'd59:out = 14'b0100100_0000100;default:out = 14'b1111111_1111111;endcase
end
endmodule

show_wd.v 模块

module show_WD(clk,in_s,out);
input clk;
input[5:0] in_s;
output[13:0] out;
reg[5:0] count_WD;
always@(clk)
beginif(in_s >= 0 && in_s < 6'd8 ) count_WD = 6'd20;else if (in_s >= 6'd8 && in_s <= 6'd16) count_WD = 6'd25;else count_WD = 6'd18;
end
show_SZ(clk,count_WD,out);
endmodule

test.v 模块

if(flag6 == 0)beginif(flag5)beginif(flag4)beginif(tmp_M == 59) begintmp_M = 0;if (tmp_F == 59)begintmp_F = 0;if(tmp_S == 23) tmp_S = 0;else tmp_S = tmp_S + 1;endelse tmp_F = tmp_F + 1;endelse tmp_M = tmp_M + 1;if ((tmp_S == MB_S) && (tmp_F == MB_F) &&(tmp_M == MB_M)) flag4 = 0;endendelse beginif(flag4)beginif(tmp_M == 0) beginif(tmp_F == 0) beginif(tmp_S == 0) flag4 = 0;elsebegintmp_S = tmp_S - 1;tmp_F = 6'd59;endendelsebegintmp_F = tmp_F - 1;tmp_M = 6'd59;endendelse tmp_M = tmp_M - 1;endendendelse if(!flag1) beginif(flag2)begin tmp_S = 0;tmp_F = 0;tmp_M = 0;tmp_WD = 0;MB_S = {1'b0,in_S};MB_F = {1'b0,in_F};MB_M = {1'b0,in_M};flag5 = 1;endelse if(flag3)begintmp_S = {1'b0,in_S};tmp_F = {1'b0,in_F};tmp_M = {1'b0,in_M};tmp_WD = 0;MB_S = 0;MB_F = 0;MB_M = 0;flag5 = 0;endendelse 

相关文章:

EDA-课设

EDA-课程设计-电子闹钟 一、实验目的 1.掌握多层电路在 QuartusII 集成开发环境中的实现&#xff1b; 2.熟练掌握基于 QuartusII 集成开发环境的组合逻辑电路设计流程&#xff1b; 3.掌握基于 QuartusII 集成开发环境的时序逻辑电路设计流程&#xff1b; 4.理解有限状态机设计…...

C/C++每日一练(20230222)

目录 1. 部分复制字符串(★) 2. 按字典顺序排列问题(★★) 3. 地下城游戏(★★★) 附录 动态规划 1. 部分复制字符串 将字符串2小写字母复制到字符串1&#xff1a;编写程序,输入字符串s2,将其中所有小写字母复制到字符串数组strl中。例如&#xff1a;aal1bb22cc33de4AA55…...

Java API 文档搜索引擎

1. 认识搜索引擎:在搜狗搜索的搜索结果页中, 包含了若干条结果, 每一个结果包含了图标, 标题, 描述, 展示URL等搜索引擎的本质:输入一个查询词, 得到若干个搜索结果, 每个搜索结果包含了标题, 描述, 展示URL和点击URL2. 搜索引擎思路:2.1 搜索的核心思路:当前我们有很多的网页(…...

2023美赛C题Wordle二三问分布预测和难度分类预测

文章目录前言题目介绍人数分布预测首先建立字母词典&#xff0c;加上时间特征数据预处理训练和预测函数保存模型函数位置编码模型及其参数设置模型训练以及训练曲线可视化预测人数分布难度分类预测总结前言 2023美赛选了C题&#xff0c;应该很多人会选&#xff0c;一看就好做&…...

gdb的简单练习

题目来自《ctf安全竞赛入门》1.用vim写代码vim gdb.c#include "stdio.h" #include "stdlib.h" void main() {int i 100;int j 101;if (i j){printf("bingooooooooo.");system("/bin/sh");}elseprintf("error............&quo…...

如何使用python AI快速比对两张人脸图像?

本篇文章的代码块的实现主要是为了能够快速的通过python第三方非标准库对比出两张人脸是否一样。 实现过程比较简单&#xff0c;但是第三方python依赖的安装过程较为曲折&#xff0c;下面是通过实践对比总结出来的能够支持的几个版本&#xff0c;避免大家踩坑。 python版本&a…...

(2)C#传智:变量基础(第二天)

一、注释符 不写注释是流氓&#xff0c;名字瞎起是扯蛋。 注释作用&#xff1a;解释与注销 命名&#xff1a; 以字母、_、开头&#xff0c;里面只能有_与特殊符&#xff0c;其它不得出现如%*&^等。 不能与关键字重复。区分大小写&#xff0c;Num…...

02-mysql高级-

文章目录mysql高级1&#xff0c;约束1.1 概念1.2 分类1.3 非空约束1.4 唯一约束1.5 主键约束1.6 默认约束1.7 约束练习1.8 外键约束1.8.1 概述1.8.2 语法1.8.3 练习2&#xff0c;数据库设计2.1 数据库设计简介2.2 表关系(一对多)mysql高级 今日目标 掌握约束的使用 掌握表关系…...

windows 使用everything 查看文件(夹)存储空间占用

起因 总是那个原因,C: D: E:全都红了,下的游戏太多了,然后就这样了,之前也有过不少这种情况.几年前,就在智能手机上见过类似的功能. 大概就是遍历文件系统,统计每个文件的大小,然后父节点记录所有子节点的和,然后可以显示占用百分比之类的. 经过 在windows 上我最开始使用ex…...

2023该好好赚钱了,推荐三个下班就能做的副业

在过去的两年里&#xff0c;越来越多的同事选择辞职创业。许多人通过互联网红利赚到了他们的第一桶金。随着短视频的兴起&#xff0c;越来越多的人吹嘘自己年收入百万&#xff0c;导致很多刚进入职场的年轻人逐渐迷失自我&#xff0c;认为钱特别容易赚。但事实上&#xff0c;80…...

vue3如何进行数据监听watch/watchEffect

我们都知道监听器的作用是在每次响应式状态发生变化时触发&#xff0c;在组合式 API 中&#xff0c;我们可以使用 watch()函数和watchEffect()函数, 当你更改了响应式状态&#xff0c;它可能会同时触发 Vue 组件更新和侦听器回调。 默认情况下&#xff0c;用户创建的侦听器回…...

Wgcloud安装和使用(性能监控)

一、Wgcloud说明 官网&#xff1a;https://www.wgstart.com/ WGCLOUD支持主机各种指标监测&#xff08;cpu使用率&#xff0c;cpu温度&#xff0c;内存使用率&#xff0c;磁盘容量&#xff0c;磁盘IO&#xff0c;硬盘SMART健康状态&#xff0c;系统负载&#xff0c;连接数量&…...

前端如何实现本地图片上传?

前端如何实现本地图片上传&#xff1f; 摘要 对于学习前端的小伙伴都有一个困惑&#xff0c;就是平常想上手小项目&#xff0c;但碍于不想购买服务器&#xff0c;实践受到了限制。 一般我选择node.js搭建服务器&#xff0c;毕竟基于JavaScript语言&#xff0c;简直不是一家人…...

【基础算法】差分的应用(一维差分和二维差分)

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…...

第49章 API统一集中管理

1 关于统一集中管理API的一些思考 1、统一集中管理是保证工程性项目得保质、保量、成功实施&#xff0c;并对后期维护提供数据支撑的最有效&#xff0c;最节省资源和时间的技能和做法&#xff0c;软件做为一种特殊的工程性项目&#xff0c;也符合上述特性。 2、由于在前台实现中…...

carla0.9.13-UE4添加4轮车模型(Linux系统)

前期准备建模工具&#xff1a;blender:v3.4.1&#xff1b;可以在Ubuntu Software商店直接下载虚拟引擎&#xff1a;carla-UE4 (carla v0.9.13)&#xff0c;无需额外安装UE4&#xff0c;carla中自带插件编译carla参照官方文档&#xff1a;https://carla.readthedocs.io/en/0.9.1…...

对比yolov4和yolov3

目录 1. 网络结构的不同 1.1 Backbone 1.1.1 Darknet53 1.1.2 CSPDarknet53 1.2 Neck 1.2.1 FPN 1.2.2 PAN 1.2.3 SPP 1.3 Head 2. ​​​​​数据增强​​​​​ 2.1 CutMix 2.2 Mosaic 3. 激活函数 4. 损失函数 5. 正则化方法 知识点 记录备忘。 总体而言&…...

Android ServiceManager

1.ServiceManager ServiceManager在init进程启动后启动,用来管理系统中的Service。 一般开机过程分为三个阶段: ①OS级别,由bootloader载入linux内核后,内核开始初始化,并载入built-in的驱动程序,内核完成开机后,载入init process,切换至user-space后,结束内核的循…...

数据挖掘,计算机网络、操作系统刷题笔记53

数据挖掘&#xff0c;计算机网络、操作系统刷题笔记53 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;orac…...

地球板块运动vr交互模拟体验教学提高学生的学习兴趣

海陆变迁是地球演化史上非常重要的一个过程&#xff0c;它不仅影响着地球的气候、地貌、生物多样性等方面&#xff0c;还对人类文明的演化产生了深远的影响。为了帮助学生更加深入地了解海陆变迁的过程和机制&#xff0c;很多高校教育机构开始采用虚拟现实技术进行教学探究。 V…...

【Android玩机】跟大家聊聊面具Magisk的使用(安装、隐藏)

目录:1、Magisk中文网2、隐藏面具和Root&#xff08;一共3种方法&#xff09;1、Magisk中文网 &#xff08;1&#xff09;首先Magisk有一个中文网&#xff0c;对新手非常友好 &#xff08;2&#xff09;这网站里面主要包含&#xff1a;6 部分 &#xff08;3&#xff09;按照他给…...

DACS: Domain Adaptation via Cross-domain Mixed Sampling 学习笔记

DACS介绍方法Naive MixingDACSClassMix![在这里插入图片描述](https://img-blog.csdnimg.cn/ca4f83a2711e49f3b754ca90d774cd50.png)算法流程实验结果反思介绍 近年来&#xff0c;基于卷积神经网络的语义分割模型在众多应用中表现出了显著的性能。然而当应用于新的领域时&…...

python并发编程(并发与并行,同步和异步,阻塞与非阻塞)

最近在学python的网络编程&#xff0c;学了socket通信&#xff0c;并利用socket实现了一个具有用户验证功能&#xff0c;可以上传下载文件、可以实现命令行功能&#xff0c;创建和删除文件夹&#xff0c;可以实现的断点续传等功能的FTP服务器。但在这当中&#xff0c;发现一些概…...

【项目】DTO、VO以及PO之间的关系和区别

【项目】DTO、VO以及PO之间的关系和区别 文章目录【项目】DTO、VO以及PO之间的关系和区别1.概念2. 作用1.概念 DTO&#xff1a;DTO是 Data Transfer Object 的缩写&#xff0c;也叫数据传输对象。 PO&#xff1a;PO是 Persistent Object 的缩写&#xff0c;也叫持久化对象。 …...

Nginx介绍

什么是Nginx&#xff1f; Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。由俄罗斯的程序设计师伊戈尔西索夫&#xff08;Igor Sysoev&#xff09;所开发&#xff0c;官方测试 nginx 能够支支撑 5 万并发链接&#x…...

你什么档次?敢和我用一样的即时通讯平台WorkPlus?

现今&#xff0c;很多企业越来越青睐私有化部署&#xff0c;尤其是在选择组织内部即时通讯平台的时候&#xff0c;更是会提出私有化部署的需求。究其原因&#xff0c;企业选择私有化部署即时通讯软件完全是出于安全方面考虑。因此&#xff0c;越来越多的企业将眼光望向了本地化…...

学习资源 - 深度学习

文章目录PyTorchNLP语音CV深度学习其它在我过往博客笔记中&#xff0c;每个专项技术&#xff0c;前面我会贴上官网、官方文档、书籍教程等。 但有些topic&#xff0c;资源比较分散&#xff1b;一个博主/up主&#xff0c;也有可能有多个topic的分享&#xff0c;这里分享我遇到的…...

C语言数据结构初阶(1)----时空复杂度

目录 1. 数据结构&#xff0c;算法的概念 2. 算法的效率 2.1 算法复杂度 3. 时间复杂度 3.1 时间复杂度的概念 3.2 大O的渐进表示法 3.3 小试牛刀 4. 算法的空间复杂度 4.1 小试牛刀 1. 数据结构&#xff0c;算法的概念 数据结构(Data Structure)是计算机存储、组织数据…...

vscode SSH 保存密码自动登录服务器

先在win local上拿到秘钥&#xff0c;然后再把这秘钥copy 进服务器 1. 创建 RSA 密钥对 第一步是在客户端机器&#xff08;通常是您的计算机 win 10&#xff09;上创建密钥对&#xff1a;打开powershell, 输入 ssh-keygen默认情况下ssh-keygen将创建一个 2048 位 RSA 密钥对…...

VR全景多种玩法打破传统宣传,打造全新云端视界

传统的展示方式只是在进行单方面的表达&#xff0c;不论是图片、视频&#xff0c;都无法让浏览者有参与感&#xff0c;这样的展示宣传效果自然比不上VR全景展示&#xff0c;VR全景基于真实场景来形成三维图像&#xff0c;其沉浸式和无视野盲区的特点让用户更有真实感和沉浸感&a…...