《硬件架构的艺术》笔记(二):时钟与复位

本章主要针对ASIC设计给出建议,独立于CAD工具以及工艺,主要针对模块设计和存储器接口。

同步设计

这是对时钟域控制最安全的方法,单个主时钟和单个主置位/复位信号驱动设计中所有时序器件。

避免使用行波计数器

行波计数器:用触发器的输出来驱动其他触发器的时钟输入,一般会存在问题。此时触发器的时钟并不是同步的,存在相位偏移,若该触发器链很长,延迟累积,会导致采样到错误的数据。

门控时钟

门控单元会导致时钟偏移,并会引入尖峰脉冲单元作用于触发器。可能仿真正常,综合出问题。

门控时钟作为低功耗设计的常用方法,通常由DC工具插入,在RTL除auto_clock_gating控制外,不要对时钟做任何处理 

双边沿或混合边沿时钟

缺点:

  • 复杂性增加:使用双边沿时钟会导致设计的复杂性增加。电路设计师必须确保在两个边沿上对信号的处理是同步的,并且要处理好时序问题。
  • 同步复位问题:在使用同步复位的电路中,复位信号必须在时钟的某一边沿有效。双边沿时钟可能导致复位信号在不同边沿上产生不同的行为,从而增加了调试和验证的复杂性。
  • 插入扫描链的困难:在测试过程中,插入扫描链时,双边沿时钟可能会导致信号路径的确认变得更加困难。因为在一个时钟周期内,信号在不同边沿上可能会有不同的状态,这使得测试和验证变得更加复杂。
  • 信号路径的时序问题:由于信号在两个边沿上都可能被采样,设计者需要更加小心地确认信号路径的时序,确保在时钟的每个边沿上,所有相关信号都能在正确的时序下稳定。

不过有时候为了追求性能还是会使用双边沿,如DDR。

 用触发器驱动另一个触发器的异步复位端

第二级输出同时受时钟边沿和复位信号影响,违反了同步设计原理,第二级触发器的时钟和复位之间存在潜在的竞争条件。

 推荐的设计技术

要理解综合工具如何对不同的HDL编码风格和结果进行解释(硬件思维),其会影响设计门数和时序性

避免在设计中出现组合环路

在同步设计中,所有反馈回路都应包含寄存器,组合环路违背了同步设计原理。组合环路是不可综合的。

解决方法:引入一个触发器或者寄存器。

许多设计工具中,组合环路都会导致无休止的循环计算,所以EDA可能以不同的方式把组合环路打断,导致于原始设计意图不一致。

避免数字设计中的延迟链

延迟链:两个或多个单扇入单扇出的连续节点产生延迟。通常使用反相器链在一起。

使用场景:异步设计中,解决其他组合逻辑导致的竞争条件。

缺点:增加设计对操作环境的敏感性,降低设计的可靠度,增加移植到不同器件结构上的难度。

避免使用延时链,需要在设计中使用同步技术取代异步技术。

避免使用异步脉冲产生器

两种脉冲产生的方法(纯异步):

  • 同一个信号接两输入与门或者或门,其中一个取反或者加延迟链,脉宽取决于两个信号相对延迟。(相当于人为增加毛刺宽度)
  • 寄存器输出延迟后驱动同一个寄存器的异步复位端。

异步产生的脉冲宽度常常为综合和布局布线软件带来困难,实际脉宽只有在布局布线之后,布线和传播延迟已知时才能确定。所以在创建HDL时很难得到可靠的延迟值,且PVT(压力、体积、温度)环境,工艺脉宽都会变。除此之外,STA不能验证脉宽,验证工作会变得困难。

由于涉及对脉冲数量的控制,所以多脉冲结构会比脉冲产生器引起更多问题。多脉冲也增加了设计的频率。

推荐使用的同步脉冲产生器:

 这个结构脉宽总是于时钟周期宽度相等,可以用时序分析验证,易于移植,独立于工艺。

always@(posedge clk)
beginq2<=q1;q1<=d;
end
assign Pulse=q1&~q2;

这里有点问题,经过触发器后触发信号延后了一个周期,脉冲应该也延后一个周期

类似的,可以在触发输入末端产生脉冲的脉冲产生器。

