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

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(二)

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(前导)

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(一)

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(三)


 五、实验目的

        本次实验使用电脑上的网络调试助手,将命令帧通过以太网芯片RTL8211(RGMII接口)发送至ACZ7015开发板,提取UDP报文内容转换成控制命令,从而实现对ACM9238模块采样频率、数据采样个数以及采样通道的配置。

         配置完成之后,ACM9238模块开始采集数据,将采集的数据存储至DDR3中,然后通过网口以UDP协议传输到电脑。用户可以在电脑上通过网口调试工具进行指令的下发,并以文件的形式保存接收到的数据,然后使用MATLAB软件进行进一步的数据处理分析。

PL 部分的模块说明如下:

  • pll 模块: 锁相环模块, 输入时钟 50M, 由 PS 输出给 PL; 输出 100M 的时钟给到 DDR3 控制器使用; 输出 50M 的时钟给其它模块使用。
  • eth_receive_cmd 模块: 以太网接收命令模块, 对以太网接收到的数据进行分析, 将接收的数据转换成相应的控制数据并输出到对应的模块。
  • ad9238_ctrl 模块: ACM9238 控制器模块, 该模块内部包含速度控制模块,以及数据位宽转换模块。
  • state_ctrl 模块: ADC 采集数据 DDR3 缓存以太网发送状态控制模块, 协调各个模块的信号控制, 程序状态的总控制模块。
  • fifo_axi4_adapter 模块: fifo 接口到 AXI4 接口的转换模块(含 2 个 FIFO)。

六、ACM9238模块

两路,

采样上限50Msps,如果期望以1Msps 的采样速率采样, 则只需要每间隔 50 个采样数据取一个结果存储或使用, 其他 49 个数据直接舍弃。不建议降低ADC芯片的时钟信号。

七、设计实例

7.1模块设计

7.1.1 eth_receive_cmd模块

将以太网接收到的数据进行解析, 得到控制命令。

 

(1)eth_udp_rx_gmii模块和rgmii_to_gmii模块
(2)mmcm模块

锁相环模块,将 rgmii 接口时钟信号 rgmii_rx_clk_i 偏移90 °得到 rgmii_rx_clk 时钟信号。(为了在时钟信号的上升沿/下降沿取数据时,取得数据刚好是数据信号 rgmii_rxd 的正中间, 使得采样的数据处于最稳定的状态。)

 锁相环IP配置

(3)fifo_rx模块

使用该 IP 核解决采集过程中会出现的跨时钟域数据交互问题(以太网125MHz,ACM9238-50MHz)。

(4)eth_cmd模块

接收转命令模块。

