以太网实战AD采集上传上位机——FPGA学习笔记27

一、设计目标

使用FPGA实现AD模块驱动采集模拟电压,通过以太网上传到电脑上位机。

二、框架设计

数据位宽转换模块(ad_10bit_to_16bit):为了方便数据传输,数据位宽转换模块实现了将十位的 AD 数据转换成十六位,并且为了异步 FIFO 传输将高八位和低八位交换然后传输给数据封装模块。
开始传输模块(start_transfer_ctrl):该模块接收上位机发送的命令来判断是否开启传输以及使用那个通道传输。
数据封装模块(img_data_pkt):该模块调用异步 FIFO 将十六位的 AD 数据转换为传输给以太网部分的八位 UDP 数据,并且控制一包数据的大小和以太网 UDP 开始发送信号。


(1)开始传输模块 start_transfer_ctrl

module start_transfer_ctrl(input                 clk                ,   //时钟信号input                 rst_n              ,   //复位信号,低电平有效input                 udp_rec_pkt_done   ,   //UDP单包数据接收完成信号 input                 udp_rec_en         ,   //UDP接收的数据使能信号input        [7 :0]   udp_rec_data       ,   //UDP接收的数据 input        [15:0]   udp_rec_byte_num   ,   //UDP接收到的字节数   output  reg  [1:0]    ctrl               ,                                output  reg           transfer_flag          //图像开始传输标志,1:开始传输 0:停止传输    
);    //parameter define
parameter  START_1 = 8'd1;  //通道一开始命令
parameter  STOP    = 8'd0;  //停止命令
parameter  START_2 = 8'd2;  //通道二开始命令//解析接收到的数据
always @(posedge clk or negedge rst_n) beginif (!rst_n) begintransfer_flag   <=  1'b0;endelse if (udp_rec_pkt_done && udp_rec_byte_num == 1'b1)beginif (udp_rec_data == START_1) begintransfer_flag   <=  1'b1;ctrl            <=  2'b01;endelse if (udp_rec_data == START_2) begintransfer_flag   <=  1'b1;ctrl            <=  2'b10;end else if (udp_rec_data == STOP) begintransfer_flag   <=  1'b0;ctrl            <=  2'b00;end else begintransfer_flag   <=  1'b0;ctrl            <=  2'b00;endend 
endendmodule

(2)开始传输模块  start_transfer_ctrl

