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

关于xilinx的FFTIP的使用和仿真

工具:vivado2018.3,modelsim10.6d

场景:在进行数据进行频谱分析的时候,使用FPGA来完成FFT的计算可以加快数据的计算速度。

下面使用仿真完成DDS产生的数据的FFT以及IFFT。原始数据使用DDSIP产生,通过IP产生的波形数据直接输入到FFT进行傅里叶正变换。然后再使用FFT对数据进行IFFT傅里叶逆变换还原波形数据。过程中完成了fftshift(将零频分量搬移到频谱中心),以及使用cordic计算平方根的过程。

FFT端口说明

端口名称

方向

描述

aclk

I

时钟

aresetn

I

复位

s_axis_config_tvalid

I

配置有效

s_axis_config_tready

O

配置准备好

s_axis_config_tdata

I

针对配置通道的TDATA。携带配置信息: CP_LEN、FWD/INV、NFFT和SCALE_SCH。关于FWD/INV为FFTIP的方式,1为FFT,0为IFFT。当选择FFT点数可配置时NFFT为点数。SCALE_SCH为缩放计划,以确保在计算过程中不溢出。对于不同的IO架构有不同的规则。

s_axis_data_tdata

I

输入数据

s_axis_data_tvalid                

I

数据有效

s_axis_data_tready

O

数据准备好

s_axis_data_tlast

I

输入的一帧最后一个数据

m_axis_data_tvalid

O

输出数据有效

m_axis_data_tready

I

输出数据准备好

m_axis_data_tdata

O

输出数据

m_axis_data_tuser

O

输出数据状态参数。包含XK_INDEX, OVFLO, and BLK_EXP.

XK_INDEX输出数据索引

OVFLO溢出标志
BLK_EXP块指数,字段中出现的值表示在转换过程中数据被缩放的比特总数。例如,如果BLK_EXP的值为00101 = 5,这意味着相关的输出数据(XK_RE,XK_IM)被缩放为5位(向右移5位),或者换句话说,被除以32,以充分利用输出数据路径的可用动态范围而不会溢出。

m_axis_data_tlast

O

输出的最后一个数据。

m_axis_status_tvalid

O

状态有效

m_axis_status_tready

I

状态准备好

m_axis_status_tdata

O

状态数据。包含每一帧的状态休息。

event_frame_started

O

事件帧开始

event_tlast_unexpected

O

当核心在不是帧中最后一个的数据样本上看到s_axis_data_tlast高时有效

event_tlast_missing

O

当一帧的最后一个数据样本上的s_axis_data_tlast为低时断言。

event_fft_overflow

O

当正在从数据输出通道卸载的数据样本中出现溢出时断言。仅在溢出是一个有效的选项时才会出现。

event_data_in_channel_halt

O

当核心从数据输入通道请求数据而没有数据可用时断言。

event_data_out_channel_halt

O

当核心从数据输入通道请求数据而没有数据可用时断言。

event_status_in_channel_halt

O

当核心试图将数据写入状态通道而无法这样做时,将被断言。仅在非实时模式下出现。

FFT IP的配置界面

Channels:从1到12中选择通道数。三种Burst I/O架构均可使用多通道操作。对于浮点格式,通道必须为1。

Transform Length: 选择一次处理所需点的大小。

The Pipelined Streaming I/O:运行连续处理。

Radix-4,Radix-2,Radix-2 Lite Burst I/O。几种不同的实现方式,延迟依次增大,资源依次减少。

Run time configurable Transform Length:允许运行的过程中改变点数。勾选此后注意,s_axis_config_tdata的字段的意义。

DataFormat:选择输入和输出数据样本是否为定点格式,或在IEEE-754单精度(32位)浮点格式中。浮点格式不是当核心处于多通道配置时可用。

Scaling Options:

Scaling:用户自定义缩放格式。注意s_axis_config_tdata的字段需要配置每个阶段的缩放信息。

Block Floating-Point:由核心来判断所需的缩放程度,以实现对可用动态范围的最佳利用,并以块指数的形式报告缩放因子。注意m_axis_data_tuser字段的块指数报告。

Output ordering:自然顺序和反转顺序。这里使用自然顺序。

Optional Output Fields:XK_INDEX,输出数据索引。

资源消耗设置界面。

关于matlab仿真,产生1MHZ的正弦波余弦波信号,采样率为100MHZ。共计1024个点。对其进行FFT。

