计算机基本架构-时序逻辑电路回顾

news2024/11/17 11:35:10
  • 计算机基本架构-时序逻辑电路回顾
    • D锁存器(D-Latch)
    • D触发器(D-Flip-Flop)
    • 时序违规
    • 寄存器
    • 移位寄存器
    • 计数器
    • 摩尔状态机(Moore machine)
    • 米利状态机
    • 内存

计算机基本架构-时序逻辑电路回顾

D锁存器(D-Latch)

D锁存器(D-Latch)是逻辑设计中最基本的存储元件。它具有数据输入D、时钟输入clock和数据输出Q,如下图所示,它包含一个三态反相器作为输入级,后面连接着两个背靠背的反相器,构成了一个环形连接,用于存储数据。

连接到三态反相器使能输入端的时钟信号可以设置为高电平使能或低电平使能。在下图中,输入端的时钟信号为低电平使能。在时钟的低电平期间,输入D可以传递到输出端Q。在时钟的高电平期间,输入的变化被屏蔽,不会传输到输出端。此时数据稳定存储在背靠背的反相器环路中。锁存器的输出级缓冲器用于驱动多个逻辑门输入。

D-锁存器的电路原理图

D锁存器的操作过程下图所示。在时钟的低电平期间,三态反相器被使能。新数据通过三态反相器传输,覆盖了背靠背反相器阶段的旧数据,并到达输出。当时钟切换到高电平时,输入输出数据传输停止,因为三态缓冲器被禁用并阻止任何新数据传输。因此,如果需要在锁存器中保留某些数据,需要在时钟上升沿之前的某个时间存储。这个时间间隔称为建立时间 t S {t}_{S} tS,大致等于通过三态反相器和存储元件中反相器的延迟之和。在时钟的高电平阶段,存储在锁存器中的数据不再改变,如下图所示。

D锁存器的操作

D触发器(D-Flip-Flop)

D触发器是逻辑设计中另一个重要元件,可以用于保存数据。和D锁存器类似,D触发器也有一个输入端D,一个时钟输入端clock,一个数据输出端Q。如下图所示。图中展示了一个D触发器的经典电路示意图,其中包含串联的两个锁存器。第一个锁存器具有低电平有效的时钟输入,成为主锁存器(master)。第二个锁存器具有高电平有效的时钟输入,称为从锁存器(slave)。主锁存器在时钟低电平的阶段接收新数据,并在时钟的高电平阶段将这些数据传输给从锁存器。

D触发器的操作

下图显示了触发器的时序特性,建立时间 t S {t}_{S} tS是指有效数据在时钟上升沿之前到达并稳定在主锁存器中的时间间隔。保持时间 t H {t}_{H} tH是指时钟上升沿之后,有效数据需要保持稳定且不变的时间间隔。存储在主锁存器中的数据会在时钟上升沿之后通过从锁存器传播,并在一段时间后成为触发器的输出,这个时间成为时钟到Q的延迟( t C L K Q {t}_{CLKQ} tCLKQ)。

D触发器的时序

下面这张图显示了D触发器在时钟的两个不同阶段的操作。在时钟的低电平阶段,新的数据进入主锁存器并被存储。数据不能传播到主锁存器之外,因为在时钟的低电平阶段,副锁存器中的三态反相器起到开路作用。此时触发器输出的仅显示存储在从锁存器中的旧数据。当时钟信号变为高电平时,存储在主锁存器中的新数据通过从锁存器传输并到达输出端。可以使用触发器的门延迟来近似估算 t s {t}_{s} ts t C L K Q {t}_{CLKQ} tCLKQ的值。

D触发器的操作过程

时序违规

我们需注意数据路径和时钟网络中的意外延迟可能导致的时序违规。本节将检查由触发器控制的流水线中的建立时间和保持时间违规情况。

下图展示了一个流水线的一部分,有一个具有传播延迟 T C O M B {T}_{COMB} TCOMB的组合逻辑块夹在两个触发器边界之间。在时钟的上升沿,有效数据通过IN端口输入,需要满足建立和保持时间的要求。经过 t C L K Q {t}_{CLKQ} tCLKQ的延迟后,数据在A节点处出现,并通过组合逻辑块进行传播,时序图如下所示。

setup-violation

在此图中,数据到达节点B的时间过晚,违反了触发器的分配建立时间。这被称之为建立时间违规。违规的程度取决于时钟周期,可以通过下面的公式进行计算:

