SerDes介绍以及原语使用介绍(2)OSERDESE2原语仿真

news2024/11/26 5:50:54

文章目录

  • 前言
  • 一、SDR模式
    • 1.1、设计代码
    • 1.2、testbench代码
    • 1.3、仿真分析
  • 二、DDR模式下
    • 2.1、设计代码
    • 2.2、testbench代码
    • 2.3、仿真分析
  • 三、OSERDES2级联
    • 3.1、设计代码
    • 3.2、testbench代码
    • 3.3、代码分析

前言

上文通过xilinx ug471手册对OSERDESE有了简单的了解,接下来通过仿真进一步深化印象。

一、SDR模式

1.1、设计代码

以下代码表示在SDR模式下对输入的4位宽并行数据进行并串转换。

module serdes_top(
   input          i_clk       ,
   input          i_div_clk   ,
   input          i_rst       ,
   input  [3 :0]  i_par_data  ,
   output         o_ser_data  
);
    
wire OFB;
    
   OSERDESE2 #(
      .DATA_RATE_OQ     ("SDR"         ), // DDR, SDR
      .DATA_RATE_TQ     ("DDR"         ), // DDR, BUF, SDR
      .DATA_WIDTH       (4             ), // Parallel data width (2-8,10,14)
      .INIT_OQ          (1'b0          ), // Initial value of OQ output (1'b0,1'b1)
      .INIT_TQ          (1'b0          ), // Initial value of TQ output (1'b0,1'b1)
      .SERDES_MODE      ("MASTER"      ), // MASTER, SLAVE
      .SRVAL_OQ         (1'b0          ), // OQ output value when SR is used (1'b0,1'b1)
      .SRVAL_TQ         (1'b0          ), // TQ output value when SR is used (1'b0,1'b1)
      .TBYTE_CTL        ("FALSE"       ), // Enable tristate byte operation (FALSE, TRUE)
      .TBYTE_SRC        ("FALSE"       ), // Tristate byte source (FALSE, TRUE)
      .TRISTATE_WIDTH   (1             )  // 3-state converter width (1,4)
   )
   OSERDESE2_inst (
      .OFB              (OFB           ), // 1-bit output: Feedback path for data
      .OQ               (o_ser_data    ), // 1-bit output: Data path output
      // SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each)
      .SHIFTOUT1        (              ),
      .SHIFTOUT2        (              ),
      .TBYTEOUT         (              ), // 1-bit output: Byte group tristate
      .TFB              (              ), // 1-bit output: 3-state control
      .TQ               (              ), // 1-bit output: 3-state control
      .CLK              (i_clk         ), // 1-bit input: High speed clock
      .CLKDIV           (i_div_clk     ), // 1-bit input: Divided clock
      // D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
      .D1               (i_par_data[0] ),
      .D2               (i_par_data[1] ),
      .D3               (i_par_data[2] ),
      .D4               (i_par_data[3] ),
      .D5               (),
      .D6               (),
      .D7               (),
      .D8               (),
      // .D5               (i_par_data[4] ),
      // .D6               (i_par_data[5] ),
      // .D7               (i_par_data[6] ),
      // .D8               (i_par_data[7] ),
      .OCE              (1'b1          ), // 1-bit input: Output data clock enable
      .RST              (i_rst         ), // 1-bit input: Reset
      // SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
      .SHIFTIN1         (),
      .SHIFTIN2         (),
      // T1 - T4: 1-bit (each) input: Parallel 3-state inputs
      .T1               (1'b0          ),
      .T2               (1'b0          ),
      .T3               (1'b0          ),
      .T4               (1'b0          ),
      .TBYTEIN          (1'b0          ), // 1-bit input: Byte group tristate
      .TCE              (1'b0          )  // 1-bit input: 3-state clock enable
   );

1.2、testbench代码

以下为TB文件:

module serdes_sim();

localparam P_CLK_PERIOD = 40;

reg clk, div_clk , rst;
reg [3 :0] r_din;

wire w_ser_dout;

always begin
    div_clk = 0;
    #(P_CLK_PERIOD); 
    div_clk = 1;
    #(P_CLK_PERIOD); 
end

always begin
    clk = 1;
    #(P_CLK_PERIOD/4); 
    clk = 0;
    #(P_CLK_PERIOD/4); 
end

initial begin
    rst = 1;
    #100;
    @(posedge clk);
    rst = 0;
    repeat(200) @(posedge clk);
    $stop;
end

initial begin
    r_din = 'd0;
    data_gen();
end

serdes_top serdes_top_u0(
   .i_clk           (clk        ),
   .i_div_clk       (div_clk    ),
   .i_rst           (rst        ),
   .i_par_data      (r_din      ),
   .o_ser_data      (w_ser_dout ) 
);

task data_gen();
begin
    r_din <= 'd0;
    wait(!rst);
    repeat(10) @(posedge div_clk);
    r_din <= ({$random} % 16);
    forever begin
        @(posedge div_clk);
        r_din <= ({$random} % 16);
    end
end
endtask

endmodule

1.3、仿真分析

在这里插入图片描述
第一个并行数据为4’b0100,在蓝色刻度线处被采样,黄色刻度线开始输出,但是按照表中输出时延应该是3个CLK后开始输出,这是因为CLK和CLKDIV相位对齐,输出时延可以变化一个CLK,仿真结果显示是4个CLK,相比于表中描述多了一个CLK.

二、DDR模式下

2.1、设计代码

只需要修改位宽,输入D5-D8、以及并串转换模式即可。

module serdes_top(
   input          i_clk       ,
   input          i_div_clk   ,
   input          i_rst       ,
   input  [7 :0]  i_par_data  ,
   output         o_ser_data  
);
    
wire OFB;
    
   OSERDESE2 #(
      .DATA_RATE_OQ     ("DDR"         ), // DDR, SDR
      .DATA_RATE_TQ     ("DDR"         ), // DDR, BUF, SDR
      .DATA_WIDTH       (8             ), // Parallel data width (2-8,10,14)
      .INIT_OQ          (1'b0          ), // Initial value of OQ output (1'b0,1'b1)
      .INIT_TQ          (1'b0          ), // Initial value of TQ output (1'b0,1'b1)
      .SERDES_MODE      ("MASTER"      ), // MASTER, SLAVE
      .SRVAL_OQ         (1'b0          ), // OQ output value when SR is used (1'b0,1'b1)
      .SRVAL_TQ         (1'b0          ), // TQ output value when SR is used (1'b0,1'b1)
      .TBYTE_CTL        ("FALSE"       ), // Enable tristate byte operation (FALSE, TRUE)
      .TBYTE_SRC        ("FALSE"       ), // Tristate byte source (FALSE, TRUE)
      .TRISTATE_WIDTH   (1             )  // 3-state converter width (1,4)
   )
   OSERDESE2_inst (
      .OFB              (OFB           ), // 1-bit output: Feedback path for data
      .OQ               (o_ser_data    ), // 1-bit output: Data path output
      // SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each)
      .SHIFTOUT1        (              ),
      .SHIFTOUT2        (              ),
      .TBYTEOUT         (              ), // 1-bit output: Byte group tristate
      .TFB              (              ), // 1-bit output: 3-state control
      .TQ               (              ), // 1-bit output: 3-state control
      .CLK              (i_clk         ), // 1-bit input: High speed clock
      .CLKDIV           (i_div_clk     ), // 1-bit input: Divided clock
      // D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
      .D1               (i_par_data[0] ),
      .D2               (i_par_data[1] ),
      .D3               (i_par_data[2] ),
      .D4               (i_par_data[3] ),
      // .D5               (),
      // .D6               (),
      // .D7               (),
      // .D8               (),
      .D5               (i_par_data[4] ),
      .D6               (i_par_data[5] ),
      .D7               (i_par_data[6] ),
      .D8               (i_par_data[7] ),
      .OCE              (1'b1          ), // 1-bit input: Output data clock enable
      .RST              (i_rst         ), // 1-bit input: Reset
      // SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
      .SHIFTIN1         (),
      .SHIFTIN2         (),
      // T1 - T4: 1-bit (each) input: Parallel 3-state inputs
      .T1               (1'b0          ),
      .T2               (1'b0          ),
      .T3               (1'b0          ),
      .T4               (1'b0          ),
      .TBYTEIN          (1'b0          ), // 1-bit input: Byte group tristate
      .TCE              (1'b0          )  // 1-bit input: 3-state clock enable
   );
   
endmodule

2.2、testbench代码

修改位宽以及产生随机数的大小即可。

module serdes_sim();

localparam P_CLK_PERIOD = 40;

reg clk, div_clk , rst;
reg [7 :0] r_din;

wire w_ser_dout;

always begin
    div_clk = 0;
    #(P_CLK_PERIOD); 
    div_clk = 1;
    #(P_CLK_PERIOD); 
end

always begin
    clk = 1;
    #(P_CLK_PERIOD/4); 
    clk = 0;
    #(P_CLK_PERIOD/4); 
end

initial begin
    rst = 1;
    #100;
    @(posedge clk);
    rst = 0;
    repeat(200) @(posedge clk);
    $stop;
end

initial begin
    r_din = 'd0;
    data_gen();
end

serdes_top serdes_top_u0(
   .i_clk           (clk        ),
   .i_div_clk       (div_clk    ),
   .i_rst           (rst        ),
   .i_par_data      (r_din      ),
   .o_ser_data      (w_ser_dout ) 
);

task data_gen();
begin
    r_din <= 'd0;
    wait(!rst);
    repeat(10) @(posedge div_clk);
    r_din <= ({$random} % 256);
    forever begin
        @(posedge div_clk);
        r_din <= ({$random} % 256);
    end
end
endtask

endmodule

2.3、仿真分析

在这里插入图片描述
蓝色刻度线处采样到并行输入数据,黄色刻度线开始输出,延时为4个CLK,与表中描述是一致的。

三、OSERDES2级联

当我们需要对10位或14位并行数据进行并串转换时,需要对OSERDSES2进行级联。本实验以10位输入数据并串转换为例进行说明。

3.1、设计代码

俩个OSERDESE2级联,修改位宽,添加从OSERDESE2,连接SHIFT引脚,修改位宽即可。

module serdes_top(
   input          i_clk       ,
   input          i_div_clk   ,
   input          i_rst       ,
   input  [9 :0]  i_par_data  ,
   output         o_ser_data  
);
    
wire OFB          ;
wire w_shiftout1  ;
wire w_shiftout2  ;
    
   OSERDESE2 #(
      .DATA_RATE_OQ     ("DDR"         ), // DDR, SDR
      .DATA_RATE_TQ     ("DDR"         ), // DDR, BUF, SDR
      .DATA_WIDTH       (10            ), // Parallel data width (2-8,10,14)
      .INIT_OQ          (1'b0          ), // Initial value of OQ output (1'b0,1'b1)
      .INIT_TQ          (1'b0          ), // Initial value of TQ output (1'b0,1'b1)
      .SERDES_MODE      ("MASTER"      ), // MASTER, SLAVE
      .SRVAL_OQ         (1'b0          ), // OQ output value when SR is used (1'b0,1'b1)
      .SRVAL_TQ         (1'b0          ), // TQ output value when SR is used (1'b0,1'b1)
      .TBYTE_CTL        ("FALSE"       ), // Enable tristate byte operation (FALSE, TRUE)
      .TBYTE_SRC        ("FALSE"       ), // Tristate byte source (FALSE, TRUE)
      .TRISTATE_WIDTH   (1             )  // 3-state converter width (1,4)
   )
   OSERDESE2_inst (
      .OFB              (OFB           ), // 1-bit output: Feedback path for data
      .OQ               (o_ser_data    ), // 1-bit output: Data path output
      // SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each)
      .SHIFTOUT1        (              ),
      .SHIFTOUT2        (              ),
      .TBYTEOUT         (              ), // 1-bit output: Byte group tristate
      .TFB              (              ), // 1-bit output: 3-state control
      .TQ               (              ), // 1-bit output: 3-state control
      .CLK              (i_clk         ), // 1-bit input: High speed clock
      .CLKDIV           (i_div_clk     ), // 1-bit input: Divided clock
      // D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
      .D1               (i_par_data[0] ),
      .D2               (i_par_data[1] ),
      .D3               (i_par_data[2] ),
      .D4               (i_par_data[3] ),
      .D5               (i_par_data[4] ),
      .D6               (i_par_data[5] ),
      .D7               (i_par_data[6] ),
      .D8               (i_par_data[7] ),
      .OCE              (1'b1          ), // 1-bit input: Output data clock enable
      .RST              (i_rst         ), // 1-bit input: Reset
      // SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
      .SHIFTIN1         (w_shiftout1   ),
      .SHIFTIN2         (w_shiftout2   ),
      // T1 - T4: 1-bit (each) input: Parallel 3-state inputs
      .T1               (1'b0          ),
      .T2               (1'b0          ),
      .T3               (1'b0          ),
      .T4               (1'b0          ),
      .TBYTEIN          (1'b0          ), // 1-bit input: Byte group tristate
      .TCE              (1'b0          )  // 1-bit input: 3-state clock enable
   );

   OSERDESE2 #(
      .DATA_RATE_OQ     ("DDR"         ), // DDR, SDR
      .DATA_RATE_TQ     ("DDR"         ), // DDR, BUF, SDR
      .DATA_WIDTH       (10            ), // Parallel data width (2-8,10,14)
      .INIT_OQ          (1'b0          ), // Initial value of OQ output (1'b0,1'b1)
      .INIT_TQ          (1'b0          ), // Initial value of TQ output (1'b0,1'b1)
      .SERDES_MODE      ("SLAVE"      ), // MASTER, SLAVE
      .SRVAL_OQ         (1'b0          ), // OQ output value when SR is used (1'b0,1'b1)
      .SRVAL_TQ         (1'b0          ), // TQ output value when SR is used (1'b0,1'b1)
      .TBYTE_CTL        ("FALSE"       ), // Enable tristate byte operation (FALSE, TRUE)
      .TBYTE_SRC        ("FALSE"       ), // Tristate byte source (FALSE, TRUE)
      .TRISTATE_WIDTH   (1             )  // 3-state converter width (1,4)
   )
   OSERDESE2_inst1 (
      .OFB              (           ), // 1-bit output: Feedback path for data
      .OQ               (    ), // 1-bit output: Data path output
      // SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each)
      .SHIFTOUT1        (w_shiftout1   ),
      .SHIFTOUT2        (w_shiftout2   ),
      .TBYTEOUT         (              ), // 1-bit output: Byte group tristate
      .TFB              (              ), // 1-bit output: 3-state control
      .TQ               (              ), // 1-bit output: 3-state control
      .CLK              (i_clk         ), // 1-bit input: High speed clock
      .CLKDIV           (i_div_clk     ), // 1-bit input: Divided clock
      // D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
      .D1               (),
      .D2               (),
      .D3               (i_par_data[8] ),
      .D4               (i_par_data[9] ),
      // .D5               (),
      // .D6               (),
      // .D7               (),
      // .D8               (),
      .D5               (),
      .D6               (),
      .D7               (),
      .D8               (),
      .OCE              (1'b1          ), // 1-bit input: Output data clock enable
      .RST              (i_rst         ), // 1-bit input: Reset
      // SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
      .SHIFTIN1         (),
      .SHIFTIN2         (),
      // T1 - T4: 1-bit (each) input: Parallel 3-state inputs
      .T1               (1'b0          ),
      .T2               (1'b0          ),
      .T3               (1'b0          ),
      .T4               (1'b0          ),
      .TBYTEIN          (1'b0          ), // 1-bit input: Byte group tristate
      .TCE              (1'b0          )  // 1-bit input: 3-state clock enable
   );
   
endmodule

3.2、testbench代码

首先需要修改时钟信号,因为输入输出位宽10:1,在DDR模式下,时钟比为5:1,其次修改位宽以及随机数产生即可。

3.3、代码分析

在这里插入图片描述
蓝色刻度线处采样到并行输入数据,黄色刻度线开始输出,延时为4个CLK,表中描述延时应当为5个CLK,但此处CLK和DIVCLK是对齐的,所有导致了一个CLK的变化。

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

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

相关文章

数字化那点事:一文读懂数字乡村

一、数字乡村的定义 数字乡村是指利用信息技术和数字化手段&#xff0c;推动乡村社会经济发展和治理模式变革&#xff0c;提升乡村治理能力和公共服务水平&#xff0c;实现乡村全面振兴的一种新型发展模式。它包括农业生产的数字化、乡村治理的智能化、乡村生活的现代化等方面…

智慧校园-医务管理系统总体概述

智慧校园医务管理系统&#xff0c;作为校园健康管理体系的智能化升级&#xff0c;深度融合信息技术与医疗服务&#xff0c;为师生构筑起一道全方位的健康守护网。医务管理系统以提升校园医疗服务水平、优化健康管理流程为核心目标&#xff0c;通过一系列创新功能&#xff0c;确…

29.9一份的烤鸭,抖音为什么卖不出去?

文 | 螳螂观察 作者 | 青月 这两年&#xff0c;我的抖音推荐里&#xff0c;越来越常出现附近几km内的美食推荐。 就在昨天晚上&#xff0c;当我惯常打开抖音&#xff0c;才刷了几个视频&#xff0c;就跳出了一家距离我只有1.6km的烤鸭店。 这个短视频中&#xff0c;烤鸭在滋…

Python数据分析案例47——笔记本电脑价格影响因素分析

案例背景 博主对电脑的价格和配置一直略有研究&#xff0c;正好最近也有笔记本电脑相关的数据&#xff0c;想着来做点分析吧&#xff0c;写成一个案例。基本上描述性统计&#xff0c;画图&#xff0c;分组聚合&#xff0c;机器学习&#xff0c;交叉验证&#xff0c;搜索超参数…

基于语音识别的智能电子病历(二)苹果端的语音接入

是2011年参与的&#xff0c;俺负责Wav文件处理、FTP通讯和一些后端部分。iPhone/iPad/iPod Recorder 前2年还在APP Store上 说明 Step-by-Step Procedure to Install App and Use the FnetRecorder Download the App from Apple Store Launch Apple Store and key in “fnetr…

SpringBoot学习05-[SpringBoot的嵌入式Servlet容器]

SpringBoot的嵌入式Servlet容器 嵌入式Servlet容器servlet容器-嵌入式servlet容器配置修改通过全局配置文件修改修改添加实现了WebServerFactoryCustomizer接口的bean来进行修改 servlet容器-注册servlet三大组件 嵌入式Servlet容器 SpringBoot包含对嵌入式Tomcat、Jetty、Und…

【案例分享】南通中远海运川崎船舶运动轨迹智能分析及预测

航运作为一种运量大、成本低的运输方式&#xff0c;在全球贸易货物运输中发挥着十分重要的作用。随着船舶数量的增加和船舶大型化发展&#xff0c;航运业面临着温室气体排放、人力成本增加、航行安全不足等诸多挑战。近年来&#xff0c;为应对上述挑战&#xff0c;目前航运业正…

已解决javax.xml.bind.MarshalException:在RMI中,参数或返回值无法被编组的正确解决方法,亲测有效!!!

已解决javax.xml.bind.MarshalException&#xff1a;在RMI中&#xff0c;参数或返回值无法被编组的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 服务器端代码 客户端代码 报错原因 解决思路 解决方法 1. 实现…

打造你的第一个STM32步进电机控制器:详细教程与实战技巧

1. 引言 步进电机因其精确的位置控制和较高的响应速度&#xff0c;在自动化设备、3D打印机、CNC机床等领域广泛应用。本文将详细介绍如何使用STM32微控制器来控制步进电机&#xff0c;从理论到实践&#xff0c;帮助读者全面掌握这一重要技术。 STM32系列微控制器以其强大的性…

从入口文件搭建php项目

入口文件index.php <?phprequire CallBack.php; // 处理回调请求逻辑 $bot new CallBack();// 请求方式 if (isset($_GET[method])) {$method $_GET[method];if (method_exists($bot, $method)) {return $bot->$method();} else {echo "没有该功能";die();…

多元时间序列分析——VAR(向量自回归模型)

VAR模型主要是考察多个变量之间的动态互动关系&#xff0c;从而解释各种经济冲击对经济变量形成的动态影响。这种动态关系可通过格兰杰因果关系、脉冲响应以及方差分解来进一步明确和可视化。VAR模型主要研究内生变量之间的关系&#xff0c;内生变量就是参与模型并由模型体系内…

SmartEDA革新来袭:融合Multisim与Proteus精髓,引领电子设计新纪元!

在电子设计领域&#xff0c;每一次技术的革新都如同春风化雨&#xff0c;滋润着设计师们的心田。今天&#xff0c;我们迎来了一个划时代的电子设计自动化&#xff08;EDA&#xff09;工具——SmartEDA&#xff0c;它不仅融合了业界知名的Multisim和Proteus的精华&#xff0c;更…

NPOI入门指南:轻松操作Excel文件的.NET库

目录 引言 一、NPOI概述 二、NPOI的主要用途 三、安装NPOI库 四、NPOI基本使用 六、性能优化和内存管理 七、常见问题与解决方案 八、结论 附录 引言 Excel文件作为数据处理的重要工具&#xff0c;广泛应用于各种场景。然而&#xff0c;在没有安装Microsoft Office的…

最近写javaweb出现的一个小bug---前端利用 form 表单传多项数据,后端 Servlet 取出的各项数据均为空

目录&#xff1a; 一. 问题引入二 解决问题 一. 问题引入 近在写一个 java web 项目时&#xff0c;遇到一个让我头疼了晚上的问题&#xff1a;前端通过 post 提交的 form 表单数据可以传到后端&#xff0c;但当我从 Servlet 中通过 request.getParameter(“name”) 拿取各项数…

正版软件 | R-Studio Corporate:企业级数据恢复的终极解决方案

数据是企业的生命线&#xff0c;而数据丢失可能随时威胁到企业的正常运营。R-Studio Corporate 是一款专为企业环境设计的多功能数据恢复软件&#xff0c;确保您在面临数据危机时&#xff0c;能够迅速、高效地恢复宝贵数据。 跨平台操作&#xff0c;灵活恢复 R-Studio Corporat…

小时候的子弹击中了现在的我-hive进阶:案例解析(第18天)

系列文章目录 一、Hive表操作 二、数据导入和导出 三、分区表 四、官方文档&#xff08;了解&#xff09; 五、分桶表&#xff08;熟悉&#xff09; 六、复杂类型&#xff08;熟悉&#xff09; 七、Hive乱码解决&#xff08;操作。可以不做&#xff0c;不影响&#xff09; 八、…

收银系统源码-千呼新零售2.0【线上营销】

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货等连锁店使用。 详细介绍请查看&a…

WINDOWS+PHP+Mysql+Apache环境中部署SQLi-Labs、XSS-Labs、UPload-Labs、DVWA、pikachu等靶场环境

web渗透测试学习&#xff0c;需要自己搭建一些靶场&#xff0c;本人主要介绍在WINDOWSPHPMysqlApache环境中部署SQLi-Labs、XSS-Labs、UPload-Labs、DVWA、pikachu等靶场环境。以下是靶场代码下载的链接&#xff1a; pikachu靶场代码 链接&#xff1a;https://pan.baidu.com/s…

GEO数据挖掘-富集分析、TinyArray简化流程、多组样本分析more

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 富集分析一些理论知识具体代码 富集不到的补救措施更多资料---问题数据和常见错误分析Part4-复杂数据及其分析多分组数据分析流程 tinyarray简化版本分析流程多分组…

Interview preparation--Elasticsearch写入原理与调优

ES的写入过程 ES支持的写操作 create&#xff1a; create操作不同于put操作&#xff0c;put操作的时候如果当前put的数据存在则会被覆盖&#xff0c;如果put操作的时候加上操作类型create&#xff0c;如果数据存在则会返回失败&#xff0c;比如&#xff1a;PUT /pruduct/_cre…