只读分享解决方案文档原理方案设计📅 2026-09-21🔖 Rev 1.0✅ 长期有效
🔧解决方案&应用市场分析 -> 原理方案设计 -> 并行NOR_PPI_NOR_软件设计规范

并行NOR_PPI_NOR_软件设计规范

生成时间 2026-09-21 11:12:43 长期有效

并行 NOR Flash(PPI NOR)电路设计指南

异步 SRAM 类并行接口 · 8 / 16 位数据总线 · 非复用 / ADM 复用 · 页读与同步突发 · XIP 片内执行 · 多片位宽扩展与地址译码 | 编制日期 2026-09-21 | 版本号 Rev 1.0

0 · 文档说明

适用范围

  • 本文针对并行 NOR Flash(Parallel NOR / PPI NOR / 异步 SRAM 类接口 NOR)的硬件电路设计,覆盖 1 Mb ~ 2 Gb 容量段,位宽 8 / 16 位,挂接在 MCU / SoC / FPGA 的外部存储器控制器(EMC / SMC / FMC / EBI / FSMC / Local Bus)上。
  • 典型应用:XIP 片内执行(Bootloader / RTOS / 裸机代码)、字库与 UI 资源、固件镜像、配置与校准数据、工业与车载控制板
  • 内容含:选型对比、封装引脚、电气参数、异步/页/突发协议、命令集与 CFI、电源与上电时序、内联 SVG 原理图、等待周期计算、PCB Layout、信号完整性与端接、ESD 与可靠性、焊接生产、故障排查与检查清单。
  • 不含文件系统与 Bootloader 软件框架。所有时序数值、命令码、封装球图一律以目标型号 datasheet 为准,本文数值仅为选型与估算的起点。

本系列其他文档

文档器件类型关注重点
SPI NOR 电路设计指南串行 NOR FlashQuad/QPI 提速、dummy cycles、XIP、DPD 低功耗
SPI NAND 电路设计指南串行 NAND Flash页/块管理、片内 ECC、坏块表、主机 FTL
并行NAND (PPI NAND) 电路设计指南8/16 位并行 NAND宽总线时序、ECC 引擎、40+ 引脚 Layout
eMMC 电路设计指南eMMC 5.0/5.1HS200/HS400、1.8 V VCCQ、DS 选通与等长
SD NAND 电路设计指南贴片式 SD NANDSPI/SDIO 双模式、无休眠指令、VCC 负载开关断电
NAND MCP 电路设计指南多芯片合封存储多 die 与多 CE、双电源轨、HDI 扇出
并行NOR (PPI NOR) 电路设计指南 本文并行 NOR Flash异步读时序、XIP、等待周期、总线扩展
PSRAM 电路设计指南伪静态 RAMOPI/HyperBus、刷新与延迟周期、XIP 与帧缓存
DDR2 电路设计指南DDR2 SDRAMSSTL_18、T 分支拓扑、VTT 端接、ODT
DDR3 电路设计指南DDR3 / DDR3LFly-by 拓扑、write leveling、动态 ODT
DDR4 电路设计指南DDR4 SDRAMPOD12、bank group、DBI、2D 训练
DDR5 电路设计指南DDR5 SDRAM双子通道、On-DIMM PMIC、DFE、同帧 ECC
EEPROM 电路设计指南EEPROMI²C/SPI 接口、上拉电阻与总线电容、页写与写保护
如何在存储器家族中快速决策(并行 NOR 的位置)

需要随机读延迟确定、无坏块、无需 ECC、可直接 XIP,且主控本来就带外部总线、引脚不紧张 → 并行 NOR。优势是取指带宽最高、读延迟最小(首字 70 ~ 110 ns,页模式后续 20 ~ 25 ns/字);劣势是引脚消耗大(40 ~ 50 根)、PCB 面积与布线难度最高、每 Mb 成本高于 NAND、擦写慢

主控没有外部总线或引脚紧张 → 退回 SPI NOR(8 引脚,Quad 50 ~ 100 MB/s);容量 > 256 MB 且成本敏感、可接受"先搬 RAM 再执行"→ 并行 NAND / eMMC / SPI NAND;频繁随机写 → PSRAM / EEPROM 做数据区,NOR 只放代码。

1 · 器件基础

1.1 定位与选型对比

维度并行 NOR 本文SPI NORSPI NAND并行 NANDPSRAMSRAM
接口 / 引脚数异步 SRAM 类,40 ~ 50 根4 ~ 6 根6 根8 / 16 位复用,28 ~ 48 根6 根 / 40+ 根并行 30 ~ 50 根
随机读延迟70 ~ 110 ns(与 SRAM 同量级)首字节 60 ~ 100 ns + 指令开销25 ~ 50 µs(页搬 SRAM)25 ~ 50 µs(页读)70 ~ 100 ns10 ~ 70 ns
连续读带宽18 ~ 160 MB/s(异步 → 同步突发)30 ~ 100 MB/s20 ~ 50 MB/s40 ~ 200 MB/s50 ~ 200 MB/s100 ~ 400 MB/s
XIP 能力原生最优(地址直映射)好(需 cache / 预取)不可需影子 RAM不可需影子 RAM可以(易失)可以(易失)
擦除粒度扇区 4 KB ~ 128 KB4 KB / 32 KB / 64 KB块 128 KB块 128 KB ~ 1 MB无(字节写)无(字节写)
坏块管理 / ECC都不需要都不需要需要 BBT + ECC需要 BBT + 硬件 ECC 4 ~ 40 bit不需要不需要
容量范围1 Mb ~ 2 Gb512 Kb ~ 2 Gb128 Mb ~ 4 Gb1 Gb ~ 64 Gb4 Mb ~ 256 Mb64 Kb ~ 64 Mb
写入吞吐0.1 ~ 1 MB/s(受擦除拖累)0.1 ~ 1 MB/s1 ~ 8 MB/s5 ~ 40 MB/s10 ~ 100 MB/s50 ~ 200 MB/s
寿命 / 保持10 万次 / 20 年 @ 85 ℃10 万次 / 20 年1 ~ 10 万次 / 5 ~ 10 年0.3 ~ 10 万次 / 2 ~ 10 年易失易失
每 Mb 成本中高最低最高
PCB 难度宽总线、等长、SSO
典型场景工业 / 车载 XIP、无 DRAM 系统、高可靠启动MCU 启动、字库、日志大容量数据、替代小 eMMC大容量存储、文件系统低成本大 RAM、帧缓存高速缓存、小容量暂存
厂商代表系列容量位宽速度等级备注
Infineon(原 Cypress / Spansion)S29GL-P / -S / -R / -T、S29AL-J、S29JL-J128 Mb ~ 1 Gbx8 / x1690 / 100 / 110 ns,页读 25 ns市场存量最大,CFI 兼容性好;S / R 支持同步突发
Micron(含原 Numonyx)M29EW、M29W、MT28EW4 Mb ~ 1 Gbx8 / x1670 / 80 / 90 / 110 nsM29EW 支持 ADM 复用与突发;MT28EW 为车规
Macronix(旺宏)MX29GL、MX29LV、MX29F、MX29VS1 Mb ~ 1 Gbx8 / x1670 ~ 120 nsMX29GL 为 3 V 主流;MX29VS 支持突发 / 页读
Winbond(华邦)W29GL、W29CL32 Mb ~ 512 Mbx8 / x1690 / 110 ns与 S29GL 脚位 / 命令集高度兼容
ISSIIS29GL、IS29LV32 Mb ~ 512 Mbx8 / x1670 ~ 110 ns工业级宽温(-40 ~ +85 ℃)型号齐全
GigaDevice(兆易创新)并行 NOR 系列32 Mb ~ 512 Mbx8 / x1670 ~ 110 ns国产替代,引脚 / 命令兼容 S29GL 生态
Numonyx(已并入 Micron)M58W、M58BW8 Mb ~ 128 Mbx8 / x1670 ~ 90 ns存量设计常见,部分支持 VPP / ACC 加速编程
芯天下 XTXXT29F(XT29F512ATSHGA / XT29F01GATSHGA);M29F(M29F512BTSJGA / M29F512BBGJGA / M29F01GBTSJGA / M29F01GBBGJGA / M29F02GBBGJGA)512 Mb ~ 2 Gbx8 / x16以 datasheet 为准2.7 ~ 3.6 V;TSOP-56(14×20 mm)与 BGA-64 两种封装。当前均为 ES / UD 状态,量产前须确认转 MP 进度与送样窗口,并逐项核对命令集与球图

