【FPGA】Verilog编程实现SDRAM读写(一) ----- 初始SDRAM

news2024/11/19 3:50:30

文章目录

  • 一. 存储器及SDRAM分类
    • 1. 存储器分类
    • 2. 半导体存储器分类
    • 3. SDRAM分类
  • 二. 什么是SDRAM?
    • 1. SDRAM基本概念
    • 2. SDRAM存储阵列
    • 3. SDRAM基本存储单元
    • 4. BANK概念
    • 5. SDRAM容量计算
    • 6. SDRAM功能框图
    • 7. SDRAM信号引脚
    • 8. SDRAM操作命令
      • 8.1 禁止命令( INHIBIT)
      • 8.2 空操作命令( NOP)
      • 8.3 加载模式寄存器命令( LOAD MODE REGISTER)
        • 8.3.1 突发长度(Burst Length)
        • 8.3.2 突发类型(Burst TYPE)
        • 8.3.3 列选通潜伏期(CAS Latency)
        • 8.3.4 运行模式(Operating Mode)
        • 8.3.5 写模式(Operating Mode)
        • 8.3.6 A10 ~ A12
        • 8.3.7 BA0 ~ BA1
      • 8.4 激活命令(ACTIVE)
      • 8.5 读命令(READ)
      • 8.6 写命令(WRITE)
      • 8.7 预充电命令(PRECHARGE)
      • 8.8 自动预充电命令(AUTO PRECHARGE)
      • 8.9 突发中断命令(BURST TERMINATE)
      • 8.10 自动刷新命令(AUTO REFRESH)
      • 8.11 自刷新命令(SELF REFRESH)
  • 三. SDRAM操作
    • 1. 芯片初始化
    • 2. 行激活
    • 3. 列读写
    • 4. 数据读出
    • 5. 数据写入
    • 6. 预充电
    • 7. 刷新
    • 8. 数据掩码

一. 存储器及SDRAM分类

1. 存储器分类

在这里插入图片描述

2. 半导体存储器分类

在这里插入图片描述

3. SDRAM分类

在这里插入图片描述

二. 什么是SDRAM?

1. SDRAM基本概念

SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器。同步、动态、随机是其性能特点的外在说明:

  • 同步(Synchronous )是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准
  • 动态(Dynamic )是指存储阵列 需要不断的刷新来保证数据不丢失
  • 随机(Random )是指数据不是线性依次存储,而是自由指定地址进行 数据读写

随着时代的不断发展、技术的不断更新,SDRAM使用至今已过数十载,产品更新历经五代,分别是:

  • 第一代 SDR SDRAM
  • 第二代 DDR SDRAM
  • 第三代 DDR2 SDRAM
  • 第四代 DDR3 SDRAM
  • 第五代 DDR4 SDRAM

SDRAM具有空间存储量大、读写速度快、价格相对便宜等优点。然而由于SDRAM内部利用电容来存储数据,为保证数据不丢失,需要持续对各存储电容进行刷新操作;同时在读写过程中 需要考虑行列管理、各种操作延时等,由此导致了其控制逻辑复杂的特点。

2. SDRAM存储阵列

SDRAM内部是一个存储阵列,我们可以把它想象成一张表格,我们在向这个表格中写入数据的时候,需要先指定一个行(Row),再指定一个列(Column),就可以准确地找到所需要的“单元格”,每一个单元格就是一个存储单元,这就是SDRAM寻址的基本原理。
在这里插入图片描述
SDRAM具有空间存储量大、读写速度快、价格相对便宜等优点。然而由于SDRAM内部利用电容来存储数据,为保证数据不丢失,需要持续对各存储电容进行刷新操作;同时在读写过程中需要考虑行列管理、各种操作延时等,由此导致了其控制逻辑复杂的特点。

3. SDRAM基本存储单元

