1 FPGA组成原理——IO资源

文章目录

一、前言

本文是FPGA组成原理教程的IO资源原理篇,FPGA六大资源:IO资源、逻辑资源、存储资源、时钟资源、布线资源和专用硬核,后续有时间出一篇有关FPGA组成结构的概述文章。
在开始阅读本文之前,这里先问大家一个问题:各位对IO的理解是什么? 可能对于绝大多数初学者而言,IO就是一个普通的管脚,没什么特别。各位在FPGA开发时应该都做过IO分配,如引脚位置、输出驱动电流和上下拉等,作为FPGA六大资源之一的IO真的仅局限于管脚的分配吗?
经验丰富的开发者可能接触过IBUFDS、OBUFDS、IDDR、ODDR、ISERDESE2、OSERDESE2、IDELAYE2和ODELAYE2等原语(各类原语具体作用可自行查询相关技术资料),其实这些原语都属于IO资源。什么是IO?它的基本构成是什么?信号从管脚到FPGA内部逻辑电路之间都经历了哪些电路处理?本文将带着上述问题分析当前国内外主要厂商FPGA的IO架构。

二、基本组成

当前主流FPGA厂商的IO结构(Xilinx称其IO技术为SelectIO)通常包含IO BUFFER(后续简称IOB)​ 和IO LOGIC(后续简称IOL)两部分。 Xilinx IO组成如下图(参考UG471 Figure 2-1和Figure 2-2):

Xilinx IO结构


Xilinx IO结构


紫光Logos系列产品的IO组成如下图(参考Pango UG020006 图1-1),其中左侧为IOL而右侧为IOB:

紫光IO结构


高云产品的IO同样包括IOB和IOL两部分,具体组成如下图(参考Gowin UG289 图2-1):

高云IO结构


各厂商IO结构基本一致,但Xilinx把ISERDES和OSERDES视为“Advance SelectIO Logic Resources”,而其他厂商普遍将上述部件划分到IOL范畴, 这里个人更倾向其余厂商的做法。下表详细列出了各厂商IO组件的具体命名:

-Xilinx紫光安路高云
IOBIOBIO BUFFERIOB输入输出缓存
IOLSelectIO Logic ResourcesIO LOGICIOL输入输出逻辑

IOB主要负责处理电气特性,具体作用包括:

  1. 信号类型转换: 由于FPGA内部资源通常采用单端信号进行互联,因此需将差分输入信号转化为单端信号或将FPGA内部单端信号转化为差分信号再进行输出;
  2. 电平标准转换: 外部信号电平标准可能为LVCMOS、LVTTL、SSTL和LVDS等,但FPGA内部资源通常为单一电源供电,如CLB使用VCCINT电源供电,因此需对电平进行转换;
  3. 其他: 如IO压摆率设置和上下拉电阻设置等。

而IOL则用于实现特定逻辑功能,具体作用包括:

  1. 串并转换(具体原理可阅读本人串并转换专题文章): 将高速串行输入数据转化为并行数据以便于FPGA内部处理,或将FPGA内部并行数据转化为高速串行数据进行输出;
  2. SDR/DDR转换(具体原理可阅读本人IDDRODDR专题文章): 将SDR信号转换为DDR信号;
  3. 其他: 如信号延时和输入输出寄存器等。

2.1 IOB

IOB的复杂度较高且更多涉及底层电路,同时不同厂商的IOB具体配置存在较大差异。此外个人对这部分内容了解程度相对有限, 下面给出各厂商IOB原理示意图作为学习参考。
下图为安路DR1系列FPGA的IOB基本组成结构原理图(参考Anlogic UG1210 图2-1),该示意图直观展示了IOB的多种功能特性,包括可编程上下拉电阻(图中标注为Programmable Pull up/down)、三态控制(图中标注为Driver)、LVDS电平标准支持(图中标注为LVDS)以及差分信号的片内终端电阻配置(图中标注为100Ω)等。(PS:下图相对通俗易懂)

Anlogic IOB原理图


下图为Xilinx FPGA Regular HR Bank IO的IOB基本组成结构原理图(参考UG471 Figure 1-4)(PS:相对比较抽象)

Xilinx IOB原理图


有关IOB各项功能的使用方法,可参阅相关文档,此处不赘述具体操作说明。

2.2 IOL

IOL的复杂度也比较高,但由于其主要为数字电路,因此相比IOB更容易学习和理解, 下面同样给出各厂商IOL原理示意图作为学习参考。
下图为高云FPGA的IOL输入逻辑的基本组成结构原理图(参考Gowin UG289 图4-1),该示意图直观展示了IOL的多种功能特性,包括信号延时(图中标注为IDELAY)、输入寄存器(图中标注为IREG)、串并转换(图中标注为IDES)和输入边沿监测(图中标注为IEM)等。

Gowin IOL原理图


下图为高云FPGA的IOL输出逻辑的基本组成结构原理图(参考Gowin UG289 图4-1),该示意图直观展示了IOL的多种功能特性,包括信号延时(图中标注为IODELAY)、输出寄存器(图中标注为OREG)和并串转换(图中标注为OSER)等。

Gowin IOL原理图


有关IOL各项功能的使用方法,可参阅相关文档,此处同样不赘述具体操作说明。

三、一些思考

在FPGA开发过程中,IOB主要体现在管脚约束设置, 如以下约束条件将led信号分配到L16管脚,采用LVCMOS33电平标准,配置16mA驱动电流,禁用上下拉电阻,并选择低速摆率模式。实际上管脚约束就是配置IOB电路,只是开发工具会自动根据约束完成具体的过程。

