Xilinx的Aurora8B10B ip原理讲解(高速收发器十六)

  点击进入高速收发器系列文章导航界面


  前文讲解了Aurora 8B/10B协议的一些基础知识,本文对Xilinx的Aurora 8B/10B IP进行讲解,该IP在Aurora 8B/10B的基础之上还完成了字对齐等等操作,开放给用户的端口有axi_full或axi_stream两种格式。

  相应的通道如下所示,与前文Aurora 8B/10B协议基本一致。

在这里插入图片描述

图1 Aurora 8B/10B通道概述

  Aurora 8B/10B内核的构成如下图所示,包含全局逻辑、通道逻辑、发送用户端口、接收用户端口几部分。

在这里插入图片描述

图2 Aurora 8B/10B内核框图

  通道逻辑(Lane Logic):每个GTX收发器由通道逻辑模块的一个实例驱动,该模块初始化每个单独的收发器并处理控制字符的编码和解码以及错误检测。

  全局逻辑(Global Logic):执行通道初始化的绑定和验证阶段;在操作期间,该模块生成Aurora协议所需的随机空闲字符,并监控所有通道逻辑模块的错误。

  RX用户接口(RX User Interface):将高速收发器接收通道接收的数据以axi接口形式输出给用户,并执行流量控制功能。

  TX用户界面(TX User Interface):将用户待发送数据传输到高速收发器发送通道,并执行流量控制功能,该模块还控制时钟补偿(CC)字符的定期传输。

1、用户传输数据端口

  下图是该IP支持的所有端口,大致可以分为6组。总线格式为[0:n]表示小端模式,格式为[n:0]表示大端模式。

在这里插入图片描述

图3 IP顶级端口

  Aurora 8B/10B顶层架构如下图所示,包括收发器以及控制逻辑和用户接口。该IP提供给用户两种接口,即帧接口和流接口。其中帧接口为axi4_Stream接口,而流接口只有数据和有效指示信号,没有掩码信号和最后字节指示信号。

在这里插入图片描述

图4 Aurora 8B/10B顶层架构

  下图表示开放给用户的数据接口默认以大端模式传输数据,首先发送高字节数据,最后发送低字节数据。

在这里插入图片描述

图5 默认用户接口传输数据顺序

1.1、帧接口(Framing Interface)

  帧接口的相关信号流向如下图所示,与AXI4-Stream接口信号基本一致,该接口可以传输任意字节数据。

在这里插入图片描述

图6 Aurora 8B/10B核心成帧接口(AXI4-Stream)

  上图相关信号的含义如下表所示,熟悉AXI4-Stream接口信号的可以忽略,只是注意输出端口不需要应答信号。

表1 用户接口
信号I/O含义
s_axi_tx_tdata[0:(8n–1)]/s_axi_tx_tdata[(8n–1):0]I待发送数据,根据IP设置不同,有大端和小端两种数据接口。
s_axi_tx_treadyO数据应答信号。
s_axi_tx_tlastI高电平表示帧结束。
s_axi_tx_tkeep[0:(n–1)]/s_axi_tx_tkeep[(n–1):0]I待发送数据掩码指示信号,低电平有效。
s_axi_tx_tvalidI待发送数据有效指示信号。
m_axi_rx_tdata[0:8(n–1)]/m_axi_rx_tdata[8(n–1):0]O接收数据。
m_axi_rx_tlastO高电平表示接收数据帧结束。
m_axi_rx_tkeep[0:(n–1)]/m_axi_rx_tkeep[(n–1):0]O接收数据掩码指示信号,低电平有效。
m_axi_rx_tvalidO接收数据有效指示信号。

  注意下图是Aurora 8B/10B协议的高速收发器传输数据的帧格式,在前文讲解Aurora 8B/10B协议时详细讲解过,注意SCP和ECP以字节为单位。因此接收用户数据之后,可能会像之前自定义PHY那样去对数据进行拼接,但是这些事情都是在Aurora 8B/10B IP内部完成的,用户不需要关心,只需要了解即可。

在这里插入图片描述