建立时间违规 = t s − [ T C − ( t C L K Q + T C O M B ) ] 建立时间违规 = {t}_{s} - [{T}_{C} - ({t}_{CLKQ} + {T}_{COMB})] 建立时间违规=ts[TC(tCLKQ+TCOMB)]

保持违规是另一种违规的现象。下面这张图展示了由于时钟线上意外延迟而导致时钟偏移 T C L K {T}_{CLK} TCLK的保持时间违规情况。在时序图中,有效数据从IN端口引入到流水线中,并在经过 t C L K Q {t}_{CLKQ} tCLKQ T C O M B {T}_{COMB} TCOMB延迟后到达节点B。由于时钟偏移,数据提前到达节点B。这造成了一个相当大的建立时间余量,等于( T C + T C L K − t S − t C L K Q − T C O M B {T}_{C} + {T}_{CLK} - {t}_{S} - {t}_{CLKQ} - {T}_{COMB} TC+TCLKtStCLKQTCOMB),但在延迟时钟边缘产生了保持时间违规。违规的量取决于时钟延迟,计算如下:

保持时间违规 = ( t C L K + t H ) − ( t C L K Q + T C O M B ) 保持时间违规 = ({t}_{CLK} + {t}_{H}) - ({t}_{CLKQ} + {T}_{COMB}) 保持时间违规=(tCLK+tH)(tCLKQ+TCOMB)

保持时间违规

建立时间违规可以通过简单增加时钟周期 T C {T}_{C} TC来修复。然而,修复保持时间违规没有简单的方法,因为它们需要在每个触发器输入处进行搜索。当发现它们时,需要将缓冲延迟添加到组合逻辑块的 T C O M B {T}_{COMB} TCOMB中,以避免违规。

下面这张示意图检查了两个具有不同传播延迟的组合逻辑块在一个流水线合并成一个块的时序影响。在时序图中可以发现,数据抵达C节点比D节点更早。节点C和D的数据通过最后一个组合逻辑块传播并到达节点E。这种情况在节点 E 处产生了最小和最大延迟路径。在考虑建立违规的可能性时,我们需要关注最大路径(T2 + T3);在考虑保持违规的可能性时,我们需要关注最小路径(T1 + T3)在下一个触发器边界处的可能性。

两个独立路径的时序

为了进一步说明多个组合逻辑块的时序问题,下图中给出了一个包含逻辑门的示例。在这个示例中,一个一位加法器的输入连接到节点 A 和 B。通过包含一个 2-1 多路复用器(MUX)来旁路加法器,该多路复用器选择加法器的输出或旁路路径。

反相器的传播延迟 T I N V {T}_{INV} TINV和二输入 NAND 门的传播延迟 T N A N D 2 {T}_{NAND2} TNAND2分别为 100 ps 和 200 ps。建立时间、保持时间和时钟到 Q 的延迟分别为 100 ps、0 ps 和 300 ps。

多条传播路径的时序的例子

一位加法器和2-1多路复用器由反相器和二输入NAND门构成。我们得到的总共有七条传播路径都汇聚在节点R。然而,我们只需寻找最大和最小延迟路径来确定可能的建立和保持违规。

多条传播路径的电路图

最大延迟路径包括反相器1和四个二输入NAND门,编号为1、3、4和6,如下图所示。该路径总延迟为900 ps。另一方面,最小延迟路径包含编号为5和6的两个二输入NAND门,延迟为400 ps。在时钟周期为1400 ps时,将这些延迟放入下图中的时序图,得出节点R处的建立裕度为100 ps。由于时钟边缘没有偏移,因此不需要检查保持违规。

电路时序图

寄存器

前面我们提到的触发器可以用于保存数据,但是其只能在一个时钟周期内保持住数据,当下一个时钟周期到来时,新的数据就会写入进去。

寄存器可以由一个触发器和一个2-1的多路选择器(Mux)构成。写使能引脚(WE)是2-1 Mux的选择输入端。当WE = 1时,将来自IN端口的新数据传输到触发器输入端口。当WE = 0时,任何尝试向寄存器写入新数据的操作都会被屏蔽,寄存器将保持旧值。

下图展示的就是一个单比特的寄存器的电路图。

one-bit-register

下图展示的是一个寄存器的时序图,描述了一位寄存器的操作。当WE输入为0时, IN端口的输入数据被屏蔽。在第二个时钟周期的中间,当WE输入变为1, 新数据被允许通过 2-1 MUX并在第三个时钟周期开始时更新寄存器的内容。在第三个时钟周期结束之前,WE输入转换为逻辑0,并导致寄存器输出OUT在第四个时钟周期期间保持为逻辑1。

