xilinx原语介绍及仿真——ODELAYE2

  7系列IO模块相关的结构如图1所示,前文对IOB、IDELAYE2、ILOGIC、OLOGIC进行了讲解,还剩下ISERDESE2、OSERDESE2、ODELAYE2原语,本文对ODELAYE2进行讲解,该原语只有HP bank才有,即7系列FPGA的A7系列没有ODELAYE2结构,不能使用ODELAYE2原语。

在这里插入图片描述

图1 7系列IO模块(左侧HP bank,右侧HR bank)

  图2中显示了这5个结构在FPGA中的位置,每个管脚都会存在这5个结构,输入信号的流向是IOB,选择经过IDELAYE,然后通过ILOGIC到达内部逻辑。而输出信号是内部逻辑经过OLOGIC,然后选择经过ODELAYE,最后通过IOB的管脚PAD。

在这里插入图片描述

图2 五个结构在FPGA中的分布

  ODELAYE2原语的功能和工作模式与IDELAYE2一致,必须配和IDELAYCTRL原语一起使用。主要的作用就是对输出的信号延时,将多bit信号的各位进行对齐。 没有这个原语的FPGA可以通过时序约束来告知综合器在布局布线时考虑各位信号间的延迟。

1、ODELAYE2原语端口及参数

  图3是ODELAYE2原语的框图,与IDELAYE2的信号端口类似。

在这里插入图片描述

图3 ODELAYE2原语框图

  原语的端口信号如表1所示,多数信号与IDELAYE2的信号含义一致,由于ODELAYE2在输出端,只能对FPGA内部信号(普通信号或者时钟)进行延时,相比IDELAYE2原语,ODELAYE2缺少IDATAIN信号,多了一个CLKIN,当需要延时的信号是时钟信号,从CLKIN端口输入。

表1 ODELAYE2端口
信号名I/O位宽含义
CI1当ODELAYE2工作在FIXED模式下,不需要时钟信号,其余模式必须提供时钟信号。
REGRSTI1仅VAR_LOAD_PIPE模式下使用的复位。
LD、CE、INCI1与IDELAYE2中含义一致。
CINVCTRLI1动态翻转时钟 © 极性。
CNTVALUEINI5使用这个值来动态更改延迟抽头系数,位宽为5,最大31。
CLKINI1被延时信号是时钟信号时,从该端口输入,必须是时钟缓冲器(BUFIO、BUFG 或 BUFR)的信号。
DATAINI1来自FPGA逻辑的数据输入。
LDPIPEENI1把输入的延时值加载到流水线中。
DATAOUTO1输出延迟后的信号,输出到IOB。
CNTVALUEOUTO5输出该模块当前工作的延时系数

  ODELAYE2的参数与IDELAYE2的参数完全一致,如下表2所示,不再赘述,详解参考IDELAYE2参数讲解。

表2 ODELAYE2原语参数
参数名含义
ODELAY_TYPEFIXED固定延时模式,VAR_LOAD 动态加载抽头值模式,VAR_LOAD或VAR_LOAD _PIPE模式下,可以动态加载外部输入的值,并进行动态调整,一般使用VAR_LOAD模式。
ODELAY_VALUEFIXED、VAR_LOAD模式的延时初始值,VAR_LOAD、VAR_LOAD_PIPE模式时被忽略。
CINVCTRL_SEL是否动态翻转时钟信号C的极性。
DELAY_SRC需要延时的信号是内部的信号(DATAIN),还是管脚输入的信号(IDATAIN)
HIGH_PERFORMANCE_MODE是否使用高性能模式减小抖动,会增加功耗。
PIPE_SELVAR_LOAD_PIPE 模式的时候使用
REFCLK_FREQUENCY设置参考时钟频率(单位:MHz),取值范围190210、290310、390~410,通常取200,与延时的分辨率有关。
SIGNAL_PATTERN延时的是时钟信号还是数据,不同类型信号路径上的抖动不同。