module ad_10bit_to_16bit(input                 clk       ,input                 rst_n     ,input       [1:0]     sel       ,//控制命令input       [9:0]     ad_in1    ,//通道一数据input       [9:0]     ad_in2    ,//通道二数据output  reg [15:0]    ad_out     //输出数据
);//wire define 
wire [9:0]s_ad_in1;
wire [9:0]s_ad_in2;//十位扩展为十六位	
always @(posedge clk or negedge rst_n) beginif(!rst_n) beginad_out <= 16'd0;endelse if( sel == 2'b01) beginad_out<={6'd0,ad_in1};//这样补0为了适应上位机endelse if( sel == 2'b10) beginad_out<={6'd0,ad_in2};//endelse beginad_out <= 16'd0;end
endendmodule

(3)数据封装模块    img_data_pkt:

 

(4)UDP顶层修改

主要修改UDP顶层UDP协议接口,对ICMP以及ARP部分进行保留

module eth_top(input                   sys_rst_n           ,   //系统复位信号,低电平有效 input                   clk_200m            ,output                  gmii_rx_clk         ,output                  gmii_tx_clk         ,//PL以太网RGMII接口                     //inputinput                   eth_rxc             ,   //RGMII接收数据时钟input                   eth_rx_ctl          ,   //RGMII输入数据有效信号input       [3:0]       eth_rxd             ,   //RGMII输入数据//outputoutput                  eth_txc             ,   //RGMII发送数据时钟    output                  eth_tx_ctl          ,   //RGMII输出数据有效信号output      [3:0]       eth_txd             ,   //RGMII输出数据       //UDP接口input                   udp_tx_start_en     ,   //UDP发送开始使能信号 input       [7:0]       udp_tx_data         ,   //UDP待发送数据input       [15:0]      udp_tx_byte_num     ,   //UDP发送的有效字节数 单位:byte output                  udp_rec_pkt_done    ,   //UDP单包数据接收完成信号   output                  udp_tx_done         ,   //UDP发送完成信号 output                  udp_tx_req          ,   //UDP读数据请求信号output                  udp_rec_en          ,   //UDP接收的数据使能信号output      [7:0]       udp_rec_data        ,   //UDP接收的数据output      [15:0]      udp_rec_byte_num  	    //UDP接收的有效字节数 单位:byte);//parameter define
parameter  BOARD_MAC = 48'h00_11_22_33_44_55;       //开发板MAC地址     00-11-22-33-44-55
parameter  BOARD_IP  = {8'd192,8'd168,8'd1,8'd10};  //开发板IP地址      192.168.1.10
parameter  DES_MAC   = 48'hff_ff_ff_ff_ff_ff;       //目的MAC地址       ff_ff_ff_ff_ff_ff
parameter  DES_IP    = {8'd192,8'd168,8'd1,8'd102}; //目的IP地址        192.168.1.102     
parameter  IDELAY_VALUE = 15;                       //输入数据IO延时    (如果为n,表示延时n*78ps) //wire define
// wire                    clk_200m   		        ;   //用于IO延时的时钟 // wire                    gmii_rx_clk             ;   //GMII接收时钟
wire                    gmii_rx_dv              ;   //GMII接收数据有效信号
wire          [7:0]     gmii_rxd                ;   //GMII接收数据
// wire                    gmii_tx_clk             ;   //GMII发送时钟
wire                    gmii_tx_en              ;   //GMII发送数据使能信号
wire          [7:0]     gmii_txd                ;   //GMII发送数据     //ARP信号
wire                    arp_gmii_tx_en	        ;   //ARP GMII输出数据有效信号 
wire          [7:0]     arp_gmii_txd  	        ;   //ARP GMII输出数据
wire                    arp_rx_done   	        ;   //ARP接收完成信号
wire                    arp_rx_type   	        ;   //ARP接收类型 0:请求  1:应答
wire          [47:0]    src_mac       	        ;   //接收到目的MAC地址
wire          [31:0]    src_ip        	        ;   //接收到目的IP地址    
wire                    arp_tx_en     	        ;   //ARP发送使能信号
wire                    arp_tx_type   	        ;   //ARP发送类型 0:请求  1:应答
wire          [47:0]    des_mac       	        ;   //发送的目标MAC地址
wire          [31:0]    des_ip        	        ;   //发送的目标IP地址   
wire                    arp_tx_done   	        ;   //ARP发送完成信号//ICMP信号
wire                    icmp_gmii_tx_en	        ;   //ICMP GMII输出数据有效信号 
wire          [7:0]     icmp_gmii_txd  	        ;   //ICMP GMII输出数据
wire                    icmp_rec_pkt_done       ;   //ICMP单包数据接收完成信号
wire                    icmp_rec_en             ;   //ICMP接收的数据使能信号
wire          [ 7:0]    icmp_rec_data           ;   //ICMP接收的数据
wire          [15:0]    icmp_rec_byte_num       ;   //ICMP接收的有效字节数 单位:byte 
wire          [15:0]    icmp_tx_byte_num        ;   //ICMP发送的有效字节数 单位:byte 
wire                    icmp_tx_done   	        ;   //ICMP发送完成信号
wire                    icmp_tx_req             ;   //ICMP读数据请求信号
wire          [ 7:0]    icmp_tx_data            ;   //ICMP待发送数据
wire                    icmp_tx_start_en        ;   //ICMP发送开始使能信号//UDP信号
wire                    udp_gmii_tx_en	        ;   //UDP GMII输出数据有效信号 
wire          [7:0]     udp_gmii_txd  	        ;   //UDP GMII输出数据
// wire                    udp_rec_pkt_done  	        ;   //UDP单包数据接收完成信号
// wire                    udp_rec_en    	        ;   //UDP接收的数据使能信号
// wire          [ 7:0]    udp_rec_data  	        ;   //UDP接收的数据
// wire          [15:0]    udp_rec_byte_num  	        ;   //UDP接收的有效字节数 单位:byte 
// wire          [15:0]    udp_tx_byte_num   	    ;   //UDP发送的有效字节数 单位:byte 
// wire                    udp_tx_done   	        ;   //UDP发送完成信号
// wire                    udp_tx_req    	        ;   //UDP读数据请求信号
// wire          [ 7:0]    udp_tx_data   	        ;   //UDP待发送数据
// wire                    udp_tx_start_en   	    ;   //UDP发送开始使能信号wire          [7:0]	    rec_data			    ;   //FIFO写入数据
wire        		    rec_en			        ;   //FIFO写使能
wire        		    tx_req			        ;   //FIFO读使能
wire          [7:0]	    tx_data	    	        ;   //FIFO读出数据assign icmp_tx_start_en =   icmp_rec_pkt_done   ;   //ICMP 接收端结束标志,作为 ICMP发送端开始标志
assign icmp_tx_byte_num =   icmp_rec_byte_num   ;   //ICMP 接收端数据个数,作为 ICMP发送端发送数据 // assign udp_tx_start_en      =   udp_rec_pkt_done    ;   //UDP 接收端结束标志,作为 UDP发送开始使能信号
// assign udp_tx_byte_num      =   udp_rec_byte_num        ;   //UDP 接收端数据个数,作为 UDP发送端发送数据个数assign des_mac          =   src_mac             ;   //ARP 接收到的 源MAC,作为 ICMP\UDP 目的MAC,实际为电脑端MAC
assign des_ip           =   src_ip              ;   //ARP 接收到的 源IP ,作为 ICMP\UDP 目的IP ,实际为电脑端IP//数据位于异步FIFO之中,如需单独使用一侧功能,可以修改FIFO数据//需要注意写入有效数据数量要与此处相同,一定要注意 数据个数与FIFO读出数据对齐!!!!!!! // //MMCM/PLL 产生200Mhz时钟--> gmii2rgmii
// clk_wiz_0 u_clk_wiz_0
// (
//     .clk_out1           (clk_200m           ),      // output clk_out1
//     .reset              (~sys_rst_n         ),      // input reset
//     .locked             (locked             ),      // output locked
//     .clk_in1            (eth_rxc            )       // PHY侧提供eth_rxc时钟125Mhz
// );  //GMII接口转RGMII接口
gmii_to_rgmii 
#(.IDELAY_VALUE       (IDELAY_VALUE       )
)      
u_gmii_to_rgmii(        .idelay_clk         (clk_200m           ),      //IDELAY时钟//以太网GMII接口    .gmii_rx_clk        (gmii_rx_clk        ),      //GMII接收时钟.gmii_rx_dv         (gmii_rx_dv         ),      //GMII接收数据有效信号.gmii_rxd           (gmii_rxd           ),      //GMII接收数据.gmii_tx_clk        (gmii_tx_clk        ),      //GMII发送时钟.gmii_tx_en         (gmii_tx_en         ),      //GMII发送数据使能信号.gmii_txd           (gmii_txd           ),      //GMII发送数据   //以太网RGMII接口   .rgmii_rxc          (eth_rxc            ),      //RGMII接收时钟.rgmii_rx_ctl       (eth_rx_ctl         ),      //RGMII接收数据控制信号.rgmii_rxd          (eth_rxd            ),      //RGMII接收数据.rgmii_txc          (eth_txc            ),      //RGMII发送时钟    .rgmii_tx_ctl       (eth_tx_ctl         ),      //RGMII发送数据控制信号.rgmii_txd          (eth_txd            )       //RGMII发送数据   
);//ARP通信
arp                                             
#(.BOARD_MAC          (BOARD_MAC          ),      //参数例化.BOARD_IP           (BOARD_IP           ),.DES_MAC            (DES_MAC            ),.DES_IP             (DES_IP             )
)   
u_arp(  .rst_n              (sys_rst_n  	    ),      //复位信号,低电平有效//GMII接口  //input.gmii_rx_clk        (gmii_rx_clk	    ),      //GMII接收数据时钟.gmii_rx_dv         (gmii_rx_dv 	    ),      //GMII输入数据有效信号.gmii_rxd           (gmii_rxd   	    ),      //GMII输入数据.gmii_tx_clk        (gmii_tx_clk	    ),      //GMII发送数据时钟//output.gmii_tx_en         (arp_gmii_tx_en     ),      //GMII输出数据有效信号.gmii_txd           (arp_gmii_txd       ),      //GMII输出数据         //用户接口                           //output.arp_rx_done        (arp_rx_done	    ),      //ARP接收完成信号.arp_rx_type        (arp_rx_type	    ),      //ARP接收类型 0:请求  1:应答.src_mac            (src_mac    	    ),      //接收到目的MAC地址.src_ip             (src_ip     	    ),      //接收到目的IP地址 //input   .arp_tx_en          (arp_tx_en  	    ),      //ARP发送使能信号.arp_tx_type        (arp_tx_type	    ),      //ARP发送类型 0:请求  1:应答.des_mac            (des_mac    	    ),      //发送的目标MAC地址.des_ip             (des_ip     	    ),      //发送的目标IP地址//output.tx_done            (arp_tx_done	    )       //以太网发送完成信号    
);  //ICMP通信  
icmp                                             
#(.BOARD_MAC          (BOARD_MAC          ),      //参数例化.BOARD_IP           (BOARD_IP           ),.DES_MAC            (DES_MAC            ),.DES_IP             (DES_IP             )
)
u_icmp(.rst_n              (sys_rst_n   	    ),      //复位信号,低电平有效//GMII接口//input.gmii_rx_clk        (gmii_rx_clk 	    ),      //GMII接收数据时钟         .gmii_rx_dv         (gmii_rx_dv  	    ),      //GMII输入数据有效信号       .gmii_rxd           (gmii_rxd    	    ),      //GMII输入数据                 .gmii_tx_clk        (gmii_tx_clk 	    ),      //GMII发送数据时钟//output.gmii_tx_en         (icmp_gmii_tx_en	),      //GMII输出数据有效信号       .gmii_txd           (icmp_gmii_txd	    ),      //GMII输出数据//用户接口//output.rec_pkt_done       (icmp_rec_pkt_done  ),      //以太网单包数据接收完成信号  .rec_en             (icmp_rec_en        ), 	    //以太网接收的数据使能信号				  .rec_data           (icmp_rec_data      ),      //以太网接收的数据				 	    .rec_byte_num       (icmp_rec_byte_num  ),      //以太网接收的有效字节数 单位:byte   //input.tx_start_en        (icmp_tx_start_en   ),      //以太网开始发送信号      .tx_data            (icmp_tx_data       ),      //以太网待发送数据					     .tx_byte_num        (icmp_tx_byte_num   ),      //以太网发送的有效字节数 单位:byte.des_mac            (des_mac     	    ),      //发送的目标MAC地址.des_ip             (des_ip      	    ),      //发送的目标IP地址  //output.tx_done            (icmp_tx_done	    ),      //以太网发送完成信号      .tx_req             (icmp_tx_req        )       //读数据请求信号					     
); //UDP通信
udp                                             
#(.BOARD_MAC          (BOARD_MAC          ),      //参数例化.BOARD_IP           (BOARD_IP           ),.DES_MAC            (DES_MAC            ),.DES_IP             (DES_IP             )
)
u_udp(.rst_n              (sys_rst_n          ),      //复位信号,低电平有效//GMII接口//input.gmii_rx_clk        (gmii_rx_clk        ),      //GMII接收数据时钟 .gmii_rx_dv         (gmii_rx_dv         ),      //GMII输入数据有效信号.gmii_rxd           (gmii_rxd           ),      //GMII输入数据.gmii_tx_clk        (gmii_tx_clk        ),      //GMII发送数据时钟   //output .gmii_tx_en         (udp_gmii_tx_en     ),      //GMII输出数据有效信号.gmii_txd           (udp_gmii_txd       ),      //GMII输出数据 //用户接口//outpur.rec_pkt_done       (udp_rec_pkt_done   ),      //以太网单包数据接收完成信号 .rec_en             (udp_rec_en         ),      //以太网接收的数据使能信号.rec_data           (udp_rec_data       ),      //以太网接收的数据      .rec_byte_num       (udp_rec_byte_num   ),      //以太网接收的有效字节数 单位:byte      //input.tx_start_en        (udp_tx_start_en    ),      //以太网开始发送信号      .tx_data            (udp_tx_data        ),      //以太网待发送数据        .tx_byte_num        (udp_tx_byte_num    ),      //以太网发送的有效字节数 单位:byte      .des_mac            (des_mac            ),      //发送的目标MAC地址      .des_ip             (des_ip             ),      //发送的目标IP地址    //output .tx_done            (udp_tx_done        ),      //以太网发送完成信号 .tx_req             (udp_tx_req         )       //读数据请求信号   
); //异步FIFO,实际做同步FIFO使用
async_fifo_2048x8b u_async_fifo_2048x8b (//input.rst                (~sys_rst_n	        ),      //input wire rst.wr_clk             (gmii_rx_clk        ),  	//input wire wr_clk.rd_clk             (gmii_rx_clk        ),  	//input wire rd_clk.din                (rec_data	        ),      //input wire [7 : 0] din.wr_en              (rec_en		        ),    	//input wire wr_en.rd_en              (tx_req		        ),    	//input wire rd_en//output.dout               (tx_data	        ),      //output wire [7 : 0] dout.full               (                   ),      //output wire full.empty              (                   )    	//output wire empty
);// //预留调试ILA
// ila_0 ila_0_fifo (
// 	.clk                (gmii_rx_clk        ),      // input wire clk// 	.probe0             (rec_en             ),      // input wire [0:0]  probe0  
// 	.probe1             (rec_data           ),      // input wire [7:0]  probe1 
// 	.probe2             (tx_req             ),      // input wire [0:0]  probe2 
// 	.probe3             (tx_data            )       // input wire [7:0]  probe3
// );//以太网控制模块
eth_ctrl u_eth_ctrl(//input.clk            	(gmii_rx_clk	    ),      //时钟.rst_n          	(sys_rst_n		    ),      //系统复位信号,低电平有效 //ARP相关端口信号 //input.arp_rx_done    	(arp_rx_done   	    ),      //ARP接收完成信号.arp_rx_type    	(arp_rx_type   	    ),      //ARP接收类型 0:请求  1:应答.arp_tx_done    	(arp_tx_done   	    ),      //ARP发送完成信号.arp_gmii_tx_en 	(arp_gmii_tx_en	    ),      //ARP GMII输出数据有效信号 .arp_gmii_txd   	(arp_gmii_txd  	    ),      //ARP GMII输出数据//output.arp_tx_en      	(arp_tx_en     	    ),      //ARP发送使能信号.arp_tx_type    	(arp_tx_type   	    ),      //ARP发送类型 0:请求  1:应答//ICMP相关端口信号//input.icmp_tx_start_en	(icmp_tx_start_en   ),      //ICMP开始发送信号.icmp_tx_done		(icmp_tx_done	    ),      //ICMP发送完成信号.icmp_gmii_tx_en	(icmp_gmii_tx_en    ),      //ICMP GMII输出数据有效信号  .icmp_gmii_txd		(icmp_gmii_txd	    ),      //ICMP GMII输出数据 //ICMP fifo接口信号//input.icmp_rec_en       	(icmp_rec_en        ),      //ICMP接收的数据使能信号.icmp_rec_data     	(icmp_rec_data      ),      //ICMP接收的数据.icmp_tx_req       	(icmp_tx_req        ),      //ICMP读数据请求信号//output.icmp_tx_data      	(icmp_tx_data       ),      //ICMP待发送数据//UDP相关端口信号//input.udp_tx_start_en	(udp_tx_start_en   	),      //UDP开始发送信号.udp_tx_done    	(udp_tx_done   	    ),      //UDP发送完成信号    .udp_gmii_tx_en 	(udp_gmii_tx_en	    ),      //UDP GMII输出数据有效信号  .udp_gmii_txd   	(udp_gmii_txd  	    ),      //UDP GMII输出数据   //UDP fifo接口信号//input.udp_rec_data		(udp_rec_data       ),      //UDP接收的数据		--->      UDP要发送的数据.udp_rec_en			(udp_rec_en         ),      //UDP接收的数据使能信号     .udp_tx_req			(udp_tx_req         ),      //UDP读数据请求信号   //output .udp_tx_data		(                   ),      //UDP待发送数据		//fifo接口信号//output.rec_data			(rec_data	        ),      //待发送的数据	.rec_en	        	(rec_en	            ),      //读数据请求信号 .tx_req	        	(tx_req	            ),      //接收的数据使能信号//input.tx_data	    	(tx_data	        ),      //接收的数据//GMII发送引脚  //output.gmii_tx_en     	(gmii_tx_en    	    ),      //GMII输出数据有效信号 .gmii_txd       	(gmii_txd      	    )       //GMII输出数据 
);      endmodule