SDRAM存储数据是利用了电容的充放电特性以及能够保持电荷的能力。一个大小为1bit的存储单元的结构如下图所示,它主要由行列选通三极管,存储电容,刷新放大器组成。行地址与列地址选通使得存储电容与数据线导通,从而可进行放电(读取)与充电(写入)操作。
在这里插入图片描述
将每个存储单元简化为单Bit的存储体,再将若干存储体排列为矩阵,同一行将行地址线相连,同一列将列地址线相连,就构成了一个存储阵列的简化模型。SDRAM内部存储阵列的简化模型。简化模型示意图如下:
在这里插入图片描述

4. BANK概念

逻辑 Bank(Logical Bank,简称L-Bank、Bank):单个的存储空间称之为存储单元,N(行列个数乘积)个存储单元构成一个存储阵列,这个存储阵列我们就称之为一个逻辑Bank。
通常SDRAM的存储空间被划分为4个L-Bank,在寻址时需要先指定其中一个L-Bank,然后在这个选定的L-Bank中选择相应的行与列进行寻址,确定需要读写的存储单元。

5. SDRAM容量计算

容量计算:对SDRAM的读写是针对存储单元进行的,一个存储单元的容量等于数据总线的位宽,单位是bit。
SDRAM芯片的总存储容量我们就可以通过下面的公式计算SDRAM总存储容量=L-Bank的数量×行数×列数×存储单元的容量(数据线的位宽)

6. SDRAM功能框图

SDRAM内部有一个逻辑控制单元,并且有一个模式寄存器为其提供控制参数。SDRAM接收外部输入的控制命令,并在逻辑控制单元的控制下进行寻址、读写、刷新、预充电等操作。
在这里插入图片描述

7. SDRAM信号引脚

下面以海力士Synchronous DRAM Memory 256Mbit
HY57V561620F(L)T(P)Series系列为例:
在这里插入图片描述
管脚功能描述如下:
在这里插入图片描述在这里插入图片描述

8. SDRAM操作命令

8.1 禁止命令( INHIBIT)

信号组成:{cs_n,ras_n,cas_n,we_n}= 4’b1xxx

禁止命令 (Command Inhibit) ,其他数据手册也称为取消设备选择命令 (Device Deselect)。不论 SDRAM 处于何种状态,此命令均可被执行;执行此命令后,SDRAM 芯片不被选择,新的命令无法写入,但已经执行的命令不受影响。

8.2 空操作命令( NOP)

信号组成:{cs_n,ras_n,cas_n,we_n}= 4’b0111

无操作命令(No-operation),也可称为空命令、NOP命令。不论 SDRAM 处于何种状态,此命令均可被写 入,该命令给被选中的 SDRAM 芯片传递一个空操作信息,目的是为了防止 SDRAM 处于空闲或等待状态时,其他命令被写入。

8.3 加载模式寄存器命令( LOAD MODE REGISTER)

信号组成:{cs_n,ras_n,cas_n,we_n}= 4’b0000

配置模式寄存器命令(Load Mode Register),也被称为 Mode Reigister Set。此命令只有所有 Bank 均处于空闲状态时才可被写入,否则配置出错,而且在执行此命令后,SDRAM 必须等待相应的响应时间 tRSC(Register Set Cycle),称为模式寄存器配置周期后,才可写入新的命令。

在写入此命令对 SDRAM 进行模式寄存器配置时,需要地址总线 A0-A11 辅助寄存器的模式设置,A0-A11 赋值不同对应寄存器配置不同模式,未使用的地址总线设置为低电平。 A0-A11 的不同赋值所对应的寄存器不同模式,具体见下图:
在这里插入图片描述
在这里插入图片描述

8.3.1 突发长度(Burst Length)

突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Length,简称 BL)。地址总线的低三位 A0-A2 是突发长度的控制位,SDRAM 芯片的突发长度可设置为 1、2、4、8 和整页,单位为字节,整页表示一次突发传输一整行的数据量。

8.3.2 突发类型(Burst TYPE)

突发类型的设置位为 A3,可将突发类型设置为两类,顺序突发和交错突发。一般将 A3 设置为低电平,选择顺序突发类型。

