这一篇在干嘛?
数据手册(datasheet)是芯片的”身份证+说明书”,选型、画板子、写约束之前都得翻它。这篇笔记把 EG4S20 的官方手册从头到尾串一遍,用大白话讲清楚:这颗芯片有多大、里面藏了什么、引脚怎么命名的、Bank 电压有哪些坑、上电怎么加载程序。读完你不需要记住每个数字,但要能在需要时快速翻到对应章节。
先认识一下:EG4S20 是颗什么芯片
EG4S20 全名 SALEAGLE®4S20,出自上海安路科技的 EAGLE(鹰)系列,主打低成本、低功耗,采用 55nm 工艺,静态功耗低至 5mA。
它最特别的一点:EG4S20 是在成熟的 EG4X20 基础上,用 3D 合封技术把一片 2M×32bit 的 SDRAM(型号 EM638325)和 FPGA 封装在了一起。相当于”买一颗芯片送一片内存”,片内有 64Mb(即 2M×32bit)的 SDRAM 存储空间,特别适合大容量、高速数据的采集、传输和变换这类应用——这也是它在国内开源硬件圈(比如全志平台的入门 FPGA 方案)里人气很高的原因。
封装上有三种选择:
| 封装 | 尺寸 | 引脚间距 | 用户可用 IO / LVDS 差分对 |
|---|---|---|---|
| QFN88(NG88) | 10mm × 10mm | 0.4mm | 71 / 17 |
| FBGA256(BG256) | 17mm × 17mm | 1.0mm | 193 / 91 |
| CSG324(CG324) | 15mm × 15mm | 0.8mm | 215 / 104 |
三种封装、同样的芯片核心,区别就是”引脚数”:QFN 最小最简单,BGA/CSG 引出更多 IO。手册还强调引脚排布经过优化,两层 PCB 就能用上所有 IO,这对学生党做板子非常友好。
怎么区分这三种封装?
看型号中间的字母:NG = QFN 封装、BG = FBGA 封装、CG = CSG 封装,后面的数字就是引脚数(88、256、324)。
资源规模:一张表看懂这颗芯片有多大
新手最常问”FPGA 多大”,指的就是 LUT(查找表)和 FF(触发器)的数量。EG4S20 三种封装的核心资源完全一样:
| 资源 | NG88 | BG256 | CG324 |
|---|---|---|---|
| LUT4 数量 | 19,600 | 19,600 | 19,600 |
| FF 数量 | 19,600 | 19,600 | 19,600 |
| 分布式 RAM(bit) | 156,800 | 156,800 | 156,800 |
| ERAM9K 块数 | 64 | 64 | 64 |
| 32Kb ERAM 块数 | 16 | 16 | 16 |
| ERAM 总容量 | 1,088Kb | 1,088Kb | 1,088Kb |
| 18×18 硬件乘法器 | 29 | 29 | 29 |
| PLL | 4 | 4 | 4 |
| 全局时钟(GCLK) | 16 | 16 | 16 |
| 合封 SDRAM | 2M×32bit | 2M×32bit | 2M×32bit |
| 用户 IO Bank | 8 | 4 | 4 |
| 最大用户 IO | 71 | 193 | 215 |
给个直观感受:19,600 个 LUT4 属于”小而精”的规模,跑一个软核 CPU 加一堆外设接口没问题,但别指望塞下复杂的图像处理算法。配置 SRAM 的总位数约 4,988,928 bit(约 4.99Mbit),这决定了配置位流的大小,后面讲配置时会用到。
架构细节(PLB 可配置逻辑模块、进位链等)手册写明”同 EG4X20”,要深入了解请参考《EG4 系列 FPGA 数据手册》。
片内存储:三套体系各管一摊
EG4S20 的存储资源分三层,各有用途:
1. 嵌入式块 RAM(ERAM)——大块头,两规格:
- 64 块 ERAM9K:每块 9Kb,可配置成真双口、简单双口、单口 RAM 和 FIFO,位宽可选 512×18、1K×9、2K×4、4K×2、8K×1,最高 220MHz
- 16 块 32Kb RAM:可配置为单口/双口 RAM,独立配置成 2K×16 或 4K×8
- 合计约 1,088Kb,做行缓存、FIFO、帧缓存都靠它们
2. 分布式 RAM——156.8Kb,散落在逻辑单元里,适合存小规模数据、做查找表。
3. 合封 SDRAM——64Mb(2M×32bit),是 EG4S20 的招牌。最高 200MHz 工作频率、32 位总线,最大读写带宽 800MB/s。因为它和 FPGA “深度整合”,用起来非常简单:在 IP generate 里例化、或者直接在顶层例化这个 IP 模块即可:
EG_PHY_SDRAM_2M_32 U_EG_PHY_SDRAM_2M_32(
.clk (SD_CLK), // SDRAM 时钟
.ras_n (SD_RAS_N), // 行选通
.cas_n (SD_CAN_N), // 列选通
.we_n (SD_WE_N), // 写使能
.addr (SD_SA), // 地址,11bit
.ba (SD_BA), // BANK 地址,2bit
.dq (SD_DQ), // 数据,32bit
.cke (SD_CKE), // 时钟使能
.dm (4'b0) // 数据屏蔽,4bit
);SDRAM 的引脚(DQ0DQ31、SA0SA10 等)在芯片内部已经和这个 IP 固定连接,你不需要(也不能)在外部引脚上分配它们。
最佳实践
大容量缓存优先用 SDRAM,中等规模的跨时钟域缓冲用 ERAM9K 的 FIFO 模式,几十字节的小存储用分布式 RAM。按”数据量”选存储层级,资源利用率最高。
时钟、PLL 和硬件乘法器
时钟资源:16 个全局时钟(GCLK,低抖动时钟网络),负责把时钟均匀送到全片。
PLL:4 个,用于频率综合——从外部晶振频率”变”出你需要的任何时钟频率。特性包括:5 路时钟输出、分频系数 1~128、支持 5 路时钟输出级联、动态相位选择。
硬件乘法器:29 个 18×18 乘法器,最高 350MHz,还支持拆成 9×9 模式用(一个 18×18 可以当两个 9×9 用)。做 FIR 滤波、FFT 这类运算时它们比用 LUT 搭快得多、省得多。
嵌入式硬核:还有一个 12bit SAR 型 ADC,最多 8 个模拟输入通道,采样速率 1MSPS;外加电压监控模块(可监控指定 Bank 的电压)和内置环形振荡器(可当看门狗时钟/低速时钟源用)。
引脚命名与 Bank 电压:最容易踩坑的地方
IO 命名怎么读
引脚名形如 IO_L1P_1,规则如下图:IO 表示通用 IO,L1 是逻辑位置编号,P/N 表示差分对的正/负端,最后一位数字是所属 Bank 编号。名字里带 GCLKIOL_2 之类的,说明这个脚还可以复用为全局时钟输入;带 DONE、TDO、MOSI 的则是配置/JTAG 复用脚。

Bank 电压规则(重点!)
FPGA 的 IO 按 Bank 分组供电,每个 Bank 的 VCCIO 决定了这一组 IO 的电平标准。EG4S20 不同封装的规则不一样,画原理图前必须核对:
- NG88(QFN88):BANK1~BANK7 必须用 3.3V;只有 BANK8 支持1.2V、1.5V、1.8V、2.5V、3.3V 多种电平。
- BG256 / CG324:因为内部 BANK1 和 BANK3 的 VCCIO 直接连到了合封 SDRAM 的电源,VCCO1、VCCO3 只能接 3.3V。而且 VCCIO3、VCCAUX、VCCIO1 在芯片内部相互短路——也就是说这三个电源网络必须接同一个 3.3V。
最大的坑:Bank 电平混接
如果一个 Bank 接了 3.3V,你就不能把 2.5V 电平的信号直接接到这个 Bank 的 IO 上。BG256/CG324 尤其要注意:BANK1、BANK3 被内部”焊死”在 3.3V,想用 2.5V 的 LVDS 或其他低压电平,只能分配到其他 Bank。同样,VCCIO3/VCCAUX/VCCIO1 内部短路这一点,意味着供电设计上别指望给它们分别接不同电压,否则轻则功能异常,重则损坏芯片。
未用引脚怎么办?
手册的配置状态表指出:进入用户模式后,未使用的管脚默认是弱上拉状态。也就是说悬空的 IO 不会浮空乱跳,但如果你对外围电路有特殊要求(比如需要下拉),要在代码或约束里显式处理。
另外别忘了电源引脚的分类:VCC(内核电源)、VCCIOx(各 Bank 的 IO 电源)、VCCAUX(辅助电源)、VCC_PLLx/GND_PLLx(PLL 专用电源地)。PLL 有独立电源引脚,PCB 上要做滤波隔离,这对时钟质量影响很大。
特殊功能引脚速记
| 引脚 | 方向 | 作用 |
|---|---|---|
| TCK / TDI / TDO / TMS | 输入/输出 | JTAG 边界扫描四件套,下载调试全靠它 |
| PROGRAMN | 输入 | 全局复位输入,低有效 |
| MSEL[2:0] | 输入 | 配置(下载)模式选择 |
| CCLK | I/O | 专用配置时钟 |
| DONE | I/O | 配置完成标志,配置完成后输出高 |
| INITN | I/O | 输出高表示 FPGA 准备好配置 |
| CSN | 输入 | 并行下载模式片选,低有效 |
上电配置:程序是怎么”灌”进去的
FPGA 的逻辑是存在 SRAM 里的,断电即失,所以每次上电都要从外部 FLASH 加载位流(bitstream),这个过程叫配置。
五种配置模式
| 模式 | 全称 | MSEL[1:0] | 特点 |
|---|---|---|---|
| SS | 从动串行 | 11 | 数据由外部主控提供,串行输入 |
| SP | 从动并行 | 10 | 外部主控提供数据,8 位并行 |
| MSPI | 主模式 SPI | 01 | FPGA 主动从 SPI FLASH 读,最常用 |
| MP | 主动并行 ×8 | 00 | FPGA 主动从并行 FLASH 读 |
| JTAG | — | 无关 | 在线下载调试,IEEE-1532 |
实际项目里 99% 的量产方案用 MSPI:接一片 SPI FLASH(如 M25Pxx、SST25LFxxx、S25FLxxx),上电自动加载。手册特别提醒:只支持读命令为 0x03 的 SPI FLASH,买 FLASH 芯片时注意看数据手册。还支持双启动和多启动模式——可以在 FLASH 里放两份位流,主份坏了自动切换备份,产品化时很有用。
位流多大?FLASH 要买多大?
EG4S20 的配置位流长度为 4.8M~6Mbit(和 ERAM 初始化数据长度有关)。所以手册要求:配置芯片容量必须大于等于 6Mbit(即至少 8Mbit 的 FLASH,比如 M25P80 这个量级)。
配置阶段引脚的状态
上电到程序加载完成之间,普通用户 IO 处于三态;加载过程中由 HSWAPEN 决定它们是”弱上拉”还是”保持三态”。配置专用引脚(MSEL、PROGRAMN、DONE、CCLK 等)在配置前内部有固定的上拉/下拉(大多数上拉到 VCCIO,CSN 类是下拉到地),配置完成后交给软件设置或变回用户 IO。
板级设计注意
既然配置阶段大多数引脚是弱上拉,那么如果外围电路有”低电平有效”的器件挂在这些 IO 上(比如某芯片的使能脚是低有效),上电瞬间它们可能被短暂拉高或保持三态,要注意外围电路不会被误触发。MSEL 引脚的电平在配置前就会被采样,别让别的电路干扰它。
订购信息:型号后缀怎么读
最后一章讲的是器件号命名,搞懂了它,看一眼型号就知道这颗芯片的基本盘:
| 字段 | 示例取值 | 含义 |
|---|---|---|
| 产品系列 | EG4 | EAGLE 系列 |
| 类别 | S | 内置 SDRAM |
| 查找表容量 | 20 | 20K 查找表 |
| 封装类型 | BG / NG / CG | FBGA / QFN / CSG |
| 引脚数 | 256 / 88 / 324 | 封装引脚数 |
| 温度等级 | C / I | 商业级 TJ 0 |
比如 EG4S20BG256I7 = EAGLE 系列 + 内置 SDRAM + 20K LUT + FBGA256 封装 + 工业级温度。

工业级的温度细节
带 SDRAM 的工业级器件(如 EG4S20BG256I7、NG88I7、CG324I7):内嵌 SDRAM 只支持 -40℃~85℃ 的表面温度,其余逻辑资源才支持 -40℃~100℃ 结温。极端温度环境下别把 SDRAM 也当成全温区资源来设计。
封装尺寸速览
做 PCB 封装库时直接查手册对应章节:QFN88 本体约 10mm×10mm(9.924~10.076mm 公差范围);FBGA256 本体 17mm×17mm、焊球间距 1.0mm;CSG324 本体 15mm×15mm、焊球间距 0.8mm、18×18 焊球矩阵。

电气参数去哪查?
这份数据手册的”交直流特性”章节写明与 EG4X20 相同,具体的电压范围、IO 电平参数要参考《EG4 系列 FPGA 数据手册》。做严格设计(比如确认 1.2V Bank 的 VIH/VIL)时记得去翻那份手册,别想当然。
版本信息
| 日期 | 版本 | 主要修订 |
|---|---|---|
| 2019/3/13 | 1.7 | 调整格式,添加新引脚命名规则并修改全部引脚命名 |
| 2019/4/28 | 2.0 | 统一 ERAM 表述,采用 LUT4/LUT5 物理数目表示 |
| 2019/6/4 | 2.1 | 添加 CG324 器件资源、封装信息及封装尺寸规格 |
| 2020/3/2 | 2.6 | 校对 NG88 差分对数,差分统计不再含配置复用 IO |
| 2021/3/3 | 2.7 | 更新嵌入式乘法器速度(350MHz) |
| 2021/6/15 | 2.7.1 | 修正配置模式表中加载相关信息(本笔记依据的版本) |
自测
- EG4S20BG256I7 这个型号里,“S”、“20”、“BG256”、“I” 分别代表什么?
答案:S = 内置 SDRAM 类别;20 = 20K 查找表容量;BG256 = FBGA 封装、256 引脚;I = 工业级温度(TJ -40100℃,但内嵌 SDRAM 仅支持 -4085℃ 表面温度)。- 用 BG256 封装时,为什么 BANK1 和 BANK3 只能接 3.3V?想把某个 IO 配成 2.5V 电平该怎么办?
答案:因为这两组 Bank 的 VCCIO 在芯片内部与合封 SDRAM 的电源相连(且 VCCIO3、VCCAUX、VCCIO1 内部相互短路),必须统一接 3.3V。需要 2.5V 电平的信号应分配到没有此限制的其他 Bank 上。
小结
EG4S20 = 19600 LUT4/FF 的”小钢炮” + 1Mb 级 ERAM + 一片合封的 64Mb SDRAM + 4 个 PLL + 29 个硬件乘法器 + 12bit ADC。它的定位非常清晰:成本敏感、需要片上大缓存的中小型逻辑设计。读懂数据手册只是第一步,下一步就可以打开 TD(安路开发工具),试着点亮第一盏 LED 了。