图7 收发器传输帧格式

  用户发送端口的时序如下图所示,待发送数据位宽为n字节,发送的数据量为3n字节,需要三个时钟传输。s_axi_tx_tready拉高表示AXI4_Steram接口已准备好接收数据。

  起始位/SCP/放置在通道的前两个字节上,以指示帧的开始,然后前n–2个用户数据字节放在通道上。由于/SCP/需要偏移,每个用户数据的最后两个字节总是延迟一个周期,并在下一时钟的前两个字节发送。

  s_axi_tx_tlast拉高表示结束用户数据传输,通过s_axi_tx_tkeep总线上的相应值,实现任意字节的传输。下图中的s_axi_tx_tkeep设置为N,表示最后一个数据拍中的所有字节都有效。

  当s_axi_tx_tlast拉高时,s_axi_tx_tready在下一个时钟周期拉低,内核利用数据流中的间隙发送最终偏移数据字节和停止位/ECP/,指示帧结束。s_axi_tx_tready在下一个周期重新拉高,以允许数据传输继续进行。

在这里插入图片描述

图8 用户发送端口时序

  从前文可知,Aurora 8B/10B每次传输的数据必须是偶数字节,如果用户数据为奇数字节,则会在数据末尾添加一个Pad字符变为偶数字节。如下图所示,用户最后一个数据宽度为n-1字节,IP内部在组帧时,会在有效数据末尾添加一个Pad字符。

在这里插入图片描述

图9 用户发送端口时序

  用户接口使用帧格式传输数据,支持暂停数据传输功能,如下图所示。通过拉低s_axi_tx_tvalid并发送空闲序列来暂停前n个字节后的数据流,直到s_axi_tx_tvalid拉高为止。

在这里插入图片描述

图10 暂停数据传输

  从前文可知,时钟补偿的优先级是最高的,所以数据传输可能会被时钟补偿序列打断,对应时序图如下所示。时钟补偿序列会在每10000字节的通道上产生12字节的开销。

在这里插入图片描述

图11 数据传输被时钟补偿暂停

  接收端口内部没有用于存储用户数据的缓冲器,因此在接收端口信号中没有m_axi_rx_tready信号。

  m_axi_rx_tvalid信号与Aurora 8B/10B内核各帧的第一个数据同时拉高,m_axi_rx_tlast与各帧的最后一个数据同时拉高,m_axi_rx_tkeep端口指示每帧最后一个数据中的有效字节数,m_axi_rx_tkeep信号仅在m_axi_rx_tlast拉高时有效。

  接收数据的时序如下图所示,m_axi_rx_tvalid为高电平时表示m_axi_rx_tdata对应数据有效,其余时间无效。

在这里插入图片描述

图12 暂停数据接收

  手册中还对该接口传输的效率做了计算,通过一个公式可以计算,也就是计算起始位、停止位、空闲数据、时钟补偿序列所带来的开销,从而得到数据传输速率,最终通道越多,数据位宽越大、帧越长,效率越高。用户数据位宽采用8字节、4通道传输一帧数据长度为1000,则效率可以达到99.14%。有兴趣的可以查看手册,获取具体计算方式。

1.2、流接口(Streaming Interface)

  初始化后,除了发送时钟补偿序列时,通道始终可用于写入。该接口特别简单,但是输入和输出数据位宽必须与数据信号位宽保持一致,不能传输任意字节数据。

在这里插入图片描述

图13 流接口框图

  Aurora 8B/10B内核通过拉高s_axi_tx_tready来表示已准备好传输数据。一个周期后,用户逻辑拉高s_axi_tx_tvalid信号并将数据置于s_axi_tx_tdata,开始传输数据,如下图所示。

  在下图中,发送数据D0和D1之后,Aurora 8B/10B内核拉低就绪信号s_axi_tx_tready,直到下一个时钟周期s_axi_tx_tready信号再次拉高时才会传输数据D2。

  然后,用户逻辑在下一个时钟周期拉低s_axi_tx_tvalid,在s_axi_tx_tvalid和s_axi_tx_tready都拉高之前不传输数据。

在这里插入图片描述

图14 典型的流接口传输时序

  下图是接收端流接口传输的时序图,过于简单,不再赘述。

在这里插入图片描述

图15 接收端流接口时序