8.3.3 列选通潜伏期(CAS Latency)

列选通潜伏期是指从读命令被寄存到数据总线上到出现第一个有效数据之间的时钟周 期间隔,列选通潜伏期可被设置为 2 个或 3 个时钟周期,设置位为 A6,A5,A4。

8.3.4 运行模式(Operating Mode)

运行模式设置位为 A7,A8,SDRAM 存在标准模式、测试模式等多种模式,但对于普通用户,只开放了标准模式,在使用 SDRAM 时只需将 A7,A8 设置为低电平进入标准模式。

8.3.5 写模式(Operating Mode)

写模式设置位为 A9,控制 SDRAM 的写模式。当 A9 为低电平时,SDRAM 的读/写操 作均采用突发方式,突发长度由突发长度寄存器(A0-A2)设定;当 A9 位高电平时, SDRAM 的读操作依然采用突发方式,突发长度由突发长度寄存器(A0-A2)设定,但 SDRAM 的写操作不在使用突发方式,每一个写命令只能写入一个数据。

8.3.6 A10 ~ A12

A10-A12为保留位,对模式寄存器的配置不起作用,赋值为 0 即可。

8.3.7 BA0 ~ BA1

BANK地址。

8.4 激活命令(ACTIVE)

信号组成:{cs_n,ras_n,cas_n,we_n}= 4’b0011

激活命令(ACTIVE)是用来为后续的操作打开(或者叫激活)一个特定的 BANK和行。BA0和 BA1用来选择需要操作的BANK,地址线A0-A12选择指定的行(ROW)。该行会一直保持激活状态并可以进行读写,只有执行一个预充电命令(PRECHARGE)后,该行才会被关闭。同一个BANK中,每次只能激活一行。在某行已经激活的状态下,当需要对该 BANK中的另一行进行操作时,必须首先执行一个预充电命令来关闭当前行,然后才能激活另一行。

8.5 读命令(READ)

信号组成:{cs_n,ras_n,cas_n,we_n}= 4’b0101

读命令(READ)用来启动对一个已经激活行的突发读取操作。BA0和 BA1指定需要读取的 BANK,地址线上某些位A0- A9,A11(x4) ,A0-A9(x8),A0-A8(x16)指定需要读取的数据起始列地址,A10控制是否在突发读取完成之后立即执行预充电,即关闭当前行操作。若为高电平则在读取完当前行以后立即自动执行预充电操作(关闭当前行),若为低电平则不关闭该行,使其继续处于激活状态,以便于紧接着对该行执行新的读写操作。DQM 控制该位对应的数据是否被正常的读出,(例如,16位的 SDRAM芯片,DQM0对应控制 DQ[7:0],DQM1对应控制 DQ[15:8]),若DQM为高电平,则数据总线上对应字节的状态会变为三态,即该字节数据被屏蔽。从DQM 有效到数据总线状态对应发生变化,有两个时钟周期的延迟。

8.6 写命令(WRITE)

信号组成:{cs_n,ras_n,cas_n,we_n}= 4’b0100
写命令(WRTE)用来启动对一个已经激活行的突发写入操作, BA0和 BA1指定需要写入的 BANK,地址线上某些位(AO-A9,A11 (x4) ,A0- A9(x8),A0-A8(x16))指定需要写入的数据起始列地址,A10控制是否在突发写完成之后立即执行预充电,即关闭当前行操作。若为高电平则在写完当前行以后立即自动执行预充电操作(关闭当前行),若为低电平则不关闭该行,使其继续处于激活状态,以便于紧接着对该行执行新的读写操作。DQM控制该位对应的字节是否被写入新的数据(例如,16位的 SDRAM芯片,DQM对应控制 DQ[7.0)],DQM1对应控制DQ[15:8)),若DQM为高电平,则数据总线上对应字节的数据不会被写入到SDRAM中。

8.7 预充电命令(PRECHARGE)

信号组成:{cs_n,ras_n,cas_n,we_n}= 4’b0010