1.2 封装与引脚定义

封装引脚 / 球数本体尺寸间距适用容量 / 位宽Layout 要点
TSOP-484812.0 × 20.0 mm0.50 mmx8 或 x16,≤ 256 Mb翼形引脚,可飞线调试;占用面积大
TSOP-565614.0 × 20.0 mm0.50 mmx8 / x16,128 Mb ~ 1 Gb最主流;扇出简单,支持飞线与返修;XTX XT29F01GATSHGA(1 Gb)、XT29F512ATSHGA(512 Mb)、M29F512BTSJGAM29F01GBTSJGA 即为此封装(14×20×1.2 mm)
SO-44 / SOP-44(宽体)4428.5 × 12.6 mm1.27 mmx8 / x16,≤ 32 Mb老设计 / 易手工焊接,面积最大
BGA-64(TFBGA / LAE064 / LAA064)64 球8 × 10 ~ 9 × 11 mm1.00 mmx8 / x16,128 Mb ~ 1 Gb面积小、寄生小、利于高速;必须 X-Ray;XTX M29F512BBGJGA(512 Mb)、M29F01GBBGJGA(1 Gb)、M29F02GBBGJGA(2 Gb)为此封装
BGA-56 / BGA-4856 / 48 球7 × 9 / 6 × 8 mm0.80 mmx8 / x16,16 Mb ~ 512 Mb0.8 mm pitch 通常需 HDI 盲孔或盘中孔
WSON 8 × 688 × 6 mm1.27 mm1.8 V 小容量 x8底部散热焊盘接地并打散热过孔
TSOP-56 顶视图 / Top View 0.50 mm pitch · 14 × 20 mm Infineon S29GL / Micron M29EW 兼容脚位 地址高位(A20~A25)随容量变化 小容量器件的无用高位地址脚为 NC Pin 1(凹点标记 / 斜角) 1A15 2A14 3A13 4A12 5A11 6A10 7A9 8A8 9A19 10NC 11WE# 12RESET# 13NC 14WP#/ACC 15RY/BY# 16A18 17A17 18A7 19A6 20A5 21A4 22A3 23A2 24A1 25A0 26CE# 27VSS 28OE# DQ029 DQ830 DQ131 DQ932 DQ233 DQ1034 DQ335 DQ1136 VCC37 DQ438 DQ1239 DQ540 DQ1341 DQ642 DQ1443 DQ744 DQ15/A-145 VSS46 NC47 A1648 BYTE#49 NC50 A2551 A2452 A2353 A2254 A2155 A2056 地址 A[25:0] 数据 DQ[15:0] 控制 CE#/OE#/WE#/BYTE# 电源 VCC 地 / NC
图 1-1 TSOP-56(0.50 mm pitch,14 × 20 mm)引脚顶视图。Pin 1 位于左上,左侧自上而下 1~28,右侧自下而上 29~56;DQ15/A-1 在 8 位模式下充当最低位地址 A-1。BGA-64 的球图通常为 8 × 8 阵列(A1 在左上角),地址球集中在上两行、数据球居中、电源与地夹在数据两侧以抑制同步开关噪声。不同厂商 / 容量的高位地址分配不同,焊接与布线前必须以目标型号 datasheet 的 pinout / ball map 为准
信号方向类型 / 有效电平说明与硬件处理
A[max:0]输入地址总线。x16 时 A0 为字地址最低位;x8 时由 DQ15 复用为 A-1。未用高位地址脚在小容量器件为 NC,按 datasheet 处理(多数可悬空,少数需接地)
DQ[15:0]双向三态数据总线。x8 时 DQ15→A-1、DQ[14:8] 内部高阻,可悬空(推荐各接 10 kΩ 弱上拉以固定电平降低功耗)。双向缓冲需注意方向控制延时
CE#输入低有效片选。上电期间必须保持高;不用时经 10 kΩ 上拉到 VCC,防止浮空误选通导致总线冲突与额外功耗
OE#输入低有效输出使能(读)。10 kΩ 上拉;与 WE# 不得同时为低(非法状态,可能触发意外命令)
WE#输入低有效写使能(命令 / 地址 / 数据锁存)。10 kΩ 上拉;上升沿锁存
RY/BY#输出开漏,低 = 忙就绪 / 忙指示。必须外接 4.7 ~ 10 kΩ 上拉;可接 SoC 的 WAIT / IRQ 实现硬件握手;软件只做状态位轮询时可悬空
RESET#输入低有效硬件复位。10 kΩ 上拉 + 100 nF 到地,或接系统复位 / 复位芯片;上电期间保持低可防止误写
WP# / ACC输入低有效 / 高压硬件写保护(引导扇区)或编程加速电压(VHH ≈ 9 ~ 12 V)。不用时上拉到 VCC;作为 ACC 时必须接地或由专用电路驱动,切勿直接上拉
BYTE#输入低 = x8,高 = x16位宽选择。16 位应用上拉到 VCC(10 kΩ),8 位应用下拉到地关键浮空会导致位宽与字节序异常
VCC电源3 V:2.7 ~ 3.6 V;1.8 V:1.65 ~ 1.95 V内核与 I/O(单电源器件)。每颗 VCC 引脚配 100 nF,就近打地过孔
VCCQ / VIO电源1.65 ~ 1.95 V 或 2.7 ~ 3.6 V独立 I/O 电源(双电源器件)。VCCQ ≤ VCC 必须成立,否则可能闩锁
VSS所有地引脚必须全部接完整地平面,每引脚至少一个地过孔
NC / RFU / DNU无连接 / 保留 / 禁止使用。NC 悬空;RFU、DNU 按 datasheet 处理(多数要求悬空或接地,严禁上拉
CLK / ADV# / WAIT混合同步突发与 ADM 模式仅同步突发 / 地址数据复用器件有。CLK 按时钟线规则走线;ADV# 下降沿锁存地址

1.3 关键电气参数

下表为典型值区间,跨厂商、跨工艺(90 / 65 / 45 nm)差异可达数倍,仅用于方案评估与 Layout 前期规划。必查定稿前用目标型号 datasheet 对应表格替换。

参数符号条件最小典型最大单位
内核电源(3 V 型)VCC2.73.0 / 3.33.6V
内核电源(1.8 V 型)VCC1.651.81.95V
I/O 电源(双电源型)VCCQ须 ≤ VCC1.651.8 / 3.33.6V
读电流(异步)ICC1CE#=VIL,5 MHz12 ~ 3045mA
读电流(突发 66 MHz)ICC225 ~ 5070mA
编程 / 擦除电流ICC3/4操作进行中30 ~ 6080mA
待机电流ISBCE#=VIH5 ~ 50200µA
深度掉电电流IDPDRESET#=VSS±0.3 V1 ~ 1530µA
输入高 / 低电平(3 V)VIH / VILTTL / CMOS2.0 / −0.5VCC+0.3 / 0.8V
输出高 / 低电平VOH / VOLIO = ±2 mA2.4 / —— / 0.4V
输出驱动能力IOL / IOH24 ~ 88 ~ 12mA
引脚输入电容CIN / CIOf = 1 MHz8 ~ 1215pF
读周期时间tRC异步随机读7090 / 110ns
地址到数据有效tACC= 速度等级70 ~ 100110ns
CE# 到数据有效tCE110ns
OE# 到数据有效tOE25 ~ 3540ns
OE# 高到输出高阻tDF15 ~ 2030ns
写周期 / WE# 脉宽tWC / tWP70 / 35ns
页模式后续字访问tPACC页内连续读20 ~ 2530ns
同步突发时钟fCLK54 / 6680 ~ 108MHz
单字编程时间tWHWH1解锁后单字16 ~ 60300µs
写缓冲编程tWHWH232 / 64 字缓冲48 ~ 3001000µs
扇区擦除时间tSE4 KB ~ 128 KB0.3 ~ 1.05s
整片擦除时间tCHER128 Mb ~ 1 Gb30 ~ 120480s
擦写寿命每扇区100 000
数据保持TA ≤ 85 ℃20
工作温度(工业 / 车规 Gr.1)TAAEC-Q100−40+85 / +125
速度等级命名陷阱

型号尾缀数字的含义因厂商而异:S29GL128S90T 的 90 表示 tACC = 90 ns;M29EW 的 -70 表示 70 ns;而某些系列的 -11 表示 110 ns(去掉小数点),MX29GL320E 里的 320 是容量而非速度。必须在 ordering information 表中确认速度码定义,不要靠型号数字猜。

2 · 接口与协议

并行 NOR 的外部行为与异步 SRAM 完全一致:地址直接映射,读操作只需拉低 CE#/OE# 即出数据,无需命令序列;只有编程 / 擦除 / CFI 才通过"解锁周期 + 命令码"的写序列注入。这种"读像 SRAM、写像命令"的双面性是硬件设计的核心。

2.1 异步 SRAM 类接口信号定义

信号组成员方向关键时序参数硬件要点
地址总线A[max:0](x16 时 A0 为字地址 LSB)SoC → NORtRC、tACC、tOH单向;源端串阻;组内等长 ±25 mil
数据总线DQ[15:0](x8 时 DQ7:0 + DQ15=A-1)双向tOE、tDF、tDS / tDH双向;务必避免总线冲突;x8 时 DQ[14:8] 悬空
片选CE#SoC → NORtCE、tCP上拉;上电期间保持高
输出使能OE#SoC → NORtOE、tDF上拉;与 WE# 互斥
写使能WE#SoC → NORtWP、tDS、tDH上拉;上升沿锁存地址/数据
就绪 / 忙RY/BY#NOR → SoCtBUSY开漏,外加上拉 4.7 ~ 10 kΩ
复位RESET#SoC → NORtRP ≥ 500 ns、tRH ≥ 50 ns上拉 + 100 nF;建议接系统复位
写保护WP# / ACCSoC → NOR上拉使能保护;作为 ACC 时须专用驱动
位宽BYTE#SoC → NORtBVQV(切换后需等待)16 位上拉、8 位下拉,严禁浮空
同步突发附加CLK、ADV#、WAIT混合tCLK、tIACCCLK 按时钟线处理;ADV# 锁存地址

2.2 非复用与地址数据复用(ADM)

模式地址提供方式引脚数(512 Mb x16)时序开销适用场景
非复用(默认)独立地址线 A[25:0] 全程保持26 + 16 + 6 + 电源 ≈ 52无额外周期,tACC 即首字延迟引脚充裕、追求最快 XIP;推荐首选
ADM(复用)DQ[15:0] 分时送地址,ADV# 下降沿锁存16 + 6 + 电源 ≈ 26随机读增加 1 ~ 2 个锁存周期(+20 ~ 40 ns)引脚受限的小封装、MCU 只有复用总线
AADM(增强复用)复用 + 内部页缓存,突发时不再重复送地址同 ADM首字 +锁存;页内后续无开销复用总线 + 连续取指,兼顾引脚与带宽
【ADM 一个随机读周期的构成】
  Cycle 1 : ADV#=L,DQ[15:0] 送地址低 16 位      → 锁存 Addr[15:0]
  Cycle 2 : ADV#=L,DQ[15:0] 送高位地址(含 BA) → 锁存 Addr[max:16]
  Cycle 3 : ADV#=H,等待 tIACC(初始访问延迟)
  Cycle 4+: 连续输出数据(突发长度 4 / 8 / 16 / 32 或连续)
  ⇒ 随机读比非复用慢 25 % ~ 40 %,连续读几乎无差别
【设计建议】只要引脚够就用非复用;ADM 下 ADV# 与地址同组等长(±25 mil),
  并满足 ADV# 到 DQ 的锁存保持时间 tAVH(典型 5 ~ 10 ns);
  复用总线上若还挂 SRAM / PSRAM,三者 ADM 协议必须一致,否则 NOR 独占一个片选区。

2.3 读模式与带宽

读模式首字延迟后续字间隔16 位带宽要求
异步单字读70 ~ 110 ns70 ~ 110 ns14.5 ~ 22.9 MB/s最简单;等待周期按 tACC
异步页读70 ~ 110 ns20 ~ 25 ns64 ~ 80 MB/s(页内)页内保持 CE#/OE# 有效、高位地址不变
同步突发读(SDR)初始延迟 4 ~ 10 CLK1 个 CLK105 ~ 132 MB/s需 CLK、ADV#、WAIT;配置突发长度与初始延迟
连续线性突发同突发1 个 CLK同上,无页边界适合长代码段预取
【带宽计算(16 位总线)】
  异步单字:tRC=110 ns → 2 B / 110 ns = 18.2 MB/s;tRC=70 ns → 28.6 MB/s
  异步页读:首字 90 ns + 15 × 25 ns = 465 ns / 32 B → 68.8 MB/s
  同步突发 66 MHz:66 MHz × 2 B = 132 MB/s
    4 字突发(8 B)效率:t = (6 + 4)/66 MHz = 151 ns → 52.9 MB/s
    ⇒ 突发长度越长,初始延迟摊薄越明显,XIP 建议 ≥ 16 字突发
【XIP 取指的有效带宽】即使总线 132 MB/s,若 I-Cache 未命中惩罚为 8 字填充:
    有效带宽 ≈ 16 B / ((6+8)/66 MHz) = 75 MB/s
  ⇒ 提升 XIP 性能的优先级:① 开 I-Cache ② 增大突发长度 ③ 提高 CLK ④ 缩短 tACC

2.4 命令集

命令以"解锁周期 → 命令码 → 地址 / 数据"的写序列下达。解锁地址在 x8 与 x16 下不同,是最常见的软件 bug 来源。下表以 x16 模式为主。核对命令码基本一致,但地址与第 4 ~ 6 周期细节必须查表。

命令周期地址(x16)数据(x16)说明
读阵列 / 复位1任意0x00F0(或 0x00FF)从 CFI / Autoselect / 状态模式退回读阵列;中止编程 / 擦除
Autoselect(读 ID)30x555 / 0x2AA / 0x5550x00AA / 0x0055 / 0x0090进入后读 0x00 = 制造商 ID、0x01 = 设备 ID;发 Reset 退出
CFI 查询10x0055(x8:0x00AA)0x0098进入后按偏移读查询表;写 0x00F0 退出
字 / 字节编程40x555 / 0x2AA / 0x555 / PA0x00AA / 0x0055 / 0x00A0 / PDPA = 编程字地址,PD = 数据
解锁旁路 / 旁路编程 / 旁路复位20x555 / 0x2AA0x00AA / 0x0020旁路后编程只需 2 周期(A0h + 数据),批量写省约 30 % 开销;0x90+0x00 退出
写缓冲编程3 + N0x555 / SA / SA0x00AA / 0x0025 / (N−1)随后连续写 N 个字,最后写"缓冲编程确认"0x29
扇区 / 块擦除60x555 / 0x2AA / 0x555 / 0x555 / 0x2AA / SA0x00AA / 0x0055 / 0x0080 / 0x00AA / 0x0055 / 0x0030SA = 扇区内任意地址
整片擦除6同上,末周期… / 0x0010耗时 30 ~ 120 s
擦除挂起 / 恢复1任意0x00B0 / 0x0030擦除中临时读其他扇区;挂起后 RY/BY# 释放
状态读 / 状态清除1任意0x0070 / 0x0071进入后读 DQ7~DQ0;0x71 清除 DQ5 错误标志
扇区保护 / 解保护厂商自定义PPB / DYB / Password 机制,参见各厂商应用笔记
【解锁周期为什么是 0x555 / 0x2AA】AMD/Fujitsu 命令集(CFI Primary Command Set = 0x0002)的历史约定:
    字节模式(x8):地址 0x555 写 0xAA,地址 0x2AA 写 0x55
    字模式  (x16):地址 0x555 写 0x00AA,地址 0x2AA 写 0x0055
  —— 注意:x16 模式下解锁地址不再除以 2,因为命令锁存比较的是"地址总线上的值",
     而非"字节地址"。x16 器件 A[10:0] = 0x555 时,对应 SoC 字节地址 0xAAA。

  #define NOR_BASE  0x0C000000u                       /* 片选基址(字节地址)*/
  #define NOR_W(a)  (*(volatile uint16_t *)(NOR_BASE + ((a) << 1)))
  NOR_W(0x555) = 0x00AA;                              /* 解锁周期 1 */
  多数 SoC 外部总线在 16 位模式下会自动右移 1 位输出地址,
  故软件用"字地址"直接索引即可;务必用逻辑分析仪 / 示波器实测确认。

2.5 CFI / JEDEC ID 查询

CFI(JEDEC JEP137 / JESD68)让软件在运行时自动识别容量、页大小、擦除区块分布与时序,避免为每种型号硬编码。硬件上只需保证"能稳定读出一个字",CFI 就能工作;读不出 'QRY' 基本可断定是位宽 / 地址移位 / 时序三类硬件问题之一。下表偏移为 x16 字地址(x8 模式字节地址 = 偏移 × 2)。

偏移(x16 字地址)字段典型值解读
0x10 / 0x11 / 0x12识别串'Q' / 'R' / 'Y'0x51 / 0x52 / 0x59;读不到说明未进入 CFI 或位宽错
0x13 / 0x14Primary Command Set ID0x0002AMD / Fujitsu 标准;0x0001 = Intel 命令集
0x15 / 0x16扩展表地址0x0031指向 Primary Extended Table
0x1B / 0x1CVCC 编程/擦除 最小 / 最大0x27 / 0x36BCD 码:2.7 V / 3.6 V;电源设计必须落在窗口内
0x1F / 0x20单字 / 缓冲编程典型超时2N µs读出的值是指数 N
0x21 / 0x22块擦除 / 整片擦除典型超时2N ms同理,单位 ms
0x23 ~ 0x26上述操作的最大超时倍率2N × 典型软件轮询超时必须按最大值设定
0x27 / 0x28器件容量2N 字节N = 25 → 32 MiB
0x28 / 0x29接口描述0 / 1 / 2x8 only / x16 only / x8-x16 可切换(BYTE#)
0x2A / 0x2B写缓冲最大字节数2NN = 6 → 64 字节 = 32 字
0x2C / 0x2D擦除区块区域数1 ~ 4不同大小扇区分为多个 region
0x2E 起,每区 2 字区块区域信息块数−1 + 块大小/256遍历得到完整擦除粒度表(如 8 KB × 8 + 64 KB × 254)
【CFI 查询流程(16 位总线)】
static volatile uint16_t *const nor = (volatile uint16_t *)NOR_BASE;
static void nor_cmd(uint32_t wa, uint16_t d) { nor[wa] = d; }

void cfi_enter(void){ nor_cmd(0x0000, 0x00F0); nor_cmd(0x0055, 0x0098); }
void cfi_exit (void){ nor_cmd(0x0000, 0x00F0); }              /* Reset 回到读阵列 */

int cfi_probe(struct cfi_info *p)
{
    uint16_t q, r, y;
    cfi_enter();
    q = nor[0x10]; r = nor[0x11]; y = nor[0x12];
    if (q != 'Q' || r != 'R' || y != 'Y') { cfi_exit(); return -1; }

    p->size      = 1u << (nor[0x27] & 0xFF);      /* 2^N 字节                  */
    p->interface = nor[0x28];                      /* 0=x8 / 1=x16 / 2=可切换   */
    p->bufsize   = 1u << (nor[0x2A] & 0xFF);      /* 写缓冲字节数              */
    p->regions   = nor[0x2C] & 0xFF;
    uint32_t off = 0x2E;
    for (int i = 0; i < p->regions; i++) {
        p->region[i].blocks = (nor[off]     & 0xFFFF) + 1u;
        p->region[i].size   = (nor[off + 1] & 0xFFFF) * 256u;   /* 0 表示 128 KB 特殊编码 */
        if (p->region[i].size == 0) p->region[i].size = 131072u;
        off += 2;                                  /* 每区域 2 个(16 位)字    */
    }
    cfi_exit(); return 0;
}

【读不到 'QRY' 的排错三板斧】
  ① BYTE# 状态是否正确(应为 1 = x16);
  ② SoC 是否把字节地址右移 1 位输出到地址总线(16 位模式);
  ③ 等待周期是否足够 —— 先用 30 个等待周期试,成功后二分收敛;
  ④ 示波器看 CE#/OE#/WE# 是否真的产生低脉冲、地址线是否随周期翻转。

2.6 状态位轮询(DQ7 / DQ6 / DQ5 / DQ3 / DQ2 / DQ1)

名称行为软件处理
DQ7Data# Polling操作进行中读出的是写入数据 DQ7 的反码,完成后读出真值循环读同一地址直到 DQ7 与写入值一致;必须配合 DQ5 判错,否则器件损坏时死循环
DQ6Toggle Bit 1进行中连续读同一地址时 DQ6 在 0 / 1 间翻转,完成后停止连续两次读,DQ6 相同即完成;与 DQ2 配合可区分"擦除中"与"擦除挂起"
DQ5超时 / 错误标志编程或擦除超时时置 1置 1 后再读两次确认(DQ7/DQ6 可能仍在翻转),确认后发 Reset 0xF0 退出并上报失败
DQ3扇区擦除定时器擦除命令下达后、真正开始擦除前 = 0;开始后 = 1判断"是否还在 50 µs 擦除命令窗口内",多扇区连续擦除时使用
DQ2Toggle Bit 2擦除挂起期间 DQ2 持续翻转、DQ6 停止翻转与 DQ6 组合是判断擦除挂起的唯一可靠判据
DQ1写缓冲放弃标志写缓冲中写入不合法地址 / 跨页时置 1置 1 表示本次缓冲编程作废,需重新发起
RY/BY#硬件就绪引脚开漏,忙 = 低电平最省 CPU;可接 SoC 的 WAIT 引脚做硬件插入等待
【健壮的轮询模板(Data# Polling + Toggle Bit + DQ5 超时)】
int nor_wait_ready(volatile uint16_t *addr, uint16_t expect, uint32_t timeout_us)
{
    uint16_t d1, d2;  uint32_t t = 0;
    while (t < timeout_us) {
        d1 = *addr;  d2 = *addr;                    /* 连续两次读判 DQ6 是否翻转 */
        if (((d1 ^ d2) & 0x40) == 0)                /* DQ6 一致 → 操作结束       */
            return (((d1 ^ expect) & 0x80) == 0) ? 0 : -2;
        if (d1 & 0x20) {                            /* DQ5 = 1 → 可能超时        */
            d1 = *addr; d2 = *addr;
            if (((d1 ^ d2) & 0x40) == 0 && ((d1 ^ expect) & 0x80) == 0) return 0;
            addr[0] = 0x00F0;                       /* 复位回到读阵列 */
            return -1;
        }
        delay_us(1); t++;                           /* 也可改轮询 RY/BY# 引脚省总线 */
    }
    return -3;
}

【轮询超时设定】T_poll = CFI 最大超时(0x23~0x26)× 2(余量)× 1.5(温度降额)
  例:字编程最大 2^8 × 2^4 µs = 4096 µs → 轮询上限约 12 ms
      扇区擦除最大 2^8 × 2^4 ms = 4096 ms → 轮询上限约 12 s

3 · 电源设计

3.1 电源域与 I/O 电平匹配

项目3 V 单电源1.8 V 单电源双电源(VCC + VCCQ
VCC2.7 ~ 3.6 V1.65 ~ 1.95 V2.7 ~ 3.6 V(或 1.7 ~ 2.0 V)
VCCQ / VIO与 VCC 同引脚与 VCC 同引脚1.65 ~ 1.95 V 或 2.7 ~ 3.6 V,必须 ≤ VCC
容差(含纹波)±10 %±8 %各 ±10 %
纹波上限峰峰值 ≤ 100 mV(0 ~ 100 MHz);编程 / 擦除瞬态 ≤ 150 mV
上电顺序VCC 先于或同时于 VCCQ;VCCQ 先上电可能闩锁
峰值电流60 ~ 80 mA50 ~ 70 mAVCC 60 mA / VCCQ 20 mA
LDO / DCDC 选型≥ 200 mA 余量;VCCQ 可与 SoC 的 I/O 电源共享,但要单独去耦
1.8 V SoC ↔ 3 V NOR 方案实现优点缺点 / 限制适用
① 换 1.8 V 并行 NOR 首选VCC = 1.8 V无需转换器,成本 / 面积 / 时序最优1.8 V 并行 NOR 可选型号与容量较少新设计
② 双电源 NORVCC=3.3 V、VCCQ=1.8 V省去转换器需两路电源;VCCQ 必须单独去耦SoC 有 1.8 V 电源时
③ 自动方向转换器TXS0108E / TXB0108 / LSF0108 × 4 ~ 6 片无需 DIR 信号,布线简单驱动弱;总线电容 < 70 pF;不适合 > 40 MHz 突发异步低频读、少量信号
④ 方向可控收发器 推荐74LVC16T245 / 74AVC32T245 / 74LVC4245驱动强(24 ~ 32 mA),隔离总线电容需 DIR 信号(由 OE# 生成);增加 3 ~ 10 ns 延时16 位总线 + 页读 / 突发读
⑤ 电阻分压3.3 V → 1.8 V 用 1 kΩ / 1.2 kΩ成本最低仅适用 RESET#、WP# 等单向低速信号;噪声容限差个别控制脚应急
严禁的做法

把 3.3 V NOR 的 DQ 直接接到 1.8 V SoC 的 I/O 上"靠钳位二极管扛"。NOR 输出高电平 3.3 V 会通过 SoC I/O 的 ESD 二极管向 1.8 V 电源灌电流,长期工作会抬高 1.8 V 轨、损坏 I/O 或触发闩锁。电压差 > 0.3 V 就必须做电平转换。

3.2 去耦电容配置

位号容值 / 封装 / 介质数量放置位置作用
C1 ~ Cn(高频)100 nF,0402(推荐)/ 0603,X7R ≥ 6.3 V每个 VCC 引脚 1 颗(TSOP-56 通常 1 ~ 2 个 VCC 脚;BGA-64 通常 2 ~ 3 个)距焊盘 ≤ 2 mm,过孔直接打在焊盘侧抑制编程 / 擦除电荷泵高频电流
CBULK14.7 µF,0603 / 0805,X5R / X6S ≥ 6.3 V每器件 1 颗电源入口处,≤ 10 mm补充擦除瞬态(数十 ms 级)
CBULK2(可选)10 ~ 22 µF,0805 / 1206,X5R每电源域 1 颗电源输出端多器件共用电源 / 长走线时抑制 IR 压降
CVCCQ100 nF,0402,X7R每个 VCCQ 引脚 1 颗紧贴引脚I/O 同步开关噪声回路
CRESET100 nF,0402,X7R1 颗RESET# 到地,配合 10 kΩ 上拉上电复位延时(RC ≈ 1 ms)+ 滤除复位线毛刺
  • 去耦回路面积(电容 → 电源引脚 → 地引脚 → 电容过孔)< 50 mm²;BGA 器件优先放在背面焊盘正下方。
  • 禁止用 > 3 mm 的细走线连接电容(会引入 5 ~ 10 nH 电感,完全抵消去耦效果)。
  • 注意直流偏压效应:X7R 0402 100 nF / 6.3 V 在 3.3 V 偏压下有效容值可能只剩 60 ~ 70 %,建议选 10 V 及以上耐压。
  • VCC 主路径 ≥ 20 mil(0.5 mm),分支到引脚 ≥ 10 mil;整条路径压降 < 50 mV。

3.3 上电 / 掉电时序

CE#RESET#RY/BY#VCC 上电期间必须保持高 有效读窗口 tRP ≥ 500 ns(复位脉冲宽度) tREADY(VCC 有效 → 器件就绪,典型 90 ~ 300 µs) 0 V VCC(min) = 2.7 V VLKO ≈ 2.2 ~ 2.5 V(欠压锁定) 3.3 V 掉电 tVCS ≥ 300 µs tPU-READ / tREADY(VCC 有效 → 首次读) tPD(CE# 先失效) t0 t1 VCC 有效 t2 释放 t3 就绪 t4 t5
图 3-1 并行 NOR 上电与掉电时序示意。核心约束:VCC 越过 VCC(min) 后需等待 tVCS(典型 300 µs)才能拉低 CE# 或释放 RESET#;掉电时必须先让 CE#/RESET# 失效再切断电源,VCC 需降到 VLKO 以下才算真正复位。具体数值以 datasheet 的 Power-Up / Power-Down 章节为准
时序参数符号典型要求违反后果硬件保障措施
VCC 建立 → CE# 有效tVCS≥ 50 ~ 300 µs读出乱码、状态机锁死、误擦除CE# 上拉 + 上电软件延时;或用电源良好(PG)信号门控 CE#
RESET# 脉冲宽度tRP≥ 500 ns(建议 ≥ 1 µs)复位不彻底RC 复位(10 kΩ + 100 nF ≈ 1 ms)或复位芯片
RESET# 释放 → 首次读tRH≥ 35 ~ 50 ns首次读失败软件插入 ≥ 1 µs 延时
VCC 有效 → 就绪tPU-READ典型 90 µs,最大 300 µs上电立刻读得无效数据查询 RY/BY# 或延时 ≥ 500 µs
VCC 上升斜率0.05 ~ 10 V/ms(部分器件有要求)过快触发闩锁,过慢 POR 异常电源软启动;避免热插拔直接上电
掉电:CE# 失效先于 VCC 跌落tPD≥ 0,越大越安全掉电毛刺被当成写命令,数据被改电压监控在 VCC 跌到 2.7 V 前强制 CE#=1、RESET#=0
编程 / 擦除期间断电禁止扇区数据不确定≥ 47 µF 储能维持 ≥ 10 ms,或备用电源完成当前操作
欠压锁定阈值VLKO下降 2.2 ~ 2.5 V / 上升 2.4 ~ 2.7 V低压编程数据不可靠监控 VCC,低于 2.7 V 时禁止写操作
【掉电保护设计(针对"经常掉电丢数据")】
  1) 硬件:电压监控芯片(TPS3839 / MCP130,阈值 2.93 V)输出经与门接到
     CE# 上拉控制与 RESET#:VCC < 2.93 V → RESET#=0、CE#=1,禁止一切操作。
     传播延时 5 ~ 20 µs,远快于 VCC 从 2.93 V 跌到 2.7 V 的时间。
  2) 电源:3.3 V 轨放 ≥ 47 µF 储能,保证 ≥ 1 ms 安全窗口。
  3) 软件:写前后校验;关键参数区双备份 + 序列号 + CRC;上电自检发现"半写"则回滚。
  4) 布局:WP# 上拉,Bootloader 所在扇区设为硬件保护,即使掉电也擦不掉引导区。

3.4 待机与 DPD 低功耗

模式进入条件典型电流退出时间硬件注意
激活读(异步)CE#=L,OE#=L12 ~ 30 mA
激活读(同步突发)CLK 运行25 ~ 50 mA空闲时关 CLK 或退出突发模式
待机(Standby)CE# = VIH5 ~ 50 µA≈ 100 nsCE# 必须外部上拉,浮空时电流可达 mA 级
自动睡眠地址保持 > tASSB(100 ns ~ 5 µs)≈ 待机水平自动XIP 时会反复唤醒,以实测为准
深度掉电(DPD)RESET# = VSS ± 0.3 V1 ~ 15 µA90 ~ 300 µsDPD 期间不能读;XIP 系统会跑飞
整域断电负载开关切断 VCC≈ 0完整上电时序需与 SoC I/O 状态协同,避免倒灌
XIP 系统慎用 DPD

代码正在 NOR 上执行时把 RESET# 拉低进入 DPD,CPU 下一个取指会读到无效数据而直接跑飞。正确做法:把"进入 DPD 的代码"与"唤醒后要执行的代码"放到片内 SRAM,进入前关中断并失效 I-Cache。

4 · 典型应用电路

4.1 3 V 系统 16 位非复用接法(推荐基准电路)

【可选】总线缓冲器 / 电平转换器:74LVC16245 / 74LVC16T245 本图按"直连"基准绘制;若信号路径过长、负载大或 I/O 电压不同,请在每根信号线中段插入一颗,方向/数量参考 4.3 节 MCU / SoC / FPGA 外部总线控制器 · EMC / SMC / FMC / EBI 片选区 CS0 0x0C00_0000 ~ 0x0FFF_FFFF 16 位数据总线 · 非复用异步模式 WAIT / IRQ 输入(接 RY/BY#) 硬件握手,下降沿触发插入等待 GPIO 控制 RESET# 默认输入 + 内部上拉 SoC 侧 所有信号经引脚直接输出 高速总线走线 ≤ 50 mm VCC 引脚 就近放 100 nF 去耦电容 并行 NOR Flash S29GL / M29EW / MX29GL · TSOP-56 / BGA-64 XTX XT29F / M29F 系列 BYTE# = 1 → 16 位 A0 = 字地址最低位 16 位访问:SoC A[25:1] → NOR A[24:0] RY/BY# 为开漏输出,必须外部上拉 空闲可作 WAIT 信号通知 SoC XTX 选型 TSOP-56:XT29F512 / 01G BGA-64:XT29F01G / 02G NOR 侧 VCC / VCCQ 每脚 100 nF 去耦 WP#/ACC 上电默认 VCC VCC / VCCQ 引脚 每脚 100 nF,4.7 µF 体电容 A[24:0] 地址总线 SoC A[25:1] → NOR A[24:0](右移 1 位) DQ[15:0] 数据总线(双向) 源端串阻 22 ~ 33 Ω(仅 SoC 侧)· 不可两端各串否则 VIL/VIH 违例 CE# 片选(低有效) 上拉 VCC 10 kΩ · 上电 / 复位期间保持高 OE# 读使能 上拉 VCC 10 kΩ · 与 WE# 硬件互斥 WE# 写使能 / 命令锁存(上升沿) 上拉 VCC 10 kΩ · tWP ≥ 35 ns(控制器配置) RESET# 硬件复位 上拉 VCC 10 kΩ · RC 延时 ~ 1 ms 100 nF WP#/ACC 引导区写保护 / 加速编程 上拉 VCC 10 kΩ(允许写)· 作 ACC 时严禁上拉 RY/BY# 就绪 / 忙(开漏,NOR → SoC) 上拉 VCC 4.7 ~ 10 kΩ(必须)· 接 WAIT 做硬件等待 BYTE# 位宽选择(=1 选 16 位) 上拉 VCC 10 kΩ · 切 8 位时改下拉到 GND · 严禁浮空 A[25:1] DQ[15:0] CS0# RD# WR# RESET GPIO VCC RY/BY# A[24:0] CE# OE# WE# RESET# WP#/ACC BYTE# VCC 3.3 V 走线 ≥ 20 mil;所有上拉电阻统一接此母线 GND 10 kΩ C1 100 nF / 0402 紧贴 VCC 引脚 · 回路 ≤ 50 mm² C2 4.7 µF / 0603 整器件去耦 · X5R / X7R 电容负极统一回到完整地平面 注:箭头方向代表驱动方向;RY/BY# 为唯一反向(NOR → SoC)信号,其他均为 SoC → NOR
图 4-1 SoC 外部总线 ↔ 并行 NOR 典型应用电路(16 位非复用异步模式,3 V 系统)。地址 / 数据总线串 22 ~ 33 Ω 源端电阻;CE#/OE#/WE#/RESET#/WP#/BYTE# 上拉到 VCC,RY/BY# 因开漏必须上拉;RESET# 增加 100 nF 构成上电复位延时
网络连接上 / 下拉串联电阻关键说明
A[24:0]SoC A[25:1] → NOR A[24:0]22 ~ 33 Ω(靠 SoC)16 位模式地址右移 1 位;未用高位地址脚按 datasheet 悬空
DQ[15:0]SoC DQ[15:0] ↔ NOR DQ[15:0]22 ~ 33 Ω(只串一颗双向串阻不能两端各串,否则分压导致 VIL / VIH 违例
CE#SoC CS0# → NOR CE#10 kΩ 上拉可选 33 Ω上电 / 复位期间保持高;与其他外设片选不得重叠
OE#SoC RD# → NOR OE#10 kΩ 上拉可选 33 Ω与 WE# 硬件互斥;外接缓冲时注意方向切换死区
WE#SoC WR# → NOR WE#10 kΩ 上拉可选 33 Ω上升沿锁存;tWP ≥ 35 ns 需在控制器中配置写脉冲宽度
RESET#GPIO 或系统复位10 kΩ 上拉 + 100 nF 到地RC ≈ 1 ms;GPIO 控制时默认配置为输入 + 上拉
WP#/ACC上拉(或 GPIO)10 kΩ 上拉上拉 = 允许写,接地 = 保护引导扇区;作为 ACC 时严禁上拉到 VCC
RY/BY#→ SoC GPIO / WAIT4.7 ~ 10 kΩ 上拉(必须)可选 100 Ω开漏输出;接 WAIT 可实现硬件插入等待
BYTE#上拉 VCC(16 位)10 kΩ 上拉关键必须用电阻固定,绝不允许浮空或由未初始化 GPIO 驱动
VCC / VCCQ3.3 V / 1.8 V每引脚 100 nF + 整器件 4.7 µF;VCCQ 不早于 VCC 上电
VSS地平面所有地引脚全部就近打地过孔,禁止串联接地
NC / RFU悬空RFU / DNU 按 datasheet 处理,部分必须接地

4.2 8 位接法与 BYTE# 处理

16 位模式(BYTE#=1,推荐)

  • BYTE# 经 10 kΩ 上拉到 VCC
  • SoC 地址 A[n:1] → NOR A[n−1:0],整体右移一位
  • DQ[15:0] 全部使用,一次读一个字(2 字节)。
  • NOR 的 A0 是字地址最低位,不是字节地址。
  • 小端系统:低字节在 DQ[7:0]、高字节在 DQ[15:8];大端 SoC 需在控制器中配置字节交换。

8 位模式(BYTE#=0)

  • BYTE# 经 10 kΩ 下拉到 GND(保留电阻便于调试)。
  • SoC 地址 A[n:1] → NOR A[n−1:0],仍右移一位
  • DQ15 变为 A-1(字节选择),接 SoC 的 A0。
  • DQ[14:8] 内部高阻,可悬空;为降低噪声建议各接 10 kΩ 弱上拉。
  • 容量不变但每次只取 1 字节,带宽减半;能 16 位就别用 8 位。
信号16 位(BYTE#=1)8 位(BYTE#=0)硬件差异
地址总线SoC A[n:1] → NOR A[n−1:0]同上,另 SoC A0 → NOR DQ15(A-1)8 位模式多一根线接到 DQ15
数据总线DQ[15:0] 全部有效DQ[7:0] 有效;DQ[14:8] 高阻DQ[14:8] 悬空或弱上拉
字节选择一次取 2 字节A-1 = 0 选偶字节,=1 选奇字节注意 A-1 与 SoC 端序配置配合
位宽切换运行中禁止动态切换:切换后需等待 tBVQV(典型数十 ns)并重新复位与配时序;用电阻固定最稳妥

4.3 电平转换器与总线缓冲

SoC(1.8 V I/O) A[24:0] / CE# / OE# / WE# BYTE# / RESET# / WP# DQ[15:0](双向) 外部总线 EMC RY/BY# 需降压到 1.8 V (电阻分压 / 单向转换器) U2 · 地址 / 控制 74LVC16T245 × 2 DIR = 1(固定 A → B) U3 · 数据总线 74LVC16T245 DIR = OE#(读 B→A / 写 A→B) 并行 NOR(3.3 V I/O) XTX XT29F01GATSHGA / M29F 系列 A[24:0] / CE# / OE# / WE# BYTE# / RESET# / WP# DQ[15:0] B 侧串 22 ~ 33 Ω(可选) RY/BY# 开漏上拉到 3.3 V A / 控制 33 Ω(可选) DQ[15:0] 33 Ω(可选) OE# → DIR VCCA = 1.8 VVCCB = 3.3 V → 转换器传播延时 tpd 典型 3.0 ~ 5.0 ns,两个方向各一次,往返约 6 ~ 10 ns,必须计入 tACC 预算与等待周期 总线电容被转换器隔离为两段(各 ≤ 30 pF),更易满足上升时间要求;DIR 切换死区需 ≥ 10 ns 以避免总线冲突 替代方案:TXS / LSF 系列自动方向转换器 —— 省 DIR 线,但驱动弱、总线电容需 < 70 pF,仅限异步低频读
图 4-2 1.8 V SoC 与 3.3 V 并行 NOR 之间的电平转换与总线缓冲。地址 / 控制用固定方向转换器,数据用 DIR = OE# 的双向转换器;B 侧(3.3 V)保留 22 ~ 33 Ω 源端串阻
器件通道方向驱动tpdVCCA / VCCB适用
74LVC16T245 首选16DIR 可控±24 mA3.0 ~ 5.0 ns1.2 ~ 3.6 / 1.2 ~ 5.5 V16 位数据总线,支持页读 / 突发
74AVC32T24532DIR 可控±12 mA2.0 ~ 3.5 ns0.8 ~ 3.6 / 0.8 ~ 3.6 V延时更小,但驱动较弱
74LVC42458DIR 可控±24 mA6 ~ 10 ns5 V / 3.3 V老设计 / 5 V 侧,延时偏大
74LVC1624516DIR 可控±24 mA2.5 ~ 4.5 ns单电源 1.65 ~ 3.6 V同电压域纯缓冲 / 隔离,不做转换
TXS0108E8自动方向弱(≤ 20 mA)3 ~ 10 ns1.65 ~ 3.6 / 2.3 ~ 5.5 V异步低频,总线电容 < 70 pF
74LVC1T451DIR 可控±24 mA2.5 ns1.65 ~ 5.5 VRY/BY#、RESET# 等单根控制线
缓冲器引入的两个隐藏问题

① 方向切换死区:若 DIR 切换与 OE# 边沿竞争,可能出现"SoC 与 NOR 同时驱动总线"的瞬间短路,表现为电流尖峰与地弹。对策:DIR 直接用 OE# 产生(不经过额外逻辑),并在控制器中配置 OE# 无效到下一次 WE# 有效之间至少 1 个总线时钟的死区。

② 往返延时翻倍:SoC → 缓冲器 → NOR → 缓冲器 → SoC,地址与数据各经一次转换器,总延时增加 2 × tpd。计算等待周期时必须把 6 ~ 10 ns 计入,否则在 70 ns 器件上会偶发读错。

📥 芯参谋客户端下载