2、流控端口

  前文在Aurora 8B/10B协议中讲解了两种流量控制(UFC和NFC)的基本原理,本节介绍xilinx的Aurora 8B/10B IP如何使用这两种流量控制。注意只有使用成帧接口的内核才有两个可选的流量控制接口。

  本地流量控制(NFC)控制全双工通道接收端的数据传输速率,用户流控制(UFC)为控制操作提供高优先级消息。

2.1、UFC界面

  只有在配置IP时开启UFC功能,后续生成的IP才会有相应的功能,IP配置界面如下所示,当选定帧格式传输数据时,可以单独启用UFC功能,也可以同时启用UFC和NFC功能。

在这里插入图片描述

图16 IP设置UFC

  UFC对应的端口信号如下图所示,先看接收端的数据信号,就是axi_stream接口,与接收数据端口一致,因为UFC数据也是通过用户数据端口发送的。

在这里插入图片描述

图17 UFC接口

  注意axi_ufc_tx_tdata并不是需要传输的UFC数据,而是UFC数据个数。下图是UFC传输数据格式,第一字节是UFC传输的开始字符,SIZE表示其后面UFC字符长度,axi_ufc_tx_tdata的值就是SIZE对应数值,位宽也是一致的。

在这里插入图片描述

图18 UFC数据格式

  UFC数据是通过s_axi_tx_tdata信号传输的,s_axi_ufc_tx_tready拉高后的第一个时钟开始。当s_axi_tx_tdata端口用于UFC数据时,内核会解拉低s_axi_tx_tready。

  手册给出用户发送数据和UFC消息的机制如下,当s_axi_tx_tready有效时发送用户数据,否则发送UFC数据。

在这里插入图片描述

图19 数据控制电路

  注意:只有在完成当前UFC请求后才能提出新的UFC请求且IP可能不支持背靠背UFC请求。

  下图显示了传输单周期UFC消息的程序,在这种情况下,4字节的UFC消息通过4字节的发送数据接口发送。

在这里插入图片描述

图20 传输单周期UFC消息

  注意:s_axi _tx_tready信号在两个周期内无效,Aurora 8B/10B内核利用数据流中的这一间隙来传输UFC报头和消息数据。

  如下图所示,位宽为2字节的用户发送数据接口传输4字节的UFC消息。

在这里插入图片描述

图21 发送多周期UFC消息

  s_axi_tx_tready被拉低三个周期,一个周期用于在s_axi_ufc_tx_tready周期内发送的ufc报头,两个周期用于UFC数据。

  当Aurora 8B/10B内核收到UFC消息时,通过专用的UFC AXI4-Stream接口将数据输出给用户。

  接收的UFC消息位于m_axi_ufc_rx_tdata端口,m_axi_ufc_rx_tvalid表示消息数据的开始,m_axi_ufc_rx_tlast表示结束,m_axi_ufc_rx_tkeep用于显示消息最后一个周期内m_axi_ufc_rx_tdata上的有效字节数。

  下图显示了一个具有4字节数据接口的Aurora 8B/10B内核接收4字节UFC消息。m_axi_ufc_rx_tkeep设置为4‘hF,表示接口只有四个最高有效字节有效。

在这里插入图片描述

图22 接收单周期UFC消息

  下图显示了一个具有4字节接口的Aurora 8B/10B内核接收8字节消息,输出数据帧有两个周期长,m_axi_ufc_rx_tkeep在第二个周期设为4‘hF,表示所有四个字节的数据都有效。

在这里插入图片描述

图23 接收多周期UFC消息

2.2、NFC界面

  Aurora 8B/10B协议包括本地流量控制(NFC)接口如下图所示,通常用于防止接收端的FIFO溢出。

  该接口允许接收器通过指定必须放入数据流的空闲数据个数来控制数据接收速率,甚至可以通过请求发送器暂时只发送空闲信号(XOFF)来完全关闭数据流。

  NFC接口包括一个用于发送nfc消息的请求(s_axi_nfc_tx_tvalid)和一个确认(s_axi_nfc_tx_tready)端口,以及一个用于指定所请求的空闲周期数的4位s_axi_nfc_tx_tdata端口。

在这里插入图片描述

图24 Aurora 8B/10B内核NFC接口

  如果需要使用NFC接口,则在配置IP时需要勾选下图的四个NFC选项之一,NFC有完成模式和立即模式两种,前文也讲述过两者区别,一般使用立即模式比较好。

