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

文章目录

  • 前言
  • 一、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.mfbz.cn/a/755555.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rabbit MQ安装详细记录

RabbitMQ是Erlang语言开发的&#xff0c;因此安装Erlang环境在进行安装RbbitMQ的操作&#xff0c;选择两者版本时一定要参考版本的兼容性。 查看RabbitMQ和Erlang版本对应关系&#xff1a;https://www.rabbitmq.com/which-erlang.html 一、下载地址 下载Erlang地址 : https:…

【RT摩拳擦掌】RT云端测试之百度天工物接入构建(设备型)

【RT摩拳擦掌】RT云端测试之百度天工物接入构建&#xff08;设备型&#xff09; 一&#xff0c; 文档介绍二&#xff0c; 物接入IOT Hub物影子构建2.1 创建设备型项目2.2 创建物模型2.3 创建物影子 三&#xff0c; MQTT fx客户端连接云端3.1 MQTT fx配置3.2 MQTT fx订阅3.3 MQT…

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

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

Nvidia Jetson/RK3588+AI双目立体相机,适合各种割草机器人、扫地机器人、AGV等应用

双目立体视觉是基于视差原理&#xff0c;依据成像设备从不同位置获取的被测物体的图像&#xff0c;匹配对应点的位置偏移&#xff0c;得到视差数据&#xff0c;进而计算物体的空间三维信息。为您带来高图像质量的双目立体相机&#xff0c;具有高分辨率、低功耗、远距离等优点&a…

DIYGW UniApp低代码可视化平台:高效、灵活、安全的应用开发新途径

一、引言 在数字化快速发展的今天&#xff0c;企业对于快速构建多端应用的需求日益增长。然而&#xff0c;传统的应用开发方式往往面临周期长、成本高、技术门槛高等问题。为了解决这些问题&#xff0c;DIYGW UniApp低代码可视化平台应运而生&#xff0c;它以高效率、多端使用…

动态人物抠图换背景 MediaPipe

pip下载 MediaPipe pip install mediapipe -i 手部特征点模型包包含一个手掌检测模型和一个手部特征点检测模型。手掌检测模型在输入图片中定位手部&#xff0c;手部特征点检测模型可识别手掌检测模型定义的被剪裁手掌图片上的特定手部特征点。 由于运行手掌检测模型非常耗时&…

面试突击:HashMap 源码详解

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 数据结构 JDK1.8 之前 JDK1.8 之前 HashMap 采用 数组和链表 结合的数据结构。如下图&#xff1a; HashMap 将 key 的 hashCode 经过扰动函数处理过后得到 hash 值&#…

用C/C++写一个客户端和服务器之间进行TCP通信的DEMO

目录 一、Visual Sudio 2022 二、配置 三、说明 四、客户端 五、服务端 六、演示 一、Visual Sudio 2022 Visual Studio 2022是微软公司推出的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在为开发人员提供全面的工具集&#xff0c;支持从Windows到MacOS…

【算法专题--链表】两数相加 -- 高频面试题(图文详解,小白一看就懂!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双指针 -- 模拟进位 (使用哨兵位头节点) &#x1f95d; 什么是哨兵位头节点&#xff1f; &#x1f347;思路解析 &#x1f34d;案例图解 四、总结与提炼 五、共勉 一、前言 两数相加 这道题&#xff0c;可以说是--…

Linux Swap

Swap: 页面换出&#xff1a;就是在 Swap 机制下&#xff0c;当内存资源紧张时&#xff0c;内核就会把不经常使用的这些匿名页中的数据写入到 Swap 分区或者 Swap 文件中。从而释放这些数据所占用的内存空间。 页面换入&#xff1a;就是当进程再次访问那些被换出的数据时&…

如何修复Power BI【View usage metrics report】指标报表数据源更新问题?

故事背景 有朋友留言询问&#xff1a;通过我之前写的 想知道Power BI用户访问报告的次数&#xff1f;快来学习&#xff01; 这篇文章&#xff0c;了解了如何查看Power BI用户访问报告的详情。 但是最近由于创建【View usage metrics report】指标报表的小伙伴离职了&#x…

【数据可视化技术】1、如何使用Matplotlib和Seaborn库在Python中绘制热力图

热力图是一种数据可视化技术&#xff0c;可以显示变量之间的相关性。这个代码段是数据分析和可视化的常用方法&#xff0c;特别适合于展示变量之间的相关性&#xff0c;对于数据科学和机器学习项目非常有帮助。 1、 导入必要的库 首先&#xff0c;确保你已经安装了matplotlib…

苏州网站建设好做吗

苏州网站建设是一个非常热门的行业&#xff0c;由于苏州地理位置优越、经济发达、人口众多&#xff0c;所以网站建设市场也非常火爆。但是在苏州网站建设这个行业中&#xff0c;竞争也是非常激烈的&#xff0c;所以想要在这个市场中脱颖而出并不是件容易的事情。 首先&#xff…

break和continue的标签使用

break标签的使用 break label是退出label对应的循环 //BreakDetail.java //2024.06.29 public class BreakDetail{public static void main(String[] args) {label1:for(int j 0; j < 4; j){label2:for(int i 0; i < 10; i){if(i 2){//break; //情况1//break label2…

信息系统项目管理师(项目整合管理)补充

项目管理信息系统&#xff1a;给项目提供了IT软件工具&#xff0c;例如进度计划软件工具、工作授权系统、配置管理系统、信息收集与发布系统&#xff0c;或其他基于IT技术的工具。以及进入其他在线信息系统&#xff08;如知识库&#xff09;的登录界面&#xff0c;支持自动收集…

应用部署方式演变

应用部署方式演变 1.传统部署2.虚拟化部署3.容器化部署 1.传统部署 传统的应用程序部署是将多个应用程序直接部署在操作系统上&#xff0c;一旦其中的某个应用程序出现内存泄漏&#xff0c;那么该程序就会大量吞噬系统内容空间&#xff0c;导致其他应用程序无法正常运行。 2.虚…

docker 学习之路

文章目录 1、官方文档2、常用命令挂载Docker容器内运行的脚本或命令常用 3、介绍4、Dockerfile5、问题6、链接 ​ 1、官方文档 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux…

人工智能在多模态多组学领域的最新研究进展|顶刊速递·24-06-29

小罗碎碎念 本期推文主题&#xff1a;人工智能在多模态与多组学中的最新研究进展 今天这期推文比较特殊&#xff0c;起来就开始干活&#xff0c;只能跑来会场写了。 小罗观点 今天这期推文覆盖面挺广的&#xff0c;前四篇与肿瘤治疗相关&#xff0c;并且两篇都直接与免疫微环境…

【算法学习】射线法判断点在多边形内外(C#)以及确定内外两点连线与边界的交点

1.前言&#xff1a; 在GIS开发中&#xff0c;经常会遇到确定一个坐标点是否在一块区域的内部这一问题。 如果这个问题不是一个单纯的数学问题&#xff0c;例如&#xff1a;在判断DEM、二维图像像素点、3D点云点等含有自身特征信息的这些点是否在一个区域范围内部的时候&#x…

eclipse基础工程配置( tomcat配置JRE环境)

文章目录 I eclipse1.1 工程配置1.2 编译工程1.3 添加 JRE for the project build pathII tomcat配置JRE环境2.1 Eclipse编辑tomcat运行环境(Mac版本)2.2 Eclipse编辑tomcat运行环境(windows版本)2.3 通过tomcat7W.exe配置运行环境(windows系统)I eclipse 1.1 工程配置 …