1. 项目概述:PL端AXI IIC控制器模拟AT24C256从设备
在Zynq SoC开发中,PL(Programmable Logic)端的AXI IIC控制器与PS(Processing System)的交互是嵌入式系统设计的经典场景。这个实验的核心目标是通过PL端的AXI IIC IP核模拟AT24C256 EEPROM的行为,实现PS端通过I2C协议对虚拟存储设备的读写操作。AT24C256是常见的256Kbit串行EEPROM,其I2C接口协议在工业控制、参数存储等场景应用广泛。
选择在PL端实现I2C从设备模拟而非直接使用物理芯片,主要基于三方面考量:首先,可以灵活修改从设备响应行为,方便调试协议交互过程;其次,在缺乏物理器件时仍能进行完整的I2C协议栈开发;最重要的是,这种方案能够深入理解AXI IIC控制器的寄存器配置与时序控制机制。实测表明,在Zynq-7000系列的XC7Z020芯片上,PL端模拟的I2C从设备可稳定工作在标准模式(100kHz)和快速模式(400kHz)。
2. 硬件设计与IP核配置
2.1 AXI IIC IP核参数设置
在Vivado中配置AXI IIC IP核时,关键参数需要特别注意:
- IIC模式选择"IIC"而非"AXI IIC",后者是Xilinx改进版本
- 使能"Dynamic Speed"以支持运行时速率切换
- GPO宽度设为1,用于控制模拟EEPROM的写保护引脚
- 中断使能建议勾选,便于通过中断检测传输状态
时钟配置需与PS端协调,典型值为:
bash复制输入时钟频率:50MHz
IIC总线频率:100kHz(标准模式)或400kHz(快速模式)
2.2 从设备地址映射
AT24C256的I2C地址由硬件引脚A2-A0决定,格式为:
code复制7'b1010[A2][A1][A0] + R/W#
实验中通常将A2-A0接地,得到基础地址0xA0(写)和0xA1(读)。PL端需要实现地址识别逻辑,当收到匹配地址时拉低SDA响应ACK。
2.3 存储阵列仿真
在PL端用Block RAM模拟AT24C256的32KB存储空间,需注意:
- 初始化时填充FFh模拟空白EEPROM
- 实现页写缓冲(64字节/页)
- 添加写周期定时器