预充电命令(PRECHARGE)的作用就是关闭在指定BANK或者全部BANK(具体是单一或者全部 BANK 由A10 状态选择)中已经打开的行,在预充电命令执行并经过 tRP(PRECHARGE command period)时间后,对应的 BANK将可以重新被操作,即从执行预充电命令到下一次能够对该 BANK 执行新的命令,需要等待tRP的时间。A10为高电平,则对所有BANK行进行预充电,若 A10为低电平,则只对 BAO和 BA1 指定的 BANK中的行进行预充电。当某个BANK行被执行了预充电命令后,该BANK将处于空闲状态,在下次读写操作之前必须重新激活。

8.8 自动预充电命令(AUTO PRECHARGE)

信号组成:{cs_n,ras_n,cas_n,we_n}= 4’bxxxx

自动预充电(AUTO PRECHARGE)是指在不额外增加执行指令的前提下,达到使用预充电指令一样的效果。该功能是在对SDRAM发出读写命令时,使用A10 指明是否在突发读写完成后立即自动执行预充电操作来实现的。自动预充电命令在突发长度为整页突发时是无效的。自动预充电命令每次操作只一次有效,即如果在下次执行读写时,希望继续使用自动预充电方式,则需要使用A10重新指明。

8.9 突发中断命令(BURST TERMINATE)

信号组成:{cs_n,ras_n,cas_n,we_n}= 4’b0110

突发中断命令(BURST TERMINATE)用来截断固定长度或者整页长度的突发。当突发中断命令被执行时,离该命令最近的一次被SDRAM寄存的读或者写命令被截断,突发中断命令并不会对对应行进行预充电,即执行了突发中断操作后,该行仍然处于被激活状态,除非预充电命令被执行,该BANK才会被关闭。

8.10 自动刷新命令(AUTO REFRESH)

信号组成:{cs_n,ras_n,cas_n,we_n}= 4’b0001

自动刷新(AUTO REFRESH)一般用于对SDRAM进行常规操作的过程中。该命令是非持续性的,即每次需要时,都需要发送此命令。在执行自动刷新命令之前,所有的BANK必须被预充电(关闭)。在自动刷新和预充电命令之间,必须间隔最少tRP时间。自动刷新时,行地址由 SDRAM芯片内部的刷新控制器自动更新,因此,在执行自动刷新命令时,用户不需要关心地址总线上的值。不管器件的数据位宽是多少,对于256Mbit的SDRAM,在商业和工业级的器件中,每64ms 内需要执行 8192次自动刷新操作,即每7.813us 执行一次。在汽车级的器件中,每 16ms 内执行8192次自动刷新操作,即每 1.953us 执行一次。另外,自动刷新操作也可以采用突发的方式执行,即每 64ms (商业和工业级)/16ms (汽车级)都连续不间断的执行 8192次自动刷新命令,然后其他时间再执行读写或者其他命令。

8.11 自刷新命令(SELF REFRESH)

信号组成:{cs_n,ras_n,cas_n,we_n}= 4’b0001

自刷新命令(SELF REFRESH)能够用来保持SDRAM中的数据,即使系统中其他部分已经掉电。在自刷新模式下,SDRAM不需要外部的时钟信号就能够保持数据。发起自刷新命令和发起自动刷新非常类似,只是自刷新命令时CKE被置为低电平(自动刷新命令时CKE 被置为高电平)。当自刷新命令被寄存到SDRAM中去后,SDRAM除 CKE 以外的所有管脚状态都将被忽略,CKE信号继续有作用,且只能为低电平。当自刷新模式开启后,SDRAM内部自己产生时钟,用来作为自动剧新的周期。SDRAM进入自刷新模式后,最少需要保持在自刷新模式下tRAS(ACTVE-to-PRECHARGEcommand)的时间,当然,对于运行在自刷新模式下的最大时间并没有任何限制。退出自刷新模式需要执行一串命令,首先,在 CKE 信号恢复到高电平之前,时钟信号CLK必须稳定(稳定的时钟可由对应的时钟引脚经过约束后的时钟提供)。当CKE信号恢复到高电平后,必须保持NOP命令最低2个时钟周期,因为必须保证内部可能正在执行的刷新操作已完成。在退出自刷新模式后,就需要每64ms 内执行 8192次自动刷新操作(自刷新和自动刷新都是利用了内部的行刷新计数器)。注:汽车级器件不支持自刷新功能。