避免使用锁存器

图中电路X和Y同时拉高,形成了一个类似组合环路的结构,会使电路振荡。

原因:Latch的触发信号高电平时,输出对于输入来说是“透明的”。

  • STA分析器通常会做出与锁存器透明有关的错误假设:要么发现伪路径,要么丢失真正的关键路径。
  • 寄存器本身时序也是模糊的。这样的代码很难移植或者复用。
  • 锁存器常常使电路不可测。
  • FPGA是寄存器密集型电路,所以使用latch会占用更多资源。
  • 不完整的if或者case会导致意料外的的latch的生成(因为组合电路要保持之前的值就得用latch)。
  • 对于某些不支持Latch的FPGA,就会综合出组合环路代替Latch。

 图中电路有锁存数据的能力,但是可能违背建立时间和保持时间的要求,而且很难发现。

Latch也并不是完全没用,事实上可以用Latch挪用周且或者借用时间来满足关键路径的要求。

避免使用双沿时钟

双沿时钟使得数据传输在给定的时钟速率下能达到双倍的吞吐率,但违背了同步电路原理,会引发以下问题:

等效同步电路:

 上述等价是在时钟占空比为50%时成立的,如果时钟非对称占空比可能导致违背建立和保持时间,扫描路径也不能容易地通过触发器。

使用条件:对性能/速度要求很高、且无法承受使用等效同步电路在DFT和验证方面带来的额外开支。

优点

1、提升性能。

2、降低功耗。

时钟方案

内部产生的时钟

应尽量避免內部产生时钟。组合逻辑产生时钟会引入毛刺,也会引起时序方面的问题。同步时序电路数据的毛刺不会引起任何问题,而毛刺出现在时钟输入端或异步输入端就会产生明显的影响。

毛刺到达时钟输入端如果数据变化,会违背建立和保持时间。即使没有违背时序要求,寄存器也可能输出意料外的值。毛刺可能导致计数器增加额外的计数值,如图。

 解决方法:组合逻辑输出增加一个寄存器输出,这个寄存器可以阻止组合逻辑产生的毛刺。

组合逻辑时钟也会增加时钟延迟,可能导致违背时序要求。

图中由于时钟偏移导致违背了建立时间。

一种减少时钟偏移的方法:将产生的时钟放到SoC中高扇出且低偏移值的时钟树上。

分频时钟

设计中要保证大多数时钟来自于PLL,避免异步时钟分频逻辑引起的许多问题。对主时钟分频时应使用同步计数器或状态机。

保证总是由寄存器直接产生分频时钟信号,不要使用组合逻辑避免毛刺和尖峰脉冲。

行波技术器

使用行波计数器对时钟进行幂为2的分频。

优点:使用的门更少。

缺点:对STA和综合工具带来麻烦,应尽量避免。

功耗较高的系统中很适合使用这种计数器,可以大量降低由逻辑或SoC所引起的峰值功耗。

需要处理多个频率标准的通信应用常常使用多个时钟。

使用多路时钟的前提:

同步时钟使能和门控时钟

优点:减少功耗。

缺点:不是同步设计,显著增加设计时间和验证的工作量。增加时钟偏移并对毛刺敏感,所以能导致设计失败。

可以使用同步的时钟使能,用纯同步的方法关闭时钟域,但这样时钟树一直保持反转,触发器保持内部活跃,无法降低功耗。

 这里通过选通信号选择触发器输入,但是并没有真正意义上关闭触发器,只是使其值保持。

门控时钟方法学

同步设计中,功耗主要有三个部分:

对时钟门控能够大幅降低触发器的功耗,门控可以在时钟数的根部、末端或者两者之间的任何位置。

时钟数几乎消耗了整个芯片功耗的50%,所以最好在根部产生或者关闭时钟。

不带锁存器的门控时钟电路

 使用与门、或门实现。为避免过早截断或产生多个时钟脉冲、应强制要求使能在时钟上升沿到下降沿一直保持常量。该限制使得基于单时钟触发器的设计中不适合使用不含锁存器的门控时钟。(因为对使能信号有较高的要求)

图中为过早截断的情况。

基于锁存器的门控时钟电路

使用锁存器就可以使门控时钟电路不需要满足上面的条件了。