one-bit-register-timing-diagram

从单比特寄存器推导出更复杂的寄存器是容易的。下图显示的是一个32比特的寄存器。32比特的寄存器拥有公共的时钟(clock)和写使能输入(WE)。因此,如果WE(写使能)输入为逻辑1,那么在时钟上升沿,输入端的32位数据将会被写入寄存器。

32-bit-register

移位寄存器

移位寄存器是普通寄存器的特定版本,它可以根据设计需求专门用于向右或向左移动数据。

下图显示了一个四位移位寄存器的电路原理图,它在每个时钟上升沿将串行数据从IN端口向左移动。

4-bit-shift-register

下图是4bit的移位寄存器的时序图,在第一个周期中, SHIFT=0。因此,在这个周期内,IN端的变化不会影响寄存器的输出。SHIFT输入在第二个周期中间转换为逻辑1时,,它允许IN=1在第三个时钟周期时传递到OUT的低位OUT[0]。从第二个周期到第十三个周期,SHIFT保持在逻辑1,因此,在每个时钟的上升沿,IN节点的任何变化都会直接传递到OUT[0]节点。其他输出,例如OUT[1]OUT[2], OUT[3]则会有一个时钟周期的延迟,因为在移位寄存器中,较低位的输出连接到较高位的输入。

timing-of-shift-register

计数器

计数器是一种特殊形式的寄存器,在设计上会在每个时钟上升沿进行递增(或递减)。

下图是一个典型的32位递增计数器,它有两个控制输入,COUNTLOAD。当COUNT = 1LOAD = 0时,选择3-1多路复用器的C端口,使计数器在时钟的上升沿递增计数。而当COUNT = 0,LOAD = 1时,选择L端口,在IN[31:0]端加载新数据。一旦加载完成,计数器输出OUT[31:0]在每个时钟的上升沿递增1,直到所有输出位都变为逻辑1。下一次递增会自动将计数器输出重置为逻辑0。当LOAD = COUNT = 0时,计数器选择3-1多路复用器的I端口。在这种组合下,它既不加载新数据也不递增计数,而是暂停,输出旧的值。

counter

下图是计数器的时序图。在第一个时钟边沿之前,LOAD输入为逻辑1,此刻将会把输入IN中的数字存入计数器之中。因此在第一个时钟的上升沿时,OUT[31:0]=3。此后LOAD=0COUNT=1,这个状态下计数器将进行向上递增的过程。在第二个时钟上升沿到来时,3+1=4通过3-1MUX的C端口传递并抵达触发器的输入端,使得OUT[31:0] = 4。在三个时钟周期到来时,计数器执行相同的过程,增加1。随后COUNT的值转换为逻辑0,3-1MUX的I端口被激活,此时会阻止任何新的数据写入计数器。因此计数器在随后的几个周期中保持OUT[31:0]=5

timing-of-counter

摩尔状态机(Moore machine)

状态机主要用于数字设计中以控制数据流的正确性。它们的拓扑结构主要由一个或者多个触发器和连接触发器输出到触发器输入的反馈回路组成。状态机有两种类型: 摩尔型(Moore)和米利型(mearly)。

下图显示了一个由触发器和反馈回路组成的摩尔型状态机的拓扑结构。在这种配置中, 反馈回路包含一个组合逻辑模块,该模块接受触发器输出和外部输入。如果有多个触发器,则所有触发器输出的组合构成状态机的当前状态。所有触发器输入构成状态机的下一个状态,因为在时钟的上升沿,这些输入会成为触发器的输出,并形成当前状态。触发器输出通过一个附加的组合逻辑模块进一步处理,以形成当前状态输出。

block-diagram-moore-machine

摩尔状态机的状态切换由当前状态和当前状态的输入共同决定,而摩尔状态机的输出完全由当前状态决定,与当前状态输入无关。

下面的状态图显示了一个具有四个状态的摩尔型状态机的例子。需要注意的是,状态图中的每次状态转换都需要一个有效的当前状态的输入项,并且每个节点都会生成一个当前状态输出。

四个状态的摩尔状态机状态转换图

对于状态0(S0),无论当前状态输入IN的值是多少,其输出都为OUT = 1。当IN = 1时,状态S0会转移到下一个状态S1。如果IN = 0,则会保持当前的状态S0。