在这里插入图片描述

图25 IP配置时启用NFC

  前文详细讲解过NFC实现的机制和原理,本质就是接收端FIFO快要溢出时,像发送端传输一个NFC消息,让发送端在指定周期内发送空闲字符,停止发送数据,从而防止接收端FIFO溢出。

  如下图所示,当数据端口s_axi_tx_tdata发送NFC空闲字符时,s_axi_tx_tready为低电平,此时不能传输用户数据。

在这里插入图片描述

图26 传输NFC信息

  下图显示收到NFC消息时用户发送数据的端口时序。在这种情况下,NFC数据为0001,请求发送端口发送两个空闲数据拍。

  IP拉低用户接口的数据应答信号s_axi_tx_tready,直到发送足够的空闲数据来满足请求。下图中内核在即时NFC模式下运行,NFC空闲被立即插入。Aurora 8B/10B内核也可以在完成模式下运行,在完成模式下,NFC空闲仅插入帧之间。

在这里插入图片描述

图27 接收插入了NFC空闲的消息

  由上述叙述可知,UFC是需要用户去控制s_axi_tx_tdata来传输数据的,而NFC由于是发送的空闲数据,因此用于其实不需要干预其数据信号。

3、状态和控制接口

  Aurora 8B/10B内核的状态和控制端口允许应用程序监控信道并使用收发器的内置功能。本节提供了状态和控制接口、收发器串行I/O接口以及专用于单工模块的初始化端口的图表和端口描述。

  如下图所示,在配置IP时,需要选择使用全双工还是单工模式,默认使用全双工模式传输数据。

在这里插入图片描述

图28 IP配置的通道选择

  下图表示不同模式下,状态信号和控制信号类型的区别。

在这里插入图片描述

图29 控制及状态信号

  下表列出了一些比较常用的控制信号和状态信号,一些不常用的可以自行参考手册,这里列多了就没有看下去的耐心了,所以列的都是重要的。

表2 状态和控制端口
信号I/O含义
channel_upOAurora 8B/10B通道初始化完成且通道准备好数据传输时置位。
lane_up[0:m–1]O每位代表一个通道,该通道初始化成功时对应位置位。
frame_errO检测到通道帧或协议错误,将该信号拉高一个时钟。
hard_errO检测到硬错误时拉高,直到Aurora 8B/10B内核复位。
soft_errO在传入的串行流中检测到软错误时拉高。
ResetI复位Aurora 8B/10B内核,高电平有效,必须保持至少六个user_clk周期。
gt_resetI当模块首次上电时拉高,复位收发器的PCS和PMA。该信号使用init_clk_in消抖,且必须拉高六个init_clk_in周期。
link_reset_outO热插拔计数到期时变为高电平。
init_clk_inI当gt_reset有效时user_clk停止,建议init_clk_in的频率低于GT参考时钟输入频率。

  1、软件错误:在高速收发器的运行过程中,由于通道噪声等因素的影响,数据传输可能会遇到错误。8B/10B编码技术能够检测出所有单比特数据错误以及大多数多比特数据错误。当检测到这些错误时,会拉高软错误(soft_err)信号。如果在短时间内检测到大量软错误,系统将执行复位操作。

  2、硬件错误:Aurora 8B/10B可以监控每个收发器的硬件错误。硬件错误可能包括接收端或发送端buffer溢出、发送端和接收端时钟源频率差异超过100ppm等。当检测到过多的软错误时,这可能触发硬件错误,会拉高硬件错误(hard_err)信号。

  一旦检测到硬件错误,Aurora 8B/10B IP会自动进行复位并尝试重新初始化。如果该问题得到解决,通道可以重新初始化,并建立新的连接。

  3、帧错误:Aurora 8B/10B IP可以检测axi_stream的帧错误,帧错误可能包括空帧、连续的帧开始符号或连续的帧结束符号。检测到帧错误后,拉高帧错误(frame_err)信号。

  Aurora 8B/10B在上电、复位或硬错误后自动初始化,直到通道准备就绪。lane_up总线指示通道中的哪些通道已完成通道初始化程序。

  只有在内核完成整个初始化程序后,channel_up才会置位。在channel_up有效之前,Aurora 8B/10B内核无法接收数据。

  Aurora 8B/10B IP包含reset和gt_reset两个复位信号,前者用于复位除高速收发器以外的逻辑功能,后者用于复位高速收发器,本文以全双工模式讲解复位。

  Aurora 8B/10B内核的复位至少拉高六个user_clk时间周期,channel_up会在三个user_clk周期后拉低,如下图所示。