使用与门控制上升沿有效的时钟,反之使用或门控制。

 这个电路在使能关闭时为低电平,当打开时便不会漏掉下降沿。

使用这项技术时,使能信号必须在半时钟周期内产生。(锁存器只在半个时钟周期内具有锁存功能)

 要保证设计中所有时钟能同时使能以便DFT,可以再加一个或门。

该电路还是存在一个不可忽略的缺点,产生使能信号逻辑的延迟(Latch延迟)和时钟到达“与”门的延迟非对齐时,会产生毛刺,如下图所示(情况一):
情况一:clock_B延迟大于Latch延迟,第一个时钟周期出现毛刺
情况二:clock_B超前于clock(skew<0),此时在最后一个时钟周期出现毛刺。

基于寄存器的门控时钟电路

基于寄存器的门控时钟电路使用寄存器缓存EN,然后再与CLK_B相与,得到GATED_CLK,电路图如下所示:

  该电路的时序图如下所示,由于EN由寄存器锁存输出,EN1和CLK_B可认为是同步的,所以不存在“基于锁存器的门控时钟电路”的缺点。

实际使用门控时钟电路

基于以上分析,基于寄存器的门控时钟电路在性能上是最优的,理论上实际芯片应该使用该策略进行寄存器级的门控时钟以降低功耗,但实际芯片中使用的确是“基于锁存器的门控时钟电路”,原因如下:

  • 芯片设计一般要求时钟门控率在95%以上(甚至98%以上),芯片中大量的寄存器需要门控时钟单元,而锁存器的面积仅为寄存器的1/2(甚至更小),所以从面积角度考虑会使用“基于锁存器的门控时钟电路”。
  • “基于锁存器的门控时钟电路”毛刺问题:大多数ASIC生产厂商都提供“门控时钟单元”作为标准单元库的一部分,所以Latch的延迟和CLK_B的延迟问题可以由厂商解决。

门控信号

特殊部分使用门控信号提高能效。(感觉这里的意思就是减少组合逻辑的功耗)

 重组数据路径以减少转换传播

把容易产生毛刺或者会经常翻转电平的电路放在电路后级,可以减少转换传播从而降低功耗。

复位信号的设计策略

用同步复位进行设计

使用同步复位会出现的问题:综合工具无法分辨数据信号和复位信号,如下图所示,两个电路功能一样,但是下面的电路如果load信号为X,触发器便会停在不定态。可以使用编译指令告诉指定的信号为复位信号,综合工具就会使该信号尽可能接近触发器,防止初始化的问题发生。(将这些指令加入RTL代码中以避免重新综合)

 使用同步复位的优点

  • 保证电路100%同步。
  • 同步复位会综合为更小的触发器,特别是复位信号被触发器输入逻辑门控(如上图)。
  • 确保复位只发生在有效时钟沿,过滤掉毛刺。
  • 一些设计中复位由内部产生,这样的设计中使用同步复位信号,可以将时钟间的复位毛刺过滤掉。

  使用同步复位的缺点

  • 不是所有ASIC库中都带有内置的同步复位触发器,很容易把复位逻辑综合到触发器本身之外。
  • 可能需要一个脉冲展宽器,保证复位信号出现在时钟有效沿。多时钟设计中必须考虑这个问题。
  • 复位经过组合逻辑产生就会存在潜在的问题。
  • 在复位信号发出时,时钟可能关闭,这时只能使用异步复位,并在时钟恢复前移除复位信号。

 有三态就需要oe立即动作适合使用异步复位,下面同步复位信号也可以直接做到立即撤销使能,且可以简化时序分析。

使用异步复位进行设计

 异步复位没有额外的路径,比同步复位更简单。

使用异步复位的优点

  • 器件库有带异步复位的触发器,就能保证数据路径上是干净的。不会引入额外的逻辑门和额外的延时,保证了没有任何复位信号加在数据路径上。
  • 不管有没有时钟都能复位。综合工具能自动判断异步复位无需加入任何综合参数。

