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

OFDM学习-(二)长短序列和PPDU整体数据处理流程

OFDM学习

(二)长短序列和PPDU整体数据处理流程

  • OFDM学习
  • 前言
  • 一、短序列
    • 短序列的作用
  • 二、长序列
  • 三、PLCP/SIGNAL/DATA数据处理流程
  • 三、fpga实现
    • STS模块
    • LTS模块
    • 训练序列模块
    • 仿真波形
  • 总结


前言

根据框图可以知道发射机这部分信号在DA转换之前,数据是两路,分别是实部和虚部8位信号。通过DA转换也是两路模拟信号,通过IQ调制搞到射频。
PPDU包括3部分数据,长短序列是不需要进行ofdm操作的,signal和data的信号需要进行ofdm操作,也就是下面图中扰码、卷积编码、交织等等的操作,最后通过ifft和cp加窗后进行输出,最后将实部信号与虚部信号与训练序列的实部和虚部按照位置分别发送。
的

一、短序列

子载波有效数量是52个,短序列只用到了其中的12个子载波,每个载波之间的间隔为4,位置序号是:
{-24,-20,-16,-12,-8,-4, 4,8,12,16,20,24},直流分量不能使用。又因为短序列采用的是BPSK模式,因此可以通过载波位置以及调制方式决定他的数据格式。确定[9:0] STS_IM[8] 和[9:0] STS_RE[8],就实现了短序列的产生,按照位置依次将实部序列和虚部序列信号发送即可。
因此短序列在频域上就是
% STS频域表示
S=[0,0,0,0,0,0,0,0,1+i,0,0,0,-1-i,0,0,0,1+i,0,0,0,-1-i,0,0,0,-1-i,0,0,0,1+i,0,0,0,0,0,0,0,-1-i,0,0,0,-1-i,0,0,0,1+i,0,0,0,1+i,0,0,0,1+i,0,0,0,1+i,0,0,0,0,0,0,0];
但是最终需要发出去的是时域信号,所以这个频域信号理论上是要经过ifft模块处理之后发送出去,但是因为短序列都是固定的数值,因此时序信号的实部和虚部也是固定的,所以短训练序列的产生也就是通过MATLAB将频域转换为时域后,将固定的时域信号的实部值和虚部值直接使用。短训练序列的数据格式,1位符号位,1位整数位,6位小数位。

从时域上看,每一个短序列是16个采样点,也就是总共10*16=160点。

短序列的作用

接收机进行分组检测、同步等

二、长序列

类似短序列,基本原理相同,各自作用不同。

三、PLCP/SIGNAL/DATA数据处理流程

训练序列直接按照时域产生实部信号和虚部信号,不需要进行ofdm调制。

SIGNAL信号和DATA信号需要从单比特流数据经过扰码、卷积编码、交织、符号调制、16QAM调制、导频插入、IFFT模块、CP加窗等步骤最后与训练序列组合发送到DAC进行射频端的处理。

三、fpga实现

STS模块