在这里插入图片描述

图30 双工内核中的复位拉高

  下图显示了复位高速收发器的时序,gt_reset至少拉高六个init_clk_in时间周期。由于user_clk是由txoutclk生成的,当高速收发器复位时,txoutclk会停止产生,因此经过几个时钟之后user_clk也会停止产生,之后channel_up拉低。

在这里插入图片描述

图31 双工内核中的gt_reset拉高

  两个复位信号的上电时序应该如下所示,开始均处于高电平,当首先拉低gt_reset,当高速收发器复位完成,稳定产生user_clk之后,reset才拉低,然后对逻辑部分完成复位。

在这里插入图片描述

图32 上电复位时序

  当内核工作过程中,如果要进入复位状态,应该遵循以下时序。首先应该拉高reset,让内核逻辑进入复位,之后拉高gt_reset,防止停止产生user_clk后内核逻辑卡死。

在这里插入图片描述

图33 复位时序

  除了上述这些内容,该IP还有CRC、热插拔、时钟补偿、掉电模式等等,但是这些内容要么平时不会使用,要么前文已经讲解过,需要了解的可以从手册中获取,本文不再赘述。

  注意该IP的用户数据的大端模式可以更改为小端模式,更改方式如下图所示,在配置IP时勾选“Little Endian Support”即可。

在这里插入图片描述

图34 更改用户数据端口的大小端格式

  其实该IP除了控制和状态接口外,还有收发器接口,由于前文已经讲解过收发器相关知识,对于这些信号应该比较了解,因此对于这部分内容不再赘述。

4、延迟时间

  通过Aurora 8B/10B内核的延迟是由通过协议引擎(PE,FPGA可编程逻辑实现)和收发器的管道延迟引起的。PE流水线延迟随着AXI4流接口宽度的增加而增加,收发器延迟取决于所选收发器的特性和属性。

  注意:这些延迟不包括因Aurora 8B/10B通道两端之间的串行连接长度(PCB走线等)而产生的延迟。

  下图显示了默认配置下数据路径的延迟,延迟可能因设计中使用的收发器和IP配置而异。

在这里插入图片描述

图35 数据路径的延迟

在默认内核配置的功能仿真中,从s_axi_tx_tvalid到m_axi_rx_tvalid的双字节帧设计的最小延迟约为37个user_clk周期,如下图所示。

在功能仿真中,从s_axi_tx_tvalid到m_axi_rx_tvalid的默认四字节帧设计的最小延迟约为41个user_clk周期。

在这里插入图片描述

图36 Aurora 8B/10B 2字节延迟

  Aurora 8B/10B内核吞吐量取决于收发器数量和目标线路速率。使用20%的Aurora 8B/10B协议编码开销和0.5 Gb/s至6.6 Gb/s的线路速率范围计算单通道设计和16通道设计的吞吐量,得到吞吐量范围[0.4,84.48]Gb/s。

  本文的重点在于前两部分,用户需要着重了解用户接口以及流控原理和实现方式,才能够正常使用该IP。通过本文的分析可知,该IP就是对GTX收发器的上层封装、内部完成组帧和接收端字节对齐、流控、时钟补偿、CRC校验等等功能。

  相比自定义PHY,该IP更加简单,增加流控功能后接收端接收数据会更加准确,防止数据溢出,缺点在于用户不能操作GTX,GTX的发送通道和接收通道必须使用buffer同步数据,不能使用相位对齐电路,导致数据延迟会比较大。

  如果设计对延时比较敏感,可能该IP将不再适用。

  本文是对Pg046手册的一个解读,部分内容前文已经讲解过,本文就只是简单的过一遍。后半部分大多直接来源于手册,因为复位这些其实平时用的并不多,只需要将复位电平保持规定要求即可。需要注意几个初始化信号和错误指示信号,在实际工程的调试中可能会遇到。

  该手册可以在xilinx官网获取,也可以在公众号后台回复“xilinx手册”(不包括引号)获取。


  如果对文章内容理解有疑惑或者对代码不理解,可以在评论区或者后台留言,看到后均会回复!

  如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!您的支持是我更新的最大动力!将持续更新工程!

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

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