三. SDRAM操作

1. 芯片初始化

SDRAM芯片上电之后需要一个初始化的过程,以保证芯片能够按照预期方式正常工作;SDRAM上电后要有200us的输入稳定期,在这个时间内不可以对SDRAM的接口做任何操作;200us结束以后给所有L-Bank预充电,然后是连续8次刷新操作;最后设置模式寄存器。初始化最关键的阶段就在于模式寄存器(MR,Mode Register)的设置,简称MRS(MR Set)。
在这里插入图片描述
SDRAM通过配置模式寄存器来确定芯片的工作方式,包括突发长度(Burst Length)、潜伏期(CAS Latency)以及操作模式等,配置模式寄存器的参数由地址线提供。
需要注意的是,在模式寄存器设置指令发出之后,需要等待一段时间才能够发送新的指令,这个时间我们称之为模式寄存器设置周期tRSC (Register Set Cycle)。

在这里插入图片描述

2. 行激活

初始化完成后,无论是读操作还是写操作,都要先激活(Active) SDRAM中的一行,使之处于活动状态(又称行有效)。在此之前还要进行SDRAM芯片的片选和L-Bank的定址,不过它们与行激活可以同时进行。
在这里插入图片描述
从上图可以看出,在片选CS#(#表示低电平有效)、L-Bank定址的同时,RAS (Row Address Strobe,行地址选通脉冲)也处于有效状态。此时An地址线则发送具体的行地址。如图中是A0-A11,共有12个地址线,由于是二进制表示法,所以共有4096个行(2^12=4096) ,A0-A11的不同数值就确定了具体的行地址。由于行激活的同时也是相应L-Bank有效,所以行激活也可称为L-Bank有效。

3. 列读写

行地址激活之后,就要对列地址进行寻址了。由于在SDRAM中,地址线是行列共用的,因此列寻址时地址线仍然是A0-A11。在寻址时,利用RAS(Row Address Strobe,行地址选通脉冲)与CAS (Column Address Strobe,列地址选通脉冲)来区分行寻址与列寻址。

一般来说,在SDRAM中存储阵列(L-Bank)的列数小于行数,即列地址位宽小于行地址,因此在列地址选通时地址线高位可能未用到,如下图中的A9、A11。
在这里插入图片描述
另外,列寻址信号与读写命令是同时发出的,读/写命令是通过WE信号来控制的,WE为低时是写命令,为高时是读命令。然而,在发送列读写命令时必须要与行激活命令有一个时间间隔,这个间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟)。这是因为在行激活命令发出之后,芯片存储阵列电子元件响应需要一定的时间。tRCD是SDRAM的一个重要时序参数,广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=3,就代表RAS至CAS延迟为三个时钟周期。具体到确切的时间,则要根据时钟频率而定。

4. 数据读出

在选定列地址后,就已经确定了真体的存储单元,剩下的事情就是数据通过数据IO通道(DQ)输出到内存总线上了。但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL(CAS Latency,CAS潜伏期)。CL时间越短,读数据时SDRAM响应就越快。由于CL只在读取时出现,所以CL又被称为读取潜伏期(RL,ReadLatency)。CL的单位与tRCD一样,为时钟周期数,具体耗时由时钟频率决定。
在这里插入图片描述

5. 数据写入

数据写入的操作也是在tRCD之后进行,但此时没有CL(注意:CL只出现在读取操作中),行寻址与列寻址的时序图和前文一样,只是在列寻址时,WE_N为有效状态。从图中可见,数据与写指令同时发送。不过,数据并不是即
时地写入存储单元,数据的真正写入需要一定的周期。为了保证数据的可靠写入,都会留出足够的写恢复时间(tWR, Write Recovery Time)。

