《Xilinx - UG471中文翻译》(2)ISERDESE2原语介绍

news/2024/7/3 19:42:53 标签: fpga

目录

1.前言

2.ISERDESE2原语介绍

3.原语例化

4.ISERDESE2框图

5. ISERDESE2端口信号

5.1时钟接口

5.2并行数据输出

5.3 数据输出选择

5.4级联接口

6.数据对齐操作


1.前言

本文仅对UG471 第3章《Advanced SelectIO Logic Resources》部分进行翻译和学习解读。

其他部分,后续补充。

水平所限,有不足之处,欢迎拍砖。

2.ISERDESE2原语介绍

SERDESE2是专用的串并转换器,它在完成串并转换时并不会带来多余的时序上的问题,从而很适合应用到高速源同步应用中。比如摄像头数据。

  • 专用解串器/串并转换器

它可以完成高速数据传输同时不需要FPGA端匹配数据频率,这个转换器支持SDR(single data rate)和DDR(double data rate)。SDR模式支持2-,3-,4-,5-,6-,7-,8bit位宽;DDR模式支持4-,6-,8-bit位宽。10或14-bit需要两个级联。

  • Bitslip 子模块

该子模块可以使设计者重新排列输入的并行数据。可用于源同步tranining。

  • 对strobe-based 类型存储接口的专用支持
  • 对networking接口的专用支持
  • 对DDR3接口的专用支持
  • 对QDR接口的专用支持
  • 对异步接口的专用支持

3.原语例化

