FPGA基础知识
FPGA是在PAL、PLA和CPLD等可编程器件的基础上进一步发展起来的一种更复杂的可编程逻辑器件。它是ASIC领域中的一种半定制电路,既解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。
由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能釆用一种易于反复配置的结构,查找表-Look Up Table,LUT,可以很好地满足这一要求。目前,主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些军品和宇航级FPGA采用Flash/熔丝/反熔丝工艺的查找表结构。
1 查找表结构及功能
由布尔代数理论可知,对于一个n输入的逻辑运算,最多产生2^n个不同的组合。所以,如果预先将相应的结果保存在一个存储单元中,就相当于实现了与非门电路的功能。
FPGA的原理的实质,就是通过配置文件对查找表进行配置,从而在相同的电路情况下实现了不同的逻辑功能。
1.1 输入查找表结构
LUT本质就是一个RAM。自FPGA诞生以来,多使用4输入的LUT,可以看成一个包含四位地址线的RAM。当设计者通过原理图或HDL描述了一个逻辑电路后,FPGA厂商提供的集成开发工具就会自动计算逻辑电路的所有可能结果,并把真值表事先写人到RAM中。这样,每输入一个信号进行逻辑运算就等于输人一个地址进行查表,找出地址对应的内容,然后输出内容即可。
下面用一个4输人逻辑与门电路的例子来说明LUT实现组合逻辑的原理。LUT描述四输入逻辑与关系如表2.1所示。
表2.1 输入与门的真值表
59.JPG
从表2.1可以看到,LUT具有和逻辑电路相同的功能,但是LUT具有更快的执行速度和更大的规模。与传统化简真值表构造组合逻辑的方法相比,LUT具有明显的优势,主要表现在:
(1)LUT实现组合逻辑的功能由输入决定,而不是由复杂度决定。
(2)LUT实现组合逻辑有固定的传输延迟。
1.2 输入查找表新结构
在65nm工艺条件下,与其他电路(特别是互连电路)相比,LUT的常规结构大大缩小。一个具有4倍比特位的6输入LUT结构仅仅将所占用的CLB面积增加了15%,但是平均而言,每个LUT上可集成的逻辑数量却提高了40%。当采用更高的逻辑密度时,通常可以降低级联LUT的数目,并且改进关键路径延迟性能。
新一代的FPGA提供了真正的6输入LUT可以将它用作逻辑或者分布式存储器,这时,LUT是一个64位的分布式RAM(甚至双端口或者四端口)或者一个32位可编程移位寄存器。每个LUT具有两个输出,从而实现了五个变量的两个逻辑函数,存储32X2 RAM比特,或者作为6输入16X2比特的移位寄存器进行工作。公众号:OpenFPGA
LUT逻辑结构在每个LUT中融合了更多的逻辑块,使用了较少的局部互连节点或更少的高电容节点(逻辑功能之间),降低了逻辑层次,从而缩短了路径延迟。这种新的对称布线还使相邻逻辑之间的连接更加直接,进一步降低了布线电容。
下面通过采用4和6输入LUT实现多路选择器(MUX)的例子来说明6输入查找表的优势。如图2.16(a)所示,在4输入LUT的结构中实现一个8:1的MUX需要四个4输入LUT和三个MUXF模块;如图2.16(b)所示,在6输入LUT的架构中实现同样的8:1的MUX只需要两个LUT和一个MUX模块。因此,采用6输入LUT结构时,所构造的逻辑 结构性能更高且利用率更好。
58.JPG
1.3可配置的逻辑块
可配置的逻辑块(Configurable Logic Block,CLB)是FPGA内主要的逻辑资源,用于实现时序和组合逻辑电路。7系列的CLB提供了高性能的FPGA逻辑:
真正的6输人查找表:
双LUT5(5输人LUT))选项;
可作为分布式存储器和移位寄存器;
用于算术功能的快速进位逻辑;
宽的多路复用器。
每个CLB连接到一个开关矩阵用于访问通用的布线资源,如图2.17所示。一个CLB包含两个切片(Slice)每个切片中,包含4个6输入的查找表、8个触发器、多路复用器和算术进位逻辑。
57.JPG
注:这两个切片没有直接的相互连接,每个切片以列的形式排列在一起。
在7系列的FPGA中,大约2/3的Slice是SLICEL逻辑(L表示Logic),剩下的是SLICEM逻辑(M表示Memory)对于SLICEM来说,除了实现SLICEL内的逻辑功能外,它也能通过使用它内部的LUT构造出分布式的64位RAM或者32位的移位寄存器(SRL32)或者2个SRL16。
每个CLB由两个Slice构成,如图2.18所示。对于每个CLB来说:
(1)SLICE(0)在CLB的底部和左边一列。
(2)SLICE(1)在CLB的顶部和右边一列。
56.JPG
注:X后面的数字用于标识CLB内每个切片的位置,以及切片所在列的位置。
(1)X编号:切片位置从底部以顺序0,1开始计算(第1列CLB),2、3(第2列CLB)等。公众号:OpenFPGA
(2)Y编号:标识切片所在行的位置。在同一个CLB内Y后面的值是一样的。计算从底部的CLB开始,从一行CLB递增到下一行CLB。
SLICEM的内部结构和SLICEL的内部结构分别如图2.19和图2.20所示。
55.JPG
54.JPG
1.3时钟资源
7系列的FPGA提供了6种不同类型的时钟线,包括BUFG、BUFR、BUFIO、BUFH、BUFMR和高性能的时钟,以此来解决不同的时钟要求,这些要求包括高扇出、短传递延迟和特别低抖动。组和全局时钟的描述如图2.21所示。
53.JPG
1.全局时钟
7系列FPGA提供了最高扇岀的32个全局时钟线,它能到达每个触发器时钟,时钟使能和置位/复位。通过水平时钟缓冲区BUFH驱动在任何时钟域的12个全局时钟线。每个BUFH可以独立地使能/禁止,并且允许关闭一个区域的时钟,因此提供了细粒度控制时钟域功耗的能力。全局时钟缓冲区也能驱动全局时钟线,可以实现无毛刺的时钟复用和时钟使能功能。全局时钟常常由CMT驱动,能完全消除基本时钟分布延迟。
2.区域时钟
区域时钟能驱动其区域内的所有时钟目的。一个区域定义为一个包含50个I/O以及 50个CLB高度和跨越半个芯片宽度的区域 域内,提供4个时钟跟踪。通过4个时钟使能(Clock-capable Clock,CCIO)输入引脚的其中一个引脚,可以驱动每个区域时钟缓冲区。在7系列FPGA中,有两种类型的CCIO:两个多区域(MulTI-region Clock-capable,MRCC)和两个单区域CCIO(Single-region Clock capable CLOCK,SRCC)。
CCIO的输入为差分/单端模式,它用来驱动4个I/O时钟BUFIO、4个区域时钟BUFR以及本区域中任何一个CMT。
7系列FPGA引入了多时钟区域缓冲区BUFMR提供了跨越区域/组的能力。
3.I/O时钟
I/O时钟频率很高,它只用于I/O逻辑和串行/解串行电路。在7系列FPGA中,提供了从MMCM到I/O的直接连接,它为低扭曲和高性能接口提供时钟。
1.4时钟管理模块
7系列FPGA内的每个时钟管理模块(Clock Management TIle,CMT)包含一个混合模式的时钟管理器(Mixed-mode Clock Manager,MMCM)和一个相位锁相环(Phase Locked Loop,PLL)。PLL包含了MMCM功能的部分。
7系列FPGA内CMT的结构,如图2.22所示,图中给出各种时钟源和MMCM/PLL的连接,输人多路复用器从IBUFG、BUFG、BUFR、BUFH、GT或者本地互联中,选择参考源和反馈时钟。
52.JPG
7系列的FPGA提供最多24个CMT。MMCM和Pll用于频率合成器,用于宽范围的频率。MMCM和PLL的符号描述如图2.23所示。
51.JPG
在7系列FPGA内,PLL是MMCM功能的一部分。MMCM支持的额外特性包括:
使用CLKOUT[0…3]实现到BUFR或者BUFIO的直接高性能路径连接;
反相的时钟输出CLKOUT[0…3];
CLK0UT6;
CLK0UT4_CASCADE;
为CLKOUTO_DIVIDE_F行小数分频;
为CLKFBOUT_MULT_F行小数倍频;
细微的相位移动;
动态的相位移动。MMCM的内部结构,如图2.24所示。MMCM的相位-频率检测器PFD用于比较输入时钟和反馈时钟的上升沿频率和相位。在两个时钟之间,PFD产生与相位和频率成比例的信号,该信号驱动充电泵CP和环路滤波器LF,用于为压控振荡器VCO产生一个参考电压。
50.JPG
1.5块存储器资源
大多数FPGA都具有内嵌的块RAM,这极大拓展了FPGA的应用范围和灵活性。BRAM用于高效的数据存储或者缓冲,可用于高性能的状态机、FIFO缓冲区、大的移位寄存器、大的LUT或者ROM块。RAM的结构如图2.25所示。
49.JPG
7系列的FPGA提供了20〜1880个双端口的块存储器,每个BRAM的容量为36KB,在7系列FPGA内,BRAM的关键特性包括:
双端口存储器的数据宽度最多为72位;
可编程的FIFO逻辑;
内建可选的纠错电路。
FPGA内的每个BRAM提供了两个可访问的端口,但是它也能配置为单端口RAM。
每个存储器的读/写访问由时钟控制。所有的输入数据、地址、时钟使能和写使能都经过寄存。输人地址总是由时钟驱动,一直保持数据,直到下一个操作。可选的输出数据流水线寄存器,允许以一个额外时钟的代价,产生更高的时钟速率。
1.BRAM的配置
每个端口可以配置成32KX1、16KX2、8KX4、4KX9、2KX18、1KX36或者512X72。
两个相邻的BRAM能级联构成一个64KX1的双端口存储器,且不需要添加任何逻辑。
注:上面的容量以比特计算。
2.检错和纠错
每个64位宽的BRAM可以产生、保存和使用8位额外的海明码。在读过程中,可以纠正单比特错误以及检测两比特错误。在读写外部64〜72位宽的存储器时,也可以使用ECC逻辑。
3.UFO控制器
7系列FPGA提供了FIFO结构,内部结构如图2.26所示。
48.JPG
该结构便用单时钟(同步)或双时钟(异步)操作,递增内部的地址,并且提供了4个握手信号线:full(满)、empty(空)、almostfull(几乎满)和almostempty(几乎空)。
注:1、可自由编程几乎满和几乎空标志;2、FIFO的宽度和深度也可以编程,但是读和写端口总是相同的宽度;3、图2.26中的读写指针专用于FIFO。
在首字跌落(First Word Fall-through)模式中,在第一个读操作前,第一个写人的字自动出现在数据输出端。当读取第一个字后,这个模式就和标准模式一样了。
1.6互联资源
互联是FPGA内用于在功能元件,例如IOB、CLB、DSP和BRAM的输人和输出信号提供通路的可编程网络。互联也称为布线以规则的阵列排列,被分段用于最优的连接。
在7系列FPGA中,CLB以规则的阵列排列。每个岛开关矩阵的连接用来访问通用的布线资源,如图2.27所示。
47.JPG
在7系列FPGA中,提供不同类型的布线,如图2.28所示。这些布线通过长度来定义。互联类型有:快速连接、单连接、双连接和四连接。
46.JPG
(1)快速连接:将模块的输出连接到自己模块的输人。
(2)单连接:在垂直和水平方向上,布线连接到相邻的单元。
(3)双连接:在所有四个方向上,水平和垂直连接到所有其他的单元和对角线相邻的单元。
(4)四连接:在水平和垂直方向上,每隔4个CLB连接一个单元或者以对角线方式连接到相隔两行和两列距离的单元。
1.7专用的DSP模块
在7系列的FPGA中,集成了专用的、充分定制的低功耗的XtremeDSP DSP48E1 DSP模块,其内部结构如图29所示。其增强的特性主要表现在:
(1)25X18位的补码乘法器/累加器,高分辨率48位信号处理器,其工作频率最高可以达到638MHz;
(2)低功耗的预加法器可用于构建滤波器,它降低了所需的50% DSP Slice资源;
(3)高级的特性包括可选的流水线、可选的ALU以及用于级联的专用总线。
45.JPG
在数字信号处理应用中,会使用大量的二进制乘法器和累加器,因此推荐在专用的DSP Slice中实现数字信号处理算法。在DSP Slice中,设计者可以动态选择旁路掉乘法器。
此外,两个48位的数据可以输人到一个单指令多数据流SIMD算术单元(它可以实现双24位加/减/累加,或者4个12位加/减/累加)操作,或者一个逻辑单元(它可以实现10种不同的逻辑功能运算)。
在DSP Slice中还提供一个48位的模式检测器,用于收敛或者对称的四舍五人操作。当它与逻辑单元一起使用时,模式检测器也可以实现96位宽度的逻辑功能。
DSP Slice所提供的流水线以及扩展功能,显著提高了数字信号处理算法的处理速度和处理效率。
1.8 输入和输出块
7系列FPGA对输入和输出进行了优化,这样可以在物理级和逻辑级上满足不同的要求,这些要求包括高速存储器、网络、视频平板和传感器接口,高速的ADC/DAC连接,以及传统接口。7系列的FPGA使用了统一的I/O架构。
物理I/O能力和结构提供了一个I/O标准范围、端接和低功耗模式。每个I/O组的I/O数量,它们相对时钟和新I/O资源放置的位置以及I/O在FPGA晶圆上的排列顺序同等重要。此外,I/O绑定逻辑功能,例如输入/输岀延迟和串行化/解串行化功能,它对于支持高带宽应用也非常关键。在I/O上所增加的新功能,如移相器、PLL和I/O FIFO完整接口特性,可用于支持最高性能的DDR3以及其他存储器接口。基本I/O结构和新I/O相关的模 块,如图2.30所示。
44.JPG
1.I/O物理级
在物理级上,I/O要求支持一个给定范围的驱动电压和驱动强度,以及功能接口可接受的不同I/O标准。此外,I/O也支持不同的输入/输出端接特性。在7系列的FPGA中,支持两种不同类型的I/O。
(1)高性能(High Performance,HP)I/O。在I/O组中,将它们称为HP I/O组。
(2)宽范围(High Range,HR)I/O。在I/O组中,将它们称为HR I/O组,它支持宽范围的I/O标准。
在7系列FPGA中,这两种I/O类型被分别绑定到一个包含50 I/O的整个I/O组内。
(1)在ArTIx-7系列的FPGA中,只有3.3V的HR I/O组。
(2)在Virtx-7和Kintex-7系列的FPGA中,既有HP I/O组,也有HR I/O组。
下面详细介绍HP I/O和HR I/O组。Kintex-7 XC7K160T的I/O组和CMT的布局结构如图2.31所示。
43.JPG
用于存储器接口的I/O电源主要有三个元件:
(1)DCI用于匹配PCB布线的阻抗。
(2)参考输入接收器,用于将I/O电压调整到核电压。
(3)IDELAY用于将信号同步到时钟。
2.I/O逻辑级
在7系列FPGA中,所有I/O都能被配置成组合或者寄存方式。所有的输入/输出支持双数据率(Double Data Rate, DDR),通过对IDEALY和ODELAY编程,可以对任何一个输入和某些输出进行延迟。
每个I/O块包含一个可编程的绝对延迟原语IDELAY2。IDELAY可以连接到ILOGICE2/ISERDESE2或者ILOGICE3/ISERDESE2模块。每个HP I/O组包含一个可编程绝对延迟原语称为ODELAY2。
注:
(1)原语(primiTIve)是指FPGA内部的基本功能模块。
(2)对于HR I/O组来说,不提供ODELAY2原语。
此外,对于很多应用而言需要。连接外部高速设备。在这些应用中,往往外部提供高速的串行比特流,然后转换成FPGA内并行低速的宽字节操作。因此,要求在I/O结构内提供一个串行化器和解串行化器。在7系列FPGA的每个I/O引脚中,提供了8位IOSERDES原语,它可以实现串行-并行或并行-串行之间的转换。
注:
7系列内用于精确实现ISERDES的原语是ISERDESE2,精确实现OSERDES的是OSERDESE2。
1.9 吉比特收发器
在7系列FPGA内,提供吉比特收发器,其重要特性包括:
(1)高性能的收发器,其速率最高可以达到6.6Gb/s(GTP)、12.5Gb/s(GTX)、13.1Gb/s(GTH)和28.05Gb/s(GTZ)。
(2)优化的低功耗模式,用于芯片到芯片的接口。
(3)高级的预发送和后加重、接收器线性CTLE以及判决反馈均衡(Decision Feedback Equalization,DFE),包括用于额外余量的自适应均衡。
目前,与光纤和PCB内IC直接、背板、长距离的超高速串行数据发送,变得日益流行,因此,要求专业的专用片上电路和差分I/O能应对这些高数据率的信号完整性问题。
注:Artix-7和Kintex-7系列内提供了0?32个收发器电路。Virtex-7系列提供最多96个收发器。
每个串行收发器是发送器和接收器的组合。不同7系列的串行收发器使用了环形振荡器以及LC谐振的组合。每个收发器有大量用户定义的特性和参数,它们可以在配置设备的时候进行定义,某些参数和特性甚至可以在操作的时候进行修改。
发送器是一个并行-串行的转换器,转换率为16、20、32、40、64或80。此外,GTZ发送器支持最多160位的数据宽度。这些发送器的输出使用差分输岀信号驱动PC板。通过一个可选的FIFO以及额外的硬件,输人数据支持8B/10B、64B/66B和64B/67B编码策略。
接收器是一个串行-并行的转换器,它将接收到的位串行差分信号变成并行的字流,其宽度为16、20、32、40、64或80位。此外,GTZ接收器支持最多160位的数据宽度。接收器将接收的差分数据流送到FPGA内可编程的线性和判决反馈均衡器,使用参考时钟来初始化时钟识别。数据模式使用NRZ编码。
1.11 XADC模块
在“数字化革命”时代,模拟技术的需求依然强劲。严格定义来说,常用于测量真实世界信息的大多数传感器都是模拟电路。电压、电流、温度、压力、流量和重力等均属于连续的时域信号。由于数字技术具有高度的精确性和可重复性,它常用于监控和控制这些模拟信号。数据转换器(包含ADC DAC和模拟多路复用器),为数字世界和模拟世界架起了至关重要的桥梁。
随着模拟传感器市场和数字控制系统市场的不断发展,对连接模拟世界和数字世界的需求持续增长。推动模拟混合信号技术市场发展的因素包括智能电网技术、触摸屏、工业控制安全系统、高可用性系统、先进马达控制器,以及对各种设备更高安全性的需求。
2005年,随着Virtex-5系列FPGA的推出,Xilinx意识到有必要集成名字为System Monitor的子系统以支持模拟混合信号功能。通过System Monitor子系统,设计人员可实现对FPGA关键性指标和外部环境的监控。
在经历两代FPGA产品之后,Xilinx进一步强化了这方面的工作,推出了具备模拟混合信号功能的Artix-7、Kintex-7和Virtex-7 FPGA以及Zynq-7000 SoC通过在7系列FPGA内集成两个独立通用1MHz釆样率的12位分辨率ADC。显著增强了嵌入式模拟子系统的功能。该功能强大的模拟子系统与高度灵活、功能强劲的FPGA逻辑紧密结合,实现了高度可编程混合信号平台—灵活混合信号解决方案。
需要注意是,Xilinx的FPGA也在向混合信号处理方向发展。与Xilinx前几代FPGA系列产品相比,采用28nm工艺的7系列FPGA扩展了模拟子系统的功能。在7系列FPGA中,将模拟子系统命名为XADC。在XADC中,包含两路独立的12位1MHz采样率模数转换器(ADC)以及一个17通道模拟多路复用器。这种将模拟系统与可编程逻辑结合的全新技术被XIlinx称为灵活混合信号处理(AMS)技术。
7系列XADC模块的内部结构,如图2.33所示。该ADC(XADC)子系统包括:
42.JPG
(1)17个支持单极性和双极性模拟输入信号的差分模拟输入通道。
(2)可选择片上或者外部参考电源。
(3)提供片上电压和温度传感器。
(4)采样序列控制器。
(5)片上传感器的可配置阈值逻辑及相关告警功能。
其中,控制和状态寄存器为数字可编程逻辑提供了无缝接口。
XADC提供两种类型的接口:JTAG接口和XADC FPGA接口。
XADC的一项独特功能就是能够通过JTAG端口直接访问,因此无需占用FPGA资源源。也不必配置FPGA JTAG访问同时支持数据和控制,可以让JTAG提供另一级功能和系统健康状况监控。负责控制JTAG总线的中央处理器能够采集远程的功率、温度和其他模拟数据,然后执行系统范围内的系统监控。对高可靠性系统,灵活混合信号提供了一种监控系统、控制冗余硬件和报告需求的低成本途径。Vivado提供的分析器为访问片上传感器 的信息以及通过JTAG配置XADC.提供了便利的访问途径。
相关文章:

