版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编号毕业设计(论文)题目:SPI接口的仿真与验证物联网工程 学院 电子信息工程专业学 号 0703090121 学生 胥翔 指导教师 虞致国 副教授二一三年六月29 / 35摘要 在专用集成电路(ASIC)设计技术以与超大规模集成电路(VLSI)工艺技术的飞速发展的今天,FPGA编程的硬件电路被越来越多的应用于实现诸如SPI接口等方面。相对于软件实现,硬件具有更多的优点。SPI接口技术是一种高速高效率的串行接口技术, 主要用于扩展外设与其数据交换, 已经作为一种配置标准。作为一个标准的接口,SPI具有简单方便和节省系统资源的优点,使得大多数芯片都支持该接口。SPI接口主要应用在EEPROM、F
2、LASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。SPI接口的全称是"Serial Peripheral Interface",串行外围接口,是由Motorola公司首先在其MC68HCXX系列处理器上定义的。现在大部分厂家都是参照Motorola的定义来设计的。因为没有确切的版本协议,所以不同厂家的SPI接口在技术上存在一定程度上的差别,甚至会引起歧义。本文是利用Verilog硬件描述语言编写出SPI总线的主机模块,经过Xilinx ISE仿真得出相应的仿真波形。根据仿真波形分析,所设计的SPI主机模块的功能是正确的,并且在Xilinx ISE中对该
3、模块进行综合与实现。 更多还原关键词:FPGA;SPI接口;Verilog;Xilinx ISEAbstractIn application-specific integrated circuit (ASIC) design technology and very large scale integrated circuit (VLSI) technology rapid development today, the FPGA programming of the hardware circuit is more and more used in implementation such as
4、SPI interface. Relative to the software, hardware has more advantages.As a standard interface, SPI has advantages of simple and convenient and saving system resources, makes the most of the chip is supported by the interface.SPI interface block is mainly used in EEPROM, FLASH, real-time clock, AD co
5、nverter, and between the digital signal processor and digital signal decoder. SPI Interface is the full name of "Serial Peripheral Interface", Serial Peripheral Interface, Motorola is first defined on its MC68HCXX series processors, most manufacturers are now based on the definition of Mot
6、orola to design. This paper is to use the Verilog hardware description language to write the SPI bus host module, the simulation of the ModelSim simulation waveform. According to the simulation waveform analysis, the design of SPI host module function is right. Finally in Xilinx ISE in comprehensive
7、 and the implementation of the module, and completed verify on the FPGA.Keywords:FPGA ;SPI interface;Verilog;Xilinx ISE目录摘要IAbstractII目录i第1章 绪论11.1 研究背景11.1.1系统芯片的发展11.1.2 IP核11.1.3数据传送21.2 SPI研究的目的与意义31.3本文的主要工作与构架31.3.1研究的基本容31.3.2技术方案3第2章 SPI原理分析52.1 SPI通信总线52.2 SPI简介52.3 SPI的工作模式62.3.1主模式62.3.2
8、从模式72.4 SPI的传输模式72.5 SPI协议8第3章方案论证113.1 用FPGA来设计SPI113.2 用51系列单片机实现SPI11第4章SPI的电路设计134.1管脚说明134.2 SPI系统中所用的寄存器134.3 SPI速率控制144.4 SPI控制状态机154.5 SPI程序设计流程图16第5章仿真与验证195.1仿真分析19第6章 结论与展望216.1结论216.2不足之处与未来展望21参考文献22致23附录A24第1章 绪论1.1 研究背景1.1.1系统芯片的发展系统芯片(SoC:System-on-a-chip)指的是在单个芯片上集成一个完整的系统,对所有或部分必要的
9、电子电路进行包分组的技术。所谓完整的系统一般包括中央处理器、存储器、以与外围电路等。 SoC 是与其它技术并行发展的,如绝缘硅(SOI),它可以提供增强的时钟频率,从而降低微芯片的功耗。 随着电子技术开发应用对集成电路IC需求量的扩大和半导体工艺水平的不断进步,超大规模集成电路VLSI技术迅猛发展。当前的半导体工艺水平己经达到了亚微米水平并正在向50nm以下发展,器件特征尺寸越来越小,芯片集成规模越来越大,数百万门级电路可以集成在一个芯片上,芯片尺寸已从逻辑限制变为焊盘限制,我们必须找到与常规集成电路设计思想不同的设计方式,它就是新世纪IC设计的主流技术。SOC是微电子设计领域的一场革命,从整
10、个系统的角度出发,把智能核、信息处理机制、模型算法、芯片结构、各层次电路直至器件的设计紧密结合起来,在单个或少数几个芯片上完成整个系统的功能,既我们可以把越来越多的电路设计在同一个芯片中,这里面可能包含有中央处理器(CPU),嵌入式存(Embedded memory)、数字信号处理器(DSP)、数字功能模块(Digital function)、模拟功能模块(Analog function)、模拟数字转换器(ADC)以与各种外围配置(USB, MPEG)等等,这是新发展的SOC技术。SOC技术的研究、应用和发展是微电子技术发展的一个新的里程碑。SOC能提供更好的性能、更低的功耗、更小的印制板.空
11、间和更低的成本,带来了电子系统设计与应用的革命性新变革,可广泛应用于移动、硬盘驱动器、个人数字助理和手持电子产品、消费性电子产品等。SOC是21世纪电子系统开发应用的新平台1。1.1.2 IP核IP(Intelligence Property)是在FPGA设计中不可缺少的组成部分,也是自底向上设计方法学的理论基础。随着数字系统设计越来越复杂,从头开始设计系统中的每一个模块是一件十分困难的事,而且会打打延长设计周期,甚至增加系统的不稳定因素。IP的出现使得设计过程变得十分简单,用户甚至只需要将不同的模块连接起来,就可以实现一个完整的系统。这样对减少产品的上市时间、赚取早起的利润十分有利。IP核是
12、指用于产品应用专用的集成电路(ASIC)或可编程逻辑器件(FPGA)的逻辑块或数据块。将一些数字电路中常用但比较复杂的功能模块,如FIR滤波器,SDRAM控制器,PCI接口等设计成可修改参数的模块,让其他用户可以直接调用,这样就大大减轻了工程师的负担,避免重复劳动。随着CPDL/FPGA的规模越来越大,设计越来越负杂,使用IP核是一个发展趋势。随着HDL的发展和标准化,世界上出现了一批利用HDL进行各种集成电路功能模块专业设计的公司。其具体任务是按常用或专用功能,用HDL来描述集成电路的功能和结构,并经过不同级别的验证形成不同级别的IP核模块,供芯片设计人员来装配或集成选用。(1) 软IP核通
13、常使用HDL文本形式提交给用户,它已经过行为级设计优化和功能验证,但其中不含有任何具体的物理信息。据此,用户可以综合出正确的门电路级网表,并可以进行后续结构设计,具有强大的灵活性,可以很容易的借助EDA综合工具将其与其他外部逻辑电路结合成一体,更具不同的半导体工艺,将其设计为具有不同性能的器件。可以商品化的软IP核的电路结构总门数一般都在5000门以上。软IP核又被称为虚拟器件。(2) 硬IP核是基于某种半导体工艺的物理设计,已有固定的拓扑布局和具体工艺,并已经过工艺验证,具有保证的性能。其共给 用户的形式是电路物理结构掩模板图全套工艺文件,是可以拿来就用的圈套技术。(3) 固IP核的设计深度
14、介于软IP核和硬IP核之间,除了完成硬IP核所具有的设计外,还完成门电路级综合和时序仿真设计环节,一般以门电路级网表形式提交用户使用。常用的IP核模块有各种不同的CPU(32/64位结构CISC/RISC结构的CPU或8/16位微控制器/单片机,如8051等)、32/64位DSP(如320C30)、DRAM、SRAM、EEPROM、FLASH存、A/D、D/A、MPEG/JPEG、USB、PCI、标准接口、网络单元、编译器、编码/解码器和模拟器件模块等。丰富的IP核模块库为快速地设计专用集成电路和单片系统以尽快占领市场提供了保证2。1.1.3数据传送数据传送有串行传送和并行传送两种方法。并行传
15、输是构成字符的二进制代码在并行信道上同时传输的方式。例如,8单位代码字符要用8条信道并行同时传输,一次传一个字符,收、发双方不存在同步问题,速度快,但信道多、投资大,数据传输中很少采用3。串行传输是构成二进制代码在一条信道上以位(码元)为单位,按时间顺序逐位传输的方式。按位发送,逐位接收,同时还要确认字符,所以要采取同步措施。速度虽慢,但只需一条传输信道,投资小,易于实现。为此,串行传输已经成为当今外设接口的主流传输方式,为此,摩托罗拉公司开发出了同步外设接口(SPI),并随着时间不断改进,由于其占用线的资源少,且稳定可靠,该总线大量用在与EEPROM、ADC、FLASH和显示驱动器之类的慢速
16、外设器件通信,现在很多单片机等都有SPI模块来连接外围设备,从而使主机与外设传输数据更加方便5。1.2 SPI研究的目的与意义SPI总线,是一个同步串行接口的数据总线,它具有全双工、信号线少、协议简单、传输速度快等优点。由于串行总线的信号线比并行总线更少、简单,越来越多的系统放弃使用并行总线而采用串行总线。在众多串行总线中,SPI 总线相比于I2C总线、CAN总线、USB等其他常用总线相比有很大优势,如SPI线的数据传输速度可达若干Mbps, 比I2C总线快很多。SPI 总线最典型的应用就是主机与外围设备(如EEPROM、Flash RAM、A/D 转换器、LED 显示器、实时时钟等)之间的通
17、信4。SPI接口的扩展有硬件和软件两种方法,软件模拟SPI接口方法虽然简单方便,但是速度受到限制,在高速且日益复杂的数字系统中,这种方法显然无法满足系统要求,所以采用硬件的方法实现最为切实可行。这使得与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。FPGA(现场可编程门阵列)是在PAL、GAL、PLD 等可编程器件的基础上进一步发展的产物,具有设计周期短、可重复编程、灵活性强等特点。用FPGA 设计的SPI 总线具有可扩展性强、便于修改等优点。只要对设计做简单的改动,即可对SPI 总线的数据位数、工作模式等进行扩展,充分发挥了FPGA 的优势。并FPGA是可编程并可重复擦写的,
18、从而具有更大的灵活性,在协议不标准的情况下,可根据外围设备的不同而灵活的改动SPI设计,使设计周期大大降低,并与外围设备连接更加方便。1.3本文的主要工作与构架1.3.1研究的基本容(1)熟悉通信与通信接口相关方面的知识,学习并掌握SPI通信接口的结构,协议与原理。(2)熟悉VERILOG语言与其开发环境ISE,使用该语言进行数字电路(FPGA)设计,慢慢深入VERILOG语言。(3)设计流程图,状态图。(4)实现仿真。1.3.2技术方案SPI 接口作为主机与从机的通讯接口,其主要完成工作为下: SPI将从主机接收到的8位的并行数据,转换为从机所能接收的串行数据,并将该数据根据SPI协议送给从
19、机。 主机产生从机所需的时钟信号SCLK以与片选信号CS。 接收从从机传回的读信号和串行数据,并将其转换为并行数据。此方案采用了状态机来进行设计,本项目的研究主要采用理论分析、逻辑推理、试验调试等方法。状态机的特点如下:(1)有限状态机相对于纯硬件数字系统顺序方式控制来说更为灵活。(2)状态机的结构模式简单。(3)状态机构成的同步时序逻辑模块更为优良。(4)状态机在高速运算和控制方面更有其巨大的优势。(5)状态机更为可靠。基于以上特点,用状态机的方法描述SPI通信过程简单方便并可靠。SPI接口的状态大致转移描述如下:首先是SPI接口处于等待状态,一旦检测到发送指令时触发信号进入发送状态,在系统
20、指令下检测到写信号时进入发送数据状态,然后一位发送数据,当检测到读信号时,进入读状态,当检测到发送接收都完毕时,进入发送接收完毕状态,再转向等待状态。关键技术的实现:(1)时序问题将总线控制信号封装成指令,使用者只需通过发送指令的方式操作,避免了复杂的时序逻辑设计问题。(2)全双工传输方式的设计如果全部使用状态机的方式完成设计,则可发现其很难完成全双工即收发独立模式,则在此过程中可以采用流水线设计方式,使之收与发之间独立进行,便可完成全双工传输方式的设计。第2章 SPI原理分析SPI原理主要介绍SPI的基本机构,工作模式,传输模式以与SPI的典型协议,通过对于这些SPI的要点介绍,对其工作过程
21、有一个通透了解,从而可以能设计达到原理目的的功能设计以与程序的设计。2.1 SPI通信总线SPI顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200。SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方
22、式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)7。2.2 SPI简介SPI(Serial Peripheral Interface)接口是工业标准的同步串行接口,是一种全双工、三线通信的系统。由于串行总线的信号线比并行总线更少、更简单,越来越多
23、的系统放弃使用并行总线而采用串行总线。在众多串行总线中,SPI 总线与I2C总线、CAN总线、USB等其他常用总线相比有很大优势。SPI 总线最典型的应用就是主机与外围设备(如EEPROM、Flash RAM、A/D转换器、LED显示器、实时时钟等)之间的通信6。SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线(单向传输时只需要3根)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SD(数据输出),SCK(时钟),CS(片选)。它们的定义如下:SCK:同步时钟信号,用来同步主机和从机的数据传输,由主机控制输出,从机在SCK 的边沿
24、接收和发送数据;MOSI:主机输出、从机输入信号,主机在上升沿(或下降沿)通过该信号线发送数据给从机,从机在下降沿(或上升沿)通过该信号线接收该数据;MISO:主机输入、从机输出信号,从机在上升沿(或下降沿)通过该信号线发送数据给主机,主机在下降沿(或上升沿)通过该信号线接收该数据;CS:从机片选信号,由主机控制输出。其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输
25、的。这就是SCLK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。要注意的是,SCLK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制
26、,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽一样,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义。SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据11。2.3 SPI的工作模式SPI有两种工作模式,分别为主模式和从模式。2.3.1主模式将Master的数据传送给Slave,8位数据传送,传送完毕,申请中断,如图2.1所示:MOSIMOSISCLKSCLK图 2.1
27、SPI工作主模式2.3.2 从模式在从模式下,每一位数据都是接收到时钟信号SCLK和CS信号之后才发送/接收。此时,SCLK信号又主机产生,接收的数据在三岔路口信号作用下依次由MOSI引脚写入移位寄存器,发送的数据在SCLK信号作用下由移位寄存器发送到MISO引脚。MISOCSSCLKMISOCSSCLK图2.2 SPI工作从模式2.4 SPI的传输模式SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可
28、以当作主机或从机工作;提供频率可编程时钟;发送结束 中断标志;写冲突保护;总线竞争保护等。下图2.3示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式 (实线表示):图2.3SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=
29、1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致。SPI总线包括1根串行同步时钟信号线以与2根数据线。SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升
30、或下降)数据被采样。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个跳变沿只能为下降沿)时数据被采样。 (
31、4)SPI3 模式下的CPOL为1,SCK的空闲电平为高;CPHA为1,数据在串行同步时钟的第2个跳变沿(由于CPOL为高,因此第1个跳变沿只能为上升沿)时数据被采样。 在上述 4 种模式中,使用的最为广泛的是 SPI0 和 SPI3 方式。由于每一种模式都与其他三种不兼容,因此为了完成主、从设备间的通讯,主、从设备的 CPOL 和 CPHA 必须有一样的设置。读者需要注意的是:如果主设备/从设备在 SCK上升沿发送数据,则从设备/主设备最好在下降沿采样数据;如果主设备/从设备在SCK下降沿发送数据,则从设备/主设备最好在 SCK上升沿采样数据8。2.5 SPI协议SPI是一个环形总线结构,由
32、SS(CS)、SCK、SDI、SDO构成,其时序其实很简单,主要是在SCK的控制下,两个双向移位寄存器进行数据交换。假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。那么第一个上升沿来的时候 数据将会是SDO=1;寄存器=0101010X。下降沿到来的时候,SDI上的电平将所存到寄存器中去,那么这时寄存器=0101010SDI,这样在 8个时钟脉冲以后,两个寄存器的容互相交换一次。这样就完成里一个SPI时序。举例:假设主机和从机初始化就绪:并且主机的SBUFF=0xaa,从机的SBUFF=0x55,下面将分步对SPI的8个时钟周期的数据情况演示一遍:假
33、设上升沿发送数据。这样就完成了两个寄存器8位的交换,上面的上表示上升沿、下表示下降沿,SDI、SDO相对于主机而言的。其中SS引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的命令准备数据,主机在下一个8位时钟周期才把数据读回来9。表2.1脉冲主机SBUFF从机SBUFFSDISDO01010101001010101001上0101010x1010101x011下0101010010101011012上1010100x0101011x102下10101001
34、01010110103上0101001x1010110x013下0101001010101101014上1010010x0101101x104下1010010101011010105上0100101x1011010x015下0100101010110101016上1001010x0110101x106下1001010101101010107上0010101x1101010x017下0010101011010101018上0101010x1010101x10第3章方案论证对于SPI接口的设计,我们可以分为两大类,分别为利用单片机如51系列单片机实现和利用FPGA等可编程逻辑器件编程实现,下面将分
35、别介绍两种方法的方法。3.1 用FPGA来设计SPI通过对SPI的结构的了解可以设计一个系统框架,按照框架完成输入输出的功能。一个典型的SPI系统包括一个主MPU和一个或者多个从外围器件。单片机通过SPI接口模块与SPI相连,当单片机以主机模式运行的时候,就可以与系统中的从机实现通信,而当它处于从机模式工作时,就能与宁外一个主机进行数据通信。但在同一个时间,系统中只能拥有一个主机,否侧会造成系统的工作异常。一个典型的用FPGA设计的系统框架如图3.1所示11:微处理器微处理器接口SPI总线接口adr_i1:0dat_i7:0dat_o7:0int_owe_ics_omiso_imosi_osc
36、k_orst_i图3.13.2 用51系列单片机实现SPI对于MCS51系列单片机来说,由于它不带有SPI串行总线接口,我们可以使用软件来模拟SPI的操作,包括串行时钟、数据输入以与数据输出。不同的串行接口外围芯片拥有不同的时钟时序。对于在SCK的上升沿输入(接收)数据并且在下降沿输出(发送)数据的器件,大都应在初始状态将其串行时钟输出口P1.1设置为1,而在允许接口后再将P1.1置为0。这样,MCU在输出1位SCK时钟的同时,可以将接口芯片串行左移,从而输出1位数据到MCS51单片机的P1.3口(模拟MCU的MISO线),之后再将置P1.1为1,使MCS51系列单片机从P1.0(模拟MCU的
37、MOSI线)输出1位数据至串行接口芯片。这样就完成了1位数据输入输出的模拟。此后再置P1.1为0,模拟下1位数据的输入输出,依此完成8次循环,即可完成1次通过SPI总线传输8位数据的操作。对于在SCK的下降沿输入数据和上升沿输出数据的器件,则应取串行时钟输出的初始状态为0,即在接口芯片允许时,先置P1.1为1,以便外围接口芯片输出1位数据(MCU接收1位数据),之后再置时钟为0,使外围接口芯片接收1位数据(MCU发送1位数据),从而完成1位数据的传送。图3.2所示为MCS51系列单片机与存储器X25F008(E2PROM)的硬件连接图;外围设备MCS 511.01.11.31.2图3.2P1.
38、0模拟MCU的数据输出端(MOSI),P1.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端,P1.3模拟SPI的数据输入端(MISO)。以上便是两种实现SPI的方法,在实际应用中,只要高级点的单片机,都自带SPI接口,并且如DSP等也集成了SPI接口,大多芯片都趋向于用硬件而非软件来实现。这是因为软件模拟SPI接口方法虽然简单方便,但是速度受到限制,在高速且日益复杂的数字系统中,这种方法显然无法满足系统要求,所以采用硬件的方法实现最为切实可行。这样使得与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。在FPGA不断地完善改善完美并且功能强大的今天,用硬件实现已经成为主
39、流,在大型系统用硬件实现更加稳定。同时FPGA也有自身的优点。在外围器件有改变时,由于FPGA可以重复擦写的优点,从而在外围器件有些许改变之时,可以同时稍微改变可编程的程序,因而可编程又有灵活性大的特点。因此,本次便采用FPGA来设计。第4章SPI的电路设计电路设计主要是针对系统功能的设计,以与各部分功能具体实现方案,比如管脚说明由此得到本次SPI设计的流程图,由流程图便可以编写出我们所需要的程序。4.1管脚说明表4.1SPI设计管脚端口名称数据位宽信号流向功能描述int_o1Output中断输出,确保已传数据被读取rst_i1Input异步复位we_i1Input写使能端,写数据dat_i8
40、Input输入数据或指令adr_i2Input写指令数据选择sck_o1OutputSPI时钟输出mosi_o1Output数据串行输出miso_i1Input数据串行输入cs_o1Output选片dat_o8Output输入数据并行给微处理器其中,需要强掉的是,adr_i端输入不同,便使系统处于写数据状态还是写指令状态,指令是写给SPI设计的控制寄存器,以使SPI具有不同的功能12。4.2 SPI系统中所用的寄存器本次设计中SPI用到四种寄存器,包括SPCR(SPI控制寄存器)、SPER(SPI扩展寄存器)、treg(SPI数据传输/接收寄存器)其功能如下所示: (1)控制寄存器本次设计时参
41、照MC68HC11A8单片机的SPI结构进行设计,并进行了一些改进,所以本次设计的控制寄存器的控制位与MC68HC11A8单片机的控制位大致相似,同时进行了一些扩展和不同的功能,扩展在扩展寄存器中再做介绍,其控制寄存器的控制位如下表4.2所示:表4.2SPI设计的控制寄存器spiespemsbmstcpolcphspr1spr0 其各功能如下:·spie :当此为被置位为1时,则中断允许,即允许中断,当为0时,禁止中断。0:禁止中断1:允许中断·spe :当此位被置位为1时,则系统运行,当置位为0时,系统不运行。0:系统运行允许1:系统允许禁止·msb:此为为在传
42、输时是最高位线发送还是最低位先发送。当为1时,是最高位先发送,当为1时,是最低位先发送。0:先发送最低位1:先发送最高位·mstr:此为主从模式选择位,在本次设计中,本次设计只是工作于主控设备,故此为始终置1即可。·cpol:此为系统在空闲时的极性,当为0时,其为低电平为空闲时的极性,当为1时,其为高电平为空闲时的极性。0:空闲时为低电平1:空闲时为高电平·spr:此为速率选择为,其与扩展寄存器组合成速率选择,可为00,01,10,11,与扩展此寄存器组合成一组数列来选择数据传输速率。此刻在速率控制中详细介绍。(2)扩展寄存器扩展寄存器的八位只用了两位,其用于与控
43、制寄存器的spr组合成一列数据控制数据传输速率,其组合方式为espr = spre, espr,四位此而控制16种传输速率,此在速率控制中详细介绍。(3)状态寄存器状态寄存器本次设计中只去了一位spi_i中断位,其与spie允许情况下允许中断,中断位传给int_o从而保证单片机完成读取数据后在重新传输数据,从而保证每位数据传输完毕,保证数据读取后才能传送下一位数据13。4.3 SPI速率控制速率控制为控制寄存器的低两位和扩展寄存器的低两位共同控制的,本次设计通过此四位的控制一共可以支持12种速率,其为系统时钟的N次分频。本次将每一个控制赋值给clkcnt寄存器,并起每一个时钟减一,当为0是从而
44、影响控制位状态机ena = |clkcnt,当ena为1时则执行状态机,达到分频目的其详细控制如表4.3下:表4.3 SPI的速率控制spreesprclkcnt分频000002分频000114分频001028分频0011316分频0100432分频0101564分频01106128分频01117256分频10008512分频100191024分频1010a2048分频1011b4096分频4.4 SPI控制状态机Verilog HDL 是一种硬件描述语言,他可以用来进行各种级别的逻辑设计,可以用来进行数字逻辑系统的仿真验证、时序分析和逻辑综合等, 应用十分广泛。本文使用Verilog设计SP
45、I 接口模块。分析SPI 接口模块的功能之后,本文使用有限状态机实现SPI接口模块的传输控制。SPI控制状态机是本次设计的核心部分,其实整个设计的可以说是大脑,控制着整个程序的执行过程和完成设计实现功能。控制状态机主要用于片选信号cs 的选择,和输出时钟SCLK的产生,以与数据载入和输出等。它控制各个模块的状态, 然后根据相应的状态做出相应的操作。在状态机运行之前与数据传输之前,所作的工作便是初始化,即必须先确定允许中断,允许系统运行,设置先发送的数据位,设置极性相位和速率,即设置控制寄存器使之系统进入正常运行状态, 首先设置spe位为1.,因为只有其为1时系统才运行,当达到adr1:0=10
46、时,便是发送接收数据的命令。此时进入状态机的空闲状态2'b00。在空闲状态, 所作的工作是设置空闲的时的极性和相位,完成后便进入发送准备载入发送数据阶段2' 01 。此时为达到控制速率,使用ena = I clkcnt允许位,只有当其为1时,才执行此状态的程序,否则保持,在此状态中,所作的工作是反向sck 信号,载入数据,选号片选信号cs 端,变开始发送接收数据,同时此时的第位发送,便进入2'b10状态。此状态时为配置sck 信号, 使SCLK信号输出脉冲与发送数据脉冲匹配,从而可在sck的上升沿或下降沿锁存数据并发送数据。完成后进入到接受数据状态2'bll。此
47、时为发送数据的核心状态, 其数据接收传输寄存器移位完成数据的接收,在接收的同时也发送了一位数据,当发送完八次后变进入产生个中断位, 当单片机读取后变从新设置spe为0并消除中断标志位并活零后再次置1变开始下一个八位传输接收。少于八次则保留到当前状态。其状态图如下图4.1所示14:00100111ena=1ena=1ena=1&bcnt=0图4.14.5 SPI程序设计流程图通过以上的分析,首先是设置控制寄存器以与设置系统允许,当spe为1时系统运行,adr_i为收发命令时,满足条件便开始传送数据,传送数据最重要的是sck信号产生以与收发信号的完成,还有收发信信号与sck信号的匹配。考虑
48、到这些,其流程图如下图4.2所示15:开始判断系统允许位spe=1adr_i=2'b10&!spi_i&we_i&rst_ispe & (|clkcnt & |state)=0空闲状态输入数据,sck反向,选片信号成立spe & (|clkcnt & |state)=0sck反向,匹配sck信号spe & (|clkcnt & |state)=0接收发送数据,sck反向,发送八位完毕产生中断是否是否否是否是图4.2 SPI设计流程图第5章仿真与验证5.1仿真分析综上可以编写出SPI程序,其程序见附录A验证平台。(1
49、)二分频时发送接收数据当设置为开始时adr_i为写指令,即adr_i=00时,写指令到控制寄存器,adr_i=11时,写指令到扩展寄存器,以下设置为中断允许,系统允许,为主模式,极性为0,即初始状态空闲状态为低电平,相位为1,即为第一个跳变即第一个上升沿采样数据,设置速率控制位为00,并设置扩展寄存器也为0,与为二分频,则控制寄存器设置为8hF0,扩展寄存器设置为8h00。 图 5.1 SPI testbench设置如上图5.1所示,其设置如上所述,即在adr_i=00时,输入控制寄存器F0,当为adr_i=11,输入扩展寄存器为00.它的仿真波形如下图5.2所示:图5.2仿真波形由其结果可知
50、在mosi_o在一个sck_o时钟时输出一位数据,与实际相符,且sck_o时钟刚好为二分频,输入数据位8hB5,写为二进制为10110101,看mosi_o在每个sck_o时钟为单位看数据输出为10110101,与输入数据保持一致,在第一个数据开始发送或接收时,可以看到选片信号为1成立,inta_o在第八个时钟为1,产生中断输出,由结果与实际设计预计一致。(2)四分频时发送接收数据上只是一个功能测试,先测试是否能选择频率,现选择频率为四分频,看结果是否一致,于是设置控制寄存器为8hF1,扩展寄存器为8h00,其仿真结果如图 5.4所示:图 5.3 SPI testbench设置图5.4 SPI
51、的仿真波形可以看到其结果与预期一致,sck_o为系统时钟的四分频,且输出信号也是随着一个sck_o时钟变化而变化,其mosi_o与sck_o变化一致。第6章 结论与展望6.1结论在此设计中,不仅对ISE软件使用已经非常熟悉,并且对Verilog语言设计也更加熟悉了,从而对以后的学习打下了非常好的基础。同时对于SPI已经有着非常通透的了解,并且对I2C和UART等串口也有一定的了解,对于仿真分析也掌握了一定的技巧。不仅掌握了FPGA设计SPI设计,而且对单片机实现也有了一个大致的了解。在今后的设计中,在参考别人设计的同时,不能完全照搬别人的东西,同时要结合自己的思考,用简单有效的方法来实现设计,
52、并结合原理来思考别人是不是正确。在本次发送接收数据的有一个程序不仅繁琐,而且发送接收不能同时进行,显然是错误的程序,并且本次设计另外一个程序在一些端口完全没什么用,也输入进去,显然是在抄袭的结果。所以,无论在做任何设计,一定要紧跟定义,功能实现与否设计,而不是仅仅是看懂硬搬硬套。6.2不足之处与未来展望本次设计只做了一个简化的SPI接口,很多SPI的重要模块和其它功能未能得到实现。本次毕业设计所做的工作虽然简单,但也体会到不少东西。比如,我理解到在平时做单片机实验室那些初始化程序所做的目的。我所做的控制寄存器的东西便是那些初始化程序执行命令。控制寄存器的每一位用来控制整个系统的运行以与系统特性
53、,通过命令指令便将命令写到系统中去.以前的留在脑中的疑问,那些初始化驱动程序便迎刃而解。同时在本次设计,也领略到一些设计方面的步骤。即应该先了解哪些方面,再进行哪些方面的理解,再进行哪些方面的分析,再进行哪些方面的重点理解。在编写特定模块时,可以先看厂家所规定的定义来实现所需设计的系统.总之,通过本次FPGA设计,为今后的学习工作打下了一个很好的基础,为今后积累了非常宝贵的经验.参考文献1 樊昌信,徐炳祥,吴成柯等.通信原理(第5版)M. :国防工业,2001.2 徐洋等.基于Verilog HDL的FPGA设计与工程应用.人民邮电.2009.3 夏宇闻.Verilog数字系统教程(第2版)M.航天航空大学.2008.4SPI Block Guide V03.06. Original Release Date: 21 JAN 2000Revised: 04 FEB 2003. Motorola, Inc.5 串行外围接口. 顾卫刚老师.6 基与FPGA的SPI端口设计. 梁东莺. 信息职业技术学院信息中心,518029.7 黄志强,天保,俞一鸣等. Xilix可编程逻辑器件的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 主要领导离职的感言(5篇)
- 新学期学习计划十篇
- DB12T 598.10-2015 天津市建设项目用地控制指标 第10部分:非营利性社会福利设施项目
- 中秋节学校致辞范文(13篇)
- 新学期学习计划范文汇编九篇
- 范文新学期学习计划模板合集7篇
- DB12∕T 879-2019 仓储企业诚信评价规范
- 电动叉车维修保养的安全与操作规范
- 影响水利工程施工质量控制的主要因素
- 移动通信笔试题
- 降低眼药水漏滴率品管圈课件
- 廊坊市房屋租赁合同7篇
- 小学综合实践活动课《有趣的纸贴画》课件
- 当代世界文化发展的趋势
- 花茶大学生创新创业计划书
- 《中国近代经济史》课件
- 九年级道德与法治的知识竞赛题
- 2024年山东烟台财金集团招聘笔试参考题库含答案解析
- 快递分拣员劳动合同书
- 胎盘残留护理查房课件
- 校医务室托管投标方案
评论
0/150
提交评论