//非空时产生FIFO读请求信号
always@(posedge clk or negedge reset_n)
if(!reset_n)fifo_rd_req <= 1'b0;
else if(!rx_empty)fifo_rd_req <= 1'b1;
elsefifo_rd_req <= 1'b0;//获得帧命令数据
always@(posedge clk)
if(fifo_rd_req)begindata_0[7] <= #1 fifodout;data_0[6] <= #1 data_0[7];data_0[5] <= #1 data_0[6];data_0[4] <= #1 data_0[5];data_0[3] <= #1 data_0[4];data_0[2] <= #1 data_0[3];data_0[1] <= #1 data_0[2];data_0[0] <= #1 data_0[1];
end//判断帧命令数据
always@(posedge clk or negedge reset_n)
if(!reset_n)beginaddress <= 0;cmd_data <= 32'd0;cmdvalid <= 1'b0;
end
else if(fifo_rx_done)beginif((data_0[0]==8'h55)&&(data_0[1]==8'hA5)&&(data_0[7]==8'hF0))begincmd_data[7:0] <= #1 data_0[6];cmd_data[15:8] <= #1 data_0[5];cmd_data[23:16] <= #1 data_0[4];cmd_data[31:24] <= #1 data_0[3];address <= #1 data_0[2];cmdvalid <= #1 1;endelsecmdvalid <= #1 0;
end
else
cmdvalid <= #1 0;
(5)cmd_rx模块

接收数据转换为控制数据。

寄存器说明:

always@(posedge clk or negedge reset_n)
if(!reset_n)beginChannelSel <= 2'b00;DataNum <= 32'd0;ADC_Speed_Set <= 32'd0;RestartReq <= 1'b0;
end
else if(cmdvalid)begincase(cmd_addr)0: RestartReq <= 1'b1;1: ChannelSel <= cmd_data[1:0];2: DataNum <= cmd_data[31:0];3: ADC_Speed_Set <= cmd_data[31:0];default:;endcase
end
elseRestartReq <= 1'b0;

7.1.2 ad9238_ctrl 模块

控制ADC的采样速率,将12位数据转换为16位数据。

(1)speed_ctrl模块

always@(posedge clk or negedge reset_n)
if(!reset_n)div_cnt <= 0;
else if(ad_sample_en)beginif(div_cnt >= div_set)div_cnt <= 0;elsediv_cnt <= div_cnt + 1'd1;
end
elsediv_cnt <= 0;always@(posedge clk or negedge reset_n)
if(!reset_n)adc_data_en <= 0;
else if(div_cnt == div_set)adc_data_en <= 1;
elseadc_data_en <= 0;
(2)ad_12bit_to_16bit模块

always @(posedge clk)ad_out_valid <= ad_sample_en;assign s_ad_in1 = ad_in1 + 12'd2048;
assign s_ad_in2 = ad_in2 + 12'd2048;always @(posedge clk)
if(ad_sample_en && ch_sel == 2'b01)ad_out<={4'd0,s_ad_in1};//这样补 0 为了适应上位机
else if(ad_sample_en && ch_sel == 2'b10)ad_out<={4'd0,s_ad_in2};//
else if(ad_sample_en && ch_sel == 2'b00)ad_out<={4'd0,adc_test_data};
elsead_out <= 16'd0;

7.1.3 state_ctrl 模块

控制信号的产生以及 ADC 何时启动数据传输。

localparam IDLE = 4'd0; //空闲状态
localparam DDR_WR_FIFO_CLEAR = 4'd1; //DDR 写 FIFO 清除状态
localparam ADC_SAMPLE = 4'd2; //ADC 采样数据状态
localparam DDR_RD_FIFO_CLEAR = 4'd3; //DDR 读 FIFO 清除状态
localparam DATA_SEND_START = 4'd4; //数据发送状态
localparam DATA_SEND_WORKING = 4'd5; //数据发送完成状态

(1)IDLE

//ADC 模块开始采样标志信号寄存
always@(posedge clk or posedge reset)begin
if(reset)start_sample_rm <= 1'b0;
else if(state==IDLE)start_sample_rm <= start_sample;
elsestart_sample_rm <= 1'b0;
end/*状态切换IDLE->DDR_WR_FIFO_CLEAR
beginif(start_sample_rm) begin //DDR 初始化完成并且产生启动采样信号state <= DDR_WR_FIFO_CLEAR; //进入写 FIFO 清除状态endelse beginstate <= state;end
end
*/

(2)DDR_WR_FIFO_CLEAR

//延时10个节拍
always@(posedge clk or posedge reset)begin
if(reset)wrfifo_clr_cnt<=0;
else if(state==DDR_WR_FIFO_CLEAR)//如果进入了清 fifo 状态
beginif(wrfifo_clr_cnt==9)wrfifo_clr_cnt<=5'd9;elsewrfifo_clr_cnt<=wrfifo_clr_cnt+1'b1;
end
elsewrfifo_clr_cnt<=5'd0;
end//给清FIFO信号足够的拉高时间
always@(posedge clk or posedge reset)begin
if (reset)wrfifo_clr<=0;
else if(state==DDR_WR_FIFO_CLEAR)beginif(wrfifo_clr_cnt==0||wrfifo_clr_cnt==1||wrfifo_clr_cnt==2)wrfifo_clr<=1'b1;elsewrfifo_clr<=1'b0;end
elsewrfifo_clr<=1'b0;
end/*状态切换DDR_WR_FIFO_CLEAR->ADC_SAMPLE
beginif(!wrfifo_full && (wrfifo_clr_cnt==9))state<=ADC_SAMPLE;elsestate<=DDR_WR_FIFO_CLEAR;
end
*/

(3)ADC_SAMPLE

//根据ADC输出使能信号计数
always@(posedge clk or posedge reset)begin
if(reset)adc_sample_cnt<=1'b0;
else if(state==ADC_SAMPLE)beginif(adc_data_en)adc_sample_cnt<=adc_sample_cnt+1'b1;elseadc_sample_cnt<=adc_sample_cnt;
end
elseadc_sample_cnt<=1'b0;
end//产生采样使能信号给其他模块
always@(posedge clk or posedge reset)begin
if(reset)ad_sample_en<=0;
else if(state==ADC_SAMPLE)ad_sample_en<=1;
elsead_sample_en<=0;
end/*状态切换ADC_SAMPLE->DDR_RD_FIFO_CLEAR
beginif((adc_sample_cnt>=set_sample_num-1'b1)&& adc_data_en)state<=DDR_RD_FIFO_CLEAR;elsestate<=state;
end
*/

(4)DDR_RD_FIFO_CLEAR

//延时10个节拍
always@(posedge clk or posedge reset)begin
if(reset)rdfifo_clr_cnt<=0;
else if(state==DDR_RD_FIFO_CLEAR)//如果进入了清 fifo 状态
beginif(rdfifo_clr_cnt==9)rdfifo_clr_cnt<=5'd9;elserdfifo_clr_cnt<=rdfifo_clr_cnt+1'b1;
end
elserdfifo_clr_cnt<=5'd0;
end//给清FIFO信号足够的拉高时间
always@(posedge clk or posedge reset)begin
if (reset)rdfifo_clr<=0;
else if(state==DDR_RD_FIFO_CLEAR)
beginif(rdfifo_clr_cnt==0||rdfifo_clr_cnt==1||rdfifo_clr_cnt==2)rdfifo_clr<=1'b1;
elserdfifo_clr<=1'b0;
end
elserdfifo_clr<=1'b0;
end/*状态切换DDR_RD_FIFO_CLEAR->DATA_SEND_START
beginif(!rdfifo_empty && (rdfifo_clr_cnt==9))beginstate<=DATA_SEND_START;endelsestate<=state;
end
*/

(5)DATA_SEND_START

/*状态切换DATA_SEND_START->DATA_SEND_WORKING
beginstate <= DATA_SEND_WORKING;
end
*/

(6)DATA_SEND_WORKING

//发送数据计数
always@(posedge clk or posedge reset)begin
if(reset)send_data_cnt<=32'd0;
else if(state==IDLE)send_data_cnt<=32'd0;
else if(rdfifo_rden)send_data_cnt<=send_data_cnt+1;
elsesend_data_cnt<=send_data_cnt;
end//DDR数据存到以太网缓存
always@(posedge clk or posedge reset)
if(reset) begineth_fifo_wrreq <= 1'b0;eth_fifo_wrdata <= 'd0;
end
else if(rdfifo_rden) begineth_fifo_wrreq <= 1'b1;eth_fifo_wrdata <= rdfifo_dout;
end
else begineth_fifo_wrreq <= 1'b0;eth_fifo_wrdata <= 'd0;
end/*状态切换DATA_SEND_WORKING->IDLE、DATA_SEND_WORKING->DATA_SEND_WORKING
beginif(send_data_cnt >= set_sample_num-1'b1) beginrdfifo_rden <= 1'b0;state <= IDLE;endelse beginrdfifo_rden <= 1'b1;state <= DATA_SEND_WORKING;end
end
*/

7.1.4 fifo_axi_adapter模块

看文章开头:Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(一)。

S_IDLE:
beginif(start)next_state = S_ARB;elsenext_state = S_IDLE;
end
module fifo_axi4_adapter #(parameter FIFO_DW                = 16     ,parameter WR_AXI_BYTE_ADDR_BEGIN = 0      ,parameter WR_AXI_BYTE_ADDR_END   = 1023   ,parameter RD_AXI_BYTE_ADDR_BEGIN = 0      ,parameter RD_AXI_BYTE_ADDR_END   = 1023   ,parameter AXI_DATA_WIDTH         = 128    ,parameter AXI_ADDR_WIDTH         = 28     ,parameter AXI_ID                 = 4'b0000,parameter AXI_BURST_LEN          = 8'd31    //burst length = 32
)
(input                          start         ,// clock resetinput                          clk           ,input                          reset         ,// wr_fifo wr Interfaceinput                          wrfifo_clr    ,input                          wrfifo_clk    ,input                          wrfifo_wren   ,input   [FIFO_DW-1:0]          wrfifo_din    ,output                         wrfifo_full   ,output  [15:0]                 wrfifo_wr_cnt ,// rd_fifo rd Interfaceinput                          rdfifo_clr    ,input                          rdfifo_clk    ,input                          rdfifo_rden   ,output  [FIFO_DW-1:0]          rdfifo_dout   ,output                         rdfifo_empty  ,output  [15:0]                 rdfifo_rd_cnt ,// Master Interface Write Address Portsoutput  [3:0]                  m_axi_awid    ,output  [AXI_ADDR_WIDTH-1:0]   m_axi_awaddr  ,output  [7:0]                  m_axi_awlen   ,output  [2:0]                  m_axi_awsize  ,output  [1:0]                  m_axi_awburst ,output  [0:0]                  m_axi_awlock  ,output  [3:0]                  m_axi_awcache ,output  [2:0]                  m_axi_awprot  ,output  [3:0]                  m_axi_awqos   ,output  [3:0]                  m_axi_awregion,output                         m_axi_awvalid ,input                          m_axi_awready ,// Master Interface Write Data Portsoutput  [AXI_DATA_WIDTH-1:0]   m_axi_wdata   ,output  [AXI_DATA_WIDTH/8-1:0] m_axi_wstrb   ,output                         m_axi_wlast   ,output                         m_axi_wvalid  ,input                          m_axi_wready  ,// Master Interface Write Response Portsinput   [3:0]                  m_axi_bid     ,input   [1:0]                  m_axi_bresp   ,input                          m_axi_bvalid  ,output                         m_axi_bready  ,// Master Interface Read Address Portsoutput  [3:0]                  m_axi_arid    ,output  [AXI_ADDR_WIDTH-1:0]   m_axi_araddr  ,output  [7:0]                  m_axi_arlen   ,output  [2:0]                  m_axi_arsize  ,output  [1:0]                  m_axi_arburst ,output  [0:0]                  m_axi_arlock  ,output  [3:0]                  m_axi_arcache ,output  [2:0]                  m_axi_arprot  ,output  [3:0]                  m_axi_arqos   ,output  [3:0]                  m_axi_arregion,output                         m_axi_arvalid ,input                          m_axi_arready ,// Master Interface Read Data Portsinput   [3:0]                  m_axi_rid     ,input   [AXI_DATA_WIDTH-1:0]   m_axi_rdata   ,input   [1:0]                  m_axi_rresp   ,input                          m_axi_rlast   ,input                          m_axi_rvalid  ,output                         m_axi_rready  
);

7.1.5 eth_send_data 模块

将DDR读出的ADC数据发送到电脑端。

(1)fifo_tx模块

First Word Fall Through( FWFT)可以不需要读命令, 自动将最新的数据放在 dout 上。

(2)eth_send_ctrl模块

以太网帧最大长度 1518 字节(数据段 1500 字节) , 其中数据段 1500 字节还包括 20 字节 IP 报文头部和 8 字节 UDP 报文头部, 所以数据帧发送的ACM9238 采集的数据最大长度为 1472 字节。

  always@(posedge clk125M or negedge reset_n)if(!reset_n) beginpkt_tx_en <= 1'd0;pkt_length <= 16'd0;data_num <= 32'd0;state <= 0;cnt_dly_time <= 28'd0;endelse begincase(state)0://得到 pkt_length 信号的初始值beginif(restart_req)begindata_num <= total_data_num;if((total_data_num << 1) >= 16'd1472)beginpkt_length <= 16'd1472;	//一个数据2个字节state <= 1;endelse if((total_data_num << 1) > 0)beginpkt_length <= total_data_num << 1; //一个数据2个字节state <= 1;endelse beginstate <= 0;endendend1: beginif(fifo_rd_cnt >= (pkt_length -2)) beginpkt_tx_en <= 1'd1;state <= 2;endelse beginstate <= 1;pkt_tx_en <= 1'd0;endend2:beginpkt_tx_en <= 1'd0;if(eth_tx_done)begindata_num <= data_num - pkt_length/2;state <= 3;endend3:if(cnt_dly_time >= cnt_dly_min)beginstate <= 4;cnt_dly_time <= 28'd0;endelse begincnt_dly_time <= cnt_dly_time + 1'b1;state <= 3;end4:beginif(data_num * 2 >= 16'd1472)beginpkt_length <= 16'd1472;state <= 1;endelse if(data_num * 2 > 0)beginpkt_length <= data_num * 2;state <= 1;endelse beginstate <= 0;endenddefault:state <= 0;endcaseend

相关文章:

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(二)

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;前导&#xff09; Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;一&#xff09; Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;三&#xff09; 五、实验目的 本次实验使用电脑上的…...

高级语言讲义2010计专(仅高级语言部分)

1.编写一程序&#xff0c;对输入的正整数&#xff0c;求他的约数和。 如&#xff1a;18的约数和为1236939 #include <stdio.h>int getsum(int n){int i,sum0;for(i1;i<n;i)if(n%i0)sumi;return sum; } int main(){int sum getsum(18);printf("%d",sum); …...

你喜欢那种舞者呢?

迷宫中的舞者&#xff1a;程序员职业赛道的探索与魅力 在数字世界的深处&#xff0c;程序员的职业赛道宛如一座神秘而迷人的迷宫。这个迷宫中&#xff0c;每个转角都隐藏着无限的可能&#xff0c;每个领域都散发着独特的魅力。前端开发者如同花园中的精灵&#xff0c;后端工程师…...

LeetCode每日一题之 快乐数

目录 题目介绍&#xff1a; 算法原理&#xff1a; 鸽巢原理&#xff1a; 如何找到环里元素&#xff1a; 代码实现&#xff1a; 题目介绍&#xff1a; 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 算法原理&#xff1a; 我先简单举两个例子&#xff…...

【机器学习】在Python中进行K-Means聚类和层次聚类

Python中聚类算法API的使用指南 聚类分析是数据分析中一种常见的无监督学习方法&#xff0c;通过将相似的对象分组在一起&#xff0c;我们能够识别出数据集中的自然分群。本文将介绍如何使用Python中的聚类算法接口&#xff0c;KMeans和层次聚类方法。 K-Means 聚类 K-Means…...

springboot254小区团购管理

小区团购管理设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装小区团购管理软件来发挥其高效地信…...

Word中的文档网格线与行距问题

在使用Word编辑文档时&#xff0c;经常会发生以下动图展示的这种情况&#xff1a; 上面的动图里&#xff0c;将文字大小放大到某个字号时&#xff0c;单倍行距的间距突然增加很多。造成这种情况的原因是文档中定义了网格线&#xff0c;并且设置了对齐到网格线。如果取消文档中…...

【简写Mybatis】03-Mapper xml的注册和使用

前言 在学习MyBatis源码文章中&#xff0c;斗胆想将其讲明白&#xff1b;故有此文章&#xff0c;如有问题&#xff0c;不吝指教&#xff01; 注意&#xff1a; 学习源码一定一定不要太关注代码的编写&#xff0c;而是注意代码实现思想&#xff1b; 通过设问方式来体现代码中的…...

Vue源码系列讲解——指令篇【一】(自定义指令)

目录 1. 前言 2. 何时生效 3. 指令钩子函数 4. 如何生效 5. 总结 1. 前言 在Vue中&#xff0c;除了Vue本身为我们提供的一些内置指令之外&#xff0c;Vue还支持用户自定义指令。并且用户有两种定义指令的方式&#xff1a;一种是使用全局API——Vue.directive来定义全局指令…...

STM32(14)USART

USART:一种片上外设&#xff0c;用来实现串口通信&#xff0c;就是stm32内部的串口 USART简介 串并转换电路 串行通信和并行通信 串行&#xff1a;一根数据线&#xff0c;逐个比特位发送 为什么要串并转换 移位寄存器 USART的基本模型 通过查询SR&#xff08;状态寄存器&…...

作业 字符数组-统计和加密

字串中数字个数 描述 输入一行字符&#xff0c;统计出其中数字字符的个数。 输入 一行字符串&#xff0c;总长度不超过255。 输出 输出为1行&#xff0c;输出字符串里面数字字符的个数。 样例 #include <iostream> #include<string.h> using namespace std; int m…...

Codeforces Round 719 (Div. 3)除F2题外补题报告

Codeforces Round 719 Div. 3 除F2题外补题报告 得分情况补题情况错题分析C题题目大意初次思路正解思路正解代码错误原因 D题题目大意初次思路正解思路正解代码错误原因 E题题目大意初次思路正解思路正解代码 F1题题目大意正解思路正解代码 G题题目大意正解思路正解代码 得分情…...

docker本地搭建spark yarn hive环境

docker本地搭建spark yarn hive环境 前言软件版本准备工作使用说明构建基础镜像spark on yarn模式构建on-yarn镜像启动on-yarn集群手动方式自动方式 spark on yarn with hive(derby server)模式构建on-yarn-hive镜像启动on-yarn-hive集群手动方式自动方式 常用示例spark执行sh脚…...

每日学习笔记:C++ 11的Tuple

#include <tuple> Tuple介绍(不定数的值组--可理解为pair的升级版) 定义 创建 取值 初始化 获取tuple元素个数、获取tuple某元素类型、将2个tuple类型串接为1个新tuple类型...

MongoDB聚合运算符;$dateToParts

$dateToParts聚合运算符将日期表达式拆分成多个字段放在一个文档返回&#xff0c;属性有year、month、day、hour、minute、second和millisecond。如果iso8601属性设置为true&#xff0c;返回的各部分用ISO周日期返回&#xff0c;属性分别是&#xff1a;isoWeekYear、isoWeek、i…...

Spring MVC RequestMappingHandlerAdapter原理解析

在Spring MVC框架中&#xff0c;RequestMappingHandlerAdapter是一个核心的组件&#xff0c;负责将请求映射到具体的处理器方法上&#xff0c;并调用这些方法来处理请求。其中&#xff0c;invokeHandlerMethod方法是这个适配器中的一个关键方法&#xff0c;它负责实际调用处理器…...

反射整理学习

目录 1、反射介绍 2、反射API 2.1 获取类对应的字节码的对象&#xff08;三种&#xff09; 2.2 常用方法 3、反射的应用 3.1 创建 : 测试物料类 3.2 获取类对象 3.3 获取成员变量 3.4 通过字节码对象获取类的成员方法 3.5 通过字节码对象获取类的构造方法 4、创建对象…...

JavaScript 运算规则详解

在 JavaScript 中&#xff0c;运算规则是非常重要的基础知识&#xff0c;了解这些规则可以帮助我们正确地编写代码并避免一些常见的错误。本教程将详细介绍 JavaScript 中的各种运算规则&#xff0c;包括基本运算符、类型转换、运算优先级等内容。 1. 基本运算符 JavaScript …...

C++篇 语 句

到目前为止&#xff0c;我们只见过两种语句&#xff1a; return 语句和表达式语句。根据语句对执行顺 序的影响&#xff0c;C 语言其余语句大多属于以下 3 大类。 选择语句&#xff1a; if 语句和 switch 语句。循环语句&#xff1a; while 语句&#xff0c; do...while 语句和…...

简洁的在线观影开源项目

公众号&#xff1a;【可乐前端】&#xff0c;每天3分钟学习一个优秀的开源项目&#xff0c;分享web面试与实战知识。 每天3分钟开源 hi&#xff0c;这里是每天3分钟开源&#xff0c;很高兴又跟大家见面了&#xff0c;今天介绍的开源项目简介如下&#xff1a; 仓库名&#xff1…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...