使用异步复位的缺点

  • DFT时,异步复位引脚若不能直接被IO驱动,就必须将异步复位电路和复位驱动器断开保证DFT的正确。
  • 在触发器时钟有效沿附近释放,触发器就会进入亚稳态,复位状态就会丢失。
  • 复位信号毛刺会引发伪复位,需要设计毛刺过滤器。这个问题可以考虑使用同步复位。
  • 复位树应是时间可控的,以保证复位能在一个时钟周期内释放。解决方法:使用分布式异步复位同步触发器(这种异步复位方法将复位同步器放置在设计的每个层次结构中。)

 带异步复位和异步置位的触发器

 这段代码能正确地综合成实际的器件,但是在仿真时会有问题,因为always事件会只在敏感事件的有效边沿触发。

 图中只对1和2时间触发,3和4由于不是敏感事件所以不会触发。

 正确的仿真模型,应该在set_n在rst_n前面撤走时,将输出置为1

 移除异步复位的问题

移除系统中的异步复位会使芯片进入不稳定的未知状态。同步复位时,复位信号的前沿和尾沿必须远离时钟的有效边沿。

 两个问题:

1、违背复位恢复时间。复位恢复时间类似于建立时间,复位信号撤离应在时钟有效沿前一段时间到达,否则可能导致寄存器数据输出出现信号完整性问题或者亚稳态问题。

2、复位移除会在不同时序元件的不同周期内发生。异步复位移除传播延迟可能导致某些寄存器或者触发器提前退出复位状态。

复位同步器 

这是确保正确移除复位最常使用的方法。没有复位同步器,即使仿真时复位能正常工作,最终系统中的异步复位信号仍然是无效的。

复位撤销后,典型情况下需要两个时钟上升沿来同步移除主复位信号。两级的主要目的就是为了消除亚稳态。

第一级可能的亚稳态是因为不满足复位恢复时间。

第二个触发器不会出现恢复亚稳态问题,因为移除复位时,触发器输入输出都为低电平。

总的复位分布时间:

过滤复位毛刺

异步复位对毛刺很敏感。

可以将复位信号和延迟后的复位信号相或过滤毛刺。

复位输入引脚也必须是施密特触发器引脚才有助于毛刺过滤。(施密特触发器:即滞回比较器,有两个判决电平,起到了减小毛刺的作用)

延时使用提供的宏单元或者在优化后的已综合设计中手动加入延时,如加多个较慢的缓冲器。缺点:延迟会随温度电压工艺变化,需要保证在所有PVT环境中都能满足设计要求。

控制时钟偏移(Skew)

时钟偏移:整个芯片中时钟到达时间的差异。

 两个相邻寄存器的时钟相差较大,就会有违背时序的潜在风险。

两个顺序相邻触发器和一个等电位时钟分布网络的时钟偏移:

两个T分别是时钟源到两个触发器的延迟。

短路径问题

短路径问题:即逻辑单元速度快,输出数据比时钟传播到下个逻辑单元还要快,就会造成数据丢失,从而导致逻辑功能出错。

如下图。正常情况下,数据传播延迟应该大于时钟延迟,第二个触发器应该首先采的是第一个触发器上个周期的值。

时钟偏移和短路径分析

满足下列式子就会出现明显的短路径问题。注意区分短路径问题和亚稳态,短路径并不一定会造成亚稳态,如上图情况b;

当SK>T1-H且SK<T1时会出现亚稳态,同时也是短路径,如图c。

短路径可能不会亚稳态且采到一个稳定的值,但这个值是第一个触发器本时钟沿输出的值,会与预期功能不一致。

 

使时钟偏移最小化

将时钟偏移减到最小值是解决短路径问题的最好方式。

在数据路径上加入延迟

如图2.44,在数据路径上增加延迟使整个数据路径的延迟大于时钟偏移,可以消除短路径问题。

 时钟反转

让时钟传播方向(右到左)和数据传播方向(左到右)相反,这样自然就可以消除时钟偏移。

延迟足够时,可以使接收触发器比源触发器先接收到时钟有效沿。这是一种牺牲建立时间为代价提高保持时间的方法。

 不难看出时钟反转就增大了Tlaunch减小了Tcapture,使得建立时间更难满足。

该方法对于约翰逊计数器和新型反馈移位寄存器这样的环路结构并不是很有效。因为起点触发器和终点触发器还是连在一起,还是会存在短路径问题。

