1. 项目背景与核心价值
在嵌入式系统开发中,Zynq系列芯片因其独特的ARM+FPGA架构而广受欢迎。PL(Programmable Logic)部分的灵活性与PS(Processing System)的高效性相结合,为通信协议实现提供了多种可能性。IIC(Inter-Integrated Circuit)作为一种简单、可靠的双线式串行总线协议,在EEPROM、传感器等低速外设连接中占据重要地位。
AT24C256是常见的256Kbit IIC接口EEPROM存储器,广泛应用于配置存储、数据记录等场景。本实验的核心价值在于:
- 掌握纯PL逻辑实现IIC主机控制器的设计方法
- 理解IIC协议在FPGA中的硬件实现原理
- 构建完整的AT24C256读写验证系统
- 为复杂系统中PS+PL协同工作奠定基础
与PS端通过软件模拟IIC相比,PL实现具有以下优势:
- 时序精确:硬件实现的时钟严格符合规范
- 不占用CPU资源:PS可并行处理其他任务
- 确定性高:不受系统中断和任务调度影响
- 可定制性强:可根据需求优化协议实现
2. 硬件架构设计
2.1 系统整体框图
本实验的硬件架构包含三个主要部分:
code复制[Zynq PS]
|
[AXI Interconnect]---[PL IIC Controller]---[AT24C256]
|
[其他PL逻辑]
2.2 IIC控制器核心模块
PL端IIC控制器采用Verilog实现,主要包含以下子模块:
-
状态机控制单元:
- 实现标准IIC的START/STOP条件生成
- 处理设备地址匹配
- 控制读写状态转换
- 超时与错误检测
-
时钟分频器:
verilog复制always @(posedge clk) begin if(cnt == DIVIDER) begin scl_out <= ~scl_out; cnt <= 0; end else begin cnt <= cnt + 1; end end典型分频值计算(100kHz标准模式):
- 假设FPGA时钟100MHz
- 分频系数 = 100MHz/(2*100kHz) = 500
-
数据移位寄存器:
- 8位双向移位寄存器
- 支持MSB/LSB优先配置
- 集成CRC校验生成
-
AXI-Lite接口:
- 提供PS配置访问通道
- 32位数据总线
- 支持中断通知
2.3 AT24C256关键参数
| 参数 | 值 | 说明 |
|---|---|---|
| 容量 | 256Kbit (32KB) | 分64页,每页64字节 |
| 工作电压 | 1.7V-5.5V | 兼容多种电平标准 |
| 最大时钟频率 | 400k |