三、代码架构

四、下载测试

1、ping指令&ARP

2、UDP数据上报

正弦波

方波

三角波

多频音波

五、源码获取工程移植,请后台私信

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

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

相关文章

YOLOv1、YOLOv2、YOLOv3目标检测算法原理与实战第十三天|YOLOv3实战、安装Typora

1.学习哔哩哔哩《YOLOv1、YOLOv2、YOLOv3目标检测算法原理与实战》 炮哥带你学视频链接 第5章 YOLOv3实战 5.1 YOLOv3实战先导 5.2 pycharm与anaconda的安装 之前已经安装过了&#xff0c;见Pytorch框架与经典卷积神经网络与实战第一天|安装PyCharm&Anaconda&#xff0…

数据库SQLite和SCADA DIAView应用教程

课程简介 此系列课程大纲主要包含七个课时。主要使用到的开发工具有&#xff1a;SQLite studio 和 SCADA DIAView。详细的可成内容大概如下&#xff1a; 1、SQLite 可视化管理工具SQLite Studio &#xff1a;打开数据库和查询数据&#xff1b;查看视频 2、创建6个变量&#x…

YOLOv8改进,YOLOv8检测头融合DSConv(动态蛇形卷积),并添加小目标检测层(四头检测),适合目标检测、分割等