对于状态1(S1),其输出OUT = 2。如果IN = 0,则保持状态S1,如果IN = 1,则转移到下一状态S2。

对于状态2(S2),其输出OUT = 3,如果IN = 0,则保持状态S2,如果IN = 1,则转移到下一状态S3。

对于状态3(S3),其输出OUT = 4,如果IN = 0,则保持状态S3,如果IN = 1,则转移到下一状态S1。

该摩尔状态机的当前状态的输入和输出及其状态可以在下面这样的状态表中列出。在这个表格中,第一列(PS)列出了所有可能的当前状态。中间两列包含了IN = 0IN = 1时的下一个状态条目。最后一列列出来当前状态的输出。每个当前状态对应一个输出。

摩尔状态机状态表

各个状态的二进制编码如下图所示,采用的是格雷码进行编码,两个相邻的状态之间只会有一个比特位改变。

S0,S1,S2,S3的二进制表示

下图中的状态表是根据以二进制编码进行重建后的形式:

摩尔状态机的转移表

根据上面的转移表,可以画出NS0,NS1,OUT0,OUT1,OUT2的卡诺图,将输入项PS1,PS0和IN进行分组。卡诺图以及对应的最小项(SOP)的形式如下图所示:

卡诺图以及最小项形式

接下来一步是生成电路图,以产生上面的moore状态机中的所有五个输出。电路图如下所示。为了生成这个电路,首先必须根据PS0,PS1IN构建出NS0和NS1的各个组合逻辑块。然后,将每个NS0NS1连接到触发器的输入端,以形成反馈回路。OUT0OUT1OUT2的逻辑块则直接由PS0PS1生成。

摩尔状态机的电路图

米利状态机

米利状态机和摩尔状态机是类似的,包含一个或者多个触发器组成的反馈回路。不同的是,米利状态机的当前状态的输出是从反馈回路的组合逻辑块生成的,而不是从当前状态生成。

由于这种拓扑结构,米利状态机的基本状态图包括当前状态、下一状态以及使状态转换成为可能的输入条件,如图所示。当前状态输出不是从每个当前状态产生的,而是当前状态输入和当前状态的函数。

贴图

下面这张图是一个典型的米利状态机的状态图,其与摩尔状态机有类似的特征。为了便于比较,两个图中的所有状态名称和状态间的转换保持相同。与摩尔状态机不同的是,连接一个状态到下一个状态的每个箭头都携带当前状态的输出。

米利状态机的四种状态

米利状态机的状态表包含了两个单独的列,分别列出了IN=0IN=1NSOUT的值。

米利状态机的状态表

下图中的状态表是根据以二进制编码进行重建后的形式:

米利状态机的转移表

通过米利状态机的转移表,我们可以很容易去构建NS0、NS1、OUT0、OUT1和OUT2的卡诺图形式。最简与或式(SOP)表达式也可以相应的给出。

米利状态机的卡诺图和最简表达式

下面这张电路图是根据最简表达式构建的。构建该电路图的方法与构建摩尔状态机的电路图的方法相同。

米利状态机的电路图

内存

小型的内存块可以通过各种拓扑类型的单比特寄存器实现。例如下图所示的32位宽、16位深的存储块可以通过将16行32位寄存器逐行堆叠起来构建。每个32位寄存器在其输出端包含三态缓冲器,在读取过程中使用。

在下图中,每列的所有输入端都是相互连接的,以便写入数据。例如输入端口IN[0]连接到从第0行到第15行的所有输入引脚IN[0],从而可以将单个比特的数据写入指定的行。同样的连接方式适用于其余的输入段子,即IN[1]IN[31]

同样地,图中每列的所有输出端子也相互连接,以便从存储块读取数据。例如,输出引脚OUT[0]连接到图中从第0行到第15行的所有输出引脚Out[0],从而能够从选定的行读取一个位的数据。其余的输出引脚OUT[1]OUT[31]也是如此。

图中的每一行存储块通过单独的写使能(WE)和读使能(RE)输入来分别进行数据的写入或读取。

32 × 16 内存块的示意图

为了生成写使能(WE)输入 ,WE[0]WE[15], 需要使用一个地址解码器。该解码器使用四位地址Address[3:0]和一个单独的WE输入,根据图中的真值表,每一个地址仅会激活一行并禁用所有其他行。

例如当WE=1Address[3:0]=0000时,将32位数据写入第0行。

WE=1时地址解码器功能