set_pin_assignment { led } { LOCATION = L16; IOSTANDARD = LVCMOS33; DRIVESTRENGTH = 16; PULLTYPE = NONE; SLEWRATE = SLOW; } 

而IOL主要体现在原语调用, 如以下原语将输入的rgmii_rxd DDR信号转化为SDR信号。当然并不是所有原语都属于IOL,IOB也有部分功能需要调用原语才能使用,如调用IBUFDS原语实现差分转单端功能。

genvar i; generate for (i = 0; i < 4; i = i + 1) begin: rxdata_bus IDDR # ( .DDR_CLK_EDGE("SAME_EDGE_PIPELINED"), .INIT_Q1(1'b0), .INIT_Q2(1'b0), .SRTYPE("SYNC") ) u_iddr_rxd ( .Q1(gmii_rxd[i]), // 1-bit output for positive edge of clock .Q2(gmii_rxd[4+i]), // 1-bit output for negative edge of clock .C(rgmii_rxc_bufio), // 1-bit clock input rgmii_rxc_bufio .CE(1'b1), // 1-bit clock enable input .D(rgmii_rxd[i]), // 1-bit DDR data input .R(1'b0), // 1-bit reset .S(1'b0) // 1-bit set ); end endgenerate 

最后回到文章开头的问题,什么是IO?IO是FPGA中一系列硬件资源的统称!基本构成?FPGA IO包括IOB和IOL两部分,其中IOB主要用于处理电气特性(如单端转差分),IOL主要用于实现特定逻辑功能(如串并转换)!

四、个人声明

本文由个人整理、创作,旨在进行个人学习、研究或记录,不用于任何商业性行为,文中部分内容参考以下资料:

Xilinx Inc. 7 Series FPGA SelectIO Resources User Guide(UG471).Pango Inc. Logos系列FPGA输入输出接口(IO)用户手册(UG020006).Anlogic Inc. SF1 FPGA IO用户指南(TN805).Anlogic Inc. DR1 FPGA IO用户指南(UG1210).Gowin Inc. 可编程通用管脚用户指南(UG289).

本文引用的任何第三方资料,其知识产权(包括但不限于著作权、商标权等)均归原作者或原始权利人所有。本文对这些内容不主张任何权利。

Read more

全面的System Verilog教程:从基础到高级验证

本文还有配套的精品资源,点击获取 简介:System Verilog是用于系统级验证、芯片设计与验证以及FPGA实现的强大硬件描述语言。它扩展了Verilog的基础特性,支持高级语言结构,如类、接口、任务和函数,优化了验证流程。教程内容涵盖System Verilog的基础概念、结构化编程元素、并发与同步机制、现代验证方法学、UVM验证方法论以及标准库的应用。旨在教授学生掌握System Verilog语法和高级特性,实现高效、可维护的验证代码。 1. System Verilog概述及应用领域 1.1 System Verilog的起源与发展 System Verilog是作为硬件设计和验证领域的重要语言,由Verilog发展而来,随后被进一步扩展以满足现代电子设计自动化的需要。其发展始于20世纪90年代,目的是在原有Verilog HDL的基础上,提供更为强大的设计验证功能。 1.1.1 Verilog与VHDL的区别 虽然Verilog和VHDL都是硬件描述语言(HDL),但它们在语法和使用方法上存在差异。Verilog更接近于C语言,而VHDL的语法结构则更接近

Flutter 三方库 eth_sig_util 的鸿蒙化适配指南 - 掌握以太坊加密签名核心技术、助力鸿蒙端 Web3 钱包与去中心化身份验证应用开发

Flutter 三方库 eth_sig_util 的鸿蒙化适配指南 - 掌握以太坊加密签名核心技术、助力鸿蒙端 Web3 钱包与去中心化身份验证应用开发

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 eth_sig_util 的鸿蒙化适配指南 - 掌握以太坊加密签名核心技术、助力鸿蒙端 Web3 钱包与去中心化身份验证应用开发 前言 在 OpenHarmony 鸿蒙应用的 Web3 浪潮中,安全性是应用生死存亡的关键。无论是构建非托管钱包、登录去中心化应用(dApp),还是执行 EIP-712 结构化数据的确认,都离不开严谨的以太坊签名与加密协议。eth_sig_util 作为一个专门针对以太坊签名习惯优化的 Dart 工具库,支持 personal_sign、signTypedData 以及公钥恢复等核心算法。本文将指导你如何在鸿蒙端集成 eth_sig_util,构建一套符合全球标准的加密验证体系。 一、原原理分析 / 概念介绍 1.

3分钟学会Whisper-WebUI:免费语音转文字终极指南

还在为会议录音整理发愁吗?面对长达数小时的音频文件,手动转写不仅耗时耗力,还容易出错。Whisper-WebUI正是为了解决这一痛点而生的开源工具,让语音转文字变得像拍照一样简单! 【免费下载链接】Whisper-WebUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisper-WebUI 什么是Whisper-WebUI? Whisper-WebUI是一个基于OpenAI Whisper模型的语音转文字Web界面,支持多种语言识别、实时转录、音频分离等强大功能。无论你是学生整理课堂笔记,还是职场人士处理会议录音,这个工具都能帮你节省大量时间。 核心优势: * 🎯 支持70多种语言自动识别 * ⚡ 处理速度比传统方法快很多 * 🆓 完全免费开源,无需付费订阅 * 📱 支持本地部署,数据安全有保障 快速上手:5步安装指南 环境准备 首先确保你的电脑满足以下要求: * 操作系统:Windows 10/11、macOS 10.14+ 或 Linux * Python版本:3.8或更高 * 内存:至少4GB(