精确分割拓扑管状结构例如血管和道路,对各个领域至关重要,可确保下游任务的准确性和效率。然而,许多因素使任务变得复杂,包括细小脆弱的局部结构和复杂多变的全局形态。在这项工作中,注意到管状结构的特殊特征,并利用这一知识来引导 DSCNet 在三个阶段同时增强感知:特征…

Addressable学习

AssetsBundle是Unity的资源管理机制,将资源打包到AssetsBundle资源包并提供接口能从ab包里面加载资源出来。有了这个机制以后&#xff0c;我们要做资源管理&#xff0c;还需要做: a: 根据项目需求,编写编辑器扩展,提供指定资源打入对应bundle包工具策略; b: 根据项目的需求,资源…

概率密度函数(PDF)分布函数(CDF)——直方图累积直方图——直方图规定化的数学基础

对于连续型随机变量&#xff0c;分布函数&#xff08;Cumulative Distribution Function, CDF&#xff09;是概率密度函数&#xff08;Probability Density Function, PDF&#xff09;的变上限积分&#xff0c;概率密度函数是分布函数的导函数。 如果我们有一个连续型随机变量…

深入解析:Docker 容器如何实现文件系统与资源的多维隔离?

目录 一、RootFs1. Docker 镜像与文件系统层2. RootFs 与容器隔离的意义 二、Linux Namespace1. 进程命名空间1.1 lsns 命令说明1.2 查看“祖先进程”命名空间1.3 查看当前用户进程命名空间 2. 容器进程命名空间2.1 查看容器进程命名空间列表2.2 容器进程命名空间的具体体现 三…

