欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
     

    SPI接口的仿真及验证毕业论文1.doc

    • 资源ID:3903021       资源大小:375.50KB        全文页数:35页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    SPI接口的仿真及验证毕业论文1.doc

    摘要毕业设计(论文)题目:SPI接口的仿真及验证 物联网工程 学院 电子信息工程专业摘要 在专用集成电路(ASIC)设计技术以及超大规模集成电路(VLSI)工艺技术的飞速发展的今天,FPGA编程的硬件电路被越来越多的应用于实现诸如SPI接口等方面。相对于软件实现,硬件具有更多的优点。SPI接口技术是一种高速高效率的串行接口技术, 主要用于扩展外设及其数据交换, 已经作为一种配置标准。作为一个标准的接口,SPI具有简单方便和节省系统资源的优点,使得大多数芯片都支持该接口。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。SPI接口的全称是"Serial Peripheral Interface",串行外围接口,是由Motorola公司首先在其MC68HCXX系列处理器上定义的。现在大部分厂家都是参照Motorola的定义来设计的。因为没有确切的版本协议,所以不同厂家的SPI接口在技术上存在一定程度上的差别,甚至会引起歧义。本文是利用Verilog硬件描述语言编写出SPI总线的主机模块,经过Xilinx ISE仿真得出相应的仿真波形。根据仿真波形分析,所设计的SPI主机模块的功能是正确的,并且在Xilinx ISE中对该模块进行综合与实现。 更多还原关键词:FPGA;SPI接口;Verilog;Xilinx ISEAbstract In 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 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 converter, 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 Motorola 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 and the implementation of the module, and completed verify on the FPGA.Keywords:FPGA ;SPI interface;Verilog;Xilinx ISEIII目录目录摘要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 从模式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附录A24iSPI接口的仿真及验证 第1章 绪论1.1 研究背景1.1.1系统芯片的发展系统芯片(SoC:System-on-a-chip)指的是在单个芯片上集成一个完整的系统,对所有或部分必要的电子电路进行包分组的技术。所谓完整的系统一般包括中央处理器、存储器、以及外围电路等。 SoC 是与其它技术并行发展的,如绝缘硅(SOI),它可以提供增强的时钟频率,从而降低微芯片的功耗。 随着电子技术开发应用对集成电路IC需求量的扩大和半导体工艺水平的不断进步,超大规模集成电路VLSI技术迅猛发展。当前的半导体工艺水平己经达到了亚微米水平并正在向50nm以下发展,器件特征尺寸越来越小,芯片集成规模越来越大,数百万门级电路可以集成在一个芯片上,芯片尺寸已从逻辑限制变为焊盘限制,我们必须找到与常规集成电路设计思想不同的设计方式,它就是新世纪IC设计的主流技术。SOC是微电子设计领域的一场革命,从整个系统的角度出发,把智能核、信息处理机制、模型算法、芯片结构、各层次电路直至器件的设计紧密结合起来,在单个或少数几个芯片上完成整个系统的功能,既我们可以把越来越多的电路设计在同一个芯片中,这里面可能包含有中央处理器(CPU),嵌入式内存(Embedded memory)、数字信号处理器(DSP)、数字功能模块(Digital function)、模拟功能模块(Analog function)、模拟数字转换器(ADC)以及各种外围配置(USB, MPEG)等等,这是新发展的SOC技术。SOC技术的研究、应用和发展是微电子技术发展的一个新的里程碑。SOC能提供更好的性能、更低的功耗、更小的印制板.空间和更低的成本,带来了电子系统设计与应用的革命性新变革,可广泛应用于移动电话、硬盘驱动器、个人数字助理和手持电子产品、消费性电子产品等。SOC是21世纪电子系统开发应用的新平台1。1.1.2 IP核IP(Intelligence Property)是在FPGA设计中不可缺少的组成部分,也是自底向上设计方法学的理论基础。随着数字系统设计越来越复杂,从头开始设计系统中的每一个模块是一件十分困难的事,而且会打打延长设计周期,甚至增加系统的不稳定因素。IP的出现使得设计过程变得十分简单,用户甚至只需要将不同的模块连接起来,就可以实现一个完整的系统。这样对减少产品的上市时间、赚取早起的利润十分有利。IP核是指用于产品应用专用的集成电路(ASIC)或可编程逻辑器件(FPGA)的逻辑块或数据块。将一些数字电路中常用但比较复杂的功能模块,如FIR滤波器,SDRAM控制器,PCI接口等设计成可修改参数的模块,让其他用户可以直接调用,这样就大大减轻了工程师的负担,避免重复劳动。随着CPDL/FPGA的规模越来越大,设计越来越负杂,使用IP核是一个发展趋势。随着HDL的发展和标准化,世界上出现了一批利用HDL进行各种集成电路功能模块专业设计的公司。其具体任务是按常用或专用功能,用HDL来描述集成电路的功能和结构,并经过不同级别的验证形成不同级别的IP核模块,供芯片设计人员来装配或集成选用。(1) 软IP核通常使用HDL文本形式提交给用户,它已经过行为级设计优化和功能验证,但其中不含有任何具体的物理信息。据此,用户可以综合出正确的门电路级网表,并可以进行后续结构设计,具有强大的灵活性,可以很容易的借助EDA综合工具将其与其他外部逻辑电路结合成一体,更具不同的半导体工艺,将其设计为具有不同性能的器件。可以商品化的软IP内核的电路结构总门数一般都在5000门以上。软IP核又被称为虚拟器件。(2) 硬IP核是基于某种半导体工艺的物理设计,已有固定的拓扑布局和具体工艺,并已经过工艺验证,具有保证的性能。其共给 用户的形式是电路物理结构掩模板图全套工艺文件,是可以拿来就用的圈套技术。(3) 固IP核的设计深度介于软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数据传送数据传送有串行传送和并行传送两种方法。 并行传输是构成字符的二进制代码在并行信道上同时传输的方式。例如,8单位代码字符要用8条信道并行同时传输,一次传一个字符,收、发双方不存在同步问题,速度快,但信道多、投资大,数据传输中很少采用3。串行传输是构成二进制代码在一条信道上以位(码元)为单位,按时间顺序逐位传输的方式。按位发送,逐位接收,同时还要确认字符,所以要采取同步措施。速度虽慢,但只需一条传输信道,投资小,易于实现。为此,串行传输已经成为当今外设接口的主流传输方式,为此,摩托罗拉公司开发出了同步外设接口(SPI),并随着时间不断改进,由于其占用线的资源少,且稳定可靠,该总线大量用在与EEPROM、ADC、FLASH和显示驱动器之类的慢速外设器件通信,现在很多单片机等都有SPI模块来连接外围设备,从而使主机与外设传输数据更加方便5。1.2 SPI研究的目的及意义SPI总线,是一个同步串行接口的数据总线,它具有全双工、信号线少、协议简单、传输速度快等优点。由于串行总线的信号线比并行总线更少、简单,越来越多的系统放弃使用并行总线而采用串行总线。在众多串行总线中,SPI 总线相比于I2C总线、CAN总线、USB等其他常用总线相比有很大优势,如SPI线的数据传输速度可达若干Mbps, 比I2C总线快很多。SPI 总线最典型的应用就是主机与外围设备(如EEPROM、Flash RAM、A/D 转换器、LED 显示器、实时时钟等)之间的通信4。SPI接口的扩展有硬件和软件两种方法,软件模拟SPI接口方法虽然简单方便,但是速度受到限制,在高速且日益复杂的数字系统中,这种方法显然无法满足系统要求,所以采用硬件的方法实现最为切实可行。这使得与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。FPGA(现场可编程门阵列)是在PAL、GAL、PLD 等可编程器件的基础上进一步发展的产物,具有设计周期短、可重复编程、灵活性强等特点。用FPGA 设计的SPI 总线具有可扩展性强、便于修改等优点。只要对设计做简单的改动,即可对SPI 总线的数据位数、工作模式等进行扩展,充分发挥了FPGA 的优势。并FPGA是可编程并可重复擦写的,从而具有更大的灵活性,在协议不标准的情况下,可根据外围设备的不同而灵活的改动SPI设计,使设计周期大大降低,并与外围设备连接更加方便。1.3本文的主要工作及构架1.3.1研究的基本内容(1)熟悉通信及通信接口相关方面的知识,学习并掌握SPI通信接口的结构,协议及原理。(2)熟悉VERILOG语言及其开发环境ISE,使用该语言进行数字电路(FPGA)设计,慢慢深入VERILOG语言。(3)设计流程图,状态图。(4)实现仿真。1.3.2技术方案SPI 接口作为主机与从机的通讯接口,其主要完成工作为下: SPI将从主机接收到的8位的并行数据,转换为从机所能接收的串行数据,并将该数据根据SPI协议送给从机。 主机产生从机所需的时钟信号SCLK以及片选信号CS。 接收从从机传回的读信号和串行数据,并将其转换为并行数据。此方案采用了状态机来进行设计,本项目的研究主要采用理论分析、逻辑推理、试验调试等方法。状态机的特点如下:(1)有限状态机相对于纯硬件数字系统顺序方式控制来说更为灵活。(2)状态机的结构模式简单。(3)状态机构成的同步时序逻辑模块更为优良。(4)状态机在高速运算和控制方面更有其巨大的优势。(5)状态机更为可靠。基于以上特点,用状态机的方法描述SPI通信过程简单方便并可靠。SPI接口的状态大致转移描述如下:首先是SPI接口处于等待状态,一旦检测到发送指令时触发信号进入发送状态,在系统指令下检测到写信号时进入发送数据状态,然后一位发送数据,当检测到读信号时,进入读状态,当检测到发送接收都完毕时,进入发送接收完毕状态,再转向等待状态。关键技术的实现:(1)时序问题将总线控制信号封装成指令,使用者只需通过发送指令的方式操作,避免了复杂的时序逻辑设计问题。(2)全双工传输方式的设计如果全部使用状态机的方式完成设计,则可发现其很难完成全双工即收发独立模式,则在此过程中可以采用流水线设计方式,使之收与发之间独立进行,便可完成全双工传输方式的设计。第2章 SPI原理分析SPI原理主要介绍SPI的基本机构,工作模式,传输模式以及SPI的典型协议,通过对于这些SPI的要点介绍,对其工作过程有一个通透了解,从而可以能设计达到原理目的的功能设计以及程序的设计。2.1 SPI通信总线SPI顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200。SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)7。2.2 SPI简介SPI(Serial Peripheral Interface)接口是工业标准的同步串行接口,是一种全双工、三线通信的系统。由于串行总线的信号线比并行总线更少、更简单,越来越多的系统放弃使用并行总线而采用串行总线。在众多串行总线中,SPI 总线与I2C总线、CAN总线、USB等其他常用总线相比有很大优势。SPI 总线最典型的应用就是主机与外围设备(如EEPROM、Flash RAM、A/D转换器、LED显示器、实时时钟等)之间的通信6。SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线(单向传输时只需要3根)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SD(数据输出),SCK(时钟),CS(片选)。它们的定义如下:SCK:同步时钟信号,用来同步主机和从机的数据传输,由主机控制输出,从机在SCK 的边沿接收和发送数据;MOSI:主机输出、从机输入信号,主机在上升沿(或下降沿)通过该信号线发送数据给从机,从机在下降沿(或上升沿)通过该信号线接收该数据;MISO:主机输入、从机输出信号,从机在上升沿(或下降沿)通过该信号线发送数据给主机,主机在下降沿(或上升沿)通过该信号线接收该数据;CS:从机片选信号,由主机控制输出。其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。 要注意的是,SCLK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义。SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据11。2.3 SPI的工作模式SPI有两种工作模式,分别为主模式和从模式。2.3.1主模式将Master的数据传送给Slave,8位数据传送,传送完毕,申请中断,如图2.1所示:MOSIMOSISCLKSCLK图 2.1 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主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束 中断标志;写冲突保护;总线竞争保护等。下图2.3示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式 (实线表示):图2.3SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致。SPI总线包括1根串行同步时钟信号线以及2根数据线。SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。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上升沿采样数据8。2.5 SPI协议 SPI是一个环形总线结构,由SS(CS)、SCK、SDI、SDO构成,其时序其实很简单,主要是在SCK的控制下,两个双向移位寄存器进行数据交换。假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。那么第一个上升沿来的时候 数据将会是SDO=1;寄存器=0101010X。下降沿到来的时候,SDI上的电平将所存到寄存器中去,那么这时寄存器=0101010SDI,这样在 8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个SPI时序。举例:假设主机和从机初始化就绪:并且主机的SBUFF=0xaa,从机的SBUFF=0x55,下面将分步对SPI的8个时钟周期的数据情况演示一遍:假设上升沿发送数据。这样就完成了两个寄存器8位的交换,上面的上表示上升沿、下表示下降沿,SDI、SDO相对于主机而言的。其中SS引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的命令准备数据,主机在下一个8位时钟周期才把数据读回来9。表2.1脉冲主机SBUFF从机SBUFFSDISDO01010101001010101001上0101010x1010101x011下0101010010101011012上1010100x0101011x102下1010100101010110103上0101001x1010110x013下0101001010101101014上1010010x0101101x104下1010010101011010105上0100101x1011010x015下0100101010110101016上1001010x0110101x106下1001010101101010107上0010101x1101010x017下0010101011010101018上0101010x1010101x1029第3章方案论证对于SPI接口的设计,我们可以分为两大类,分别为利用单片机如51系列单片机实现和利用FPGA等可编程逻辑器件编程实现,下面将分别介绍两种方法的方法。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_osck_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的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.0模拟MCU的数据输出端(MOSI),P1.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端,P1.3模拟SPI的数据输入端(MISO)。以上便是两种实现SPI的方法,在实际应用中,只要高级点的单片机,都自带SPI接口,并且如DSP等也集成了SPI接口,大多芯片都趋向于用硬件而非软件来实现。这是因为软件模拟SPI接口方法虽然简单方便,但是速度受到限制,在高速且日益复杂的数字系统中,这种方法显然无法满足系统要求,所以采用硬件的方法实现最为切实可行。这样使得与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。在FPGA不断地完善改善完美并且功能强大的今天,用硬件实现已经成为主流,在大型系统用硬件实现更加稳定。同时FPGA也有自身的优点。在外围器件有改变时,由于FPGA可以重复擦写的优点,从而在外围器件有些许改变之时,可以同时稍微改变可编程的程序,因而可编程又有灵活性大的特点。因此,本次便采用FPGA来设计。第4章SPI的电路设计电路设计主要是针对系统功能的设计,以及各部分功能具体实现方案,比如管脚说明由此得到本次SPI设计的流程图,由流程图便可以编写出我们所需要的程序。4.1管脚说明表4.1 SPI设计管脚端口名称数据位宽信号流向功能描述int_o1Output中断输出,确保已传数据被读取rst_i1Input异步复位we_i1Input写使能端,写数据dat_i8Input输入数据或指令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)控制寄存器本次设计时参照MC68HC11A8单片机的SPI结构进行设计,并进行了一些改进,所以本次设计的控制寄存器的控制位与MC68HC11A8单片机的控制位大致相似,同时进行了一些扩展和不同的功能,扩展在扩展寄存器中再做介绍,其控制寄存器的控制位如下表4.2所示:表4.2 SPI设计的控制寄存器spiespemsbmstcpolcphspr1spr0 其各功能如下: ·spie :当此为被置位为1时,则中断允许,即允许中断,当为0时,禁止中断。 0:禁止中断 1:允许中断 ·spe :当此位被置位为1时,则系统运行,当置位为0时,系统不运行。 0:系统运行允许 1:系统允许禁止 ·msb:此为为在传输时是最高位线发送还是最低位先发送。当为1时,是最高位先发送,当为1时,是最低位先发送。0:先发送最低位1:先发送最高位·mstr:此为主从模式选择位,在本次设计中,本次设计只是工作于主控设备,故此为始终置1即可。·cpol:此为系统在空闲时的极性,当为0时,其为低电平为空闲时的极性,当为1时,其为高电平为空闲时的极性。0:空闲时为低电平1:空闲时为高电平·spr:此为速率选择为,其与扩展寄存器组合成速率选择,可为00,01,10,11,与扩展此寄存器组合成一组数列来选择数据传输速率。此刻在速率控制中详细介绍。(2)扩展寄存器扩展寄存器的八位只用了两位,其用于与控制寄存器的spr组合成一列数据控制数据传输速率,其组合方式为espr = spre, espr,四位此而控制16种传输速率,此在速率控制中详细介绍。(3)状态寄存器状态寄存器本次设计中只去了一位spi_i中断位,其与spie允许情况下允许中断,中断位传给int_o从而保证单片机完成读取数据后在重新传输数据,从而保证每位数据传输完毕,保证数据读取后才能传送下一位数据13。4.3 SPI速率控制速率控制为控制寄存器的低两位和扩展寄存器的低两位共同控制的,本次设计通过此四位的控制一共可以支持12种速率,其为系统时钟的N次分频。本次将每一个控制赋值给clkcnt寄存器,并起每一个时钟减一,当为0是从而影响控制位状态机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设计SPI 接口模块。分析SPI 接口模块的功能之后,本文使用有限状态机实现SPI接口模块的传输控制。SPI控制状态机是本次设计的核心部分,其实整个设计的可以说是大脑,控制着整个程序的执行过程和完成设计实现功能。控制状态机主要用于片选信号cs 的选择,和输出时钟SCLK的产生,以及数据载入和输出等。它控制各个模块的状态, 然后根据相应的状态做出相应的操作。在状态机运行之前及数据传输之前,所作的工作便是初始化,即必须先确定允许中断,允许系统运行,设置先发送的数据位,设置极性相位和速率,即设置控制寄存器使之系统进入正常运行状态, 首先设置spe位为1.,因为只有其为1时系统才运行,当达到adr1:0=10时,便是发送接收数据的命令。此时进入状态机的空闲状态2'b00。在空闲状态, 所作的工作是设置空闲的时的极性和相位,完成后便进入发送准备载入发送数据阶段2' 01 。此时为达到控制速率,使用ena = I clkcnt允许位,只有当其为1时,才执行此状态的程序,否则保持,在此状态中,所作的工作是反向sck 信号,载入数据,选中信号片选信号cs 端,变开始发送接收

    注意事项

    本文(SPI接口的仿真及验证毕业论文1.doc)为本站会员(小小飞)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开