matlab仿真程序

% 生成正弦波
fc = 1e6;               % 频率
fs = 100e6;             % 采样率
t1 = 0:1/fs:1e-3;       % 时间序列,1微秒
t = t1(1:1024);         %RW需要取整数计算出的频率是真实sin_wave = sin(2 * pi * fc * t);
cos_wave = cos(2 * pi * fc * t);% 复数
plural_wave = cos_wave+ 1i*sin_wave;% 加噪声
data =awgn(cos_wave,100) ;
% data =awgn(plural_wave,100) ;% 绘制原始正弦波数据
figure;
subplot(1,1,1);
plot(t*1e9, imag(plural_wave));
title('原始正弦波');
xlabel('时间 (ns)');
ylabel('幅值');%%做FT变化,算平均功率谱,并画谱输出
FFT_data = data; N = length(FFT_data); w = blackman(N);Fs =100e6;
% Sf_I_Q_wave=fftshift(fft((FFT_data).*w',N)*2.381);
% w = gausswin(N);%高斯窗函数,窗长度为N
gauss_data = fft((FFT_data).*w',N)*2.396;%%做FFT变换,加窗并还原窗系数
Sf_I_Q_wave=fftshift(gauss_data);
Sf_I_Q_wave_dBm =(abs(Sf_I_Q_wave));
% Sf_I_Q_wave_dBm =20*log10(1/N*abs(Sf_I_Q_wave));
X_freq=Fs.*(-N/2:N/2-1)/N;figure(2);plot(X_freq,Sf_I_Q_wave_dBm);title('plural_wave原始数据普');

对实信号余弦波进行傅里叶变换,频谱图如下。

对复信号进行进行傅里叶变换频谱。

在逻辑中我们使用DDSIP来产生我们需要的波形数据。

DDS IP配置界面

可以看到我需要控制DDS的控制字来生成不同频率的波形数据,输出数据的格式为高16位为正弦,低16位为余弦。

输出频率计算公式。

其中X为频率控制字,Fs采样率,即系统时钟。N为多少位的控制字。要输出1MHZ的波形信号的控制字为X=655。

输出波形正好为一个周期1000ns。即1MHZ。

1024点FFT实信号输入。

FFTSHIFT频谱搬移模块

对于FFTSHIFT模块我们打开matlab帮助后可以发现,搬移的效果就是以频谱中心左右两端谱线互换。

ABS求平方根模块

求复数的模,定义为

复数\left | a+b*i \right |\sqrt{a^{2}+b^{2}}

在逻辑中我们使用cordic来计算平方根。

cordicIP配置如下所示

模块仿真

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/08/12 14:14:51
// Design Name: 
// Module Name: vtf_fft_test
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module vtf_fft_test;
//fft
//input
wire               [31:0] s_axis_data_tdata    ; 
wire                      s_axis_data_tvalid   ; 
wire                      s_axis_data_tready   ; 
wire                      s_axis_data_tlast    ; 
//output
wire               [31:0] m_axis_data_tdata    ; 
wire                      m_axis_data_tvalid   ; 
wire                      m_axis_data_tready   ; 
wire                      m_axis_data_tlast    ; 
wire               [23:0] m_axis_data_tuser    ; //dds
wire                      m_dds_tvalid         ; 
wire               [31:0] m_dds_tdata          ; //system signal
reg                       clk                  ; 
reg                       rst_n                ; 
reg                       data_gen             ; 
reg                       data_flog            ; 
reg                       douta_vld            ; 
reg                [15:0] cnt                  ; //fftshift
wire               [31:0] fftshift_data        ; // 
wire                      fftshift_data_valid  ; // 
wire                [9:0] fftshift_cnt         ; // //abswire               [15:0] abs_data             ; // (output)
wire                      abs_data_valid       ; // (output)
//system signal//
assign  s_axis_data_tdata   = douta_vld ? m_dds_tdata : 32'h0;//给复信号
//assign  s_axis_data_tdata   = douta_vld ? {16'd0,m_dds_tdata[15:0]} : 32'h0;//实信号
assign  s_axis_data_tvalid  = douta_vld;
assign  s_axis_data_tlast   = (cnt == 16'd1023 );assign  m_axis_data_tready  = 1'b1;//FFT后数据
//取实部
wire               [15:0] f_imag               ; 
wire               [15:0] f_real               ; 
wire               [31:0] f_abs                ; assign  f_imag = m_axis_data_tdata[31:16];
assign  f_real = m_axis_data_tdata[15:0];
assign  f_abs  = f_imag + f_real;//=========================================================
dds_compiler_0 u_dds (.aclk                         (clk                         ), // input wire aclk.s_axis_config_tvalid         (1'b1                         ), // input wire s_axis_config_tvalid.s_axis_config_tdata          (16'd655                      ), // input wire [15 : 0] s_axis_config_tdata.m_axis_data_tvalid           (m_dds_tvalid                 ), // output wire m_axis_data_tvalid.m_axis_data_tdata            (m_dds_tdata                  ), // output wire [31 : 0] m_axis_data_tdata.m_axis_phase_tvalid          (                             ), // output wire m_axis_phase_tvalid.m_axis_phase_tdata           (                             )// output wire [15 : 0] m_axis_phase_tdata
);//=========================================================
xfft_0 u_fft (.aclk                         ( clk                         ), // input wire aclk.aresetn                      ( rst_n                       ), // input wire aresetn.s_axis_config_tdata          (8'd1                         ), // input wire [7 : 0] s_axis_config_tdata.s_axis_config_tvalid         (1'b1                         ), // input wire s_axis_config_tvalid.s_axis_config_tready         (                             ), // output wire s_axis_config_tready.s_axis_data_tdata            (s_axis_data_tdata            ), // input wire [31 : 0] s_axis_data_tdata.s_axis_data_tvalid           (s_axis_data_tvalid           ), // input wire s_axis_data_tvalid.s_axis_data_tready           (s_axis_data_tready           ), // output wire s_axis_data_tready.s_axis_data_tlast            (s_axis_data_tlast            ), // input wire s_axis_data_tlast.m_axis_data_tdata            (m_axis_data_tdata            ), // output wire [31 : 0] m_axis_data_tdata.m_axis_data_tuser            (m_axis_data_tuser            ), // output wire [23 : 0] m_axis_data_tuser.m_axis_data_tvalid           (m_axis_data_tvalid           ), // output wire m_axis_data_tvalid.m_axis_data_tready           (m_axis_data_tready           ), // input wire m_axis_data_tready.m_axis_data_tlast            (m_axis_data_tlast            ), // output wire m_axis_data_tlast.m_axis_status_tdata          (                             ), // output wire [7 : 0] m_axis_status_tdata.m_axis_status_tvalid         (                             ), // output wire m_axis_status_tvalid.m_axis_status_tready         (1'b1                         ), // input wire m_axis_status_tready.event_frame_started          (                             ), // output wire event_frame_started.event_tlast_unexpected       (                             ), // output wire event_tlast_unexpected.event_tlast_missing          (                             ), // output wire event_tlast_missing.event_status_channel_halt    (                             ), // output wire event_status_channel_halt.event_data_in_channel_halt   (                             ), // output wire event_data_in_channel_halt.event_data_out_channel_halt  (                             )// output wire event_data_out_channel_halt
);//==========================================================
fft_shift u_fft_shift(
//.fft_data                     (m_axis_data_tdata            ), // (input ) .fft_cnt                      (m_axis_data_tuser[9:0]       ), // (input ) .fft_last                     (m_axis_data_tlast            ), // (input ) .fft_data_valid               (m_axis_data_tvalid           ), // (input ) .fftshift_data                (fftshift_data                ), // (output) .fftshift_data_valid          (fftshift_data_valid          ), // (output) .fftshift_cnt                 (fftshift_cnt[9:0]            ), // (output) 
//system signal.sys_clk                      (clk                          ), // (input ) .rst_n                        (rst_n                        )// (input ) );//==========================================================
abs_top u_abs_top(
//.plural_data                  (fftshift_data[31:0]            ), // (input ) (input ).plural_data_valid            (fftshift_data_valid            ), // (input ) (input ).abs_data                     (abs_data[15:0]               ), // (output) (output).abs_data_valid               (abs_data_valid               ), // (output) (output)
//system signal.clk                          (clk                          ), // (input ) (input ).rst_n                        (rst_n                        )  // (input ) (input )
);//==========================================================
xfft_0 u_ifft (.aclk                         ( clk                         ), // input wire aclk.aresetn                      ( rst_n                       ), // input wire aresetn.s_axis_config_tdata          (8'd1                         ), // input wire [7 : 0] s_axis_config_tdata.s_axis_config_tvalid         (1'b1                         ), // input wire s_axis_config_tvalid.s_axis_config_tready         (                             ), // output wire s_axis_config_tready.s_axis_data_tdata            (m_axis_data_tdata            ), // input wire [31 : 0] s_axis_data_tdata.s_axis_data_tvalid           (m_axis_data_tvalid           ), // input wire s_axis_data_tvalid.s_axis_data_tready           (m_axis_data_tready           ), // output wire s_axis_data_tready.s_axis_data_tlast            (m_axis_data_tlast            ), // input wire s_axis_data_tlast.m_axis_data_tdata            (                             ), // output wire [31 : 0] m_axis_data_tdata.m_axis_data_tuser            (                             ), // output wire [23 : 0] m_axis_data_tuser.m_axis_data_tvalid           (                             ), // output wire m_axis_data_tvalid.m_axis_data_tready           (1'b1                         ), // input wire m_axis_data_tready.m_axis_data_tlast            (                             ), // output wire m_axis_data_tlast.m_axis_status_tdata          (                             ), // output wire [7 : 0] m_axis_status_tdata.m_axis_status_tvalid         (                             ), // output wire m_axis_status_tvalid.m_axis_status_tready         (1'b1                         ), // input wire m_axis_status_tready.event_frame_started          (                             ), // output wire event_frame_started.event_tlast_unexpected       (                             ), // output wire event_tlast_unexpected.event_tlast_missing          (                             ), // output wire event_tlast_missing.event_status_channel_halt    (                             ), // output wire event_status_channel_halt.event_data_in_channel_halt   (                             ), // output wire event_data_in_channel_halt.event_data_out_channel_halt  (                             )// output wire event_data_out_channel_halt
);//================================================================
//================================================================
initial
beginclk = 0;rst_n=0;data_gen   =0;#100;rst_n      =1;#1000;data_gen   =1;#100;data_gen   =0;endalways @ (posedge clk or negedge rst_n)
beginif(rst_n == 1'b0)begin         data_flog   <= 1'b0;endelse if(data_gen == 1'b1)begindata_flog   <= 1'b1;end else if(cnt   >= 10'd1022)begindata_flog   <= 1'b0;end
endalways @ (posedge clk or negedge rst_n)
beginif(rst_n == 1'b0)begin         douta_vld   <= 1'b0;endelse begindouta_vld   <= data_flog;end endalways @ (posedge clk or negedge rst_n)
beginif(rst_n == 1'b0)begin         cnt <= 16'd0;endelse if(s_axis_data_tvalid == 1'b1 && s_axis_data_tready == 1'b1)begincnt <= cnt + 1'b1;end else begincnt <= cnt;endend//================================================================
//================================================================always #5 clk = ~clk;endmodule

复信号输入。

实信号输入。

逆傅里叶变换结果

相关文章:

关于xilinx的FFTIP的使用和仿真

工具&#xff1a;vivado2018.3&#xff0c;modelsim10.6d 场景&#xff1a;在进行数据进行频谱分析的时候&#xff0c;使用FPGA来完成FFT的计算可以加快数据的计算速度。 下面使用仿真完成DDS产生的数据的FFT以及IFFT。原始数据使用DDSIP产生&#xff0c;通过IP产生的波形数据…...

ant design pro 如何去保存颜色

上图 就是实现这样的效果 后端是这样的&#xff0c;这个颜色肯定是存到字符串里的 这是第一步 import mongoose, { Schema, Document } from mongoose;interface IDiscountCard extends Document {title: string;subtitle: string;image: string;shopUrl: string;bgColor: s…...

【Hadoop】建立圈内组件的宏观认识

01存储02计算03调度04其他05回忆 众多组件们构建了大规模分布式计算和存储平台。本文介绍Hadoop生态圈中各个组件的主要功能和作用&#xff0c;辅助学者理解每个组件的定位和用途&#xff0c;从而建立对圈内组件的宏观认识。梳理清楚HDFS、MapReduce、YARN、Hive、HBase、Spark…...

C++:命名空间与输入输出

目录 前言 一、命名空间 1.1 namespace的价值 1.2 namespace的定义 1.3 命名空间的使用 二、C输入&输出 前言 C是一种面向对象的计算机程序设计语言&#xff0c;‌它扩展了C语言的功能&#xff0c;‌并引入了面向对象编程的概念&#xff0c;‌如类、‌继承和多态等&a…...

Azure DevOps Server 数据库日志已满,TF30042: The database is full

Contents 1. 问题描述2. 处理方式 2.1 系统备份2.2 收缩日志2.3 恢复模式2.4 日志增长无法控制 1. 问题描述 Azure DevOps Server 作为微软的软件开发管理平台产品&#xff0c;理所当然地使用了微软的数据库软件SQL Server。 在一个大型的开发团队中&#xff0c;Azure DevOps S…...

[C#]OpenCvSharp 实现Bitmap和Mat的格式相互转换

//转为 bitmap方法一&#xff1a; Bitmap map OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat); process_pictureBox.Image map; //转为 bitmap方法二&#xff1a; Bitmap map new Bitmap(mat.ToMemoryStream()); process_pictureBox.Image map; //Image img 转为…...

【区块链+金融服务】基于区块链的供应链金融系统 | FISCO BCOS应用案例

传统供应链金融存在着信息不对称、信任问题和繁琐流程等弊端。为了解决这些问题&#xff0c;京北方搭建了基于区块链 的供应链金融系统&#xff0c;提供了更高效、透明、安全和可信的交易环境。 系 统 采 用 FISCO BCOS 为 底 层 链&#xff0c; 技 术 栈 使 用 Java 语 言 进…...

AI语言大模型商业价值深度解析

点击蓝字 关注我 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;特别是深度学习算法的进步&#xff0c;AI语言大模型在自然语言处理领域的表现日益突出。国内外多种语言大模型如&#xff1a;OpenAi 的 ChatGpt&#xff0c;阿里通义千问&#xff0c;百度文心…...

理解DDD领域驱动设计思想

一、引言 在软件开发的广袤领域中&#xff0c;领域驱动设计&#xff08;Domain-Driven Design&#xff0c;简称 DDD&#xff09;犹如一颗璀璨的明星&#xff0c;备受瞩目。对于期望运用 DDD 开展项目的研发人员而言&#xff0c;明晰 DDD 的本质是实现其有效应用的基石。需注意…...

音频剪辑软件哪个好用?五大音频剪辑软件分享

如果你正打算在家自学视频制作&#xff0c;那么恭喜你&#xff0c;你已经踏上了一段充满魔法与惊喜的旅程&#xff01;不过&#xff0c;别忘了&#xff0c;视频的灵魂不仅仅在于画面&#xff0c;更在于那直击心灵的音效。 想象一下&#xff0c;一个精心剪辑的片段&#xff0c;…...

12.2 使用prometheus-sdk向pushgateway打点

本节重点介绍 : 使用golang sdk打prometheus4种指标&#xff0c;推送到pushgateway gauge、counter、histogram、summary的初始化4种类似的设置值的方法推送到pushgateway的方法 prometheus配置采集pushgateway&#xff0c;grafana上配大盘 golang-sdk 项目地址 https://git…...

HTTPS 详解

HTTPS 是以安全为目标的 HTTP 通道&#xff0c;它在 HTTP 中加入 SSL 层以提高数据传输的安全性。HTTP 被用于在 Web 浏览器和网站服务器之间传递信息&#xff0c;但以明文形式发送内容&#xff0c;不提供任何方式的数据加密&#xff0c;如果攻击者截取了 Web 浏览器和网站服务…...

Microsoft Edge 使用方法与秘诀概览

目录 ​编辑引言 Microsoft Edge 功能与技巧概览 掌握这些设置技巧&#xff0c;让 Edge 浏览器的体验更干净 1. 使用阅读视图 2. 开启广告过滤 3. 管理扩展 4. 个性化新标签页 5. 使用网页截图 6. 清理浏览器缓存 7. 管理启动设置 8. 自定义地址栏建议 9. 使用内置笔…...

【视频】onvif、RTP、RTCP、SDP、RTSP、gb21818区别

ONVIF (Open Network Video Interface Forum): ONVIF是一个全球性的开放网络视频接口论坛&#xff0c;致力于发展基于IP网络的物联网设备的标准化。它提供了一个通用的标准接口&#xff0c;使不同厂商生产的网络视频产品能够互相兼容。 RTP (Real-time Transport Protocol): R…...

8-4 循环神经网络

对于 (8.4.2)中的函数 f f f&#xff0c;隐变量模型不是近似值。 毕竟 h t h_{t} ht​是可以仅仅存储到目前为止观察到的所有数据&#xff0c; 然而这样的操作可能会使计算和存储的代价都变得昂贵。 回想一下&#xff0c;我们在前面讨论过的具有隐藏单元的隐藏层。 值得注意的…...

Linux系统编程 --- 多线程

线程&#xff1a;是进程内的一个执行分支&#xff0c;线程的执行粒度&#xff0c;要比进程要细。 一、线程的概念 1、Linux中线程该如何理解 地址空间就是进程的资源窗口。 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1…...

Grafana中的rate与irate以及histogram

用法 rate rate函数用于计算一个时间序列在给定时间范围内的平均速率。它对每个数据点进行线性插值来计算速率&#xff0c;因此对于平滑和稳定的数据来说&#xff0c;rate是一个不错的选择。语法如下&#xff1a; rate(metric_name[time_range])metric_name: 指标名称。time…...

什么是网络安全态势感知

态势感知是一种基于环境的、动态、整体地洞悉安全风险的能力&#xff0c;是以安全大数据为基础&#xff0c;从全局视角提升对安全威胁的发现识别、理解分析、响应处置能力的一种方式、最终是为了决策与行动&#xff0c;是安全能力的落地 态势感知的重要性 随着网络与信息技术的…...

php 在app中唤起微信app进行支付,并处理回调通知

<?phpnamespace app\api\controller;use think\facade\Db; use think\facade\Log;class Wxzf {...

高效同步与处理:ADTF流服务在自动驾驶数采中的应用

目录 一、ADTF 流服务 1、流服务源&#xff08;Streaming Source&#xff09; 2、流服务汇&#xff08;Streaming Sink&#xff09; 二、数据链路 1、数据管道&#xff08;Data Pipe&#xff09; 2、子流&#xff08;Substreams&#xff09; 3、触发管道&#xff08;Tri…...

【Arduino】ATmega328PB 连接 LSM6DS3 姿态传感器,并读数据(不确定 ESP 系列是否可行,但大概率是可行的)

总览 1.初始化 ATmega328PB&#xff0c;默认大家已经完成了 328 的配置准备工作&#xff0c;已经直接能够向里面写入程序 2.接线&#xff0c;然后验证 mega328 的 I2C 设备接口能否扫描到 LSM6DS3 3.编写代码&#xff0c;上传&#xff0c;查看串口数据。完成。 一、初始化 AT…...

live2d + edge-tts 优雅的实现数字人讲话 ~

震惊&#xff01;live2d数字人竟开口说话 ~ 之前有想做数字人相关项目&#xff0c;查了一些方案。看了一些三方大厂的商用方案&#xff0c;口型有点尴尬&#xff0c;而且很多是采用视频流的方案&#xff0c;对流量的消耗很大。后来了解了live2d 技术&#xff0c;常在博客网页上…...

二进制安装php

下载php二进制包&#xff1a; 官网地址&#xff1a;https://www.php.net/releases/ PHP: Releaseshttps://www.php.net/releases/在里边可以选择自己要下载的包进行下载&#xff1b; 下载完成后进行解压&#xff1a; tar xvzf php-7.3.12.tar.gz 解压后 进入目录进行预编…...

旧版Pycharm支持的python版本记录

版权声明&#xff1a;本文为博主原创文章&#xff0c;如需转载请贴上原博文链接&#xff1a;旧版Pycharm支持的python版本记录-CSDN博客 前言&#xff1a;近期由于打算研究GitHub上一个开源量化交易平台开发框架&#xff0c;但是该框架是基于python3.10的版本开发&#xff0c;所…...

java实现七牛云内容审核功能,文本、图片和视频的内容审核(鉴黄、鉴暴恐、敏感人物)

目录 1、七牛云内容审核介绍 2、查看内容审核官方文档 2.1、文本内容审核 2.1.1、文本内容审核的请求示例 2.1.2、文本内容审核的返回示例 2.2、图片内容审核 2.2.1、请求参数 2.2.2、返回参数 2.3、视频内容审核 3、代码实现 3.1、前期代码准备 3.2、文本内容审核…...

C++面试基础系列-struct

系列文章目录 文章目录 系列文章目录C面试基础系列-struct1.C中struct2.C中struct2.1.同名函数2.2.typedef定义结构体别名2.3.继承 3.总结3.1.C和C中的Struct区别 4.struct字节对齐5.struct与const 关于作者 C面试基础系列-struct 1.C中struct struct里面只能放数据类型&#…...

代码随想录算法训练营 | 动态规划 part05

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 例子&#xff1a; 背包可容纳重…...

英特尔XPU大模型应用创新

...

仿Muduo库实现高并发服务器——socket网络通信模块

本项目就是基于TCP网络通信搭建的。 TCP: 客户端&#xff1a;socket(),connect(). 服务端&#xff1a;socket(),bind(),listen(),accept(). 下面代码就是对原生API网络套接字的封装。需要熟悉原生API网络套接字接口。 下面这段代码&#xff0c;没什么好讲的&#xff0c;就不…...

模型 神经网络(通俗解读)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。仿脑智能&#xff0c;深度学习&#xff0c;精准识别。 1 神经网络的应用 1.1 鸢尾花分类经典问题 神经网络的一个经典且详细的经典应用是鸢尾花分类问题 。主要是通过构建一个神经网络模型来自动区分…...

事务的使用

1.如何使用事务: 1.1.事务的完成过程&#xff1a; 1.步骤1&#xff1a;开启事务2.步骤2&#xff1a;一系列的DML操作3.步骤3&#xff1a;事务结束状态&#xff1a;提交事务(COMMIT)&#xff0c;中止事务&#xff08;事务回滚ROLLBACK&#xff09; 1.2.事务分类&#xff1a; …...

【免费】企业级大模型应用推荐:星环科技无涯·问知

无涯问知是星环科技发布的大模型应用系统&#xff0c;那么我们先简单了解下星环科技吧&#xff01; 星环科技&#xff08;股票代码&#xff1a;688031&#xff09;致力于打造企业级大数据和人工智能基础软件&#xff0c;围绕数据的集成、存储、治理、建模、分析、挖掘和流通等数…...

从〇 搭建PO模式的Web UI自动化测试框架

Page Object模式简介 核心思想 将页面元素和操作行为封装在独立的类中&#xff0c;形成页面对象&#xff08;Page Object&#xff09;。每个页面对象代表应用程序中的一个特定页面或组件。 优点&#xff1a; 代码复用性高 页面对象可以在多个测试用例中复用。 易于维护 …...

在Ubuntu中重装Vscode(没有Edit Configurations(JSON)以及有错误但不标红波浪线怎么办?)

在学习时需要将vscode删除重装&#xff0c;市面上很多方法都不能删干净&#xff0c;删除之后拓展都还在。因此下面的方法可以彻底删除。注意&#xff0c;我安装时使用的是snap方法。 如果你的VScode没有Edit Configurations(JSON)&#xff0c;以及有错误但不标红波浪线的话&…...

Oracle 用户-表空间-表之间关系常用SQL

问题&#xff1a; 当某一个表数据量特别大&#xff0c;突然插入数据一直失败&#xff0c;可能是表空间不足&#xff0c;需要查看表的使用率 用户-表空间-表之间关系&#xff1a;用户可以有多个表空间&#xff0c;表空间可以有多个表&#xff0c;表只能拥有一个表空间和用户 1.…...

家政服务管理系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;管理阿姨管理&#xff0c;家政公司管理&#xff0c;服务项目管理&#xff0c;家政预约管理&#xff0c;评价管理&#xff0c;留言板管理&#xff0c;系统管理 微信端账号功能包括…...

【算法】并查集的介绍与使用

1.并查集的概论 定义&#xff1a; 并查集是一种树型的数据结构&#xff0c;用于处理一些不相交集合的合并及查询问题&#xff08;即所谓的并、查&#xff09;。比如说&#xff0c;我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。 主要构成&#xff1a; …...

Shell——运算符

在 Shell 编程中&#xff0c;运算符用于执行各种类型的操作&#xff0c;如算术运算、字符串比较、文件测试等。以下是 Shell 中常用的运算符分类和示例&#xff1a; 1. 算术运算符 Shell 中使用 expr 或 $(( ... )) 来进行算术运算。 : 加法-: 减法*: 乘法/: 除法%: 取余**:…...

SweetAlert2

1. SweetAlert2 SweetAlert2是一个基于JavaScript的库, 用于在网页上替换标准的警告框(alert), 确认框(confirm)和提示框(prompt), 并提供更加美观和用户友好的界面.需要在项目中引入SweetAlert2, 可以通过CDN链接或者将库文件下载到你的项目中来实现这一点. 通过CDN引入:<…...

c语言中比较特殊的输入函数

目录 一.getchar()函数 1.基本功能 2.使用方法 (1).读取单个字符 (2).读取多个字符&#xff08;直到遇到换行符&#xff09; (3).处理输入中的空白字符 3.返回值 4.应用场景 5.注意事项 二.fgets()函数 1.函数原型 2.工作原理 3.使用示例 (1).从标准输入读取一行…...

Java版自动化测试之Selenium

1. 准备 编程语言&#xff1a;Java JDK版本&#xff1a;17 Maven版本&#xff1a;3.6.1 2. 开始 声明&#xff1a;本次只测试Java的Selenium自动化功能 本次示例过程&#xff1a;打开谷歌游览器&#xff0c;进入目标网址&#xff0c;找到网页的输入框元素&#xff0c;输入指…...

【计算机网络】——计算机网络的性能指标

速率&#xff08;speed&#xff09; 连接在计算机网络上的主机在数字信道上传送数据的速率。 影响条件&#xff1a; 带宽&#xff08;band width&#xff09; 指在固定的时间可传输的资料数量 单位&#xff1a;bps或HZ 吞吐量&#xff08;throughtput&#xff09; 指对网络、…...

MongoDB数据类型介绍

MongoDB作为一种高性能、开源、无模式的文档型数据库&#xff0c;支持丰富的数据类型&#xff0c;以满足各种复杂的数据存储需求。本文将详细介绍MongoDB支持的主要数据类型&#xff0c;包括数值类型、字符串类型、日期和时间类型、布尔类型、二进制类型、数组、对象以及其他扩…...

【SpringBoot】SpringBoot 中 Bean 管理和拦截器的使用

目录 1.Bean管理 1.1 自定义Bean对象 1.2 Bean的作用域和生命周期 2.拦截器的使用 1.Bean管理 默认情况下&#xff0c;Spring项目启动时&#xff0c;会把我们常用的Bean都创建好放在IOC容器中&#xff0c;但是有时候我们自定义的类需要手动配置bean&#xff0c;这里主要介绍…...

Spring IoCDI(中)--IoC的进步

通过上文的讲解和学习, 我们已经知道了Spring IoC 和DI的基本操作, 接下来我们来系统的学习Spring IoC和DI 的操作. 前⾯我们提到IoC控制反转&#xff0c;就是将对象的控制权交给Spring的IOC容器&#xff0c;由IOC容器创建及管理对 象&#xff0c;也就是bean的存储。 1. Bean的…...

读软件开发安全之道:概念、设计与实施02经典原则

1. CIA原则 1.1. 软件安全都构建在信息安全的三大基本原则之上&#xff0c;即机密性(confidentiality)、完整性(integrity)和可用性(availability) 1.2. 双方交换的数据 1.2.1. 从技术上看&#xff0c;端点之间的数据交换本身就会削弱交互的机密性 1.2.2. 隐藏通信数据量的一…...

MySQL中处理JSON数据:大数据分析的新方向,详解与示例

文章目录 1. MySQL中的JSON数据类型2. JSON函数和运算符3. 创建JSON列的表4. 插入JSON数据5. 查询JSON数据6. 复杂查询和聚合7. JSON 数据的索引8. 总结 在当今的大数据时代&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;作为一种轻量级的数据交换格式&a…...

【图形学】TA之路-矩阵

在 Unity 中&#xff0c;矩阵广泛用于处理各种图形变换&#xff0c;例如平移、旋转、缩放等。矩阵的使用不仅限于三维空间&#xff0c;还可以应用于二维空间的操作。了解矩阵及其运算对于游戏开发和计算机图形学非常重要。Unity 中使用的是行向量不是列向量&#xff0c;这个要注…...

LAMM: Label Alignment for Multi-Modal Prompt Learning

系列论文研读目录 文章目录 系列论文研读目录文章题目含义AbstractIntroductionRelated WorkVision Language ModelsPrompt Learning MethodologyPreliminaries of CLIPLabel AlignmentHierarchical Loss 分层损失Parameter Space 参数空间Feature Space 特征空间Logits Space …...

mac编译opencv 通用架构库的记录

1,通用架构 (x86_64;arm64&#xff09;要设置的配置项&#xff1a; CPU_BASELINE CPU_DISPATCH 上面这两个我设置成SSE_3&#xff0c;其他选项未尝试&#xff0c;比如不设置。 CMAKE_OSX_ARCHITECTURES:x86_64;arm64 WITH_IPP:不勾选 2,contrib库的添加&#xff1a; 第一次…...