深度学习|表示学习|卷积神经网络|由参数共享引出的特征图|08

如是我闻&#xff1a; Feature Map&#xff08;特征图&#xff09;的概念与 Parameter Sharing&#xff08;参数共享&#xff09;密切相关。换句话说&#xff0c;参数共享是生成 Feature Map 的基础。Feature Map 是卷积操作的核心产物&#xff0c;而卷积操作的高效性正是由参数…

【Linux网络编程】传输层协议

目录 一&#xff0c;传输层的介绍 二&#xff0c;UDP协议 2-1&#xff0c;UDP的特点 2-2&#xff0c;UDP协议端格式 三&#xff0c;TCP协议 3-1&#xff0c;TCP报文格式 3-2&#xff0c;TCP三次握手 3-3&#xff0c;TCP四次挥手 3-4&#xff0c;滑动窗口 3-5&#xf…

ARP 表、MAC 表、路由表、跨网段 ARP

文章目录 一、ARP 表1、PC2、路由器 - AR22203、交换机 - S57004、什么样的设备会有 ARP 表&#xff1f; 二、MAC 表什么样的设备会有 MAC 表&#xff1f; 三、路由表什么样的设备会有路由表&#xff1f; 四、抓取跨网段 ARP 包 所谓 “透明” 就是指不用做任何配置 一、ARP 表…

