毕业设计论文-基于fpga的spi串行外围接口接口设计内容摘要:

是在主控制器输出时钟 SCLK 的控制下,在 SCLK 的上升沿或者下降沿读出一个数据输出给主设备。 其传播模型如下图所示: 图 SPI 工作 从 模式 须注意的是,主设备可以再在任意时刻起动数据发送,因为它控制着 SCLK 信号,而在从模式下,从控制器要发送数据,必须要用先设置片选信号以确保使能端 CS 输入允许。 SPI 传输模式 SPI 的工作模式分为主模式和从模式,二者都需要在 SCK 的作用下才能工作;但主模式不需要 CS 信号,而从 模式必须在 CS 信号有效的情况下才能完成。 不论是在主模式下还是在从模式下,都要在 时钟极性( CPOL) 和 时钟相位( CPHA) 的配合下才能有效地完MISO CS SCLK MISO CS SCLK MOSI MOSI SCLK SCLK 武汉理工大学学士学位论文 成一次数据传输。 其中,时钟极性表示时钟信号在空闲时的电平;时钟相位决定数据是在 SCK 的上升沿采样还是下降沿采样。 根据时钟极性和时钟相位的不同组合,可以得到 SPI 总线的 4 种工作模式,入图所示: 图 SPI 四种传输模式 ( 1) SPI0 模式下的 CPOL 为 0, SCK 的空闲电平为低; CPHA 为 0,数据在串行同步时钟的第一个跳变沿(由于 CPOL 为低,因此第 1 个跳变沿只能为上升沿)时数据被采样。 ( 2) SPI1 模式下的 CPOL 也为 0, SCK 的空闲电平为低;但是 CPHA 为 1,数据在串行同步时钟的第二个跳变沿(由于 CPOL 为低,因此第 2 个跳变沿只能为下降沿)时数据被采样。 ( 3) SPI2 模式下的 CPOL 为 1, SCK 的空闲电平为高; CPHA 为 0,数据在串行同步时钟的第 1 个跳变沿(由于 CPOL 为高,因此第 1 个跳变沿只能为下降沿)时数据被采样。 ( 4) SPI3 模式下的 CPOL 为 1, SCK 的空 闲电平为高; CPHA 为 1,数据在串行同步时钟的第 2 个跳变沿(由于 CPOL 为高,因此第 1 个跳变沿只能为上升沿)时数据被采样。 在上述 4 种模式中,使用的最为广泛的是 SPI0 和 SPI3 方式。 由于每一种模式都与其他三种不兼容,因此为了完成主、从设备间的通讯, 主、从设备的 CPOL 和 CPHA 必须有相同的设置。 读者需要 注意 的是:如果主设备 /从设备在 SCK 上升沿发送数据,则从设备 /主设备最好在下降沿采样数据;如果主设备 /从设备在 SCK 下降沿发送数据,则从设备 /主设备最好在 SCK 上升 沿采样数据。 SPI 协议 SPI 接口是一种事实标准,并没有标准协议,大部分厂家都是参照 Motorola 的 SPI 接口定义来设计的,但正因为没有确切的版本协议,不同厂家产品的 SPI 接口在技术上存在一定的差别,容易引起歧义,有的甚至无法互联(需要用软件进行必要的额修改)。 本次设计基于一种使用较为普遍的协议来进行设计,通过简单协议来理解并设计 SPI 接口功能。 SPI 协议是一个环形总线结构,其时序其实比较简单,主要是在时钟脉冲 SCK 的控武汉理工大学学士学位论文 制下,两个双向移位寄存器 SPI 数据寄存器数据 进行数据交换。 我们假 设主机的 8 位寄存器 SPIDATA1 内的数据是 10101010,而从机的 8 位寄存器 SPIDATA2 内的数据是 01010101,在上升沿的时候发送数据,在下降沿的时候接收数据,最高位的数据先发送,主机和从机之间全双工通信,也就是说两个 SPI 接口同时发送和接收数据,如图 所示。 从图中我们也可以看到, SPIDATA 移位寄存器总是将最高位的数据移出,接着将剩余的数据分别左移一位,然后将接收到得数据移入其最低位。 图 SPI 的环 形总线结构 如图 所示,当第一个上升沿来的时候, SPIDATA1 将最高位 1 移除,并将所有数据左移 1 位, 这时 MOSI 线为高电平,而 SPIDATA2 将最高位 0 移出, 并将所有数据左移 1 位, 这样 MISO 线为低电平。 然后当下降沿到来的时候, SPIDATA1 将锁存 MISO 线上的电平,并将其移入其最低位,同样的, SPIDATA2 将锁存 MOSI 线上的电平,并将其移入最低位。 经过 8 个脉冲后,两个移位寄存器就实现了数据的交换,也就是完成了一次 SPI 的时序。 图 数据传输示例 本章小结 本章通过 对 SPI的原理分析,介绍其首发原理及基本结构,再介绍其工作模式,再介绍其传输模式和协议距离。 通过以上分析,便可以知道本次设计的 SPI 所必须具备的功能有哪些,哪些是需要注意的功能。 从而可以确定本次设计的工作模式,以及设计所的传输模式,并且通过介绍的协议举例来通过此协议来设计 SPI 系统结构。 通过本章的分析,本次设计确定为主模式,及主控模式的设计,并且四种传输模式均需要实现,并且遵循 SPI1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 00 1 1 第一个 上升沿 第一个下降沿 CS MISO MOSI SCLK SCLK MISO MOSI CS 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 MSB SPIDATA1 LSB MSB LSB SPIDATA2 武汉理工大学学士学位论文 协议,按照此协议来设计 SPI结构。 以此,变可以进行 SPI 结构设计了。 武汉理工大学学士学位论文 3 方案论证 对于 SPI 接口设计主要分为两大类,利用单片机如 51 系列单片机实现和利用 FPGA等可编程逻辑器件编程实现,下面将分别介绍两种方法的方法。 在 51 系列单片机系统中实现 对于不带 SPI 串行总线接口的 MCS51 系列单片机来说,可以使用软件来模拟 SPI 的操作,包括串行时钟、数据输入和数据输出。 对于不同的串行接口外围芯片,它们的时钟时序是不同的。 对于在 SCK 的上升沿输入(接收)数据和在下降沿输出(发送)数据的器件,一般应将其串行时钟输出口 的初始状态设置为 1,而在允许接口后再置 为 0。 这样, MCU 在输出 1 位 SCK 时钟的同时,将使接口芯片串行左移,从而输出 1 位数据至MCS51 单片机的 口(模拟 MCU 的 MISO 线),此后再置 为 1,使 MCS51 系列单片机从 (模拟 MCU 的 MOSI 线)输出 1 位数据(先为高位)至串行接口芯片。 至此,模拟 1 位数据输入输出便宣告完成。 此后再置 为 0,模拟下 1 位数据的输入输出 …… ,依此循环 8 次,即可完成 1 次通过 SPI 总线传输 8 位数据的操作。 对于在 SCK 的下降沿输入数据和上升沿输出数据的器件,则应取串行时钟输出的 初始状态为 0,即在接口芯片允许时,先置 为 1,以便外围接口芯片输出 1 位数据( MCU接收 1 位数据),之后再置时钟为 0,使外围接口芯片接收 1 位数据 (MCU发送 1 位数据 ),从而完成 1 位数据的传送。 图 基于 MCS51 单片机的 SPI 设计模型 图 所示为 MCS51 系列单片机与存储器 X25F008( E2PROM)的硬件连接图,图 2 中, 模拟 MCU 的数据输出端( MOSI), 模拟 SPI 的 SCK 输出端, 模拟SPI 的从机选择 端, 模拟 SPI 的数据输入端( MISO)。 下面介绍用 MCS51 单片机的汇编语言模拟 SPI 串行输入、串行输出和串行输入 /输出的 3 个子程序,实际上,这些子程序也适用于在串行时钟的上升沿输入和下降沿输出的其它各种串行外围接口芯片(如 A/D 转换芯片、网络控制器芯片、 LED 显示驱动芯片等)。 对于下降沿输入、上升沿输出的各种串行外围接口芯片,只要改变 的输出电平顺序,即先置 为低电平,之后再次置 为高电平,再置 为低电平 …… ,则这些子程序也同样适用。 外围设备 cs MCS 51 MOSI MISO SCK P P P P 武汉理工大学学士学位论文 用可编程逻辑器件设计 SPI 除 了编程方法,还可以用 FPGA 设计 SPI,及用可编程逻辑的方法设计硬件来用单片机直接用简单的程序来应用外围硬件来实现 SPI 传输。 通过对 SPI 的结构的了解可以设计一个系统框架,按照框架完成输入输出的功能。 一般一个典型的 SPI 系统如下图所示,其主要包括 MPU和一个或几个外围器件, SPI一端与 MPU 接口相连,另一端便是负责传输的四条线了。 当此单片机处于主机模式时,就能与从机进行通信,当此单片机处于从机模式时,就能与另一主机通信。 总之,一个系统中只有一个主机,否则无法工作。 用 FPGA 设计的系统框架如下图 所 示: 图 介于 SPI 的 FPGA 设计系统框架 以上两种便是两种实现 SPI 的方法,在实际应用中,许多单片机已经包括了 SPI 接口,可见 SPI 接口应用很广泛,只要高级点的单片机,都自带 SPI 接口,并且如 DSP 等也集成了 SPI接口,可见大多芯片都趋向于用硬件实现而非软件实现。 这是因为 软件模拟 SPI 接口方法虽然简单方便 ,但是速度受到限制,在高速且日益复杂的数字系统中,这种方法显然无法满足系统要求,所以采用硬件的方法实现最为切实可行。 这使得 与 SPI 有关的 软件就相当简单,使 CPU 有更多的时间处理其他事务。 在可编程逻辑器件不断地完善改善完美并且功能强大且日益便宜,用硬件实现已经成为可能,在大型系统用硬件实现更加稳定。 同时可编程逻辑也有自身的优点。 在外围器件有改变时,由于可编程逻辑可以重复擦鞋的优点,从而在外围器件有些许改变之时,可以同时稍微改变可编程的程序,因而可编程又有灵活性大的特点。 因此,本次设计便采用可编程逻辑的方案。 本章小结 本次设计介绍了软件硬件两种方法设计 SPI, 通过此分析,可以知道 SPI 的设计方法有哪些方法,通过比较可以得出每种设计的 优劣。 软件设计简单,但有其缺点,硬件设计相比复杂些,但是其灵活性强,可以让微处理器省出资源。 微处理器 微处理器接口 SPI 总线接口 adr_i[1:0] dat_i[7:0] dat_o[7:0] int_o we_i cs_o miso_i mosi_o sck_o rst_i 武汉理工大学学士学位论文 4 SPI 的电路设计 电路设计主要是对系统设计的功能,各部分功能具体实现方案比如管脚说明,寄存器的说明即设计,以及状态机的动态描述,由各个功能的说明便可设计出本次 SPI 设计的流程图,由流程图便可以写出我们所需要的程序。 SPI 设计系统的功能 本次设计具有一定的独创性,有着 MC68HC11A8 单片机 SPI 接口的全部功能,并在其四种传输速率中扩展了另外八种速率,使速率选择更加灵活。 其主要功能如下: 本次设计为 主控模式 与摩托拉罗说明规格部分一致 并增强了 MC68HC11A8 单片机 SPI 接口功能 添加中断,当每完成一个数据产生中断信号,确保微处理器读完数据后再发送接收数据 提供了 12 种速率选择 提供极性相位选择,支撑四种传输模式 充分综合 SPI 各部分具体实现 如总系系统框架所示,其管脚都列其上,其管脚功能见下表 所示: 表 SPI 设计管脚 端口名称 数据位宽 信号流向 功能描述 int_o 1 Output 中断输出,确保已传数据被读取 rst_i 1 Input 异步 复位 we_i 1 Input 写使能端,写数据 dat_i 8 Input 输入数据或指令 adr_i 2 Input 写指令数据选择 sck_o 1 Output SPI 时钟输出 mosi_o 1 Output 数据串行输出 miso_i 1 Input 数据串行输入 cs_o 1 Output 选片 dat_o 8 Output 输入数据并行给微处理器 其中,需要强掉的是, adr_i 端输入不同,便使系统处于写数据状态还是写指令状态,指令是写给 SPI 设计的控制寄存器,以使 SPI 具有不同 的功能。 武汉理工大学学士学位论文 SPI 系统中所用的寄存器 本次设计中 SPI 用到四种寄存器,包括 SPCR( SPI 控制寄存器)、 SPER( SPI 扩展寄存器)、 treg( SPI 数据传输 /接收寄存器)其功能如下所示: ( 1)控制寄存器 本次设计时参照 MC68HC11A8 单片机的 SPI 结构进行设计,并进行了一些改进,所以本次设计的控制寄存器的控制位与 MC68HC11A8 单片机的控制位大致相似,同时进行了一些扩展和不同的功能,扩展在扩展寄存器中再做介绍,其控制寄存器的控制位如下表 所示: 表 SPI 设计的控制 寄存器。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。