`timescale 1ns / 1ps 
///
// Company:                                                                      
// Engineer: YWang                                                                    
//                                                                                   
// Create Date: 2023-03-10  14:53:45
// Design Name:                                                                    
// Module Name: STS_generator.v                                                          
// Project Name:                                                                   
// Target Devices:                                                                  
// Tool versions:                                                                  
// Description:                                                                  
//                                                                                  
// Dependencies: 0                                                                  
//                                                                                  
// Revision:                                                                    
// Revision 0.01 - File Created                                                     
// Additional Comments:                                                        
//                                                                                   
/// 
module   STS_generator(  input                   clk         ,   input                   rst_n       ,   input                   Tx_Clr      ,   input                   Start_En    ,output reg [7:0]        STS_Im      ,output reg [7:0]        STS_Re      ,output reg              STS_Vld     ,output reg [7:0]        STS_Index   ,output reg              STS_Done             
);                 reg  [15:0] Short_Mem [15:0];reg  [3:0]  i,j;wire        STS_Req;assign STS_Req = Start_En || (STS_Index>0);always @(posedge clk or negedge rst_n) beginif(~rst_n) begin  Short_Mem[0]  <= {8'b00001100,8'b00001100};Short_Mem[1]  <= {8'b11011110,8'b00000001};Short_Mem[2]  <= {8'b11111101,8'b11101100};Short_Mem[3]  <= {8'b00100100,8'b11111101};Short_Mem[4]  <= {8'b00011000,8'b00000000};Short_Mem[5]  <= {8'b00100100,8'b11111101};Short_Mem[6]  <= {8'b11111101,8'b11101100};Short_Mem[7]  <= {8'b11011110,8'b00000001};Short_Mem[8]  <= {8'b00001100,8'b00001100};Short_Mem[9]  <= {8'b00000001,8'b11011110};Short_Mem[10] <= {8'b11101100,8'b11111101};Short_Mem[11] <= {8'b11111101,8'b00100100};Short_Mem[12] <= {8'b00000000,8'b00011000};Short_Mem[13] <= {8'b11111101,8'b00100100};Short_Mem[14] <= {8'b11101100,8'b11111101};Short_Mem[15] <= {8'b00000001,8'b11011110};STS_Vld <= 0;STS_Index <=  0;STS_Done <= 0;STS_Re <= 0;STS_Im <= 0;i <= 0;j <= 0;end  else if( Tx_Clr  ) begin i <= 0;j <= 0;STS_Vld <= 0;STS_Index <= 0;STS_Done <= 0;endelse if( STS_Req && (STS_Index<161) ) beginSTS_Index <= STS_Index + 1;STS_Vld <=  1'b1; if(i<10)    beginif(j==15) begin j <= 0;i <= i+ 1; STS_Re <= Short_Mem[j][15:8];  STS_Im <= Short_Mem[j][7:0];endelse  beginif(i==0 && j==0) beginSTS_Re <= Short_Mem[j][15:8]>>1; //鍔犵獥锛屽乏绉讳竴 STS_Im <= Short_Mem[j][7:0]>>1;//娉ㄦ剰锛歋hort_Mem銆�0銆戜负姝f暟endelse beginSTS_Re <= Short_Mem[j][15:8];  STS_Im <= Short_Mem[j][7:0];endj <= j + 1;endendelse begin  //鏈�鍚庝竴浣�STS_Re <= Short_Mem[0][15:8]>>1; //鍔犵獥锛屽乏绉讳竴  绗竴涓��STS_Im <= Short_Mem[0][7:0]>>1; STS_Done <= 1'b1;endend else begin STS_Vld <= 1'b0;endendendmodule          

LTS模块

`timescale 1ns / 1ps 
///
// Company:                                                                      
// Engineer: YWang                                                                    
//                                                                                   
// Create Date: 2023-03-10  14:53:45
// Design Name:                                                                    
// Module Name: LTS_generator.v                                                          
// Project Name:                                                                   
// Target Devices:                                                                  
// Tool versions:                                                                  
// Description:                                                                  
//                                                                                  
// Dependencies: 0                                                                  
//                                                                                  
// Revision:                                                                    
// Revision 0.01 - File Created                                                     
// Additional Comments:                                                        
//                                                                                   
/// 
module   LTS_generator(  input                   clk         ,   input                   rst_n       ,   input                   Tx_Clr      ,   input                   Start_En    ,output reg [7:0]        LTS_Im      ,output reg [7:0]        LTS_Re      ,output reg              LTS_Vld     ,output reg [7:0]        LTS_Index   ,output reg              LTS_Done             
);                 reg  [15:0] Long_Mem [63:0];reg  [6:0]  i,j;wire        LTS_Req;assign LTS_Req = Start_En || (LTS_Index>0);always @(posedge clk or negedge rst_n) beginif(~rst_n) begin  //鏃跺煙鏍峰�� Re      ImLong_Mem[0]  <= {8'b00101000 , 8'b00000000};Long_Mem[1]  <= {8'b11111111 , 8'b11100001};Long_Mem[2]  <= {8'b00001010 , 8'b11100100};Long_Mem[3]  <= {8'b00011001 , 8'b00010101};Long_Mem[4]  <= {8'b00000101 , 8'b00000111};Long_Mem[5]  <= {8'b00001111 , 8'b11101010};Long_Mem[6]  <= {8'b11100011 , 8'b11110010};Long_Mem[7]  <= {8'b11110110 , 8'b11100101};Long_Mem[8]  <= {8'b00011001 , 8'b11111001};Long_Mem[9]  <= {8'b00001110 , 8'b00000001};Long_Mem[10] <= {8'b00000000 , 8'b11100011};Long_Mem[11] <= {8'b11011101 , 8'b11110100};Long_Mem[12] <= {8'b00000110 , 8'b11110001};Long_Mem[13] <= {8'b00001111 , 8'b11111100};Long_Mem[14] <= {8'b11111010 , 8'b00101001};Long_Mem[15] <= {8'b00011111 , 8'b11111111};Long_Mem[16] <= {8'b00010000 , 8'b11110000};Long_Mem[17] <= {8'b00001001 , 8'b00011001};Long_Mem[18] <= {8'b11110001 , 8'b00001010};Long_Mem[19] <= {8'b11011110 , 8'b00010001};Long_Mem[20] <= {8'b00010101 , 8'b00011000};Long_Mem[21] <= {8'b00010010 , 8'b00000100};Long_Mem[22] <= {8'b11110001 , 8'b00010101};Long_Mem[23] <= {8'b11110010 , 8'b11111010};Long_Mem[24] <= {8'b11110111 , 8'b11011001};Long_Mem[25] <= {8'b11100001 , 8'b11111100};Long_Mem[26] <= {8'b11011111 , 8'b11111011};Long_Mem[27] <= {8'b00010011 , 8'b11101101};Long_Mem[28] <= {8'b11111111 , 8'b00001110};Long_Mem[29] <= {8'b11101000 , 8'b00011101};Long_Mem[30] <= {8'b00010111 , 8'b00011011};Long_Mem[31] <= {8'b00000011 , 8'b00011001};Long_Mem[32] <= {8'b11011000 , 8'b00000000};Long_Mem[33] <= {8'b00000011 , 8'b11100111};Long_Mem[34] <= {8'b00010111 , 8'b11100101};Long_Mem[35] <= {8'b11101000 , 8'b11100011};Long_Mem[36] <= {8'b11111111 , 8'b11110010};Long_Mem[37] <= {8'b00010011 , 8'b00010011};Long_Mem[38] <= {8'b11011111 , 8'b00000101};Long_Mem[39] <= {8'b11100001 , 8'b00000100};Long_Mem[40] <= {8'b11110111 , 8'b00100111};Long_Mem[41] <= {8'b11110010 , 8'b00000110};Long_Mem[42] <= {8'b11110001 , 8'b11101011};Long_Mem[43] <= {8'b00010010 , 8'b11111100};Long_Mem[44] <= {8'b00010101 , 8'b11101000};Long_Mem[45] <= {8'b11011110 , 8'b11101111};Long_Mem[46] <= {8'b11110001 , 8'b11110110};Long_Mem[47] <= {8'b00001001 , 8'b11100111};Long_Mem[48] <= {8'b00010000 , 8'b00010000};Long_Mem[49] <= {8'b00011111 , 8'b00000001};Long_Mem[50] <= {8'b11111010 , 8'b11010111};Long_Mem[51] <= {8'b00001111 , 8'b00000100};Long_Mem[52] <= {8'b00000110 , 8'b00001111};Long_Mem[53] <= {8'b11011101 , 8'b00001100};Long_Mem[54] <= {8'b00000000 , 8'b00011101};Long_Mem[55] <= {8'b00001110 , 8'b11111111};Long_Mem[56] <= {8'b00011001 , 8'b00000111};Long_Mem[57] <= {8'b11110110 , 8'b00011011};Long_Mem[58] <= {8'b11100011 , 8'b00001110};Long_Mem[59] <= {8'b00001111 , 8'b00010110};Long_Mem[60] <= {8'b00000101 , 8'b11111001};Long_Mem[61] <= {8'b00011001 , 8'b11101011};Long_Mem[62] <= {8'b00001010 , 8'b00011100};Long_Mem[63] <= {8'b11111111 , 8'b00011111};LTS_Vld <= 0;LTS_Index <=  0;LTS_Done <= 0;LTS_Re <= 0;LTS_Im <= 0;i <= 0;j <= 0;end  else if( Tx_Clr  ) begin i <= 0;j <= 0;LTS_Vld <= 0;LTS_Index <= 0;LTS_Done <= 0;endelse if( LTS_Req && (LTS_Index<161) ) beginLTS_Index <= LTS_Index + 1;LTS_Vld <=  1'b1; if(i==0)    beginif(j==31) begin j <= 0;i <= i+ 1; LTS_Re <= Long_Mem[j+32][15:8];  LTS_Im <= Long_Mem[j+32][7:0];endelse  beginif(i==0 && j==0) beginLTS_Re <= 8'b11101100; //鐭缁冨簭鍒楀埌闀胯缁冨簭鍒楃殑绐楀彛鍑芥暟LTS_Im <= Long_Mem[j+32][7:0];endelse beginLTS_Re <= Long_Mem[j+32][15:8];  LTS_Im <= Long_Mem[j+32][7:0];endj <= j + 1;endendelse if( i==1 || i==2 )    beginif(j==63) begin j <= 0;i <= i+ 1; LTS_Re <= Long_Mem[j][15:8];  LTS_Im <= Long_Mem[j][7:0];endelse  begin LTS_Re <= Long_Mem[j][15:8];  LTS_Im <= Long_Mem[j][7:0]; j <= j + 1;endendelse begin  //  鍔犵獥澶勭悊LTS_Re <= Long_Mem[0][15:8]>>1; //鍔犵獥锛屽乏绉讳竴浣�  LTS_Im <= Long_Mem[0][7:0]>>1; LTS_Done <= 1'b1;endend else begin LTS_Vld <= 1'b0;endendendmodule          