算法10(力扣20)-有效的括号

1、问题 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类…

每日一题——二叉树的前序遍历和中序遍历和后序遍历

文章目录 二叉树的前序、中序与后序遍历题目描述数据范围&#xff1a;示例&#xff1a;示例 1&#xff1a; 解题思路1. 递归法2. 迭代法 代码实现&#xff08;递归法&#xff09;代码解析示例输出复杂度分析 中序遍历后序遍历 二叉树的前序、中序与后序遍历 题目描述 给定一棵…

【优选算法】8----四数之和

有看过我上篇算法博客并且去做过的铁子们&#xff0c;对这道题的话应该就不会那么陌生了&#xff0c;因为这两道题 的解题思路有着异曲同工之妙~ -----------------------------------------begin------------------------------------- 题目解析&#xff1a; 跟三数之和就多了…

【开源免费】基于SpringBoot+Vue.JS校园失物招领系统(JAVA毕业设计)

本文项目编号 T 150 &#xff0c;文末自助获取源码 \color{red}{T150&#xff0c;文末自助获取源码} T150&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

2025美赛倒计时,数学建模五类模型40+常用算法及算法手册汇总

数学建模美赛倒计时&#xff0c;对于第一次参加竞赛且没有相关基础知识的同学来讲&#xff0c;掌握数学建模常用经典的模型算法知识&#xff0c;并熟练使用相关软件进行建模是关键。本文将介绍一些常用的模型算法&#xff0c;以及软件操作教程。 数学建模常用模型包括&#xf…