ISERDESE2 #(
      .DATA_RATE("DDR"),           // DDR, SDR
      .DATA_WIDTH(4),              // Parallel data width (2-8,10,14)
      .DYN_CLKDIV_INV_EN("FALSE"), // Enable DYNCLKDIVINVSEL inversion (FALSE, TRUE)
      .DYN_CLK_INV_EN("FALSE"),    // Enable DYNCLKINVSEL inversion (FALSE, TRUE)
      // INIT_Q1 - INIT_Q4: Initial value on the Q outputs (0/1)
      .INIT_Q1(1'b0),
      .INIT_Q2(1'b0),
      .INIT_Q3(1'b0),
      .INIT_Q4(1'b0),
      .INTERFACE_TYPE("MEMORY"),   // MEMORY, MEMORY_DDR3, MEMORY_QDR, NETWORKING, OVERSAMPLE
      .IOBDELAY("NONE"),           // NONE, BOTH, IBUF, IFD
      .NUM_CE(2),                  // Number of clock enables (1,2)
      .OFB_USED("FALSE"),          // Select OFB path (FALSE, TRUE)
      .SERDES_MODE("MASTER"),      // MASTER, SLAVE
      // SRVAL_Q1 - SRVAL_Q4: Q output values when SR is used (0/1)
      .SRVAL_Q1(1'b0),
      .SRVAL_Q2(1'b0),
      .SRVAL_Q3(1'b0),
      .SRVAL_Q4(1'b0)
   )
   ISERDESE2_inst (
      .O(O),                       // 1-bit output: Combinatorial output
      // Q1 - Q8: 1-bit (each) output: Registered data outputs
      .Q1(Q1),
      .Q2(Q2),
      .Q3(Q3),
      .Q4(Q4),
      .Q5(Q5),
      .Q6(Q6),
      .Q7(Q7),
      .Q8(Q8),
      // SHIFTOUT1, SHIFTOUT2: 1-bit (each) output: Data width expansion output ports
      .SHIFTOUT1(SHIFTOUT1),
      .SHIFTOUT2(SHIFTOUT2),
      .BITSLIP(BITSLIP),           // 1-bit input: The BITSLIP pin performs a Bitslip 
      // CE1, CE2: 1-bit (each) input: Data register clock enable inputs
      .CE1(CE1),
      .CE2(CE2),
      .CLKDIVP(CLKDIVP),           // 1-bit input: TBD
      // Clocks: 1-bit (each) input: ISERDESE2 clock input ports
      .CLK(CLK),                   // 1-bit input: High-speed clock
      .CLKB(CLKB),                 // 1-bit input: High-speed secondary clock
      .CLKDIV(CLKDIV),             // 1-bit input: Divided clock
      .OCLK(OCLK),                 // 1-bit input: High speed output clock used when INTERFACE_TYPE="MEMORY" 
      // Dynamic Clock Inversions: 1-bit (each) input: Dynamic clock inversion pins to switch clock polarity
      .DYNCLKDIVSEL(DYNCLKDIVSEL), // 1-bit input: Dynamic CLKDIV inversion
      .DYNCLKSEL(DYNCLKSEL),       // 1-bit input: Dynamic CLK/CLKB inversion
      // Input Data: 1-bit (each) input: ISERDESE2 data input ports
      .D(D),                       // 1-bit input: Data input
      .DDLY(DDLY),                 // 1-bit input: Serial data from IDELAYE2
      .OFB(OFB),                   // 1-bit input: Data feedback from OSERDESE2
      .OCLKB(OCLKB),               // 1-bit input: High speed negative edge output clock
      .RST(RST),                   // 1-bit input: Active high asynchronous reset
      // SHIFTIN1, SHIFTIN2: 1-bit (each) input: Data width expansion input ports
      .SHIFTIN1(SHIFTIN1),
      .SHIFTIN2(SHIFTIN2)
   );

4.ISERDESE2框图

  • 串行输入: 即串行数据输入(D: 与IOB相连, DDLY来源于IDELAYE2原语的输出)
  • 时钟接口:包含高速时钟CLK ,分频时钟CLKDIV等;
  • 数据对齐模块:Bitslip,用于源同步,重新排列输入的并行数据;
  • 组合输出O:O输出不寄存,根据参数配置输出D / DDLY;
  • 级联接口:1个ISERDESE2最大位宽为8位,想要实现10-,14bit的数据,就需要级联两个ISERDESE2;
  • 并行数据输出:Q1-Q8 

5. ISERDESE2端口信号

端口名称

I/O

位宽

描述

Q1-Q8

O

1(each)

并行数据输出;注意输出顺序与输入顺序相反;后文细讲

O

O

1

组合输出,后文细讲

SHIFTOUT1

O

1

扩展位宽,级联接口

SHIFTOUT2

O

1

扩展位宽,级联接口

D

I

1

IOB串行数据输入

DDLY

I

1

来自IDELAYE2的串行数据输入

CLK

I

1

高速时钟输入

CLKB

I

1

只用于“MEMORY_QDR”模式,其余模式CLKB=~CLK

CE1,CE2

I

1

时钟使能输入,根据参数NUM_CE确定

RST

I

1

复位,高有效

CLKDIV

I

1

低速时钟,用于数据对齐等模块

CLKDIVP

I

1

只用于“MEMORY_DDR3”模式,其余模式接地

OCLK

I

1

用于时钟域转换,与CLK资源共享,“NETWORKING”模式不使用

OCLKB

I

1

与OSERDESE2的CLKB资源共享

BITSLIP

I

1

用于数据对齐操作,后文重点讲解

SHIFTIN1

I

1

扩展位宽,级联接口

SHIFTIN2

I

1

扩展位宽,级联接口

OFB

I

1

OLOGICE2输出的的反馈输入

DYNCLKDIVSEL

I

1

动态时钟输入选择,一般不用

DYNCLKSEL

I

1

动态时钟输入选择,一般不用

重点关注标黄的信号

有些地方可能翻译的不是很准确,附上手册原文。

5.1时钟接口

提供ISERDESE2工作的高速源同步串行时钟,并行数据获取时钟和控制时钟。

5.2并行数据输出

输入输出的顺序相反,具体见下图:

当输入D1为A,输出Q8为A

5.3 数据输出选择

根据IOBDELAY参数设置的不同,组合输出O与寄存输出Q1-Q8的输出选择:

D  、 DDLY 的意思前文已讲过,不再重复。

5.4级联接口

该接口用于实现DDR模式下,位宽扩展为10bit,14bit;

通过级联接口与另外一个ISERDESE2相接;

6.数据对齐操作

SDR Mode:

输出每次左移1位;当8次操作后,恢复到最初状态;

DDR Mode:

输出交替进行右移1位和左移3位操作,当8次操作后,恢复到最初状态;

注意:

  1. 同步于CLKDIV时钟,本小节所说的时钟周期特指CLKDIV时钟周期
  2. 在“NETWORKING”模式下使用
  3. 类似于一个桶式移位”Barrel_Shifter
  4. bitslip只能拉高1个clkdiv时钟周期
  5. bitslip两次拉高之间必须间隔至少一个时钟周期;
  6. 用户逻辑需等待最少2个clkdiv时钟周期(SDR模式)/3个时钟周期(DDR)后,数据移位才能完成。

-----------------------------2021-10-26晚10:00. 洗洗睡了,未完待续


http://www.niftyadmin.cn/n/1076211.html

相关文章

OpenStack-Placement组件部署详解(T版)

OpenStack-Placement组件部署一、创建数据库实例和数据库用户二、创建Placement服务用户和API的endpoint小结一、创建数据库实例和数据库用户 [rootct ~]# mysql -uroot -p123456MariaDB [(none)]> CREATE DATABASE placement; Query OK, 1 row affected (0.000 sec)MariaD…

《Xilinx - UG471中文翻译》(1)IDELAYE2原语介绍

目录 一、7 系列FPGAs SelectIO 资源 二、selectIO的逻辑资源 2.1 ILOGIC 2.2 IDELAY 2.3 IDELAYCTRL 2.4 ODELAY 2.5 OLOGIC 三、IDELAYE2原语 3.1IDELAYE2属性 3.2IDELAYE2端口 3.2.1延迟控制 3.3时序图 3.4仿真测试 四、高级selectIO逻辑资源 一、7 系列FPGAs…

范数 L1 L2

在线性代数,函数分析等数学分支中,范数(Norm)是一个函数,是赋予某个向量空间(或矩阵)中的每个向量以长度或大小的函数。对于零向量,令其长度为零。直观的说,向量或矩阵的…

Xilinx FPGA平台DDR3设计保姆式教程(1)DDR3基础简介

如果我们只是拿来用ddr搬砖,那么它就简单,知道IP怎么使用就好,但是要想知其所以然,理论知识是必备的,这也是我们初学者所欠缺的东西,慢慢修炼吧! 汇总篇: Xilinx平台DDR3设计保姆式…

python学习资料资源

廖雪峰python教程: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 简明python教程: http://www.kuqin.com/abyteofpython_cn/index.html 菜鸟教程: http://www.runoob.com/python/python-tutorial.html 知乎: https://www.zhihu.com/qu…

如何将hive表中的数据导出

近期经常将现场的数据带回公司测试,所以写下该文章,梳理一下思路。 1.首先要查询相应的hive表,比如我要将c_cons这张表导出,我先查出hive中是否有这张表。 查出数据,证明该表在hive中存在。 2.查询该表的表结构&#x…

Docker容器技术概述

Docker容器技术概述Docker简介Docker的应用场景Docker 的优点理解Docker的工作原理Docker简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c…

cpu_ops、suspend_ops、arm_idle_driver以及machine_restart/machine_power_off到底层PSCI Firmware分析...

在内核中针对的cpu的操作,比如arm_cpuidle_init、arm_cpuidle_suspend、boot_secondary、secondary_start_kernel、op_cpu_disable、op_cpu_kill、cpu_die、smp_cpu_setup、smp_prepare_cpus的都会回落到对cpu_ops的调用。 cpu_ops将针对底层cpu的操作抽象为一系列回…