然而,当WE=0时,无论输入地址如何将阻止向存储块的所有行写入数据,如下面的真值表所示。

WE=0时地址解码器功能

RE输入, RE[0]RE[15], 使用类似于WE的地址解码器从选定的行中读取数据。当RE=1时,通过下面的真值表,可以将输入地址转化为RE[15:0]的one-hot编码。

RE=1时地址解码器功能

然而,当RE=0时,无论输入地址的值如何,都禁止从任何行读取数据。

RE=0时地址解码器功能

因此,必须要提供一个有效的输入地址以及控制信号REWE,才能分别执行读或写操作。WE=0RE=1的组合从选定的行中读取数据, WE=1RE=0的组合将数据写入选定的行,WE=0RE=0的组合会禁止对内存块进行读写操作。WE=1RE=1的组合是不允许的,应将其解释为内存读取。

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

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

相关文章

el-table有横向滚动条时,最后一行数据被横向滚动条遮挡,且不出现纵向滚动条;只有当鼠标移到fixed列才能纵向滚动,移到非fixed列无法纵向滚动。

问题背景 项目使用的vue2,el-table有横向滚动条时,最后一行数据被横向滚动条遮挡,且不出现纵向滚动条;只有当鼠标移到fixed列才能纵向滚动,移到非fixed列无法纵向滚动。 见下图:最后一行被遮挡住了一部分…

数字的魅力:数学中最重要的7个常数

数学常数是数学中一类特殊的数,具有固定不变的值。这些常数并非数学家随意凭空制定,而是源于深刻的数学原理和规律。它们不仅深刻地影响着数学理论的建立与发展,更连接着人类思维的奇妙之旅。 本文将简介数学中 7 个最基本的常数&#xff0c…

AI和机器学习论文中 指标F1是什么意思

在AI和机器学习领域的实验中,F1值(F1 Score)是一种用于评估分类模型性能的指标。它是精确率(Precision)和召回率(Recall)的调和平均数,特别适用于不平衡数据集。F1值综合了精确率和召…

JVM原理之运行时数据区域

Java运行时数据区(Runtime Data Area)是Java虚拟机(JVM)在运行Java程序时内部维护的一系列数据区域。这些区域共同协作,确保Java程序能够高效、稳定地运行。本文将详细介绍Java运行时数据区的结构和作用。 java虚拟机运行时数据区域 根据《Java虚拟机规范》规定,jvm内存…

华为云EI生态

1、人工智能技术趋势 2、华为AI发展思路 3、华为云EI:让企业更智能 4、华为云服务全景图 5、基础平台类服务 6、MLS:解决特性到模型应用的完整过程 7.DLS 8.GES超大规模一体化图分析与查询 9、EI视觉认知 10、EI语音语义 11、OCR:提供高精度光学文字自动…

工业操作系统是企业把舵的“仪表盘”

supOS向下连接海量工业设备、仪器、仪表、产品,为各类设备提供统一的接口,实现不同设备之间的互联互通;向上连接各类工业应用软件,将企业内部的生产数据、运营数据、管理数据汇集起来,是链接海量工业设备和各类应用软件…

第17章通信系统架构设计理论与实践

常见的5种常用的网络架构和构建网络的相关技术,以及网络构建的分析和设计方法。 17.1通信系统概述 通信技术和网络技术的发展,通信网络发生很大变化,入网的形式变化,传输的速率的提高、接入网络的方式多样化、网络结构的更为复杂…

将 x 减到 0 的最小操作数

题⽬要求的是数组「左端右端」两段连续的、和为 x 的最短数组&#xff1b;我们可以转化成求数组内⼀段连续的、和为 sum(nums) - x 的最⻓数组。 a. 转化问题&#xff1a;求 target sum(nums) - x 。如果 target < 0 &#xff0c;问题⽆解&#xff1b; b. 初始化左右指针 …

LogicFlow 学习笔记——3. LogicFlow 基础 节点 Node

节点 Node LogicFlow 内置了一些基础节点&#xff0c;开发者在实际应用场景中&#xff0c;可以基于这些基础节点&#xff0c;定义符合自己业务逻辑的节点。 认识基础节点 LogicFlow是基于svg做的流程图编辑框架&#xff0c;所以我们的节点和连线都是svg基本形状&#xff0c;…

MySQL查询优化最佳实践15条(建议收藏)

