名称:93LC46 EEPROM SPI 读写控制 FPGA 设计 Verilog Vivado
软件:Vivado
语言:Verilog
功能介绍
本设计实现了 FPGA 对 93LC46 串行 EEPROM 的 SPI 读写控制,适合用于学习外部串行存储器访问、按键触发控制、片选时序、串行数据收发以及板级 LED 显示验证等内容。工程以 Verilog 编写,在 Vivado 环境下组织源码、仿真与实现流程。 顶层模块提供 50MHz 时钟输入、低电平复位按键、写按键、读按键、93LC46 的 MISO/MOSI/SCK/CS 接口以及 16 位 LED 显示输出。用户可通过按键触发写入或读取操作,控制逻辑完成与 93LC46 的串行通信,并将相关结果或状态通过 LED 进行显示。 该设计重点面向 93LC46 EEPROM 的 FPGA 接口应用,不只是简单的 SPI 信号连线,还包含按键打拍、触发生成、读写控制、串行通信时序和显示输出等完整逻辑,便于在实验教学、课程设计和外设接口开发中复用。
运行环境
开发语言:Verilog 开发软件:Vivado 工程类型:FPGA 工程,包含 Vivado 项目文件、Verilog 源码、Testbench 仿真文件、XDC 管脚约束文件、综合实现结果和 bit 文件。
设计思路
设计采用顶层封装加控制模块的结构。top_93lc46 作为工程顶层,负责定义系统输入输出端口,并例化 spi_ctrl 控制模块。外部接口包括系统时钟、复位、读写按键、93LC46 串行接口以及 LED 显示端口,使工程结构清晰,便于直接查看板级连接关系。 核心控制思路是将按键输入转换为稳定的读写触发信号,再由 SPI/93LC46 控制逻辑完成 EEPROM 的访问流程。写操作和读操作通过独立按键触发,控制模块根据触发条件驱动 cs、sck、mo 等信号,并通过 mi 接收串行返回数据。由于 93LC46 采用串行通信方式,设计中需要按照器件访问流程组织命令、地址和数据的移位输出,同时在读周期中采样输入数据。 LED 输出用于显示控制状态或读回数据结果,便于在开发板上观察操作效果。通过这种结构,用户可以从顶层端口、控制模块、EEPROM 通信模块和仿真文件逐步理解整个设计,也可以在现有工程基础上扩展数据宽度、地址控制方式或上层交互方式。
模块结构
主要模块包括: 1. top_93lc46:工程顶层模块,定义时钟、复位、读写按键、93LC46 接口和 LED 输出,并例化控制模块。 2. spi_ctrl:控制模块,负责按键打拍、读写触发生成、显示逻辑以及与 93LC46 通信逻辑的连接控制。 3. spi_93lc46:93LC46 串行 EEPROM 接口相关模块,承担 SPI 时序和 EEPROM 读写流程控制。 4. tb_top_93lc46:Testbench 仿真文件,用于对顶层设计进行行为仿真。 5. glbl:Vivado 仿真环境相关全局模块。
开发板验证
工程包含 XDC 管脚约束文件,并提供 Artix-7 开发板相关图片,可用于开发板下载验证。顶层端口已分配到复位按键、读写按键、93LC46 串行接口和 16 位 LED 显示信号,适合在 Artix-7 FPGA 学习板环境中进行板级实验。 开发板验证关注点包括:按下写按键触发 EEPROM 写操作,按下读按键触发 EEPROM 读操作,SPI 接口信号连接到 93LC46 芯片,LED 用于显示状态或读回结果。结合管脚约束文件和已生成的 bit 文件,可作为完整的上板验证参考。
演示视频
包含演示视频,可用于查看工程运行效果和开发板验证过程。
演示视频请关注公众号后获取对应资料查看。
仿真图/仿真说明/设计文档图片
包含设计文档内容,文档中整理了工程文件、程序文件、程序编译、RTL 图、管脚分配、Testbench 和仿真图等内容,可辅助理解工程结构、仿真过程与实现结果。Vivado 仿真目录中包含行为仿真生成文件和波形数据库,可作为进一步查看仿真结果的参考。
部分代码
以下展示顶层模块top_93lc46的部分代码,完整代码可关注下方公众号卡片获取。
module top_93lc46( input wire clk, // 50MHz input wire rst_n, // 低电平复位按键--BTNC input wire write_n, // 写按键,低电平有效--BTNL input wire read_n, // 读按键,低电平有效--BTNR // 93LC46接口 input wire mi, // 串行数据输入MISO output wire sck, // 串行数据时钟 output wire cs, // 片选信号,高电平选中 output wire mo, // 串行数据输出MOSI // 显示 output wire [15:0] LED // 高电平亮 ); // 控制模块:包含按键打拍、触发生成、显示逻辑 spi_ctrl u_ctrl ( .clk (clk), .rst_n (rst_n), .write_n (write_n), .read_n (read_n), .mi (mi), .sck (sck), .cs (cs), .mo (mo), .LED (LED) ); endmodule
代码获取:点击下方公众号卡片