交替相位时钟

 交替使用时钟沿,顺序相邻的触发器使用相反的时钟沿触发,为时钟偏移提供了约半个时钟周期的短路径时钟偏移余量。

 从时序图可以看到如果没有中间的一级下降沿触发器,第一级输出直接到第三级输入,第三个触发器就会直接采集到第一个触发器触发后的值,与预期的逻辑不相符,中间加了一级下降沿触发器之后,中间的触发器会首先锁存上一个周期的值,此时第三个触发器会锁存这个值;CLK2下降沿之后,触发器2的输出才发生变化,此时输出的才是触发器1变化后的值,与预期逻辑相符。

交替使用时钟相位,原理同上一种方法。

 行波时钟结构。每个触发器的输出驱动下一个触发器的时钟端。由于触发器不在同一个时钟,这样就消除了时钟偏移。上图为Ripple-down计数器,Ripple-up只需要把时钟改为下降沿即可。

平衡线路长度

设计者应保持所有时钟线长度相等,也应保证各终端负载相同。

设计应遵守的一些指南:

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

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

相关文章

使用@react-three/fiber,@mkkellogg/gaussian-splats-3d加载.splat,.ply,.ksplat文件

前言 假设您正在现有项目中集成这些包&#xff0c;而该项目的构建工具为 Webpack 或 Vite。同时&#xff0c;您对 Three.js 和 React 有一定的了解。如果您发现有任何错误或有更好的方法&#xff0c;请随时留言。 安装 npm install three types/three react-three/fiber rea…

「QT」几何数据类 之 QVector2D 二维向量类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

NVIDIA RTX 系统上使用 llama.cpp 加速 LLM

NVIDIA RTX 系统上使用 llama.cpp 加速 LLM 文章目录 NVIDIA RTX 系统上使用 llama.cpp 加速 LLMllama.cpp 概述llama.cpp 在 NVIDIA RTX 上的加速性能使用 llama.cpp 构建的开发人员生态系统使用 llama.cpp 在 RTX 平台上加速的应用程序开始使用 适用于 Windows PC 的 NVIDIA …

[CKS] K8S NetworkPolicy Set Up

最近准备花一周的时间准备CKS考试&#xff0c;在准备考试中发现有一个题目关于不安全项目修复的题目。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] K8S Ne…

Odoo:免费开源的流程制造行业ERP管理系统

概述 聚焦流程制造连续性生产的特性&#xff0c;提供集成PLMERPMESBI的一体化解决方案&#xff0c;涵盖计划、生产、质量、配方、供销、库存、成本、设备、资金管理等业务领域的整体性解决方案 行业的最新洞察&行业典型痛点 一、生产过程需要精细化控制 需要在各种制约…

MySQL技巧之跨服务器数据查询:基础篇-动态参数

MySQL技巧之跨服务器数据查询&#xff1a;基础篇-动态参数 上一篇已经描述&#xff1a;借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的连接名: MY_ODBC_MYSQL 以及用同样的方法&a…

【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解

&#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、SessionPage &#xff08;一&#xff09;SessionPage 模块的基本功能 &#xff08;二&#xff09;基本使…

vue3使用VueQuill插入自定义按钮

在 Vue 3 项目中使用 VueQuill 编辑器时&#xff0c;我们可以自定义内容来满足特定的需求。本文将介绍如何在 VueQuill 中插入自定义内容&#xff0c;比如插入特定的标签或样式元素。 Quill官方中文文档 1. 项目设置和依赖安装 如果你还没有创建 Vue 3 项目&#xff0c;可以…

OpenHamrony4.0去除锁屏是一种什么体验?触觉智能给你支支招

本文介绍在开源鸿蒙OpenHarmony 4.0系统下&#xff0c;去除锁屏开机后直接进入界面的方法&#xff0c;触觉智能Purple Pi OH鸿蒙开发板演示&#xff0c;搭载了瑞芯微RK3566芯片&#xff0c;类树莓派设计&#xff0c;Laval官方社区主荐&#xff0c;已适配全新OpenHarmony5.0 Rel…

【bat】自动生成指定层级文件夹