在这里插入图片描述

6. 预充电

在对SDRAM某一存储地址进行读写操作结束后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。在读写过程中,工作行内的存储体由于“行激活”而使存储电容受到干扰,因此在关闭工作行前需要对本行所有存储体进行重写。预充电实际上就是对工作行中所有存储体进行数据重写,并对行地址进行复位,以准备新行工作的过程。

预充电可以通过命令控制,可以便用单独的预充电命令,也可以通过使用带预充电的读或带预充电的写命令完成预充电操作。在单独的预充电命令中,A10则控制着是对指定的L-Bank还是所有的L-Bank预充电,前者需要提供L-Bank的地址,后者只需将A10信号置于高电平。

在发出预充电命令之后,要经过一段时间才能发送行激活命令打开新的工作行,这个间隔被称为tRP (Precharge command Period,预充电有效周期),和tRCD、CL一样,tRP的单位也是时钟周期数,具体值视时钟频率而定。

注意:写操作时,由于每笔数据的真正写入需要一个足够的周期来保证,这段时间就是写回周期(tWR)。所以预充电不能与写操作同时进行,必须要在tWR之后才能发出预充电命令,以确保数据的可靠写入,否则重写的数据可能出错。

写数据时预充电时序图:
在这里插入图片描述
读数据时预充电时序图:
在这里插入图片描述

7. 刷新

SDRAM之所以称为同步“动态”随机存储器,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此刷新是SDRAM最重要的操作。刷新操作与预充电类似,都是重写存储体中的数据。但为什么有预充电操作还要进行刷新呢?因为预充电是对一个或所有LBank中的工作行(处于激活状态的行)操作,并且是不定期的;而刷新则是有固定的周期,并依次对所有行进行操作,以保留那些久久没经历重写的存储体中的数据。但与所有L-Bank预充电不同的是,这里的行是指所有L-Bank中地址相同的行,而预充电中各L-Bank中的工作行地址并不是一定是相同的。

那么要隔多长时间重复一次刷新呢?目前公认的标准是,存储体中电容的数据有效保存期上限是64ms,也就是说每一行刷新的循环周期是64ms。我们在看SDRAM芯片参数时,经常会看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的标识,这里的4096与8192就代表这个芯片中每个L-Bank的行数。刷新命令一次仅对一行有效,也就是说在64ms内这两种规格的芯片分别需要完成4096次和8192次刷新操作。因此,L-Bank为4096行时刷新命令的发送间隔为15.625us (64ms/4096) ,8192行时为7.8125us (64ms/8192)。

刷新操作分为两种:自动刷新(Auto Refresh,简称AR)与自刷新(SelfRefresh,简称SR)。不论是何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的自动操作。对于自动刷新(AR),SDRAM内部有一个行地址生成器(也称刷新计数器)用来自动生成行地址。由于刷新是针对一行中的所有存储体进行,所以无需列寻址,或者说CAS在RAS之前有效。所以,AR又称CBR(CASBefore RAS,列提前于行定位)式刷新。

8. 数据掩码

通过DQM数据掩码,内存可以控制I/O端口取消哪些输出或输入的数据。为了精确屏蔽一个数据总线位宽中的每个字节,每个DQM信号线对应一个字节(8bit)。因此,对于数据总线为16bit的SDRAM芯片,就需要两个DQM引脚。
SDRAM协议规定,在读取时DQM发出两个时钟周期后生效。而在写入时,DQM与写入命令一样是立即生效。

写数据时DQM时序图:
在这里插入图片描述
读数据时DQM时序图:
在这里插入图片描述

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

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

相关文章

mysql做查询时,第一次很慢,第二三次就会很快?