目录 1 优化方法&#xff08;15条&#xff09; 2 总结 MySQL的数据库常规查询的过程中性能的优化非常重要&#xff0c;其中很多点是和开发习惯有关&#xff0c;能熟练掌握不只能提高工作的效率&#xff0c;同时也能提高个人的技能。有一些优化的技巧同样也适合于其他的数据库…

git的ssh安装,windows通过rsa生成密钥认证问题解决

1 windows下载 官网下载可能出现下载太慢的情况&#xff0c;Git官网下载地址为&#xff1a;官网&#xff0c;推荐官网下载&#xff0c;如无法下载&#xff0c;可移步至CSDN&#xff0c;csdn下载地址&#xff1a;https://download.csdn.net/download/m0_46309087/12428308 2 Gi…

Tabby:一款革新的Mac/Win现代化终端模拟器

在信息技术日新月异的今天&#xff0c;终端操作已成为众多开发者、系统管理员和技术爱好者的日常必备工具。然而&#xff0c;传统的终端模拟器往往功能单一、界面陈旧&#xff0c;无法满足用户对于高效、便捷操作体验的追求。Tabby应运而生&#xff0c;作为一款现代化、功能强大…

6大好用的变音软件推荐,最好用的变声器免费版有哪些?

您在录制视频时&#xff0c;是否曾对自己的声音感到厌烦&#xff1f;有没有想过换一种声音让别人认不出您&#xff1f;变声软件允许你通过先进的AI算法改变声音。它可以增加所需的失真度、调整音高并改变语音的音调&#xff0c;从而将你的声音变为名人、机器人或卡通人物的声音…

C# WPF入门学习主线篇(二十一)—— 静态资源和动态资源

C# WPF入门学习主线篇&#xff08;二十一&#xff09;—— 静态资源和动态资源 欢迎来到C# WPF入门学习系列的第二十一篇。在上一章中&#xff0c;我们介绍了WPF中的资源和样式。本篇文章将深入探讨静态资源&#xff08;StaticResource&#xff09;和动态资源&#xff08;Dynam…

立创·天空星开发板-GD32F407VE-Timer

本文以 立创天空星开发板-GD32F407VET6-青春版 作为学习的板子&#xff0c;记录学习笔记。 立创天空星开发板-GD32F407VE-Timer 定时器基本定时器示例 定时器 定时器是嵌入式系统中常用的一种外设&#xff0c;它可以产生一定的时间间隔、延时、定时等功能&#xff0c;广泛应用于…

深度学习500问——Chapter11:迁移学习(2)

文章目录 11.2 迁移学习的基本思路有哪些 11.2.1 基于样本迁移 11.2.2 基于特征迁移 11.2.3 基于模型迁移 11.2.4 基于关系迁移 11.2 迁移学习的基本思路有哪些 迁移学习的基本方法可以分为四种。这四种基本方法分别是&#xff1a;基于样本的迁移&#xff0c;基于模型的迁移&a…

Three.js动效(第15辑):让前端手撕UI,拳打后端的效果。

three.js的设计效果非常复杂&#xff0c;后端提供的数据接口问题百出&#xff0c;这很容易让前端手撕UI、拳打后端&#xff0c;这种请详细该如何办呢&#xff1f; 前端 VS UI&#xff1a; 1. 沟通协调&#xff1a;UI和前端应该加强沟通&#xff0c;理解对方的工作难点和需求&…

SpringSecurity6从入门到实战之SpringSecurity6自定义认证规则

SpringSecurity6从入门到实战之SpringSecurity6自定义认证规则 Spring Security 中默认所有的 http 请求都需要先认证通过后&#xff0c;才能访问。那么&#xff0c; 如何指定不需要认证就可以直接访问的资源呢&#xff1f;比如 用户的登录页面和注册页面&#xff0c;都是不需要…

用表头设置控制表格内列的排序和显示隐藏

项目背景 : react ant 需求 : 点击表头设置弹窗 , 拖拽可控制外部表格列的排序 , 开关可控制外部表格列的显示和隐藏 实现效果如下 :注意 : 1. 拖拽效果参考了ant-table中的拖拽效果(这块代码放最后) 2. 后台反了json格式(用is_show控制显示和隐藏 , 我给他传…

小企业选PLM系统的注意事项?

在当今竞争激烈的市场中&#xff0c;小企业需要不断提高生产效率和降低成本。为了实现这一目标&#xff0c;许多小企业正在寻找一种有效的解决方案来管理其产品生命周期。这就是为什么PLM系统对于小企业来说非常重要的原因&#xff0c;接下来请华天软件说说这个话题。 一、对于…