【深度学习】常见模型-循环神经网络(Recurrent Neural Network, RNN)

循环神经网络&#xff08;RNN&#xff09; 概念简介 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一种用于处理序列数据&#xff08;如时间序列、文本序列等&#xff09;的神经网络模型。与传统神经网络不同&#xff0c;RNN 的结构具有记忆能力&…

Matlab总提示内存不够用,明明小于电脑内存

目录 前言情况1&#xff08;改matlab最大内存限制&#xff09;情况2&#xff08;重启电脑&#xff09;情况3 前言 在使用matlab中&#xff0c;有时候需要占用的内存并没有超过电脑内存依旧会报错&#xff0c;提示内存不够用&#xff0c;可以尝试下面几种方法&#xff0c;总有一…

数据结构(Java)——二叉树

1.概念 二叉树是一种树形数据结构&#xff0c;其中每个节点最多有两个子节点&#xff0c;通常被称为左子节点和右子节点。二叉树可以是空的&#xff08;即没有节点&#xff09;&#xff0c;或者由一个根节点以及零个或多个左子树和右子树组成&#xff0c;其中左子树和右子树也分…

Windows电脑上记录工作待办清单的工具用哪个?

在Windows电脑上记录日常工作待办清单的工具用哪一个比较好呢&#xff1f;想要工作效率高&#xff0c;借助Windows电脑上的待办清单工具&#xff0c;可以帮助大家快速完成各项任务&#xff0c;今天给大家盘点几款工作待办清单工具。 Windows自带的便笺Stickynotes Windows自…

H266/VVC 量化编码中 JCCR 技术

色度联合编码 JCCR VVC 支持色度分量联合编码(Joint Coding of Chroma Residual&#xff0c;JCCR)&#xff0c; 两个色度残差联合编码。通过 TU 的标志位 tu_joint_cbcr_residual_flag 指定该工 具&#xff0c;并通过 CBF 来隐式传输所选的模式。仅当 TU 的至少一个色度分量的 …

云原生时代,如何构建高效分布式监控系统

文章目录 一.监控现状二.Thanos原理分析SidecarQuerierStoreCompactor 三.Sidecar or ReceiverThanos Receiver工作原理 四.分布式运维架构 一.监控现状 Prometheus是CNCF基金会管理的一个开源监控项目&#xff0c;由于其良好的架构设计和完善的生态&#xff0c;迅速成为了监控…