FPGA电路设计1——芯片原理图和封装制作流程

作为一名FPGA学习者,我还是非常想学会如何设计FPGA 电路板的,之前都是写功能代码,还没去了解过FPGA电路板应该怎么去设计和制作,因此想慢慢记录这个学习过程,本文以XC7KCT为例。

1.引脚信息下载

在xilinx FPGA官网的"资源与支持"中点击"封装管脚分配文件",进入到"Package Files Portal"界面,然后选择对应的器件,如Kintex 7 FPGA Package Device Pinout Files,然后下载对应芯片的管教分配文件。

流程如下:

(1)进入官网(AMD ׀ together we advance_AI

(2)选择"封装管脚分配文件"(Package Pinout Files):

(3)选择Kintex™ 7 FPGA Package Files:(该界面的链接:Package Pinout Files

(4)点击下载zip,里面包含了对应芯片的管脚分配文件(该界面的链接:Kintex 7 Package Device Pinout Files):

下载之后会得到,以下文件:

点开xc7k325tffg676.csv,可以看到该芯片的引脚,以及所处的bank,引脚的类型:

以上就是下载FPGA芯片的引脚分配的方法,接下来就是绘制原理图。

2025-12-16-lhw:

其实在文件ug475_Packaging and Pinout.pdf中也可以直接下载元器件的封装,只要点击芯片

对应的封装就可以下载了。

2.原理图库绘制

2.1bank的划分

在绘制 FPGA 原理图库(Symbol)时,为提高可读性与模块化管理,通常依据物理架构将引脚划分为 Bank 0 (配置与系统)HR Bank (宽电压 IO)HP Bank (高性能 IO) 以及 MGT Bank (高速收发器) 四大部分。具体定义如下:

  • Bank 0 (System Config): 主要负责系统上电复位、JTAG 调试及配置模式选择,通常包含相关的辅助电源引脚,是 FPGA 正常启动的基础。

  • HR Bank (High Range I/O): 通用 I/O Bank,特点是支持宽电压范围(1.2V ~ 3.3V)。适用于连接 2.5V/3.3V 的外设或低速控制信号。

  • HP Bank (High Performance I/O): 高性能 I/O Bank,针对高速信号优化,仅支持 1.8V 及以下电压(如 1.2V/1.5V/1.8V)。常用于 DDR3/4 内存接口或 LVDS 差分信号。

  • MGT/GTX Bank (Gigabit Transceivers): 高速串行收发器 Bank。与运行在 MHz 级别的普通 IO 不同,GTX 专用于实现 Gbps 级别(几 Gbps 到十几 Gbps)的行业标准高速串行协议,如 PCIe、SFP+ 光纤接口、SATA 等。

接下来,我们需要确认具体芯片的 Bank 划分信息:

方法一 :查阅官方封装手册 《UG475: 7 Series FPGAs Packaging and Pinout》,其中详细列出了芯片的 Bank 物理分布图。

方法二:最直观的方法------使用 Vivado "Package View"

虽然文档是基础,但要看到"类似图片"那样的 Bank 划分,Vivado 软件本身提供了最完美的视图,比 PDF 清楚得多。

操作步骤:

  • 打开 Vivado,新建一个空工程,选择对应的芯片。

  • 在左侧流程导航栏点击 "Open Elaborated Design" (或者直接点 "I/O Planning")。

  • 在主视图中,点击顶部的 "Package" 标签页。

  • 这就是你要的图!

    • 你可以看到一个 900 个点的矩阵。

    • 右侧有 "I/O Banks" 选项卡,当你点击 "Bank 12" 时,图中对应的引脚会高亮显示。

    • 这能让你一眼看出 Bank 12 在芯片的右下角,Bank 34 在左上角等等。

方法三:基于官方引脚定义表(CSV)的自动化建库

在 FPGA 原理图库设计中,直接利用官方提供的 Pinout 表格是最高效且准确的方法。该表格不仅包含引脚号,还隐含了 Bank 的划分信息,是自动化创建原理图符号(Symbol)的基础。

2.2 原理图库创建实操流程

2.2.1 数据预处理 (Excel/CSV 整理)

Altium Designer (AD) 等 EDA 工具无法直接理解 "Bank 0" 或 "Bank 12" 的逻辑概念,因此需要先在 Excel 中对原始数据进行清洗和结构化处理。下面以xc7k325tffg900pkg.csv为例子。

  1. 导入数据 :使用 Excel 打开官方引脚文件 xc7k325tffg900pkg.csv

  2. 数据筛选与分区规划 : 利用 Excel 的"筛选"功能,依据 Bank 列进行逻辑分区,规划如下:

  • Bank 0:配置与系统控制 (Config),建议归为 Part A。
  • Bank 12 - 18, 32 - 34 :IO Bank。官方表格通常已将 VCCO 电源引脚分配在对应的 Bank 中,建议将 IO 与其供电电源合并在同一个 Part,便于检查电源域。
  • Bank 115 - 118:高速收发器 (MGT/GTX),建议独立分 Part。
  • Blank/NaN (空白项) :通常对应核心电源 (VCCINT, VCCAUX) 和地 (GND)

快速填充的方法:

  • 在 Excel 开启"筛选"。

  • 筛选 Bank 列为 "NA"

  • 全选这些行,在新建的 Part_Name 列填入 "Power" 并向下填充。

  • 筛选 Bank"0" ,填入 "Config" 并填充。

  • 这样几分钟就能搞定,比进 EDA 软件后再改要快得多。

3.构建 Symbol Part 映射列 (关键步骤)

在 Excel 中新增一列,命名为 Symbol_PartPart_Name,用于定义该引脚属于原理图符号的哪个部分。根据 Bank 号填充内容,例如:

  • Bank 0 的所有行 -> 填入 "U1A_Config"

  • Bank 12 的所有行 -> 填入 "U1B_Bank12"

  • ...

  • VCCINT/GND 的行 -> 填入 "U1_Power"

优化建议 :对于数百个 GND 引脚,建议归类到一个独立的 Part 中,或者在导入后设置为"隐藏 (Hidden)"并连接到全局 GND 网络,以保持原理图图面的整洁。

2.2.2 自动化导入流程 (以 Altium Designer 为例)

利用 AD 的 Symbol Wizard (符号向导) 功能,可以实现 900 个引脚的秒级导入。

步骤 1:新建库文件

在 AD 中执行 File -> New -> Library -> Schematic Library 创建新库。

步骤 2:启动向导 在工具栏选择 Tools -> Symbol Wizard(或在 SCH Library 面板右键启动)。

步骤 3:数据映射

回到 Excel,全选并复制处理好的关键列(包含 Pin Number, Pin Name, Electrical Type, Symbol_Part)。这是为了让 Altium Designer (AD) 的 Symbol Wizard 既能识别引脚,又能自动分 Bank。在 Excel 中选中并复制以下这 4 列(按住 Ctrl 键可以选中不连续的列):

Excel 列名 (参考) AD 里的对应属性 (Mapping) 作用 示例数据
Pin Designator 引脚编号,画 PCB 对应的坐标。 A10, B12
Pin Name Display Name 原理图上显示的引脚名字。 IO_L1P_T0_12, GND
I/O Type Electrical Type (或 Description) 辅助判断是输入还是输出。 HR, HP, CONFIG
Symbol_Part Group (最关键!) **用来告诉 AD 怎么拆分 Bank。**这是你刚才新建的那一列。 U1B_Bank12, U1_Power

在 Symbol Wizard 表格区域直接 Ctrl+V 粘贴,系统会自动通过表头识别列含义(Smart Grid 功能)。自己设置对应的列是什么:

我感觉不用自己多加一列Symbol_Part ,只需要把原来的I/O Type里的GND单独分出来就可以了,但是最好加一列电气特性Electrical Type,除了电压和地选power,其他选无源passive即可。

不过需要先设置好引脚的数目,不然复制出来之后就成为这样子了,只有设定数目的引脚:

但是如果设置900,复制粘贴之后就会变成909,就是会多出一些空白引脚,有点奇怪:

多的引脚,可以右键删除:

我目前用的办法是:

设置数目0,然后直接ctrl + shift +V复制进去就不会有多的引脚

(1)在此界面内空白处按ctrl + shift +V(确保已经复制了内容,不然弹出的是空白界面)

"Continue editing after placement"(放置后继续编辑)是的作用:决定当你点击 "Place"(放置)按钮后,向导窗口是"立即关闭"还是"保持打开",一般不勾选。

(2)在弹出的界面中,设置对应的列的属性,然后粘贴,就会设置好对应的引脚

(3)按place即可。

这里介绍一下place的三个作用:

Place Symbol (放置符号 / 替换当前):这是最常用的默认选项。

作用 :将 Wizard 里当前生成的整个符号,直接放入(覆盖) 你在原理图库(SCH Library)中当前选中的那个元件里。

场景

  • 刚刚在库里新建了一个空白元件(比如叫 XC7K325T),双击打开了它,然后打开 Wizard。

  • 设置好一切后,点这个选项,数据就会填入这个 XC7K325T 中。

  • 注意 :如果当前元件里已经有画好的东西,这个操作通常会清除旧内容并用 Wizard 的新内容替换(它会弹出警告)。

Place New Symbol (放置新符号 / 新建元件):这个选项用于"另起炉灶"。

作用 :它不碰你当前选中的元件,而是直接在库列表中新建一个元件(默认命名为 Component_1, Component_2...),然后把 Wizard 生成的数据放进去。

场景

  • 你有一个库,里面已经有一个画好的 FPGA,你不想改动它。

  • 你想利用 Wizard 快速做一个新版本 或者备份

  • 点这个,库里就会多出一个新元件,安全无副作用。

Place Part (放置部件 / 追加 Part) :这个选项对于手动分 Bank(即没有用 Excel 的 Group 功能)非常关键。

作用 :它不会覆盖当前元件,也不会新建元件,而是作为 "下一个子部件 (Next Part)" 添加到当前元件中。

场景

  • 假设你没有用 Group 自动分页,而是打算一次次手动贴。

  • 第1步 :筛选 Bank 0 -> 点击 Place Symbol (生成了 Part A)。

  • 第2步 :筛选 Bank 12 -> 点击 Place Part -> AD 会自动把它加为 Part B。

  • 第3步 :筛选 Bank 13 -> 点击 Place Part -> AD 会自动把它加为 Part C。

  • 如果你在第2步点了 Place Symbol,它就会把第1步做的 Part A 给覆盖掉,你就白干了。

2025-12-17-LHW-更新:

AD的Symbol Wizard (符号向导) 中,并没有 一个直接名为 "Split into groups" 的下拉菜单可以用来自动 将元件炸开成 Part A, Part B, Part C。那个"Group"列(在向导的表格里)实际上是用来在同一个符号图形上把引脚在视觉上分组(比如把所有电源引脚聚在一起,加个标题),而不是把它拆分成不同的子部件(Parts)。所以画出来的器件只是一个大件。但是上面的方法是可行的。可以一个bank一个bank地画,比如先生成partA,然后画bank0,把bank0的引脚放进去,这样也很方便。如下:

只需要复制表格中,原有的四列:
然后改一下电气特性:除了电压,地选power,其他选无源passive即可

原来的:

按住shift键可以多选,然后改一个其他也会跟着改:

也可以修改布局(引脚放左边还是右边) 修改完如下:

如果在关闭Symbol Wizard界面想修改器件引脚的属性,只需要点击该器件,然后再次打开Symbol Wizard即可。

画完bank0并place之后,可以重新打开Symbol Wizard,将新的bank引脚导入,在place时选择place New part即可。

其他bank依次画即可,一般会把所有的地GND放在一起

以上就是原理图库的画法。

3.原理图绘制

3.1. 电源系统设计 (Power Tree) - 最关键的一步

Kintex-7 对电源要求非常严格,需要设计一个复杂的电源树。

核心电压 (VCCINT) : 1.0V (或 0.9V,取决于速度等级)。电流通常非常大(可能高达 10A-30A,具体取决于你的逻辑设计),建议使用高效率的 DC-DC Buck 转换器。

辅助电压 (VCCAUX) : 1.8V。用于辅助电路。

Block RAM 电压 (VCCBRAM) : 1.0V。通常与 VCCINT 共用,但建议通过磁珠隔离。

IO 电压 (VCCO_xx):

HR Banks (High Range): 支持 1.2V 到 3.3V。

HP Banks (High Performance): 仅支持 1.2V 到 1.8V(通常用于 DDR3/LVDS)。

高速收发器电源 (MGT):

MGTAVCC: 1.0V (模拟核心)。

MGTAVTT: 1.2V (终端匹配)。

MGTVCCAUX: 1.8V。

上电时序 (Power Sequencing): 必须严格遵守官方数据手册(通常是 VCCINT -> VCCBRAM -> VCCAUX -> VCCO)。如果不遵守,芯片可能无法启动或损坏。

3.2. 配置电路 (Configuration)

  • Bank 0: 这是专用配置 Bank。

  • 模式选择 (Mode Pins): M[2:0] 引脚决定启动方式(如 Master SPI, JTAG, Slave SelectMAP)。通常设计为跳线可选。

  • Flash: 常用 QSPI Flash (如 Micron N25Q 系列) 来存储 Bitstream。

  • JTAG: 必须预留 14-pin 或 10-pin JTAG 接口(TCK, TMS, TDI, TDO)用于调试和下载。

3.3. 时钟设计 (Clocking)

  • 系统时钟 : 输入到 MRCC (Multi-region Clock Capable) 或 SRCC 引脚。建议使用差分晶振(如 LVDS 200MHz)。

  • MGT 参考时钟: 如果使用 PCIE 或 SFP+,需要专用的低抖动差分时钟输入到 MGTREFCLK 引脚。

3.4. 外设接口 (IO Planning)

根据你的 csv 文件中的 Bank 分布:

  • DDR3/DDR4: 必须连接到 HP Banks (High Performance),因为它们支持阻抗匹配(DCI)。

  • 低速接口 (UART/GPIO): 放在 HR Banks。

  • 差分信号 (LVDS): 确保 P/N 引脚对号入座。

剩下的内容后续再更新。

相关推荐
tiantianuser3 天前
RDMA设计19:RoCE v2 发送及接收模块设计
nvme·rdma·fpga设计·高速传输·nvme-of
雨洛lhw7 天前
将 Cadence工程转换为AD工程的步骤
cadence·ad·文件转换
逼子格1 个月前
硬件工程师成长之路——知识汇总(持续更新)
嵌入式硬件·proteus·硬件工程·ad·keil·电路仿真·硬件工程师面试
brave and determined1 个月前
可编程逻辑器件学习(day22):“让ARM穿上FPGA的马甲“:赛灵思Zynq的命名哲学与技术革命
arm开发·嵌入式硬件·fpga开发·zynq·fpga设计·嵌入式设计·fpga开发流程
tornadoami2 个月前
51CTO_开源的密码自助平台Self Service Password
docker·开源·ad·安全可控·ssp·ldap·ltb
硬件王哪跑2 个月前
【Altium Designer实战操作】对网络端口名称采用全中文命名的可行性及其相关隐患研究
ad·eda·altium designer·中文命名
Zevalin爱灰灰3 个月前
Altium Designer使用精通教程 第四章(PCB封装库绘制)
ad·pcb
逼子格3 个月前
Altium Designer(AD)原理图更新PCB后所有器件变绿解决方案
单片机·嵌入式硬件·硬件工程·问题解决·ad·pcb·altium designer
vortex53 个月前
AD渗透中服务账号相关攻击手法总结(Kerberoasting、委派)
windows·网络安全·渗透测试·ad