训练序列模块

`timescale 1ns / 1ps 
///
// Company:                                                                      
// Engineer: YWang                                                                    
//                                                                                   
// Create Date: 2023-03-10  14:22:41
// Design Name:                                                                    
// Module Name: symbol_train.v                                                          
// Project Name:                                                                   
// Target Devices:                                                                  
// Tool versions:                                                                  
// Description:                                                                  
//                                                                                  
// Dependencies: 0                                                                  
//                                                                                  
// Revision:                                                                    
// Revision 0.01 - File Created                                                     
// Additional Comments:????????????????                                                     
//                                                                                   
/// 
module   symbol_train(  input               clk         ,   input               rst_n       ,   input               Tx_Clr      ,   input               Start_En    ,output  [7:0]       Train_Im    ,output  [7:0]       Train_Re    ,output              Train_Vld   ,output  [8:0]       Train_Index ,output              Train_Done           
);              wire                STS_Start_En;wire    [7:0]       STS_Im      ;wire    [7:0]       STS_Re      ;wire                STS_Vld     ;wire    [7:0]       STS_Index   ;wire                STS_Done    ;wire                LTS_Start_En;wire    [7:0]       LTS_Im      ;wire    [7:0]       LTS_Re      ;wire                LTS_Vld     ;      wire    [7:0]       LTS_Index   ;wire                LTS_Done    ;STS_generator  u_STS(.clk                (clk            ),.rst_n              (rst_n          ),.Tx_Clr             (Tx_Clr         ),.Start_En           (STS_Start_En   ),.STS_Im             (STS_Im         ),.STS_Re             (STS_Re         ),.STS_Vld            (STS_Vld        ),.STS_Index          (STS_Index      ),.STS_Done           (STS_Done       ));LTS_generator  u_LTS(.clk                (clk            ),.rst_n              (rst_n          ),.Tx_Clr             (Tx_Clr         ),.Start_En           (LTS_Start_En   ),.LTS_Im             (LTS_Im         ),.LTS_Re             (LTS_Re         ),.LTS_Vld            (LTS_Vld        ),.LTS_Index          (LTS_Index      ),.LTS_Done           (LTS_Done       ));assign Train_Im = STS_Vld ? STS_Im : LTS_Vld ? LTS_Im : 8'b0 ; assign Train_Re = STS_Vld ? STS_Re : LTS_Vld ? LTS_Re : 8'b0 ; assign Train_Vld = STS_Vld ? 1'b1 : LTS_Vld ? 1'b1 : 1'b0;assign Train_Index = STS_Index + LTS_Index;assign Train_Done = LTS_Done;assign STS_Start_En = Start_En;assign LTS_Start_En = STS_Done;endmodule          

仿真波形

在这里插入图片描述

总结

训练序列的产生要明白:
频域上用了12个子载波,间隔为4,BPSK符号格式,功率因数1.4几来着?。
频域固定,因此时域实部和虚部也是固定,通过MATLAB就可以直接得到时域的训练序列的实部和虚部的数值,因此直接在程序中写死循环即可。
数据格式:1位符号,1位整数,6位小数

代码参考:基于FPGA的OFDM基带发射机的设计与实现

训练模块代码未做修改。

相关文章:

OFDM学习-(二)长短序列和PPDU整体数据处理流程

OFDM学习 &#xff08;二&#xff09;长短序列和PPDU整体数据处理流程 OFDM学习前言一、短序列短序列的作用 二、长序列三、PLCP/SIGNAL/DATA数据处理流程三、fpga实现STS模块LTS模块训练序列模块仿真波形 总结 前言 根据框图可以知道发射机这部分信号在DA转换之前&#xff0c…...

.NET周刊【12月第4期 2024-12-22】

国内文章 dotnet 简单使用 ICU 库进行分词和分行 https://www.cnblogs.com/lindexi/p/18622917 本文将和大家介绍如何使用 ICU 库进行文本的分词和分行。 dotnet 简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用 https://www.cnblogs.com/lindexi/p/18621674 本文将和大…...

Conda 安装 Jupyter Notebook

文章目录 1. 安装 Conda下载与安装步骤&#xff1a; 2. 创建虚拟环境3. 安装 Jupyter Notebook4. 启动 Jupyter Notebook5. 安装扩展功能&#xff08;可选&#xff09;6. 更新与维护7. 总结 Jupyter Notebook 是一款非常流行的交互式开发工具&#xff0c;尤其适合数据科学、机器…...

鸿蒙开发:实现键值数据库存储

前言 鸿蒙当中数据持久化存储&#xff0c;为我们提供了多种的实现方式&#xff0c;比如用户首选项方式&#xff0c;关系型数据库方式&#xff0c;键值型数据库方式&#xff0c;文件存储方式等等&#xff0c;对于数据量比较的小的&#xff0c;我们直接选择轻量级的用户首选项方式…...

WebGL 实践(一)开发环境搭建

WebGL 是一种基于 JavaScript 的 API&#xff0c;用于在浏览器中渲染 2D和3D 图形&#xff0c;很多场景都能用&#xff0c;例如游戏开发、数据可视化、在线教育和虚拟现实等应用领域。 零、基础知识 相关基础知识很重要&#xff0c;如果会html、JavaScript等技术掌握起来会更…...

在线机考|2024华为实习秋招春招编程题(最新)——第3题_PCB印刷电路板布线_300分(八)

题目内容 在PCB印刷电路板设计中,器件之间的连线需要避免线路的阻抗值增大、而且赛件之间还有别的器件和别的干扰源,在布线时我们希望受到的干扰尽量小。现将电路板简化成一个MN的矩阵,每个位置(单元格)的值表示其源干扰度。 如果单元格的值为0,表示此位置没有干扰源;如果单…...

Spring源码分析之事件机制——观察者模式(三)

目录 自定义事件 事件监听器 事件发布者&#xff08;服务层&#xff09; 使用示例controller层 Spring源码分析之事件机制——观察者模式&#xff08;一&#xff09;-CSDN博客 Spring源码分析之事件机制——观察者模式&#xff08;二&#xff09;-CSDN博客 这两篇文章是这…...

C#实现画图,及实现图像运动,C#中GDI+图形图像技术(Graphics类、Pen类、Brush类)C#之快速入门GDI+绘图 C#实现快速画图功能

下载源码 <-------- 在C#的世界里&#xff0c;GDI如同一位多才多艺的艺术家&#xff0c;以其强大的绘图能力&#xff0c;让开发者能够轻松地在应用程序中挥洒创意&#xff0c;绘制出丰富多彩的图形世界。GDI不仅支持基本的几何图形绘制&#xff0c;还能处理复杂的图像处理任…...

【51单片机零基础-chapter6:LCD1602调试工具】

实验0-用显示屏LCD验证自己的猜想 如同c的cout,前端的console.log() #include <REGX52.H> #include <INTRINS.H> #include "LCD1602.h" int var0; void main() {LCD_Init();LCD_ShowNum(1,1,var211,5);while(1){;} }实验1-编写LCD1602液晶显示屏驱动函…...

算法题(24):只出现一次的数字(二)

审题&#xff1a; 数组中除了答案元素只出现一次外&#xff0c;其他元素都会出现三次&#xff0c;我们需要找到并返回答案元素 思路&#xff1a; 由于现在会出现三次&#xff0c;所以利用异或运算符的方法就会失效。而所有数据都在32位二进制范围内&#xff0c;所以我们采用依次…...

趣味编程:心形曲线

目录 1.序言 2.代码展示 3.代码详解 3.1 头文件包含 3.2 绘制坐标轴函数 3.3 main 函数主体部分 4. 小结 1.序言 2025年的第一篇博客就用这个笛卡尔心形图开篇吧&#xff0c;寓意着新年大家能够有心有所属&#xff0c;祝诸位程序猿 / 程序媛 能够早点遇到自己的另一半。…...

C# 设计模式(结构型模式):享元模式

C# 设计模式&#xff08;结构型模式&#xff09;&#xff1a;享元模式 (Flyweight Pattern) 在软件开发中&#xff0c;尤其是在处理大量对象时&#xff0c;我们常常会面临内存和性能上的挑战。当多个对象具有相似的状态时&#xff0c;通常会占用大量的内存资源&#xff0c;从而…...

计算机毕业设计Django+Tensorflow音乐推荐系统 音乐可视化 卷积神经网络CNN LSTM音乐情感分析 机器学习 深度学习 Flask

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

mysql 死锁案例及简略分析

准备数据 # 创一个测试表&#xff0c;存储引擎使用 innodb create table test_lock (id int primary key auto_increment,name varchar(20),age int )engine innodb;insert into test_lock (name,age) values (ionc001,10); insert into test_lock (name,age) values (ionc00…...

第四届计算机、人工智能与控制工程

第四届计算机、人工智能与控制工程 The 4th International Conference on Computer, Artificial Intelligence and Control Engineering 重要信息 大会官网&#xff1a;www.ic-caice.net 大会时间&#xff1a;2025年1月10-12日 大会地点&#xff1a;中国合肥 (安徽大学磬苑…...

RIP配置实验

RIP配置实验 案例简介 天一公司下属三个分公司&#xff0c;属于不同的地区&#xff0c;三个公司之间用路由器连接&#xff0c;路由器名称分别为分别为 Router0、Router1、Router2&#xff0c;请把一公司的部门pc0,通过二公司路由器&#xff0c;连接三公司的部门pc1,公司之间通…...

C# 整型、浮点型 数值范围原理分析

总目录 前言 一、整型、浮点型 数值范围列表 二、什么是大小、范围 在上面的列表中&#xff0c;每个数据类型都有自己的Range (范围) 和 Size (大小)。 1. 范围 范围好理解&#xff0c;就是对应数据类型的数据范围&#xff0c;如 sbtyte 的数据范围是 -128~127&#xff0c;超…...

Adobe Acrobat Pro DC 2023 下载安装教程,附详细图文

简介&#xff1a; Adobe Acrobat Pro DC 2023 是由 Adobe 公司推出的一款全面的 PDF 编辑、查看和管理软件。这款软件无论是个人用户还是企业级用户&#xff0c;都可以凭借其强大的功能满足不同的需求。作为一款业内领先的 PDF 处理工具&#xff0c;Adobe Acrobat Pro DC 不仅…...

stable diffusion秋叶启动器安装roop插件

方法简洁明了&#xff1a; 第一步&#xff1a;下载秋叶启动器 第二步&#xff1a;输入网址&#xff1a;https://visualstudio.microsoft.com/zh-hans/downloads/&#xff0c;下载vs安装程序&#xff0c;安装开始会自动弹出如下窗口&#xff0c;选择2个环境&#xff1a;Python开…...

7-14 统计工龄

给定公司多名员工的工龄&#xff0c;按输入工龄顺序输出每个工龄段有多少员工。 输入格式: 给出多个整数&#xff0c;即每个员工的工龄&#xff0c;范围在[0, 50]。 输出格式: 按输入工龄顺序输出每个工龄的员工个数&#xff0c;格式为&#xff1a;“工龄:人数”。 每项占一…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...

PH热榜 | 2025-06-08

1. Thiings 标语&#xff1a;一套超过1900个免费AI生成的3D图标集合 介绍&#xff1a;Thiings是一个不断扩展的免费AI生成3D图标库&#xff0c;目前已有超过1900个图标。你可以按照主题浏览&#xff0c;生成自己的图标&#xff0c;或者下载整个图标集。所有图标都可以在个人或…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...