前言 sql语句第一次查询慢的原因不仅仅是因为执行计划没有被缓存这么简单,有时候你会发现sql语句重用了执行计划,但是第一次查询时还是很慢. 最主要的原因是第一次查询的时候,mysql会将查询出的部分数据和索引从磁盘加载到内存作为缓存,而第二三此查询的时候就直接从内存缓存…

Spring - 手把手分析 IoC 容器创建过程

概述 这里我们以 Spring 5.2.8.RELEASE 版本为例,看一下 IoC 容器 的创建过程。同时我们使用 java-based 的方式实例化 IoC 容器,即使用 AnnotationConfigApplicationContext Configuration 的方式配置容器需要的组件。 ApplicationContext ctx new …

【云IDE初体验】与君相逢恨晚,真正的轻量级开发工具

云IDE产品介绍 云IDE使用教程 免费使用地址:点击【云IDE】,即可开始创建工作空间啦~ 云IDE1.云IDE介绍2. 使用流程3. 体验总结作为一名大学生,学习的地点很关键,尤其是我们计算机系,更是离不开电脑,去图书馆…

调度线程池 ScheduledThreadPoolExecutor 的正确使用姿势

前言 项目中经常会遇到一些非分布式的调度任务,需要在未来的某个时刻周期性执行。实现这样的功能,我们有多种方式可以选择: Timer类, jdk1.3 引入,不推荐 它所有任务都是串行执行的,同一时间只能有一个任…

【C语言】移位操作符 位操作符 - 对二进制位进行精准操作【+面试题目】_[初阶篇]

快速导航 【前言】 1.移位操作符 1.1左移操作符(<<) 1.2右移操作符(>>) 2.位操作符 2.1 & 按位与 2.2 | (按位或) 2.3 ^ (按位异或) 3.面试题目 3.1 交换两个变量&#xff08;不创建临时变量&#xff09; 3.2统计二进制中1的个数 3.2.1 方法一&#xff1a;…

复合事件归因分析

1 复合事件 1.1 概述 1.2 类型 1.2.1 先决条件事件&#xff08;preconditioned events&#xff09; 1.2.2 多变量事件&#xff08;multivariate CEs&#xff09; eg.高温干旱 1.2.3 时间复合事件&#xff08;temporally CEs&#xff09; eg.旱涝急转 1.2.4 空间复合事件…

电子电路设计基本概念100问(二)【学习目标:原理图、PCB、阻抗设计、电子设计基本原则、基本原器件等】

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

【每天学习一点新知识】网络安全--拒绝服务攻击

目录 1、SYN泛洪攻击 SYN泛洪攻击原理 攻击过程 防御机制 2、Smurf攻击 Smurf攻击原理 间接攻击 放大攻击 防御机制 3、DDoS DDoS原理 直接DDoS攻击 间接DDoS攻击 防御机制 1、SYN泛洪攻击 SYN泛洪攻击原理 终端访问Web服务器之前需要和服务器之间建立TCP连接。W…

万字长文解析Scaled YOLOv4模型(YOLO变体模型)

一&#xff0c;Scaled YOLOv4 摘要1&#xff0c;介绍2&#xff0c;相关工作 2.1&#xff0c;模型缩放 3&#xff0c;模型缩放原则 3.1&#xff0c;模型缩放的常规原则3.2&#xff0c;为低端设备缩放的tiny模型3.3&#xff0c;为高端设备缩放的Large模型 4&#xff0c;Scaled-YO…

大学毕业后,我就送了2个月外卖,哭了一整晚

先简单介绍一下自己&#xff0c;我来自湛江&#xff0c;大学学的的物流管理专业&#xff0c;现在就职于一家互联网公司&#xff0c;从事软件测试工作。 我来自湛江的一个偏远农村&#xff0c;家里兄弟姐妹多&#xff0c;父母无力负担我的学费&#xff0c;很多时候学费都是靠姐…

红黑树 - c++

文章目录&#xff1a;红黑树的介绍红黑树节点定义红黑树的插入操作红黑树的删除红黑树的验证红黑树 vs AVL树红黑树的介绍 红黑树(Red-Black-Tree)&#xff0c;通常写为 R-B Tree。它是一种特殊的二叉搜索树。红黑树的每个节点上都有一个存储位来标识节点的颜色&#xff0c;可…