FPGA基础知识
FPGA是在PAL、PLA和CPLD等可编程器件的基础上进一步发展起来的一种更复杂的可编程逻辑器件。它是ASIC领域中的一种半定制电路,既解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。 由于FPGA需要被反复烧写,它实现组合逻辑的基…...

C语言运算符逻辑运算符位运算符
逻辑运算符 下表显示了 C 语言支持的所有关系逻辑运算符。假设变量 A 的值为 1,变量 B 的值为 0,则: 运算符 描述 实例 && 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 (A && B) 为假。 || 称为逻辑…...

机器学习:基于主成分分析(PCA)对数据降维
机器学习:基于主成分分析(PCA)对数据降维 作者:AOAIYI 作者简介:Python领域新星作者、多项比赛获奖者:AOAIYI首页 😊😊😊如果觉得文章不错或能帮助到你学习,可…...

软件测试之测试模型
软件测试的发展 1960年代是调试时期(测试即调试) 1960年 - 1978年 论证时期(软件测试是验证软件是正确的)和 1979年 - 1982年 破坏性测试时期(为了发现错误而执行程序的过程) 1983年起,软件测…...

【项目精选】网络考试系统的设计与实现(源码+视频+论文)
点击下载源码 网络考试系统主要用于实现高校在线考试,基本功能包括:自动组卷、试卷发布、试卷批阅、试卷成绩统计等。本系统结构如下: (1)学生端: 登录模块:登录功能; 网络考试模块…...

