基于FPGA的带寄存器寻址SPI接口设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
位的数据移出,并将剩余的数据分别左移一位,而 MISO 线
上电平为刚移出 MSB 代表的电平。然后当第二时沿(下降沿)
到来的时候,SPI 主机的 8 位移位寄存器将锁存 MISO 线上
的电平,并将其移入最低位(LSB);同时 SPI 从机的 8 位移位
寄存器将锁存 MOSI 线上的电平,并将其移入最低位。经过
8 个 SCLK 时钟周期后,两个移位寄存器就实现了数据交换,
即完成了一次 SPI 接口时序,然后 SPI 总线重新回到空闲状态,
从而 SPI 主机和 SPI 从机之间实现全双工通信。
2 SPI 总线协议设计和软件实现
本文采用 Verilog HDL 语言以同步有限状态机(FSM)的
设计方法,实现了一种 4 线制全双工的 SPI 总线 [8]。通过 SPI
数据时,SPI 主机控制 CS 输出有效电平,SCLK 输出时钟信号,
SPI 总线处于工作状态。当 SCLK 第一个时沿(上升沿)来的
时候,SPI 主机的 8 位移位寄存器将最高位(MSB)的数据移出,
并将剩余的数据分别左移一位,这时 MOSI 线上电平为刚移
出 MSB 代表的电平 ;同时 SPI 从机的 8 位移位寄存器将最高
ֱ⬭(1 b)
᭄(16 b)
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
MISO
Ң䆒䕧ߎⱘ᭄(16 b)
(a)写操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 SCLK
CS
ੑҸࠊ C7 C6 C5 C4 C3 C2 C1 C0 MOSI 1 0 A5 A4 A3 A2 A1 A0
送数据,SPI 从机通过 MOSI 接收数据,或者 SPI 从机通过 MISO 引脚发送数据,SPI 主机通过 MISO 引脚接收数据。
SPI 总线通过时钟极性(CPOL)和时钟相位(CPHA)两 个控制位来配置其工作方式及其接口数据传输时序。SPI 总 线工作时序图如图 2 所示 [7]。CPOL 用来控制 SCLK 的空闲 状态电平。当 CPOL=0 时,SCLK 的空闲状态为低电平 ;当 CPOL=1 时,SCLK 的空闲状态为高电平。CPHA 用来控制采 样数据的时刻。当 CPHA=0 时,在 SCLK 从空闲状态跳变的 第一个时沿(上升或下降)数据被采样 ;当 CPHA=1 时,在 SCLK 从空闲状态跳变的第二个时沿数据被采样。
0Hale Waihona Puke Baidu%
/6%
ԡ鼠ԡᆘᄬ఼
' ' ' ' ' ' ' '
0,62 0,62 026, 026,
06%
/6%
ԡ鼠ԡᆘᄬ఼
' ' ' ' ' ' ' '
63, ᯊ䩳থ⫳఼
63,Џᴎ 0DVWHU
6&/. 6&/.
&6
&6
63,Ңᴎ 0DVWHU
图 1 典型 SPI 总线结构示意图
Abstract: The requirement for speed of the communication between hardwares is faster and faster, with the development of IOT technology. In this paper, a control method of SPI interface for register addressing is implemented in the FPGA by using the form of a finite-state machine which adopts Verilog HDL language. Through the introduction of the structural and working principle of the SPI interface, the design requirement of the SPI interface is proposed. The required simulation waveform was achieved by simulation of software Modelsim SE 6.5, and was properly validated on a FPGA development board. The result shows that the design can be applied to SPI interface with register addressing configuration.
Keywords: IOT; Verilog HDL; FPGA; finite-state machine; SPI
0引 言 SPI(Serial Peripheral Interface,串行外围接口)总线是
一种高速全双工同步串行通信接口,可以实现 CPU 与各种外 围设备(如 FLAS、LCD 显 示驱动器、网络控制器、AD 转 换器、DA 转换器和其他 CPU 等)以串行方式进行通信以交 换信息 [1,2]。相比于 I2C 接口和 UART 等其他串行接口,一般 情况下,SPI 接口的数据传输速度最快,可以达到几个 Mb/s。 I2C 接口由于是二线协议速度,很难超过 1 Mb/s ;UART 工作 在方式 0(8 位移位寄存器)时,时钟速度为系统时钟的 1/12, 而 SPI 接口时钟速度一般为系统时钟的 1/4[3,4]。本文给出了采 用 Verilog HDL 语言,以 FPGA 为控制器设计的一种带寄存 器寻址的 SPI 接口的设计方法。 1 SPI 总线结构和工作原理
46 物联网技术 2013年 / 第3期
上升沿被采样。1 b 读 / 写位实现 SPI 主机对 SPI 从机的读操 作和写操作。1 b 的保留位用作扩展。6 b 地址是所要访问的 SPI 从机控制寄存器的地址。8 b 数据是写入或读取 SPI 从机 指定地址的控制寄存器的内容。写操作和读操作时序图如图 3 所示。
6
6
:ULWHB(Q ,GOH 6 ᳝ᬜ
5HDGB(Q ᳝ᬜ
6
6
6
6
6
中进行时序仿真 [10]。SPI 接口写操 作和写操作时序仿真图如图 6 所示。
6
6
6
ݭ᪡˖ 026,䖯ܹ᳝ᬜ䕧ߎ
6
6
6
6
6
䇏᪡˖ 026,䖯ܹ᳝ᬜ䕧ߎ
䇏᪡˖ 026,᳝ᬜ䕧ߎᴳˈ 0,62䖯ܹ᳝ᬜ䕧ܹ
&6
ϔϾᯊ⊓
ѠϾᯊ⊓
6&/. &32/ 6&/. &32/
026, &3+$ 0,62 &3+$
06%
/6%
06%
/6%
026, &3+$
06%
/6%
0,62 &3+$
06%
/6%
图 2 SPI 总线工作时序图
SPI 总线工作原理 :假定 CPOL=0,CPHA=1。当要传输
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 SCLK
CS
ੑҸࠊ
᭄(8 b)
C7 C6 C5 C4 C3 C2 C1 C0 D7 D6 D5 D4 D3 D2 D1 D0
MOSI 0 0 A5 A4 A3 A2 A1 A0
ⱘܹݭ᭄(8 b)
䇏/ݭ
ഄഔ(6 b)
主机访问 SPI 从机的控制寄存器,实现 SPI 主机和 SPI 从机间
的 SPI 总线协议通信。
2.1 SPI 总线协议
设计的 SPI 总线时序要求 :当 CS 为低电平时,MOSI 线
和 MISO 线上数据传输有效。数据传输由 SCLK 控制,每次
数据传输开始于 SCLK 的下降沿。每个输出的数据位在 SCLK
CS 用于表示控制芯片是否被选中,即只有 CS 有效时(高
电平或低电平),对此芯片的操作才有效,从而在同一总线上
连接多个 SPI 接口设备成为可能。当 SPI 从机被选中时,在
SPI 主 机输出 SCLK 的 控制下,SPI 主 机 通 过 MOSI 引脚发
2013年 / 第3期 物联网技术 45
可靠传输 Reliable Transmission
SPI 总线一般使用四条信号线,以主 / 从模式工作,这种 模式通常有一个主设备和多个从设备。数据传输过程由主机初 ————————————————
收稿日期:2012-12-24
始化。它是一种环形总线结构,结构框图如图 1 所示 [5,6]。SPI 总线使用的四条信号线分别为 SCLK、MOSI、MISO 和 CS。 其中,SCLK 为串行时钟线,用来同步数据传输,由主机产生; MOSI 是主机输出,从机输入数据线 ;MISO 是主机输入,从 机输出数据线 ;CS 是从机选择线,由主机控制输出。
制 SPI 从机实现读操作和写操作的主模式程序流程图如图 4 所示。
䇏ݭՓ㛑ֵো
ᰃ৺Ẕ⌟ࠄ
৺
䇏ݭՓ㛑ֵো᳝ᬜ
ᰃ
ݭՓ㛑 ݭ᪡ᯊᑣ
߸ᮁ᳝ᬜՓ㛑ֵো ᰃ䇏Փ㛑䖬ᰃݭՓ㛑
䇏Փ㛑 䇏᪡ᯊᑣ
图 4 SPI 接口主模式程序流程图 在写时序和读时序中可使用同步有限状态机(FSM)实现 其设计,其状态转移图如图 5 所示 [9]。Idle 为空闲状态时,将 检测写使能信号 Write_En 和读使能信号 Read_En。 当 Write_En 有效时,进入写操作时序状态。在 FPGA_ CLK 时钟上升沿的控制下,由 Idle 状态进入 S1 状态,再进入
䇏/ݭ
ഄഔ(6 b)
ֱ⬭(1 b) MISO
᭄(8 b) D7 D6 D5 D4 D3 D2 D1 D0
䇏পⱘ᭄(8 b)
(b)读操作
图 3 SPI 接口协议 2.2 SPI 接口软件实现
在 设 计 中, 采 用 100 MHz 的 FPGA 内 部 时 钟 FPGA_ CLK,而输出的 SPI 接口时钟 SCLK 为 25 MHz。SPI 主机控
入 16 次循环状态,循环经过 S3、S4、S5 和 S6 状态。在 S3 主机串行发送缓冲器的高 8 位和低 8 位中。当下一个 FPGA_
可靠传输 Reliable Transmission
6
3 SPI 接口设计的仿真和综合
6 6 ݭ᪡˖ 026,᳝ᬜ䕧ߎ㒧ᴳ
6
ݭ᪡䇏᪡ ᯊᑣ㒧ᴳ
䇏᪡˖ 0,62᳝ᬜ䕧ܹ㒧ᴳ
根 据 上 述 SPI 主 机 接 口 的 设 计 方 案, 可 采 用 Altera 公司 的 Quartus II 8.1 软件对其进行 Verilog 编 程, 并在 Modelsim SE 6.5 软件
文章编号:2095-1302(2013)03-0045-03
Design of FPGA-based SPI interface with register addressing
WANG Yong-li
(National Computer System Engineering Research Institute of China, Beijing 100083, China)
的SPI接口要求,并通过Modelsim SE 6.5仿真软件进行了仿真实验,得到了符合设计要求的仿真波形,且在FPGA开发板上得
到了正确验证,证明该设计可应用于带寄存器寻址的SPI接口配置。
关键字:物联网;Verilog HDL;FPGA;有限状态机;SPI
中图分类号:TP391.9
文献标识码:A
可靠传输 Reliable Transmission
基于FPGA的带寄存器寻址SPI接口设计
王永利
(华北计算机系统工程研究所,北京 100083)
摘 要:随着物联网技术的发展,硬件间的相互通信速度要求越来越快。文中给出了采用Verilog HDL语言以有限状态
机的形式,在FPGA中实现对带寄存器寻址的SPI接口控制的方法;同时介绍了通过SPI接口的结构和工作原理,提出了所设计
可以看出,当 Write_En 为高电平时, 将 1 b 读 / 写位、1 b 保留位、6 b 地 址和 8 b 数据送入 SPI 主机串行发
图 5 SPI 接口主模式状态转移图
送缓冲器中。或者当 Read_En 为高
S2 状态,接着进入 S3 状态。从 S3 状态开始,有限状态机进 电平时,将 1 b 读 / 写位、1 b 保留位和 6 b 地址分别送入 SPI