SPI IP接口设计-论文.doc_第1页
SPI IP接口设计-论文.doc_第2页
SPI IP接口设计-论文.doc_第3页
SPI IP接口设计-论文.doc_第4页
SPI IP接口设计-论文.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘摘 要要 SPI 是英语 Serial Peripheral interface 的缩写 顾名思义就是串行外围设备接 口 SPI 是一种高速的 全双工 同步的通信总线 并且在芯片的管脚上只占用 四根线 节约了芯片的管脚 同时为 PCB 的布局上节省空间 SPI Flash 主要用 于代码存储或者其他非易失性存储应用 本设计目的在于完成一个 SPI Flash Controller 的设计 相当于在上层的 Driver 和 Flash 器件之间建立起一座连接的桥梁 控制器接收上层配置的并行数 据和控制信号 经过控制器处理之后以串行的方式发送至 Flash 器件以完成对 Flash 的相应的读写等操作 本设计采用 Verilog HDL 语言 在 Vi 编辑器中完 成设计 并用 EDA tool 对设计进行了编译 模拟 仿真和调试 最后又在 FPGA 上对结果进行了实践证明 完成上述全部工作之后 再从功能 面积优化和成本 缩减等方面对设计进行分析总结本次毕业设计中获得的宝贵经验 关键词关键词 闪存闪存 Verilog HDL 串行串行 并行并行 FPGA SPI IP 接口设计 ABSTRACT ABSTRACT SPI Serial Peripheral interface is a serial periphery slave interface SPI is a fast duplex and synchronism communication bus And there are only 4 pins on the chip of SPI It is so convenient for wire layings of PCB SPI Flash is ideal for code download as well as storing nonvolatile voice text and data In this design I have finished a SPI Flash Controller IP Core It connects top driver and flash device just like a bridge The controller receive the parallel data and control signal configured by top and then the parallel data will be processed and transmitted to the flash by SPI interface as serial signal in order to execute the read or write operation to the flash The program actualizes in Verilog HDL designed in VI under linux EDA tools are used to simulate synthesize and debug such as Debussy After the design s RTL code and simulation this design made up a system with other IP on a FPGA platform in order to check the design After all the work above finished this paper analyze the function area and cost of the SPI flash controller summarize the experience of the graduation design Keywords Flash Verilog SERIAL COLLATERAL FPGA SPI IP 接口设计 目录i 目目 录录 第一章第一章 引引 言言 1 第二章第二章 SPI FLASH CONTROLLER 简介简介 3 2 1 SPI 简介 3 2 2 SPI FLASH简介 5 第三章第三章 SPI FLASH CONTROLLER 设计环境设计环境 7 3 1 VERILOG HDL 语言简介 7 3 2 LINUX系统下的设计开发环境简介 8 3 3 数字电路设计方法 9 3 4 VERILOG HDL 的设计流程 9 3 5 编译 模拟仿真 EDA TOOL简介 10 3 6 ISE 软件简介 10 3 7 XILINX SPARTAN 3 系列器件介绍 11 3 8 HE REGISTER BUS 协议简介 12 第四章第四章 SPI FLASH CONTROLLER 设计与实现设计与实现 13 4 1 SPI FLASH CONTROLLER的设计流程 13 4 2 设计规格 14 4 2 1 设计要求 14 4 2 2 I O 端口 14 4 3 功能模块划分 16 4 4 功能模块设计 17 4 4 1 HE register 总线接口 17 4 4 2 发送顺序控制逻辑 18 4 4 3 串并转换控制逻辑 21 4 4 4 并串转换控制逻辑 22 4 4 5 数据状态信息选择逻辑 24 4 4 6 分频模块 24 4 4 7 片选逻辑模块 25 4 4 8 中断信号产生模块 25 目录ii 第五章第五章 SPI FLASH CONTROLLER 测试与验证测试与验证 27 5 1 测试环境 27 5 2 测试文件架构 28 5 3 测试功能点 28 5 4 测试流程 30 5 5 FPGA 验证 31 5 5 1 C CODE 的仿真 31 5 5 2 FPGA 硬件测试 31 5 6 验证结果 32 第六章第六章 总总 结结 35 致致 谢谢 37 参考文献参考文献 39 第一章 引言1 第一章 引 言 SPI 是英语 Serial Peripheral Interface 的缩写 就是串行外围设备接口 SPI 接 口主要应用在 EEPROM FLASH 实时时钟 AD 转换器 还有数字信号处理器 和数字信号解码器之间 SPI 是一种高速的 全双工 同步的通信总线 并且在 芯片的管脚上只占用四根线 节约了芯片的管脚 同时为 PCB 的布局上节省空间 提供方便 正是出于这种简单易用的特性 现在越来越多的芯片集成了这种通信 协议 闪速存储器 Flash Memory 是 Intel 公司于 1988 年推出的一种新型非易失性大 容量存储器 它因良好的性能而深受广大用户和半导体芯片制造商的青睐 Flash Memory 以其集成度高 成本低 使用方便等优点 在众多领域中获得了广泛应 用 在现代数字电路设计中经常需要保存大量数据 而 Flash 存储速度快 体积 小 功耗低且价格低廉 可在线电擦写 信息在掉电后不会丢失 因此成为设计 人员的首选 在目前所有的非易失性存储器 PROM EPROM EEPROM 和 F lash 中唯有 Flash 存储器几乎拥有现今讲究个性化的用户所需的所有特点 且成 本已低于 PROM EPROM 因而已为新一代嵌入式应用 如数字相机和 MP3 播放 机 的首选存储器 Flash 是一种具有电可擦除的可编程 ROM 可以分为两大类 并行 Flash 和 串行 Flash 并行 Flash 存储量大 速度快 而串行 Flash 存储量相对较小 但体 积小 连线简单 可减小电路面积 节约成本 二者各有其优缺点 可依据实际 需要选取 随着并行总线的数据传输率越来越高 传统的并行接口逐渐暴露出一 些设计上的缺陷 比如并行线路的信号干扰问题 而串行技术采有极少的数据线 虽然传输速率受到限制 但在传输数据时几乎不会因为受到干扰而出错 SPI Flash 就是这样一种采用串行接口的 Flash 存储器件 本课题通过对最基本的 Flash 器件和 SPI 总线协议的研究和实现 设计了 SPI Flash Controller 以此来熟悉 IP 核的设计和验证 SPI IP 接口设计2 第二章 SPI Flash Controller 简介3 第二章 SPI Flash Controller 简介 SPI Flash Controller 即为串行外设接口 flash 存储器控制器 SPI Flash 以其优 良的特性已被广泛应用于很多设计之中 本课题设计开发一款 SPI Flash 控制器 2 1 SPI 简介 SPI Serial Peripheral Interface 串行外围设备接口 是 Motorola 首先在其 MC68HCXX 系列处理器上定义的 正因为引言中所述的诸多优点 现在越来越 多的芯片集成了这种通信协议 比如 AT91RM9200 处 理外 设 MOSI MISO SCLK I O GND SI SO CLK CS GND 图 2 1 基本的 SPI 接口 SPI 总线系统是一种同步串行外设接口 它可以使 MCU 与各种外围设备以 串行方式进行通信以交换信息 外围设置 FLASHRAM 网络控制器 LCD 显示 驱动器 A D 转换器和 MCU 等 SPI 总线系统可直接与各个厂家生产的多种标 准外围器件直接接口 SPI 接口一般使用 4 条线 串行时钟线 SCK 主机输入 从机输出数据线 MISO 主机输出 从机输入数据线 MOST 和低电平有效的从机选 择线 SS 有的 SPI 接口芯片带有中断信号线 INT 或 INT 有的 SPI 接口芯片没有 主机输出 从机输入数据线 MOSI SPI 的通信原理很简单 它以主从方式工作 这种模式通常有一个主设备和 一个或多个从设备 需要至少 4 根线 事实上 3 根也可以 单向传输时或者使用 SPI IP 接口设计4 双工 I O PIN 所有基于 SPI 的设备共有的 PIN 脚 它们是 SDI 数据输入 SDO 数据输出 SCLK 时钟 CS 片选 1 SDO 主设备数据输出 从设备数据输入 2 SDI 主设备数据输入 从设备数据输出 3 SCLK 时钟信号 由主设备产生 4 CS 从设备使能信号 由主设备控制 其中 CS 是控制芯片是否工作 也就是说只有片选信号为预先规定的使能信 号时 高电位或低电位 对此芯片的操作才有效 否则会被忽略 这就允许在 同一主机上连接多个 SPI 设备 其余的 3 根线是负责通信的 通讯是通过数据交换完成的 SPI 是串行通讯 协议 也就是说数据是一位一位的传输的 这就是 SCLK 时钟线存在的原因 由 SCLK 提供时钟脉冲 SDI SDO 则基于此脉冲完成数据传输 数据输出通过 SDO 线 数据在时钟下降沿时改变 在紧接着的上升沿被读取 完成一位数据传 输 输入也使用同样原理 这样 在至少 8 次时钟信号的改变 上沿和下沿为一 次 就可以完成 8 位数据的传输 要注意的是 SCLK 信号线只由主设备控制 从设备不能控制信号线 同样 在一个基于 SPI 的设备中 至少有一个主控设备 这样的传输方式有一个优点 与普通的串行通讯不同 普通的串行通讯一次连续传送至少 8 位数据 而 SPI 允 许数据一位一位的传送 甚至允许暂停 因为 SCLK 时钟线由主控设备控制 当 没有时钟跳变时从设备不采集或传送数据 也就是说主设备通过对 SCLK 时钟线 的控制可以完成对通讯的控制 SPI 还是一个数据交换协议 因为 SPI 的数据输 入和输出线独立 所以允许同时完成数据的输入和输出 不同的 SPI 设备的实现 方式不尽相同 主要是数据改变和采集的时间不同 在时钟信号上沿或下沿采集 有不同定义 应该注意的是 SPI 主模块和与之通信的外设备时钟相位和极性应 该一致 这句话有 2 层意思 其一 主设备 SPI 时钟和极性的配置应该由外 设来决定 其二 二者的配置应该保持一致 即主设备的SDO 同从设备的 SDO 配置一致 主设备的 SDI 同从设备的 SDI 配置一致 因为主从设备是在 SCLK 的控制下同时发送和接收数据 并通过 2 个双向移位寄存器来交换数 据在点对点的通信中 SPI 接口不需要进行寻址操作且为全双工通信 显得简单 高效 在多个从设备的系统中 每个从设备需要独立的使能信号 硬件上比 I2C 第二章 SPI Flash Controller 简介5 系统要稍微复杂一些 最后 SPI 接口的一个缺点 没有指定的流控制 没有应答机制确认是否接 收到数据 2 2 SPI Flash 简介 本次所设计控制器针对的是华邦公司的 W25X20 2Mbit W25X40 4M bit W25X80 8M bit 系列 该系列为只有有限的空间 pin 的串行存储器 W25X20 40 80 的 SPI 接口主要由 4 个引脚构成 SL SPI CLK SPI DO SL SPI DI 及 SPI CS B 其中 SL SPI CLK 是整个 SPI 总线的公用时钟 SPI DO SL SPI DI 作为主机 从机的输入输出的标志 SPI DO 是主机的输出 从机的输入 SL SPI DI 是主机的输入 从机的输出 SPI CS B 是从机的标志管脚 在互相通信的两个 SPI 总线的器件 SPI CS B 管 脚的电平低的是从机 相反 SPI CS B 管脚的电平高的是主机 在一个 SPI 通信 系统中必须有主机 SPI 总线可以配置成单主单从 单主多从 互为主从 SPI IP 接口设计6 第三章 SPI Flash Controller 设计环境7 第三章 SPI Flash Controller 设计环境 3 1 Verilog HDL 语言简介 Verilog HDL 是在 1983 年由 Gateway Design Automation GDA 公司的 Phil Moorby 首创的 1989 年 Cadence Design Systems 公司收购了 GDA 公司 并 于 1990 年公开 Verilog HDL 语言 极大地推动了 Verilog HDL 的发展 基于 Verilog HDL 的优越性 IEEE 于 1995 年制定了 Verilog HDL 的 IEEE 标准 即 Verilog HDL1364 1995 Verilog HDL 具有以下特点 能形式化地抽象表示电路的结构和行为 借用 高级语言的结构和语句 如循环语言 赋值语言等 简化了电路行为的描述 能在多个层次上对所设计的电路进行描述 内置了基本的逻辑门 更接近开关级 电路 可以使用用户自定义原语 UDP 使得设计更加灵活 等等 与 VHDL 语言相比 Verilog HDL 和 VHDL 作为描述硬件电路设计的语言 其共同的特点在于 能形式化地抽象电路的行为和结构 支持逻辑设计中层次与 范围的描述 可借用高级语言的精巧结构来简化电路行为的描述 具有电路仿真 与验证机制以保证设计的正确性 支持电路描述由高层到底层的综合转换 硬件 描述与实现工艺无关 有关工艺参数可通过语言提供的属性包括进去 易于理 解和设计重用 但是 Verilog HDL 和 VHDL 又各有其自己的特点 与 VHDL 相比 Verilog HDL 最大的特点在于它是一种非常容易掌握的硬件描述语言 而且和 C 语言有 许多相似之处 并继承和借鉴了 C 语言的多种操作符和语法结构 而且 Verilog HDL 在开关级电路的建模能力比 VHDL 要强 而与 Verilog HDL 相比 VHDL 则显得严谨的多 比较抽象 所以掌握起来比较困难 还有 VHDL 在系统级建模 方面要比 Verilog HDL 强一些 这两种语言各有其特点 而且都在不断完善 2001 年公布的 Verilog IEEE 1364 2001 标准 使得 Verilog 语言在综合和仿真性能方面有了大幅度的提高 学习掌握 Verilog HDL 建模 仿真和综合技术不仅可以对数字电路设计技术有更 SPI IP 接口设计8 进一步的了解 而且为以后学习高级的行为综合和物理综合打下坚实的基础 3 2 Linux 系统下的设计开发环境简介 Linux 是一套免费使用和自由传播的类 Unix 操作系统 它主要用于基于 Intel x86 系列 CPU 的计算机上 这个系统是由世界各地的成千上万的程序员 设计和实现的 其目的是建立不受任何商品化软件的版权制约的 全世界都能 自由使用的 Unix 兼容产品 Linux 以它的高效性和灵活性著称 它能够在PC 计算机上实现全部的 Unix 特性 具有多任务 多用户的能力 Linux 是在 GNU 公共许可权限下 免费获得的 是一个符合 POSIX 标准的操作系统 Linux 操作系统软件包不 仅包括完整的 Linux 操作系统 而且还包括了文本编辑器 高级语言编译器等 应用软件 它还包括带有多个窗口管理器的X Window 图形用户界面 如同 我们使用 Windows NT 一样 允许我们使用窗口 图标和菜单对系统进行操作 VI 编辑器是 Linux 和 Unix 上最基本的文本编辑器 工作在字符模式下 由 于不需要图形界面 使它成了效率很高的文本编辑器 尽管在Linux 上也有 很多图形界面的编辑器可用 但 VI 在系统和服务器管理中的 功能是那些图 形编辑器所无法比拟的 VI 编辑器是 Visual interface 的简称 通常称之为 VI 它在 Linux 上的 地位就像 Edit 程序在 DOS 上一样 它可以执行输出 删除 查找 替换 块 操作等众多文本操作 而且用户可以根据自己的需要对其进行定制 这是其他 编辑程序所没有的 VI 编辑器并不是一个排版程序 它不像Word 或 WPS 那样可以对字体 格式 段落 等其他属性进行编排 它只是一个文本编辑程 序 没有菜单 只有命令 而且命令繁多 Vi 有 3 种基本工作模式 命令行模 式 文本输入模式和末行模式 VIM 是 VI 的加强版 比 vi 更容易使用 vi 的命令几乎全部都可以在 vim 上使用 要在 Linux 下编写文本或语言程序 您首先必须选择一种文本编 辑器 可以选择使用 vim 编辑器 使用它的好处是几乎每一个版本的Linux 都会有它的存在 然而它是在文本模式下使用 需要记忆一些基本的命令操作 方式 第三章 SPI Flash Controller 设计环境9 3 3 数字电路设计方法 数字电路设计中主要有两种基本的设计方法 自底向上和自顶向下设计方法 在自顶向下的设计方法中 我们首先定义顶层模块 然后分析实现顶层模块 功能需要那些必要的子模块 然后按照相同的方法对子模块进行分解 知道无法 进一步细分的最底层模块为止 在自底向上的设计方法中 我们首先对现有的功能模块进行分析 然后利用 这些模块去搭建较大的功能模块 如此继续直至顶层的功能模块 在实际的设计中 通常是两种方法混合使用的 设计者首先根据电路体系接 口定义顶层模块 逻辑设计者确定如何根据功能将整个设计划分为子模块 同时 电路设计者对底层功能快进行优化设计 并进一步使用这些底层模块来搭建其高 层模块 两者的工作按相反的方向独立的进行 直至在某一中间点会合 这是 电路设计者已经使用开关级原语创建了一个底层功能块库 而逻辑设计设也通过 使用自顶向下的方法将整个设计分解为由库单元构成的结构描述 3 4 Verilog HDL 的设计流程 在用 Verilog HDL 进行硬件设计的过程中 开发人员通常是将设计分层三个 层次进行设计 第一层次是行为描述 就是用数学模型对整个系统进行的描述 一般来说 对系统进行行为描述的目的是为了在系统设计的初始阶段 通过对系统行为的仿 真来发现设计中存在的问题 在行为描述阶段并不真正考虑实际的算法和操作用 什么方法来实现 注意力主要集中在系统的结构和工作过程能否达到设计要求方 面 在进行完行为描述之后 通常要把它转换为 RTL 级的描述 因为现有的 EDA 工具只能接受 RTL 级描述的 HDL 文件进行自动逻辑综合 第二层次是 RTL 方式描述 又称为寄存器传输描述 用行为方式描述系统结 构的程序抽象程度很高 很难直接映射到具体逻辑元件的实现 要想得到硬件的 具体实现 必须将行为方式的 Verilog HDL 程序改为 RTL 方式的程序 在编写完 RTL 方式的程序之后 就可以利用仿真工具对程序进行仿真了 如果仿真通过 就可以利用逻辑综合工具进行综合了 第三层次是逻辑综合 在这一阶段主要是利用逻辑综合工具 将 RTL 级的程 序转换成用基本逻辑元件表示的文件 门级网表 并且综合结果也可以以原理 SPI IP 接口设计10 图的方式输出 得到网表之后 还需要进行门级仿真和定时检查 其设计过程如图 3 1 所示 总体方案 行为级描述 行为级仿真 RTL级描述 RTL级仿真 逻辑综合 优化 门级仿真 定时检查 门级网表输出 图 3 1 Verilog HDL 设计流程 3 5 编译 模拟仿真 EDA tool 简介 Debussy 是 NOVAS Software Inc 思源科技 发展的 HDL Debug 2 2 h10 1 16 system clock SPI CON 3 2 2 h11 1 16 system clock 4 4 7 片选逻辑模块 上层配置指令 地址 数据之后 控制器接收到 Start 信号 首先会将指令放 入移位寄存器当中 当移位寄存器中需传输的指令准备好之后 会将 Flash 片选 信号 SPI CS B 拉低 有效 待整个指令传输完成之后 再将片选信号 SPI CS B 信号拉高 4 4 8 中断信号产生模块 SPI Flash Controller 支持三种中断机制 即 数据缓存 FIFO 空中断 数据缓 存 FIFO 满中断和传输完成中断 当上述三种中断发生时 会首先将 Register File 中的中断状态寄存器 INT FLAG 的相应中断状态位置 1 有效 中断生成模块 中断状态寄 存器 中断使能信 号 SPI INT 图 4 11 中断信号产生器 当传输完成中断发生时 如果传输完成中断屏蔽使能信号 SPI CON 8 为 0 enable 中断信号 SPI INT 有效 否则无效 SPI IP 接口设计26 第五章 SPI Flash Controller 测试与验证27 第五章 SPI Flash Controller 测试与验证 5 1 测试环境 整个 SPI Flash Controller 的测试环境分为 7 个部分 测试情况 伪 CPU 设 计方案 SPI 闪存 存储器 期望值 存储器 测试输出数据 和监视器 测试环境框图 测试情况 存储器 测试输出数据 设计方案 监视器结果 SPI闪存行 为模拟程序 存储器 期 望值 伪CPU 图 5 1 测试环境框图 在测试情况中 共有 19 个 pattern 为测试不同功能点提供全面测试的原始 激励 在伪 CPU 中 定义了寄存器的读写任务 便于测试更有效的进行 设计方案为 SPI Flash Controller 设计本身 SPI 闪存 为模拟 Flash 全部行为的一个模型程序 存储器 期望值 用来存储与读出数据比对的原始数据 存储器 测试输出数据 用来存储从 Flash 中读出的数据 监视器用于实现原始数据与测试输出数据的自动比对功能 以判断设计 的正确性 SPI IP 接口设计28 5 2 测试文件架构 SPI Flash Controller src macro sim output waveform model log golden tsk pattern sim v simfiles f makefile cov work 文件 文件夹注释 管理文件 测试功能点 仿真记录文件 行为模拟程序 功能测试覆盖率分析文件 被编译文件列表 仿真波形 期望值 测试中设计的输出 顶层仿真模块 空 图 5 2 测试文件架构图 一个好的文件架构能够方便我们的文件管理 在整个测试中由于要用到的以 及产生的文件较多 我们必须有一个规范的文件存放位置和管理架构 这样更有 利于我们的测试和改正错误 具体架构如图 5 2 所示 5 3 测试功能点 表 5 1 仿真测试功能点 功能功能子功能子功能控制信号控制信号功能描述功能描述 开始硬件复位 硬件复位RST B 进程中硬件复位 开始软件复位 复位 软件复位SW RST 进程中软件复位 寄存器读写寄存器的正常读写 R RGST WE R RGST RE R RGST SPI SEL R RGST BUS 对每个寄存器进行写操 作 然后读取每个寄存 器的值 第五章 SPI Flash Controller 测试与验证29 续表续表 功能功能子功能子功能控制信号控制信号功能描述功能描述 写保护SPI WP B 保护 Flash 状态寄存器内容 不被改变 Write enable Write enable 必须在每一个 写操作前写入 Flash Write disable ADR EN DATA RW BYTE CNT WE EN STA ID FAST 将状态寄存器 WEL 位置 0 写状态寄存器写状态寄存器 写操作 数据写入 ADR EN DATA RW BYTE CNT WE EN STA ID FAST Write data into Flash memory 读状态寄存器 将 Flash 状态寄存器的值读 入 SPI 读数据 将 Falsh Memory 中的数据 读如 SPI FIFO 快速读数据 为了数据准确 写入地址后 需要等待 8 个周期才能采集 数据 读操作 读厂商信息 ADR EN DATA RW BYTE CNT WE EN STA ID FAST 将 Falsh 厂商信息读入 SPI STATUS ID 寄存器 片擦除将整个存储空间写为全 1 Sector 擦除 将写入地址的对应 Sector 写 为全 1 擦除 Block 擦除 ADR EN DATA RW BYTE CNT WE EN STA ID FAST 将写入地址的对应 Block 写 为全 1 中断传输完成中断BYTE CNT WE EN SPI 操作执行完之后 发出 有效的中断信号 写入数据 SPI TX REQ SPI TX CLR FIFO 为空 将数据写入 FIFO 写满后将 TX REQ 清除DMA 模式 DMA 模式 读出数据 SPI RX REQ SPI RX CLR FIFO 为满 从 FIFO 中将数 据读出 读空后将 RX REQ 清除 SPI IP 接口设计30 续表续表 功能功能子功能子功能控制信号控制信号功能描述功能描述 读写STA ID FAST正常的读写 空状态时的 TX REQ CPU DMA 检查能否在 FIFO 为空时 正常准确的发出 TX REQ 信号 FIFO 满状态使得 RX REQ CPU DMA 检查能否在 FIFO 为满时 正常准确的发出 RX REQ 信号 读操作 读操作 配置信息及指 令随机错误 非正常操作 写操作 ADR EN DATA RW BYTE CNT WE EN STA ID FAST 写操作 配置正确 指 令错误 5 4 测试流程 整个 SPI Flash Controller 支持对 Flash 的一些基本的读写操作 如果需要验 证读写操作的正确性 必须读写操作一起执行 才能得到测试输出数据 以便和 原始数据做比对 在测试写操作的正确性前 必须证明读操作的正确性 首先 修改测试用的 SPI 后端 Flash 的行为模拟程序的 Memory 默认值为不同的值 这里我设定成与 其地址相同 然后初始化整个 SPI Flash 这时 SPI Flash 中的初始数据可知 通 过 Register Bus 给 SPI Flash 控制器配置读操作所需指令 地址 然后发送读指令 读出数据与 SPI Flash 中的初始化数值做对比 如果相同则证明读操作正确 读操作测试正确后就可以开始写操作的正确性 在读操作正确的前提下 再来证明写操作的正确性 同样通过 Register Bus 给 SPI Flash 控制器配置写操作指令 地址和激励数据 然后发送写指令 写入 Flash 中地址所指的相应区域 再通过 Register Bus 配置读指令 和同样的地址 然后读出地址所指的相应区域 读出数据如果与先前写入数据相同 则证明写操 作正确 第五章 SPI Flash Controller 测试与验证31 擦除操作在读写操作正确的前提下 再进行测试 先通过写操作给 Flash 中 的特定区域写入一些数据 然后通过 Register Bus 配置擦除指令 控制器再发送 擦除指令 对 Flash 中的特定区域进行擦除 写 1 然后再通过读指令读出相 应区域 以读出数据是否为全 1 判断擦除指令是否正确 下面以擦除指令为例说明具体的测试流程 通过 所有数据为1 Yes No No 传输完成 Yes 开始 结束 向Flash某地址写入部分数据 失败 向Flash写擦除指令 擦除掉 刚刚写入的数据 Yes 读取擦除位置的数据 BUSY位为0 No 图 5 3 擦除指令测试流程 5 5 FPGA 验证 5 5 1 C CODE 的仿真 当设计的功能仿真测试全部通过以后 就可以开始驱动的编写和仿真测试 首先把设计代码接到平台的代码之中 然后把编写的 C 驱动通过 IDE 软件编译成 仿真需要的 hex 文件 然后像之前的仿真测试一样对设计进行全面测试 此次仿真的主要目的在于测试设计与平台的连接是否正确 并且检验驱动程 序书写是否正确 合理 全面 SPI IP 接口设计32 5 5 2 FPGA 硬件测试 所有仿真结束并通过以后 利用 IDE 把设计编译成 srec 文件 然后利用 ISE 生成 FPGA 平台下载所需的 MCS 文件 生成的 MCS 文件即可以通过计算机并 口下载到 FPGA 平台中 将下载好的 FPGA 平台进行硬件测试 查看功能是否达到要求 若未达到要 求 则分析原因 找出错误 进行修改 最终达到最终 SPEC 所描述的功能 硬件验证原理图 SPI 总线桥 需要测试的设计 方案 外设Flash RGST 中断 FPGA 平平台台 PC 外部接口SPI 接口 图 5 4 FPGA 验证原理图 注 实际的 FPGA 测试中 使用的是 XC3S5000 平台的 UART IP 接口 验证时我们通过 UART 接口让 FPGA 与 PC 机相连 PC 机上的测试程序就 可以通过各个 function 测试设计的各个功能 在测试机上通过 IDE 软件获取不同 寄存器的值 与期望值作对比 以此验证设计的正确性 5 6 验证结果 在整个仿真和测试的过程中还是遇到了不少的问题 比如仿真软件 测试软 件环境不熟悉 自己的设计代码有逻辑 时序缺陷等 但通过耐心的检查和仔细 修改 最后通过了所有的测试 很好的完成如下功能 Register bus 总线接口功能测试通过 SPI 总线接口测试通过功能测试通过 SPI 模式传输功能测试通过 深度 8 宽度 32 的 FIFO 功能测试通过 以下操作指令 Write Enable Disable Read Write Status Register Read Data 第五章 SPI Flash Controller 测试与验证33 Fast Read Page Program Block Sector Chip Erase 功能测试通过 传输开始可控制功能测试通过 可配置的传输字节数 maximum 32 little endian 功能测试通过 数据缓冲器空 满中断机制功能测试通过 传输完成中断机制功能测试通过 中断状态查询功能测试通过 中断状态写 1 清除功能测试通过 可屏蔽中断信号功能测试通过 系统时钟 25MHZ 100MHZ 功能测试通过 可配置的 SPI 接口传输速度 1 4 system clock 1 8 system clock 1 16 system clock 功能测试通过 软件复位功能测试通过 SPI IP 接口设计34 第六章 总 结35 第六章 总 结 至此 SPI Flash Controller 的具体设计已经全部完成 经过仿真和测试 设 计完成了 SPI Flash Controller 的发送指令功能 达到预期的目的 通过这 次设计 我了解了硬件设计的全部流程 熟悉了 Verilog HDL 的具体应用 并且 独立地完成其具体流程如图 2 1 所示 SPI Flash Controller 的设计和验证 包括软 体验证和硬体验证 对于 IC 设计有了比较深的认识 并总结了很多在 IC 设计 中需要注意的问题 为以后的深入学习和工作打下良好的基础 设计内容 设计内容 在整个工作之中 完成了对 SPI Flash Controller 设计规则的学习 模块化划 分整理 代码的仿真 驱动的编写以及 FPGA 验证 最终完成所要求的 SPI Flash Controller 设计 由于时间过于仓促 其中对于屏蔽错误配置信息方面做的不是很 完善 并且在兼容性方面没有考虑成熟 但总体上实现了控制器的全部功能 以 及可以保证能过按照不同的配置进行正常稳定的传输 对于错误的配置信息 设计中在读操作下允许所有寄存器的配置信息错误 但在写操作下 为了保证设计能准确的运行 要求出指令以外的配置信息必须正 确或者是其他指令的正确配置 指令配置可以任意 此设计支持 Register 总线 FIFO 深度为 8 宽度 32 可以使用软件进行复位 以及 FIFO 状态查询 中断使能等功能 整个设计中大体分为总线接口 状态控 制模块

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论