积木报表—JimuReport v1.5.4版本发布,免费的可视化Web报表工具

项目介绍 一款免费的低代码可视化报表&#xff0c;像搭建积木一样在线拖拽设计&#xff01;低代码开发必备&#xff0c;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; 秉承“简单、易用、专业”的产品理念&#xff0c;极大的降低报表开发难度、缩…

【css伪类选择器及透明度——附项目图片及代码】

不知不觉&#xff0c;又鸽了好长时间了&#xff0c;非常抱歉&#xff0c;没办法&#xff0c;毕竟开学了&#xff0c;今天课少&#xff0c;抽出了两个小时写了一篇css的&#xff0c;每天不是被催更&#xff0c;就是在催更的路上。放心&#xff0c;小陈陈有时间一定会给大家分享好…

SVM 支持向量机

SVM 支持向量机SVM 原理最优化问题线性不可分sklearn 调用 SVM核函数SVM 原理 前置知识&#xff1a;用迭代策略来划分样本&#xff0c;请猛击《神经元的计算》。 SVM 也是用一条迭代的直线来划分不同数据之间的边界&#xff1a; .- 是一条直线&#xff08;线性函数&#xff09…

数据结构c语言版第二版(严蔚敏)第五章笔记

目录 树和二叉树的定义 树的定义 树的基本术语 二叉树的定义 二叉树的性质和存储结构 二叉树的性质 二叉树的存储结构 顺序存储结构 链式存储结构 遍历二叉树和线索二叉树 遍历二叉树 先序遍历 中序遍历 后序遍历 前序遍历的递归算法 中序遍历的递归算法 后序…

SARScape中用sentinel-1数据做SBAS-InSAR完整流程(2/2)

书接上回&#xff1a;SARScape中用sentinel-1数据做SBAS-InSAR完整流程&#xff08;1/2&#xff09; SARScape中用sentinel-1数据做SBAS-InSAR完整流程&#xff08;2/2&#xff09;7 反演第一步Inversion&#xff1a;First Step7.1 导入设置7.2 optional file7.3 parameters参数…

齐博x1用户登录接口

用户的登录主要涉及到小程序登录、APP的帐号密码登录、APP的微信开发平台帐号登录。 相应的地址是&#xff1a;http://qb.net/index.php/index/wxapp.login/index.html 涉及到的方法如下 上面的地址&#xff0c;默认是小程序的登录与注册。 http://qb.net/index.php/index/wxa…

matlab/simulink电力电子仿真傅里叶变换模块(fourier)测幅值相角的设置与使用

matlab/simulink电力电子仿真傅里叶变换模块&#xff08;fourier&#xff09;测幅值相角的设置与使用 今天要说的是一个可以测量信号的幅值和相角的模块&#xff0c;fourier&#xff0c;长下面这样&#xff1a; 有时候我们需要求某个信号的幅值或者相位&#xff0c;或求两个…

用文字描述给黑白照上色,这个免费网站火了!网友:比其他同类都好用

金磊 Alex 发自 凹非寺量子位 | 公众号 QbitAI这是清朝末代皇后婉容广为流传的一张老照片&#xff1a;如果让照片变成彩色的&#xff0c;会是什么样子&#xff1f;竟然没有什么违和感&#xff0c;百年前的老照片似乎在此刻变得鲜活了起来。而这张图上色的背后&#xff0c;并没有…

BUUCTF NewStarCTF 公开赛赛道Week5 Writeup

文章目录WEBGive me your photo PLZBabySSTI_ThreeUnsafe ApacheSo Baby RCE AgainFinal roundMISC最后的流量分析奇怪的PDF 2奇怪的文本Yesec no drumsticks 5qsdzs girlfriend 5WEB Give me your photo PLZ 可上传.htaccess AddType application/x-httpd-php .jpg然后上传…