2、ODELAYE2四种模式仿真

  ODELAYE2的原语模板如下所示:

   (* IODELAY_GROUP = <iodelay_group_name> *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRLODELAYE2 #(.CINVCTRL_SEL("FALSE"),          // Enable dynamic clock inversion (FALSE, TRUE).DELAY_SRC("ODATAIN"),           // Delay input (ODATAIN, CLKIN).HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE").ODELAY_TYPE("FIXED"),           // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE.ODELAY_VALUE(0),                // Output delay tap setting (0-31).PIPE_SEL("FALSE"),              // Select pipelined mode, FALSE, TRUE.REFCLK_FREQUENCY(200.0),        // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0)..SIGNAL_PATTERN("DATA")          // DATA, CLOCK input signal)ODELAYE2_inst (.CNTVALUEOUT(CNTVALUEOUT), // 5-bit output: Counter value output.DATAOUT(DATAOUT),         // 1-bit output: Delayed data/clock output.C(C),                     // 1-bit input: Clock input.CE(CE),                   // 1-bit input: Active high enable increment/decrement input.CINVCTRL(CINVCTRL),       // 1-bit input: Dynamic clock inversion input.CLKIN(CLKIN),             // 1-bit input: Clock delay input.CNTVALUEIN(CNTVALUEIN),   // 5-bit input: Counter value input.INC(INC),                 // 1-bit input: Increment / Decrement tap delay input.LD(LD),                   // 1-bit input: Loads ODELAY_VALUE tap delay in VARIABLE mode, in VAR_LOAD or// VAR_LOAD_PIPE mode, loads the value of CNTVALUEIN.LDPIPEEN(LDPIPEEN),       // 1-bit input: Enables the pipeline register to load data.ODATAIN(ODATAIN),         // 1-bit input: Output delay data input.REGRST(REGRST)            // 1-bit input: Active-high reset tap-delay input);

  四种模式与IDELAYE2也是一致的,所以直接对四种模式进行仿真,相应的设计代码如下:

module odelaye2_ctrl(input									clk		    ,//系统时钟信号,默认200MHZ;input									rst 	    ,//系统复位信号,高电平有效;input				            	    din		    ,//输入数据;input                                   ce          ,input                                   inc         ,input                                   ld          ,input                                   ldpipeen    ,input                                   reg_rst     ,input       [4 : 0]                     cntvaluein  ,output      [4 : 0]                     cntalueout  ,output                                  rdy         ,output  	                            dout	     //延时后的输出数据;);(* IODELAY_GROUP = "ODELAY_CTRL" *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRLODELAYE2 #(.CINVCTRL_SEL            ( "FALSE"   ),// Enable dynamic clock inversion (FALSE, TRUE).DELAY_SRC               ( "ODATAIN" ),// Delay input (ODATAIN, CLKIN).HIGH_PERFORMANCE_MODE   ( "FALSE"   ),// Reduced jitter ("TRUE"), Reduced power ("FALSE").ODELAY_TYPE             ( "FIXED"   ),// FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE.ODELAY_VALUE            ( 0          ),// Output delay tap setting (0-31).PIPE_SEL                ( "FALSE"   ),// Select pipelined mode, FALSE, TRUE.REFCLK_FREQUENCY        ( 200.0      ),// IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0)..SIGNAL_PATTERN          ( "DATA"    ) // DATA, CLOCK input signal)ODELAYE2_inst (.CNTVALUEOUT     (cntalueout    ),// 5-bit output: Counter value output.DATAOUT         (dout          ),// 1-bit output: Delayed data/clock output.C               (clk           ),// 1-bit input: Clock input.CE              (ce            ),// 1-bit input: Active high enable increment/decrement input.CINVCTRL        (1'b0          ),// 1-bit input: Dynamic clock inversion input.CLKIN           (1'b0          ),// 1-bit input: Clock delay input.CNTVALUEIN      (cntvaluein    ),// 5-bit input: Counter value input.INC             (inc           ),// 1-bit input: Increment / Decrement tap delay input.LD              (ld            ),// 1-bit input: Loads ODELAY_VALUE tap delay in VARIABLE mode, in VAR_LOAD or VAR_LOAD_PIPE mode, loads the value of CNTVALUEIN.LDPIPEEN        (ldpipeen      ),// 1-bit input: Enables the pipeline register to load data.ODATAIN         (din           ),// 1-bit input: Output delay data input.REGRST          (reg_rst        ) // 1-bit input: Active-high reset tap-delay input);//例化IDELAYCTRL原语(* IODELAY_GROUP = "ODELAY_CTRL"  *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRLIDELAYCTRL IDELAYCTRL_inst (.RDY    ( rdy   ),// 1-bit output: Ready output.REFCLK ( clk   ),// 1-bit input: Reference clock input.RST    ( rst   ) // 1-bit input: Active high reset input);endmodule

  TestBench参考代码:

`timescale 1 ns/1 ps
module test();parameter	CYCLE		=   5       ;//系统时钟周期,单位ns,默认5ns;reg			                clk     ;//系统时钟,默认100MHz;reg			                rst     ;//系统复位,默认高电平有效;reg                         din     ;reg                         ce      ;reg                         inc     ;reg                         ld      ;reg                         ldpipeen;reg                         reg_rst ;reg   [4 : 0]               cntvaluein;wire  [4 : 0]               cntalueout  ;wire                        rdy         ;wire                        dout        ;odelaye2_ctrl  u_odelaye2_ctrl (.clk        ( clk           ),.rst        ( rst           ),.din        ( din           ),.ce         ( ce            ),.inc        ( inc           ),.ld         ( ld            ),.ldpipeen   ( ldpipeen      ),.reg_rst    ( reg_rst       ),.cntvaluein ( cntvaluein    ),.cntalueout ( cntalueout    ),.rdy        ( rdy           ),.dout       ( dout          ));//生成周期为CYCLE数值的系统时钟;initial beginclk = 0;forever #(CYCLE/2) clk = ~clk;end//生成复位信号;initial beginrst = 0;#2;rst = 1;//开始时复位10个时钟;#(10*CYCLE);rst = 0;#(500*CYCLE);$stop;//停止仿真;endinitial begin#1;din = 0;//输入数据初始化为0;ce = 0; inc = 0; ld = 0;ldpipeen = 0;reg_rst = 0;cntvaluein = ({$random} % 32);#(15*CYCLE);//延迟10个时钟周期;din = 1'b1;forever begin#(2*CYCLE);ldpipeen = 1;#(CYCLE);ldpipeen = 0;cntvaluein = ({$random} % 32);#(CYCLE);ld = 1'b1;#(CYCLE);ld = 1'b0;#(CYCLE);ce = 1'b1;inc = 1'b1;#(2*CYCLE);ce = 1'b1;inc = 1'b0;#(3*CYCLE);ce = 1'b0;inc = 1'b1;#(CYCLE);ce = 1'b0;inc = 1'b0;endendinitial begin#1;din = 0;//输入数据初始化为0;#(15*CYCLE);//延迟10个时钟周期;din = 1'b1;forever begin#((({$random} % 6))*CYCLE/2);din = ({$random} % 2);endend
endmodule

2.1、FIXED模式仿真

  将odelaye2_ctrl.v第23行ODELAY_TYPE参数修改为FIXED模式,仿真即可得到图4结果。Cntalueout为0,测得输入与输出信号的延迟为0.6ns,与IDELAYE2的基础延时一致。

  当延时系数为0时,此时输入与输出时延时600ps,并不是0。

在这里插入图片描述

图4 ODELAYE2在FIXED模式下仿真

  输入与输出的具体延时=基础延时(600ps)+延时系数*78ps(参考时钟为200MHz), 比如将odelaye2_ctrl.v第24行的ODELAY_VALUE参数设置为11,此时输入与输出延时应该是600ps+11*78ps=1458ps。修改后的仿真结果如图5所示,与预期一致。

在这里插入图片描述

图5 ODELAYE2在FIXED模式下仿真

2.2、VARIABLE模式仿真

  将odelaye2_ctrl.v第23行ODELAY_TYPE参数修改为VARIABLE模式,第24行的ODELAY_VALUE参数设置为11,仿真即可得到图6结果。

在这里插入图片描述

图6 ODELAYE2在VARIABLE模式下仿真

  在VARIABLE模式下,当ld信号在时钟上升沿时为高电平时,ODELAYE2延时参数变为ODELAY_VALUE参数设置的值,当CE和INC同时为高电平时,延时参数在时钟上升沿加1,当CE为高电平,INC为低电平时,延时参数在时钟上升沿减一,当CE为低电平且ld为低电平时,延时参数不变。Cntalueout信号表示ODELAYE2当前的延时参数。具体的延时时间与前面FIXED模式计算方式一致,就不再进行计算和测量了。

2.3、VAR_LOAD模式仿真

  将odelaye2_ctrl.v第23行ODELAY_TYPE参数修改为VAR_LOAD模式,第24行的ODELAY_VALUE参数设置为11,仿真即可得到图7结果。

在这里插入图片描述

图7 ODELAYE2在VAR_LOAD模式下仿真

  上图仿真表示在VAR_LOAD模式下,ODELAY_VALUE参数无效,当ld信号为高电平时,将cntvaluenin的数值作为ODELAYE2的延时系数,当ce和inc同时为高电平时,ODELAYE2的延时系数在时钟上升沿加1,当ce为高电平且inc为低电平时,延时参数在时钟上升沿减一,当ce为低电平且ld为低电平时,延时参数不变。cntalueout信号表示ODELAYE2当前的延时参数。

  VAR_LOAD模式相比VARIABLE模式相比的优势在于,VAR_LOAD模式的ld加载的延时数据是cntvaluenin信号输入的数据,cntvaluenin值是可以改变的。 而VARIABLE模式加载的是ODELAY2的ODELAY_TYPE参数,这个参数是一个固定的值,程序运行时不能变化,与parameter定义的参数一致。所以VAR_LOAD模式是ODELAYE2最常用的模式。

2.4、VAR_LOAD_PIPE模式仿真

  VAR_LOAD_PIPE模式相比VAR_LOAD模式就多了一个寄存器,用来暂存采集输入的延时参数,但是需要将PIPE_SEL参数设置为TRUE才能使用寄存器,参数为FALSE时,VAR_LOAD_PIPE模式相比VAR_LOAD模式没有区别。

  将odelaye2_ctrl.v第23行VAR_LOAD_PIPE参数修改为VAR_LOAD模式,第25行的PIPE_SEL参数设置为FALSE,仿真即可得到图8结果,与图7的VAR_LOAD模式没有区别。

在这里插入图片描述

图8 ODELAYE2在VAR_LOAD_PIPE模式下仿真

  将odelaye2_ctrl.v第23行VAR_LOAD_PIPE参数修改为VAR_LOAD模式,第25行的PIPE_SEL参数设置为TRUE,仿真即可得到图9结果。

在这里插入图片描述

图9 ODELAYE2在VAR_LOAD_PIPE模式下仿真

  当ldpipeen为高电平时,ODELAYE2将cntvaluein的值存入内部寄存器中,当ld为高电平时,ODELAYE2不是读取cntvaluein的值作为延时参数,而是把内部寄存器的值作为延时参数。上图中ldpipeen第一次为高电平时,把cntvaluein的值28保存到内部寄存器,当ld为高电平时,不是把此时cntvaluein的值12作为延时参数,而是把内部寄存器保存的28作为延时参数。这就是VAR_LOAD_PIPE模式的VAR_LOAD模式区别,其余功能均相同。

3、ODELAYE2布局及走线

  将上述工程分配引脚,然后对工程进行综合、实现,最后打开Default Layout,找到dout信号,并打开走线(方法在讲解IDDR原语时讲过),得到图10所示的走线图。

在这里插入图片描述

图10 dout信号走线图

  从上图知dout信号先经过OLOGIC输入到ODELAYE2模块进行延时,最后通过IOB的PAD(管脚)输出FPGA。

  放大图10中左半部分,得到图11,由于dout信号并没有使用OLOGIC中的ODDR和触发器功能,所以信号从组合逻辑部分直接输出到ODELAYE2的DATAIN端口,然后输出。

在这里插入图片描述

图11 放大OLOGIC与ODELAYE2所在区域

  由于前文已经对IDELAYE2和IDELAYCTRL原语做了详细讲解,ODELAYE2与IDELAYE2的模式和参数基本一致,所以本文比较简单,但是ODELAYE2只有K7的HP bank才有,A7系列是不能使用该原语的。因为我手中同时有ZYNQ 7020(A7)和ZYNQ 7030(K7)的开发板,所以还是对ODELAYE2单独做了一个解释发出来。

  需要本文所使用工程的在公众号后台回复”ODELAY”(不包括引号)即可,工程中的代码为最初模式,其余模式按照文中描述修改即可。

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

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

相关文章

探索太空深渊:计算机技术在航天领域的无限可能

探索太空深渊&#xff1a;计算机技术在航天领域的无限可能 一、引言 在21世纪的科技浪潮中&#xff0c;太空探索和计算机技术无疑是两个最为璀璨夺目的领域。它们各自的发展都足以改变人类社会的未来&#xff0c;而当这两者交汇时&#xff0c;所激发出的创新和变革更是超乎我…

git-lfs基本知识讲解

目录 1. 基本知识2. 安装 1. 基本知识 git-lfs 是 Git Large File Storage 的缩写&#xff0c;是 Git 的一个扩展&#xff0c;用于处理大文件的版本控制。 它允许你有效地管理和存储大型二进制文件&#xff0c;而不会使 Git 仓库变得过大和不稳定。以下是一些与 git-lfs 相关…

Java:自定义Enum

Java 枚举是一个特殊的类&#xff0c;一般表示一组常量&#xff0c;比如一年的 4 个季节&#xff0c;一年的 12 个月份&#xff0c;一个星期的 7 天&#xff0c;方向有东南西北等。 一、常量&#xff1a; Java 枚举类使用enum关键字来定义&#xff0c;各个常量使用逗号“,”来…

IIS如何本地部署网站,作为局域网内的服务器

文章目录 IIS本地部署WebService1.使用IIS及WebService的原因:2.相关文件说明及网络条件说明&#xff1a;&#xff08;1&#xff09;文件说明&#xff1a;&#xff08;2&#xff09;网络条件说明&#xff1a; 3.IIS安装与配置&#xff1a;第一步&#xff1a;安装第二步&#xf…

01--二分查找

一. 初识算法 1.1 什么是算法&#xff1f; 在数学和计算机科学领域&#xff0c;算法是一系列有限的严谨指令&#xff0c;通常用于解决一类特定问题或执行计算 不正式的说&#xff0c;算法就是任何定义优良的计算过程&#xff1a;接收一些值作为输入&#xff0c;在有限的时间…

介绍一款上传漏洞fuzz字典生成工具

介绍一款上传漏洞fuzz字典生成工具 1.工具概述2.安装3.参数解析4.使用案例1.工具概述 upload-fuzz-dic-builder是一个上传漏洞fuzz字典生成脚本,生成时给的上传点相关信息越详细,生成的字典越精确 upload-fuzz-dic-builder 2.安装 克隆项目: git clone git@github.com:c…

CTF-文件包含(1)

南邮杯CTF 文件包含 题目地址&#xff1a;asdf 点击后利用file函数对show.php进行文件利用 使用伪协议php://filter/readconvert.base64-encode/resourceindex.php访问index.php文件 base64解码后得到flag [极客大挑战 2019]Secret File 题目地址&#xff1a;BUUCTF在线评测 …

用23种设计模式打造一个cocos creator的游戏框架----(十九)备忘录模式

1、模式标准 模式名称&#xff1a;备忘录模式 模式分类&#xff1a;行为型 模式意图&#xff1a;在不破坏封装性的前提下捕获一个对象的内部状态&#xff0c;并在对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态 结构图&#xff1a; 适用于&#xff1a; …

mysql汇总

一、多个模糊条件查询 regexp 1、group_concat 连接 distinct 去重 SEPARATOR ’,‘ 逗号分割 select FIELD_NAME 字段中文名,GROUP_CONCAT(DISTINCT FIELD_CODE SEPARATOR ‘,’) 字段英文名 from da_dp_table_field where FIELD_NAME regexp ‘用户编码|客户编码’ and DEL_…

遥感图像识别和地理信息系统集成应用的优势有哪些

遥感图像识别和地理信息系统集成应用的优势主要包括&#xff1a; 宏观观测能力强&#xff1a;遥感技术获取的图像数据空间范围比地面观测视角范围要大得多&#xff0c;且不受地形地貌的影响。这不仅拓宽了人们的视觉空间&#xff0c;为宏观地掌握地面事物的现状情况创造了极为…

我的网站服务器被入侵了该怎么办?

最近有用户咨询到德迅云安全&#xff0c;说自己再用的网站服务器遇到了入侵情况&#xff0c;询问该怎么处理入侵问题&#xff0c;有什么安全方案可以解决服务器被入侵的问题。下面&#xff0c;我们就来简单讲下服务器遇到入侵了&#xff0c;该从哪方面入手处理&#xff0c;在预…

不想学习只想摆烂系列之GUIjava项目

知道GUI框架怎么写就行 1.定义jFRame 2.分开写测试类 3.给几个按钮 4.负责提供测试器 这样就把框架打好了 主程序-继承某个类 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;public class RadioB…

shell编程-xargs命令详解(超详细)

文章目录 一、引言二、命令格式和选项三、示例用法四、注意事项和常见问题五、扩展应用六、总结七、参考文献 一、引言 本文将介绍Unix/Linux系统中的xargs命令&#xff0c;该命令是一个强大的命令行工具&#xff0c;用于将标准输入的数据转换为命令行参数。它可以帮助我们处理…

Stable-Diffusion|文生图 完蛋我被美女包围了人物Lora(四)

前面几篇&#xff1a; Stable-Diffusion|window10安装GPU版本的 Stable-Diffusion-WebUI遇到的一些问题&#xff08;一&#xff09; 【Stable-Diffusion|入门怎么下载与使用civitai网站的模型&#xff08;二&#xff09;】 Stable-Diffusion|文生图 拍立得纪实风格的Lora 图例&…

线性代数(一)

1.标量&#xff1a;标量由只有⼀个元素的张量表⽰。 x np.array(3.0) y np.array(2.0) x y, x * y, x / y, x ** y (array(5.), array(6.), array(1.5), array(9.))2.向量&#xff1a;向量可以被视为标量值组成的列表&#xff0c;列向量是向量的默认⽅向。 x np.arange(4…

Vue3-09-条件渲染-v-show 的基本使用

v-show 的作用 v-show 可以根据条件表达式的值【展示】或【隐藏】html 元素。v-show 的特点 v-show 的实现方式是 控制 dom 元素的 css的 display的属性&#xff0c; 因此&#xff0c;无论该元素是否展示&#xff0c;该元素都会正常渲染在页面上&#xff0c; 当v-show 的 条件…

【Linux】cp问题,生产者消费者问题代码实现

文章目录 前言一、 BlockQueue.hpp&#xff08;阻塞队列&#xff09;二、main.cpp 前言 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯&#xff0c;而通过阻塞队列来进行通讯&#xff0c;所以生产者生产完数据之后不用…

3.2【窗口】窗口的几何形状(一,窗口类型)

一,窗口几何简介 窗口的几何形状由一组属性定义,这些属性指示窗口及其内容的显示方式。定义窗口几何形状的属性集可分为两组:与显示相关的属性和与内容相关的属性。 设置与显示相关的属性需要了解显示坐标系和窗口层次结构。原因是与显示相关的属性用于在显示上调整窗口的…

Java实现对图片压缩指定大小。比如1260*945。如果图片尺寸大于,就压缩。小于,就拉伸到指定大小

需求&#xff1a; Java实现对图片压缩指定大小。比如1260*945。如果图片尺寸大于&#xff0c;就压缩。小于&#xff0c;就拉伸到指定大小 代码实现&#xff1a; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.F…

Linux-RedHat-7.9-安装Oracle客户端11.2

1 .下载Oracle客户端 Instant Client for Linux x86-64 (64-bit) 目录&#xff1a; oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64 oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64 oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64 切换 su root 命令…