Python近红外光谱分析与机器学习、深度学习方法融合实践技术
、 第一n入门基础【理论讲解与案 1、Python环境搭建( 下载、安装与版本选择)。 2、如何选择Python编辑器?(IDLE、Notepad、PyCharm、Jupyter…) 3、Python基础(数据类型和变量、字符串和编码、list和tu…...

实例7:树莓派呼吸灯
实例7:树莓派呼吸灯 实验目的 通过背景知识学习,了解digital与analog的区别。通过GPIO对外部LED灯进行呼吸控制,熟悉PWM技术。 实验要求 通过python编程,用GPIO控制LED灯,使之亮度逐渐增大,随后减小&am…...

java 接口 详解
目录 一、概述 1.介绍 : 2.定义 : 二、特点 1.接口成员变量的特点 : 2.接口成员方法的特点 : 3.接口构造方法的特点 : 4.接口创建对象的特点 : 5.接口继承关系的特点 : 三、应用 : 1.情景 : 2.多态 : ①多态的传递性 : ②关于接口的多态参数和多态…...

用 Visual Studio 升级 .NET 项目
现在,你已可以使用 Visual Studio 将所有 .NET 应用程序升级到最新版本的 .NET!这一功能可以从 Visual Studio 扩展包中获取,它会升级你的 .NET Framework 或 .NET Core 网页和桌面应用程序。一些项目类型仍正在开发中并将在不久的未来推出&a…...

JavaWeb中FilterListener的神奇作用
文章目录1,Filter1.1 Filter概述1.2 Filter快速入门1.2.1 开发步骤1.3 Filter执行流程1.4 Filter拦截路径配置1.5 过滤器链1.5.1 概述1.5.2 代码演示1.5.3 问题2,Listener2.1 概述2.2 分类2.3 代码演示最后说一句1,Filter 1.1 Filter概述 F…...

移动端布局
参考链接:抖音-移动端适配 一、移动端布局 flexiblepostcss-pxtorem vue-h5-template 老版本:动态去计算scale,并不影响rem的计算,好处是解决了1px的问题,但是第三方库一般都用dpr为1去做的,这就导致地图或…...

前端无感登录,大文件上传
后端设置token的一个失效时间,前端在token失效后不用重新登录 1,在相应中拦截,判断token返回过期后,调用刷新token的方法 2,后端返回过期的时间,前端判断过期的时间,然后到期后调用对应的方法…...

Spring Boot系列03--自动配置原理
目录1. 相关注解2. 自动配置原理分析3. 自动配置图示Spring Boot的核心优势:自动装配、约定大于配置。 1. 相关注解 ConfigurationProperties(prefix "前缀名")该注解用于自动配置的绑定,可以将application.properties配置中的值注入到 Bean…...

Java多线程(四)---并发编程容器
1.经常使用什么并发容器,为什么?答:Vector、ConcurrentHashMap、HasTable一般软件开发中容器用的最多的就是HashMap、ArrayList,LinkedList ,等等但是在多线程开发中就不能乱用容器,如果使用了未加锁&#…...

Apache Hadoop生态部署-Flume采集节点安装
目录 Apache Hadoop生态-目录汇总-持续更新 一:安装包准备 二:安装与常用配置 2.1:下载解压安装包 2.2:解决guava版本问题 2.3:修改配置 三:修复Taildir问题 3.1:Taildir Source能断点续…...

【OpenFOAM】-算例解析合集
【OpenFOAM】-算例解析合集OlaFlowinterFoamOlaFlow 【OpenFOAM】-olaFlow-算例1- baseWaveFlume 【OpenFOAM】-olaFlow-算例2- breakwater 【OpenFOAM】-olaFlow-算例3- currentWaveFlume 【OpenFOAM】-olaFlow-算例4- irreg45degTank 【OpenFOAM】-olaFlow-算例5- oppositeS…...

数据库|(一)数据库和SQL概述
(一)数据库和SQL概述1.1 数据库的好处1.2 数据库的概念1.3 数据库结构特点1.1 数据库的好处 实现数据持久化使用完整的管理系统统一管理,便于查询 1.2 数据库的概念 DB 数据库(database),存储数据的仓库&…...

【java基础】自定义类
文章目录基本介绍自定义类字段方法构造器main方法基本介绍 什么是类这里就不过多赘述了,这里来介绍关于类的几个名词 类是构造对象的模板或蓝图由类构造对象的过程称为创建类的实例封装就是将数据和行为组合在一个包中,并对对象的使用者隐藏具体的实现…...

7、STM32 FSMC驱动SRAM
本次使用CubeMx配置FSMC驱动SRAM,XM8A51216 IS62WV51216 原理图: 注意:FSMC_A0必须对应外部设备A0引脚 一、FSMC和FMC区别 FSMC:灵活的静态存储控制器 FMC:灵活存储控制器 区别:FSMC只能驱动静态存储控制器(如&…...

七、虚拟机栈
虚拟机栈出现的背景 1.由于跨平台性的设计,Java的指令都是根据栈来设计的,不同平台CPU架构不同,所以不能设计为基于寄存器的。 2.优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同…...

Linux其他常用命令
Linux其他常用命令查找文件find 命令功能非常强大,通常用在特定目录下搜索符合条件的文件如果省略路径,表示在当前文件夹下查找之前学习的通配符,在使用 find 命令时同时可用演练目标1.搜索桌面目录下,文件名包含1的文件find Desk…...

一次性打包学透 Spring
不知从何时开始,Spring 这个词开始频繁地出现在 Java 服务端开发者的日常工作中,很多 Java 开发者从工作的第一天开始就在使用 Spring Framework,甚至有人调侃“不会 Spring 都不好意思自称是个 Java 开发者”。 之所以出现这种局面…...
1080T、2080T、4070T显卡的深度学习性能测试和结论
先说结论: 4070T显卡FP32的训练和推理速度跟3090应该基本类似。但由于显存12G偏低,4070T不太适合如今的深度学习模型训练(新手列外,大部分模型都能训练起来,耗电也相对很低),更适合测试最新的一…...

SpringBoot搭建SpringMVC项目
前言据我的了解,现在不管是大公司或是小公司,如果使用java开发一个web项目,大部分都会选择使用SpringBoot,关于Springboot的好处,就不在这里过多赘述,总之Springboot有一套完整的生态,从项目构建…...

Prescriptive Analytics for Flexible Capacity Management
3 本节根据Netessine等人(2002年)和Bassok等人(1999年)对我们解决的容量规划问题进行了正式描述。考虑一家以pi(I1,…,I)的单价提供I服务的公司。在每个计划周期t∈{1,……...

超简单的待办事项列表管理器todo
什么是 todo ? todo 是一个自托管的 todo web 应用程序,可让您以简单且最少的方式跟踪您的 todo。📝 老苏觉得和之前介绍的 KissLists 比较像 文章传送门:最简单的共享列表服务器KissLists 官方提供了 Demo 演示站点:https://tod…...

在C#中初测OpencvSharp4
一、配置OpenCV 首先,我们新建一个工程,然后就是给这个工程配置OpenCV了,最简单的方法还是Nuget,来我们右键一个Nuget: 打开Nuget后,你可以直接输入OpenCVSharp4来查找,当然,如果你…...

洛谷P1123 取数游戏(C++)(DFS)
目录 1.题目 题目描述 输入格式 输出格式 输入输出样例 说明/提示 2.AC 1.题目 题目描述 一个N \times MNM的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻88个格…...

Python Qt6快速入门-嵌入PyQtGraph图表
嵌入PyQtGraph 文章目录 嵌入PyQtGraph1、PyQtGraph介绍2、创建PyQtGraph小部件3、绘图样式配置3.1 背景颜色3.2 线条颜色、线宽和样式配置3.3 线标记(Line Markers)3.4 绘制标题3.5 轴标题3.6 图例(Legends)3.7 轴范围限制3.8 绘制多组数据3.10 画布清空4、更新数据5、总结1、…...

Mac电脑_GitHub提交项目至仓库
第一步(准备工作): Mac 电脑自带 git , 无需安装 1. 创建一个项目 demo1 在 github 上 2. 创建 ssh 密钥 打开终端: ssh-keygen -t rsa -C "your_emailyouremail.com" 此处输入两次密码, 直接…...