&#x1f305; 一日之计在于晨&#xff0c;启航新程 ⭐ 本期特辑&#xff1a;自动生成指定层级文件夹 &#x1f3c6; 系列专题&#xff1a;BAT脚本工坊 文章目录 前言批处理脚本介绍脚本执行过程总结 前言 在日常的计算机使用过程中&#xff0c;我们经常需要创建文件夹来组织和…

基于yolov5的番茄成熟度检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示&#xff1a; yolov5 番茄成熟度检测系统&#xff0c;支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于 YOLOv5 的番茄成熟度检测系统是在 PyT…

vue-echarts 动态x轴字段,可选多个公司数据,根据选择的条件动态生成echarts柱形图(或者折线图)

需求&#xff1a;月份、 公司 、显示字段、柱形图&#xff08;折线图&#xff09;&#xff0c;都为动态可选的。 &#xff08;此例子&#xff1a;模拟数据都为随机数&#xff0c;所以每次截图值都会不同&#xff09; &#xff08;Vue3 echarts 5.4.2版本&#xff09; <te…

html的week控件 获取周(星期)的第一天(周一)和最后一天(周日)

html的week控件 获取周(星期)的第一天(周一)和最后一天(周日) <input type"week" id"week" class"my-css" value"ViewBag.DefaultWeek" /><script> function PageList() { var dateStrin…

计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议

文章目录 一、TCP/IP五层模型&#xff08;重要&#xff09;二、应用层常见的协议三、TCP与UDP3.1 TCP、UDP的区别&#xff08;重要&#xff09;3.2 运行于TCP、UDP上的协议3.3 TCP的三次握手、四次挥手3.3.1 TCP的三次握手3.3.2 TCP的四次挥手3.3.3 随机生成序列号的原因 四、T…

Redis集群模式之Redis Sentinel vs. Redis Cluster

在分布式系统环境中&#xff0c;Redis以其高性能、低延迟和丰富的数据结构而广受青睐。随着数据量的增长和访问需求的增加&#xff0c;单一Redis实例往往难以满足高可用性和扩展性的要求。为此&#xff0c;Redis提供了两种主要的集群模式&#xff1a;Redis Sentinel和Redis Clu…

python opencv3

三、图像预处理2 1、图像滤波 为图像滤波通过滤波器得到另一个图像。也就是加深图像之间的间隙&#xff0c;增强视觉效果&#xff1b;也可以模糊化间隙&#xff0c;造成图像的噪点被抹平。 2、卷积核 在深度学习中&#xff0c;卷积核越大&#xff0c;看到的信息越多&#xff0…

JAVA后端生成图片滑块验证码 springboot+js完整案例

前言 现在大部分网部都是图片滑块验证码&#xff0c;这个得要与后端联动起来才是确保接口安全性 通过我们系统在发送手机短息时都会选进行滑块验证&#xff0c;但是我们要保证发送短息接口的全安&#xff0c;具体路思如下 那么这个滑块的必须是与后端交互才能保证安全性&…

【因果分析方法】MATLAB计算Liang-Kleeman信息流

【因果分析方法】MATLAB计算Liang-Kleeman信息流 1 Liang-Kleeman信息流2 MATLAB代码2.1 函数代码2.2 案例参考Liang-Kleeman 信息流(Liang-Kleeman Information Flow)是由 Liang 和 Kleeman 提出的基于信息论的因果分析方法。该方法用于量化变量之间的因果关系,通过计算信息…

在 Oracle Linux 8.9 上安装Oracle Database 23ai 23.5

在 Oracle Linux 8.9 上安装Oracle Database 23ai 23.5 1. 安装 Oracle Database 23ai2. 连接 Oracle Database 23c3. 重启启动后&#xff0c;手动启动数据库4. 重启启动后&#xff0c;手动启动 Listener5. 手动启动 Pluggable Database6. 自动启动 Pluggable Database7. 设置开…

Ubuntu23.10下解决C语言调用mysql.h问题

Ubuntu23.10下解决C语言调用mysql.h问题 导语环境准备问题和解决方案总结参考文献 导语 在学习C语言和MySQL的调用的时候遇到包和版本的问题&#xff0c;由于使用的书很老&#xff08;10年的&#xff09;&#xff0c;因此很多MySQL的包已经过时&#xff0c;在查找很多资料和询…