这一篇在干嘛?

数据手册(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 × 10mm0.4mm71 / 17
FBGA256(BG256)17mm × 17mm1.0mm193 / 91
CSG324(CG324)15mm × 15mm0.8mm215 / 104

三种封装、同样的芯片核心,区别就是”引脚数”:QFN 最小最简单,BGA/CSG 引出更多 IO。手册还强调引脚排布经过优化,两层 PCB 就能用上所有 IO,这对学生党做板子非常友好。

怎么区分这三种封装?

看型号中间的字母:NG = QFN 封装、BG = FBGA 封装、CG = CSG 封装,后面的数字就是引脚数(88、256、324)。

资源规模:一张表看懂这颗芯片有多大

新手最常问”FPGA 多大”,指的就是 LUT(查找表)和 FF(触发器)的数量。EG4S20 三种封装的核心资源完全一样:

资源NG88BG256CG324
LUT4 数量19,60019,60019,600
FF 数量19,60019,60019,600
分布式 RAM(bit)156,800156,800156,800
ERAM9K 块数646464
32Kb ERAM 块数161616
ERAM 总容量1,088Kb1,088Kb1,088Kb
18×18 硬件乘法器292929
PLL444
全局时钟(GCLK)161616
合封 SDRAM2M×32bit2M×32bit2M×32bit
用户 IO Bank844
最大用户 IO71193215

给个直观感受: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 之类的,说明这个脚还可以复用为全局时钟输入;带 DONETDOMOSI 的则是配置/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]输入配置(下载)模式选择
CCLKI/O专用配置时钟
DONEI/O配置完成标志,配置完成后输出高
INITNI/O输出高表示 FPGA 准备好配置
CSN输入并行下载模式片选,低有效

上电配置:程序是怎么”灌”进去的

FPGA 的逻辑是存在 SRAM 里的,断电即失,所以每次上电都要从外部 FLASH 加载位流(bitstream),这个过程叫配置

五种配置模式

模式全称MSEL[1:0]特点
SS从动串行11数据由外部主控提供,串行输入
SP从动并行10外部主控提供数据,8 位并行
MSPI主模式 SPI01FPGA 主动从 SPI FLASH 读,最常用
MP主动并行 ×800FPGA 主动从并行 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 引脚的电平在配置前就会被采样,别让别的电路干扰它。

订购信息:型号后缀怎么读

最后一章讲的是器件号命名,搞懂了它,看一眼型号就知道这颗芯片的基本盘:

字段示例取值含义
产品系列EG4EAGLE 系列
类别S内置 SDRAM
查找表容量2020K 查找表
封装类型BG / NG / CGFBGA / QFN / CSG
引脚数256 / 88 / 324封装引脚数
温度等级C / I商业级 TJ 085℃ / 工业级 TJ -40100℃

比如 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/131.7调整格式,添加新引脚命名规则并修改全部引脚命名
2019/4/282.0统一 ERAM 表述,采用 LUT4/LUT5 物理数目表示
2019/6/42.1添加 CG324 器件资源、封装信息及封装尺寸规格
2020/3/22.6校对 NG88 差分对数,差分统计不再含配置复用 IO
2021/3/32.7更新嵌入式乘法器速度(350MHz)
2021/6/152.7.1修正配置模式表中加载相关信息(本笔记依据的版本)

小结

EG4S20 = 19600 LUT4/FF 的”小钢炮” + 1Mb 级 ERAM + 一片合封的 64Mb SDRAM + 4 个 PLL + 29 个硬件乘法器 + 12bit ADC。它的定位非常清晰:成本敏感、需要片上大缓存的中小型逻辑设计。读懂数据手册只是第一步,下一步就可以打开 TD(安路开发工具),试着点亮第一盏 LED 了。