相关文章

17.3 命令行-POSIX特性、安装与分享

1. POSIX特性 在Linux和macOS系统中,大多数命令行工具都要求以推荐标准POSIX指定的方式传递命令行参数。 POSIX即UNIX可移植操作系统接口(Portable Operating System Interface of UNIX)是一套标准,旨在确保操作系统之间彼此兼容。 很多开发人员也希望…

java进阶——JVM 与 Java 体系结构详解

文章目录 1.JVM 与 Java 体系结构1.1. 前言1.1.1. 开发人员如何看待上层框架1.1.1. 我们为什么要学习 JVM?1.1.2. Java vs C 1.2. Java 及 JVM 简介1.2.1. JVM:跨语言的平台1.2.1. 字节码1.2.2. 多语言混合编程 1.3. 虚拟机与 Java 虚拟机1.3.1. 虚拟机1…

vue 弹出框组件重复打开时,资源重新加载

新增或者编辑内容使用同一个弹出框&#xff0c;如何使数据可以重新加载&#xff1f; 1、绑定时间戳&#xff0c;有副作用&#xff0c;屏幕会闪烁一下 <el-dialog :key"timer" > </el-dialog> 2、v-if和:visible.sync同时使用 <el-dialogv-if"…

沃尔沃Volvo EDI:运输标签测试流程

对接Volvo的EDI项目中&#xff0c;需要按照以下流程完成测试&#xff1a; 1.创建EDI连接并且传输第一个交付计划 2.请求发货通知以及运输标签 3.反馈关于发货通知以及运输标签的细节 4.使用生产数据进行最终的验证 在Volvo EDI项目案例中&#xff0c;详细介绍了有关连接测试以…

25届最近5年南京航空航天大学自动化考研院校分析!

南京航空航天大学 一、学校学院专业简介 二、考试科目指定教材 1、考试科目介绍 2、指定教材介绍 三、近5年考研分数情况 以下为南京航空航天大学&#xff0c;自动化学院近几年的考研分数情况。 以下为南京航空航天大学&#xff0c;航天学院近几年的考研分数情况。 以下为南京…

2710. 移除字符串中的尾随零

给你一个用字符串表示的正整数 num &#xff0c;请你以字符串形式返回不含尾随零的整数 num 。 示例 1&#xff1a; 输入&#xff1a;num "51230100" 输出&#xff1a;"512301" 解释&#xff1a;整数 "51230100" 有 2 个尾随零&#xff0c;移除…

React -- memo允许你的组件在 props 没有改变的情况下跳过重新渲染。

memo(Component, arePropsEqual?) 使用 memo 将组件包装起来&#xff0c;以获得该组件的一个 记忆化 版本。通常情况下&#xff0c;只要该组件的 props 没有改变&#xff0c;这个记忆化版本就不会在其父组件重新渲染时重新渲染。但 React 仍可能会重新渲染它&#xff1a;记忆化…

内容产品运营方案业务架构解析与实践探索

### 背景 在信息爆炸的时代背景下&#xff0c;内容产品运营成为各行各业竞争的重要环节。构建合理的内容产品运营方案业务架构&#xff0c;能够帮助企业更好地管理内容生产、推广和变现&#xff0c;提升品牌影响力和商业价值。 ### 业务架构设计 #### 1. 内容生产与管理 建立…

Chrome Plugin静态页面触发CSP如何解决CSP

CSP 内容安全策略 (Content Security Policy)&#xff1a; 内容安全策略是一种计算机安全标准&#xff0c;旨在防御跨站脚本、点击劫持等代码注入攻击&#xff0c;阻止恶意内容在受信网页环境中执行。 Manifest V3 对于内容安全策略有一些默认的设置&#xff0c;如禁止外部代码…

漏洞挖掘 | 记一次信息泄露到登入后台

