《全功能SPI接口的设计与实现.docx》由会员分享,可在线阅读,更多相关《全功能SPI接口的设计与实现.docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、全功能SPI接口的设计与实现 SPI 串行通信接口是一种常用的标准接口,由于其使用 简单方便且节省系统资源,很多芯片都支持该接口,应用相当广泛1。但是现有文献和设计多数仅实现了SPI 接口的基本发送和接收功能,对SPI 接口的时序控制没有进行深入的研究。全功能SPI 接口应具有四种不同的时钟模式,以适应具有不同时序要求的从控制器。文中主要研究SPI 接口的时钟时序,并用具体电路实现具有4种不同极性和相位的时钟,最后通过仿真验证和FPGA 验证2。 1SPI 控制器典型结构 SPI 模块中的典型结构是用于通信的主从2个控制器之 间的连接,如图1所示。由串行时钟线(SPICLK )、主机输入从机输
2、出线(SPISOMI )、主机输出从机输入线(SPISIMO )、SPI 选通线(SPISTE )4条线组成3。当CPU 通过译码向主控制器写入要传输的数据时,主控制器通过串行时钟线来启动数据传输,将会在串行时钟线的一个边沿将数据移出移位寄存器,而在串行时钟的另一个边沿将数据锁存在移位寄存器中。 SPI 选通线是SPI 控制器的使能端,可以选择多个从机,实现 一主多从的结构,只要SPI 选通信号将要选的从机处的选通信号变为低电平就能够连接成功。 2 全功能SPI 控制器设计 2.1 SPI 控制器内部结构 SPI 控制器的原理框图如图2所示,其中主要包括:1)SPI 控制器的内部寄存器 SPI
3、 操作控制寄存器(SPICTL ),SPI 状态寄存器(SPISTS ), SPI 波特率设计寄存器(SPIBRR ),SPI 接收缓冲寄存器 图1 SPI 主从连接Fig.1 Master -slave link 全功能SPI 接口的设计与实现 辛晓宁,孙文强 (沈阳工业大学研究生学院,辽宁沈阳110870) 摘要:SPI (Serial Peripheral Interface ,串行外围接口)是Motorola 公司提出的外围接口协议,它采用一个串行、同步、全双工的通信方式,解决了微处理器和外设之间的串行通信问题,并且可以和多个外设直接通信,具有配置灵活,结构简单等优点。根据全功能SPI
4、 总线的特点,设计的SPI 接口可以最大发送和接收16位数据;在主模式和从模式下SPI 模块的时钟频率最大可以达到系统时钟的1/4,并且在主模式下可以提供具有四种不同相位和极性的时钟供从模块选择;可以同时进行发送和接收操作,拥有中断标志位和溢出中断标志位。关键词:全功能SPI ;时钟极性和相位;串行通信;微处理器;中断控制中图分类号:TP332.3 文献标识码:A 文章编号:16746236(2022)23-0153-04 Design and implementation of full featured SPI master interface XIN Xiao -ning ,SUN We
5、n -qiang (Graduate School ,Shenyang University of Technology ,Shenyang 110870,China ) Abstract:The SPI put forward by Motorola Company is a full-duplex ,synchronous serial date link that is standard across many microprocessors ,microcontrollers ,and peripherals It enables communication between micro
6、processors and peripherals and inter -processor communication ,The SPI system is flexible enough to interface directly with numerous commercially available peripherals ,and it also has some excellences such as it can be configured flexibly and it has a simply structure ,and so on.This SPI has 16-bit
7、 transmit and receive capability.The maximum transmission rate in both slave mode and master mode is now CLKOUT/4.The SPI can provide four different clocking schemes on the SPICLK pin.It can be sending and receiving at same time.It has SPI interrupt flag and TXBUF full flag. Key words:full function
8、of SPI ;polarity and phase of CLK ;serial communication microprocessor ;interrupt control 收稿日期:2022-08-11 稿件编号:202208039 作者简介:辛晓宁(1965),男,辽宁沈阳人,博士,教授。研究方向:SOC 集成电路设计。 电子设计工程 Electronic Design Engineering 第20卷Vol.20第23期No.23 2022年12月Dec.2022 153 电子设计工程2022年第23期 (SPIRXBUF ),SPI 发送缓冲寄存器(SPITXBUF ),SPI
9、串行数据寄存器(SPIDAT ),SPI 中断优先级控制寄存器(SPIPRI )。2)SPI 控制器内的功能模块 时钟分频模块(Frequency Divider ),内部时钟产生电路(Clk_Occur ),状态控制机(State Control ),中断控制(Int Control ),测试模块(Test ),输出控制模块(Dateout Control )。2.2 SPI 控制器工作原理 图2给出了SPI 控制器的基本原理框图。SPI 控制器可工作在主模式和从模式下,由于在主模式下需要提供相应的时钟给从控制器,较从模式下工作更为复杂,所以将用工作在主模式下的SPI 控制器描述内部工作原理
10、。 在开始传送数据前,需将SPI 控制器进行配置,设定时钟波特率(SPIBPR ),时钟相位和极性,需要传送的字符位数(SPICCR )。基本配置结束后,向SPITXBUF 和SPIDAT 2个寄存器内写入要传送的数据时,将会起动一次发送和 接收操作。如果有正在传送的数据,向SPITXBUF 内写入数据,新的数据将在当前数据传送结束后自动进行发送和接收操作。 写入SPICRR 寄存器里的Char0Char3位将会配置SPI 状态控制模块里的计数器。状态控制是系统的核心部分,为了使系统结构化,设计了状态机,如图3所示,分为3种状态,分别是空闲状态、发送命令状态(配置SPI 各个寄存器)、数据状态
11、。其中数据状态包括数据的传送和读取4。 作为全功能SPI 接口,在设计时加入了测试模块。使能相关地址译码,将使系统内部关键节点通过输出控制模块传送到数据总线。 2.3全功能SPI 控制器的时钟设计 SPI 控制器为了和外部数据进行交换,根据外设工作要 求,其输出串行同步时钟极性和时钟相位可以进行匹配。但时钟极性对传输协议没有重大影响。如图4所示,全功能SPI 控制器包括4种不同的时钟模式: 无延时的上升沿:SPI 在SPICLK 信号上升沿发送数据,在SPICLK 信号下降沿接 收数据; 无延时的下降沿:SPI 在SPICLK 信号下降沿发送数据,在SPICLK 信号上升沿接收数据; 有延时的
12、上升沿:SPI 在SPICLK 信号上升沿之前的半个周期发送数据,在SPICLK 信号下降沿接收数据; 有延时的下降沿:SPI 在SPICLK 信号下降沿之前的半个周期发送数据,在SPICLK 信号上升沿接收数据 对于SPI 控制器内部时钟的产生,在对系统时钟进行分频之后,还要对生成的时钟进行一定处理,因为分频后的时钟其高电平时间是几个系统时钟周期的和,控制移位寄存器的时钟采用的是系统时钟,为了在SPICLK 的一个时钟周期 内只移位一位数据,必须要求内部时钟的高电平时间为一个系统时钟的周期,才能保证在SPICLK 的一个时钟周期内,只 图2 SPI 控制器原理框图 Fig.2Function
13、al block diagram of SPI module 图3 SPI 控制器状态机 Fig.3 State machine of SPI module 图4与发送和接收相对应的4种时钟模式 Fig.4Four different clocking schemes when sending and receiving 154 3SPI 控制器的仿真实现 SPI 控制器的仿真使用Mentor 公司的ModelSim 软件,该 软件可在windows ,Linux 平台上使用,支持VHDL 或Verilog 硬件描述语言(HDL )仿真。它支持所有器件的行为级仿真、 VHDL 或Verilog
14、 仿真激励。为了测试设计的正确性,编写了testbench 模块,包括产生时钟信号,控制寄存器的配置,收发 的数据,产生的中断等5。 3.1SPI 控制器时钟仿真验证 当SPI 工作在主模式下,全功能SPI 控制器根据从控制 器的时序要求会提供具有4种不同极性和相位的时钟。图6为SPI 控制器内部时钟生产模块的仿真验证,输入DICLK 为分频后时钟,其对系统时钟进行了14分频。时钟生产模块对 DICLK 进行处理,产生LANCLK ,CNTCLK ,DATCLK 和4种 不同极性和相位的SPICLK 。 图6 SPI 控制器内部时钟产生模块的仿真结果 Fig.6Simulation resul
15、ts of CLK generating circuit 图5 SPI 控制器时钟产生电路 Fig.5Clk generating circuit of SPI module 有一位数据的接收和发送。 图5为实现上述功能的具体电路,即SPI 控制器时钟 产生的电路结构。在图5中,分频后的时钟为DICLK ,作为与门的一个输入端进入模块后对其进行处理。节点Y1和Y2的输出方程为: Y1=DICLK n +1 DICLK n +DICLK n =DICLK n DICLK n +1(1) Y2=DICLK n +1DICLK n +DICLK n =DICLK n DICLK n +1(2) 分频
16、时钟DICLK 通过节点Y1和Y2后,其高电平时间仅为一个系统时钟周期,且Y1较Y2延迟半个周期。MUX1的选择端S 来自配置寄存器的Phase 端,选择有延迟的Y1还是无延迟的Y2通过。分频后的时钟将被用于两个用途,一是产生SPICLK 作为从控制器的输入时钟。二是作为主控制器的内部时钟,被用于计数器的计数脉冲和用于控制串行移位寄存器SPIDAT 。 当分频时钟用于产生SPICLK 时,异或门XOR1的一个输入端来自配置寄存器的Polarity 端,用于控制时钟极性。节点Y3作为D 触发器MTN1的输出端,输出方程为: Y3=DICLK n DICLK n +1(3) 同时D 触发器MTN1
17、的S0端的输入方程为: S0=DICLK n DICLK n +1+DICLK n (4)S0为0,D 触发器上升沿触发。S0为1,D 触发器保持原 状态。通过MTN1后的分频时钟,其高电平时间和低电平时间 相等或相差一个系统时钟周期,这个时钟即为主模式下产生的SPICLK ,通过Phase 和Polarity 端的选择将会有四种不同时钟模式。 当分频时钟用于产生SPI 控制器的内部时钟时,MUX2的选择端S 来自配置寄存器的主/从模式选择端,选择内部时 钟还是外部时钟通过。输出端LANCLK 用于SPI 控制器的数据输入/输出锁存时钟。其方程为: LANCLK=Phase 茌Polarity
18、 茌dICLK n (5) 这里的DICLKn 为通过MUX2后的分频时钟。由于时钟极性对传输协议没有影响,所以上式将使四种时钟模式转变成2种,即上升沿无延迟和下降沿有延迟,而后在用于控制数据的输入/输出锁存。通过节点Y2的分频时钟经过控制逻辑传送到输出端CNTCLK 和DATCLK ,这两个时钟分别用于SPI 控制器内部计数器的计数时钟和移位寄存器的控制时钟。 以上分析均是在SPI 控制器工作在主模式的情况,当SPI 控制器工作在从模式时,外部时钟来自与门AND1的一个输入,通过控制逻辑分别到达CNTCLK 和DATCLK 端。 在时钟生成模块里同时具有相应控制功能:Reset 引脚,模块的
19、复位端,低有效。SPISTE 引脚,SPI 控制器的使能端,低有效。 Susp_free 和Susp_soft 引脚,决定了当仿真器突然中断时SPI 模 块将采取何种动作,在时钟生成模块里,Susp_free 和 Susp_ soft 被置为00时,将关断SPICLK ,使正在传送的数据立即停止。 辛晓宁,等 全功能SPI 接口的设计与实现 155 电子设计工程2022年第23期 4朱奕丹.基于Nios II 软核的LCD 控制器的设计J.北京联 合大学学报:自然科学版,2022,24(4):21-25. ZHU Yi -dan.Design of a LCD controller based
20、 on nios IIJ.Journal of Beijing Union University :Natural Sciences ,2022,24(4):21-25. 5谭保华.基于凌阳SPCE061A 单片机的一种通用汉字显示 方法实现J.电脑开发与应用,2022,23(8):41-42. TAN Bao -hua.A universal display method of Chinese characters based on SPEC061A J.Development and Application of Computer ,2022,23(8):41-42. 6于鹏.一种基于CP
21、LD 的12864LCD 控制器设计J.渤海大 学学报:自然科学版,2022,31(2):192-196. YU Peng.A kind of 12864LCD controller based on CPLDJ.Journal of Bohai University :Natural Science Edition ,2022,31(2):192-196. 7王宏斌,王紫婷,王媛斌.基于FPGA 的液晶显示控制器的 设计J.兰州交通大学学报,2022,29(1):53-55. WANG Hong -bin ,WANG Zi -ting ,WANG Yuan -bin.Design of LC
22、D controller based on FPGA J.Journal of Lanzhou Jiaotong University ,2022,29(1):53-55. 图7 SPI 控制器工作在主模式下仿真结果 Fig.7The simulation results of master mode 3.2SPI 控制器工作在主模式下的验证测试 通过配置寄存器选择SPI 工作在主模式,此时主SPI 通过引脚SPICLK 提供整个串行网络的串行时钟。SPI 波特率寄存器决定发送和接收的传输速率。发送数据时,主控制器先发送SPICLK 信号,然后向SPIDAT 和SPITXBUF 寄存器写入数据
23、C00F 和8FF ,写入这两个寄存器都可以启动SPISIMO 引 脚上的数据发送(先发送最高有效位)。同时从控制器通过引脚SPISIMO 将接收到的数据移入SPIDAT 的最低位,当选定量的位发送完时,整个数据发送完毕,数据按照右对齐的格式存入SPIRXBUF 中,以备系统读取(一般为cpu ),同时中断标志位被置为1,当系统发出指令,读取存在SPITXBUF 的数据时,SPI 中断标志位被清零,仿真结果如图7所示 。 4结束语 文中提出了一种全功能硬件SPI 接口设计方法,实现了 4种具有不同极性和相位的时钟,它吸取了传统软硬件的优 点,具有速度快、结构简单的特点,并已通过功能仿真和 FP
24、GA 验证,结果证明本设计是可靠的,可直接用于FPGA 中 或者作为硬件电路嵌入具体芯片内6。参考文献: 1潘新民,王燕芳.微型计算机控制技术M.北京电子工业 出版社,2022. 2杨承富,徐志军.SPI 总线接口的FPGA 设计与实现J.军事 通信技术,2022,25(2):72-76. YANG Cheng -fu ,XU Zhi -jun.Design and implement SPI bus interface with FPGAJ.Journal of Military Communication Technology ,2022,25(2)72-76. 3刘乐善,叶济忠,叶永坚.
25、微型计算机接口技术原理及应 用M.武汉,华中理工大学出版社,1999. 4俞莉琼,付宇卓.有限状态机的verilog 设计与研究J.微电 子学与计算机,2022,21(11):146-148. YU LI -qiong ,FU Yu -zhuo.Verilog design and research of finite state machineJ.Microelectr -onics&Computer ,2022,21 (11):146-148. 5张亮.数字电路设计与VerilogHDLM.北京:人民邮电出版 社,2000. 6郭兵,沈艳,林永宏,等.SOC 技术原理与应用M.北京清 华大学出版社,2022. (上接第152页) ! 欢迎投稿!欢迎订阅!欢迎刊登广告! # # # # 国内刊号:CN61-1477/TN 国际刊号:ISSN 1674-6236 在线投稿系统:http :/ dzsjgc (广告) 地 址:西安市劳动南路210号5-1-3信箱 邮政编码:710082 156