这次是项目上遇到的一个洞&#xff0c;打开页面是一个红红的登录页面 这里就不放图了&#xff0c;浓浓的红色气息~ 老样子抓登录包 虽然是明文传输但是爆破弱口令无果 f12大法&#xff0c;审计源代码&#xff0c;在其中一个js文件中发现了这个接口 拼接URL进行访问 感觉有点东…

Python与CMD的交织之旅:探索、挑战与突破

Python与CMD的交织之旅&#xff1a;探索、挑战与突破 在编程的世界中&#xff0c;Python以其简洁明了的语法和强大的功能库赢得了广大开发者的青睐。而CMD&#xff0c;作为Windows操作系统的命令行工具&#xff0c;也是程序员们进行各种操作的重要工具。那么&#xff0c;Pytho…

微信小程序和支付宝小程序生成二维码

描述&#xff1a;前端生成二维码 一、页面 <canvas type"2d" style"width: 312px; height: 312px;" id"myQrcode"></canvas>二、微信小程序 安装 weapp-qrcode-canvas-2d 官方文档传送门 const query wx.createSelectorQuery()…

优质域名怎么注册?

在数字化时代&#xff0c;一个优质的域名对于企业和个人品牌的重要性不言而喻。它不仅能够提升品牌形象&#xff0c;还能带来可观的流量和潜在客户。然而&#xff0c;注册一个优质域名并非易事&#xff0c;它需要策略和技巧。本文将探讨如何注册一个优质域名&#xff0c;包括选…

qgroundcontrol编程入门:探索无人机控制的新境界

qgroundcontrol编程入门&#xff1a;探索无人机控制的新境界 在无人机技术的飞速发展下&#xff0c;qgroundcontrol作为一款强大的地面控制站软件&#xff0c;逐渐成为了无人机开发者和爱好者们的首选工具。然而&#xff0c;对于初学者而言&#xff0c;qgroundcontrol的编程入…

二、electron 的 BrowserWindow 的属性

const { app, BrowserWindow } require(electron)function createWindow() {let mainWin new BrowserWindow({x: 100,y: 100, //设置窗口的显示位置&#xff0c;相对于当前屏幕的左上角 show: true, //默认情况下创建一个窗口对象之后就会显示&#xff0c;设置为false&#x…

移动性:mobility

移动性管理原理 什么是移动性 一些术语 移动性管理办法 让网络&#xff08;路由器&#xff09;处理移动性&#xff1a;路由器通过常规路由表发送交换节点的永久地址 路由器互相交换各自移动节点位置信息&#xff0c;路由系统定期会通告自己这边新移动过来的移动设备信息端系统…

Spark大数据 IDEA开发词频统计项目

在使用IntelliJ IDEA进行Spark大数据项目的开发时&#xff0c;词频统计&#xff08;Word Count&#xff09;是一个常见的入门项目。以下是一个基本的步骤指南&#xff0c;用于在IDEA中创建和运行一个Spark词频统计项目&#xff1a; 1. 设置开发环境 确保你已经安装了以下软件…

【Linux】系统优化:一键切换软件源与安装Docker

引言 在Linux系统安装完成后&#xff0c;进行一些必要的初始化设置是提升系统性能和用户体验的关键。本文将重点介绍两个实用的一键脚本&#xff1a;LinuxMirrors提供的软件源切换脚本和Docker安装脚本。这两个脚本将帮助我们简化配置安装过程。 一键切换软件源脚本 在Linux…

前端之npm运行时配置文件.npmrc(可用于配置npm淘宝源)

文章目录 前端之npm运行时配置文件.npmrc什么是.npmrc设置项目配置文件设置用户配置文件设置全局配置文件给npm 命令添加注册源选项 前端之npm运行时配置文件.npmrc 什么是.npmrc 官网&#xff1a;https://nodejs.cn/npm/cli/v7/configuring-npm/npmrc/ .npmrc&#xff0c;可…

【0286】Postgres内核 shared buffer pool 初始化实现

0. 前言 Postgres内核中shared buffer的初始化过程是在buf_init.c(缓冲区管理器初始化例程,src/backend/storage/buffer)源文件中实现的。 该文件中的几个注释值得重视: Data Structures(数据结构) 缓冲区位于freelist和查找数据结构中。 Buffer Lookup(缓存查找) 两…