已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘 要随着专用集成电路(ASIC)设计技术的进步以及超大规模集成电路(VLSI)工艺技术的飞速发展,以及其价格的日益降低,采用嵌入式FPGA(FieldProgrammable Gate Array)编程的硬件电路来实现诸如SPI(Serial Peripheral Interface)接口也日益切实可行,相对软件实现具有更好的优点。SPI接口是一种常用的标准接口,由于其使用简单方便且节省系统资源,很多芯片都支持该接口,SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间等等。由于SPI接口是一种事实标准,并没有标准协议,大部分厂家都是参照Motorola的SPI接口定义来设计的,但正因为没有确切的版本协议,不同厂家产品的SPI接口在技术上存在一定的差别,容易引起歧义,有的甚至无法互联(需要用软件进行必要的修改)。本文基于一种使用较为普遍的协议来进行设计,用C语言进行编写设计,并在Quartus II和Nios II软件上进行设计仿真,本文基于GX-SOC/SOPC-Dev-Lab Platform 开发试验平台,采用Altera公司的Cyclone系列的FPGA为核心设计完成。关键词:FPGA SPI接口 QuartusIIAbstractWith the advances in design technology of ASIC and VLSIs rapid development, and its price is lower, the hardware circuit based on FPGA programming interface to achieve such as SPI is feasible, and it realizes better than software. SPI interface is a common standard interface, due to its simple and convenient use and save system resource , a lot of chips support this interface. SPI interface is extensively applied in EEPROM, FLASH, real-time clock, AD converter, and digital signal processor and digital signals decoder, etc.Due to the interface is a fact SPI standard, and it has no standard protocol, most manufacturers design the SPI refer to the interface definition of Motorolas reference.Because of no definite agreement, there is a lot of different versions of the products in the technology exists on SPI interface, easy cause of ambiguity, some even cannot interconnect (need to do some modification). based on the use of more widespread agreement to undertake designing with C programming language, written in Quartus designed, and Nios II and the design simulation software II, based on the GX - SOC/Dev SOPC - Lab Platform development and experiment Platform - Altera company, the Cyclone series of FPGA as the core design completed.Keywords:FPGA SPI interface QuartusII目录摘 要IAbstractII1 绪 论11.1 课题研究背景11.2 SPI研究目的及意义21.3 本章小结22 SPI原理分析32.1 SPI介绍32.2 SPI工作模式52.3 SPI传输模式52.4 SPI协议62.5 本章小结73 方案论证93.1 基于FPGA的RS232通信接口系统93.2 基于FPGA的SPI通信接口系统103.3 本章小结114 SPI方案设计124.1 开发试验平台简介124.1.1 硬件开发平台124.1.2 软件开发平台134.2 SPI各部分具体实现144.2.1 嵌入式系统设计原理144.2.2 SPI系统中所用的寄存器164.2.3 SPI速率控制174.2.4 SPI程序设计流程图184.3 SPI仿真及开发板上调试验证分析194.3.1 仿真结果194.3.2开发板上调试214.4 本章小结22结 论23致 谢24参考文献25附 录261 绪 论1.1 课题研究背景数据传送有串行传送和并行传送两种方法。并行传送以其高速度占领了数据传送领域很长一段时间,采用并行传送的集成电路、外围设备可谓不计其数,从CPU、RAM/ROM到打印机。从原理上讲,串行传输是按位传输方式,只利用一条信号线进行传输,例如:要传送一个字节(8位)数据,是按照该字节中从最高位逐位传输,直至最低位。 而并行传输是一次将所有一字节中8位信号一并传送出去。自然最少需要8根信号线。 如果按每次传送的数据流量来看,并行传输要远快于串口,在电脑发展初期,由于数据传输速率不是很高,并行传输还是很快的。 但并行传输也有它的缺点: (1)干扰问题其根本原因是由于传输速率太快,一般达到100M以上,信号线上传递的频率将超过100MHz,想想看,调频收音机的频率也不过88108MHz,也就是说,若用并行传输的话,是8根天线放在一起来传输信号,易发生干扰。但如果加强屏蔽,减小信号线间的耦合电容,是可以继续增大传输速率的,不过这将变得不现实,因为这必然导致信号线将耗用更多金属,截面积更大。但这并不是不能解决的问题。 (2)并行传输速率提升困难的最主要原因是同步问题 并行传输时,发送器是同时将8位信号电平加在信号线上,电信号虽然是以光速传输的,但仍有延迟,因此8位信号不是严格同时到达接受端,速率小时,由于每一字节在信号线上的持续时间较长,这种到达时间上的不同步并不严重,随着传输速率的增加,与8位信号到达时间的差异相比,每一字节的持续时间显得越来越短,最终导致前一字节的某几位与后一字节的几位同时到达接受端,这就造成了传输失败,而且随着信号线的加长这种现象还会越发严重,直至无法使用这是并口传输的致命缺点。 串行传输由于只有一位信号在信号线上,没有位同步问题,因此传送频率可以继续提高,当前传输速率已经达到1Gb/s(1000M)以上,而且还在提高,而并行传输在100Mb/s左右就停滞不前了,可以预见,串行传输将会比并行传输越来越快。 为此,串行传输已经成为当今外设接口的主流传输方式,为此,摩托罗拉公司开发出了同步外设接口(SPI),并随着时间不断改进,由于其占用线的资源少,且稳定可靠,该总线大量用在与EEPROM、ADC、FLASH和显示驱动器之类的慢速外设器件通信,现在很多单片机等都有SPI模块来连接外围设备,从而使主机与外设传输数据更加方便。SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,在现代通信接口技术中得到了广泛应用,因此本课题研究有一定的市场价值和科研价值。1.2 SPI研究目的及意义SPI是一种同步串行通讯方式,是一种三线同步总线,它是一种常用的标准接口,由于其使用简单方便且节省系统资源,很多芯片都支持该接口,SPI接口主要应用在E2PROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间等等。当然,串口通信还有其他的接口方式,SPI接口和UART相比,多了一条同步时钟线,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。这就凸现SPI的好处。为此,研究SPI接口,可以更容易了解并外围器件传输过程,并对其已定义的进行改进,并使之更加可靠,功能强化。SPI接口的扩展有硬件和软件两种方法,软件模拟SPI接口方法虽然简单方便,但是速度受到限制,在高速且日益复杂的数字系统中,这种方法显然无法满足系统要求,所以采用硬件的方法实现最为切实可行。这使得与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。SPI接口是一种事实标准,并没有标准协议,大部分厂家都是参照Motorola的SPI接口定义来设计的,但正因为没有确切的版本协议,不同厂家产品的SPI接口在技术上存在一定的差别,容易引起歧义,有的甚至无法互联(需要用软件进行必要的额修改)。当前,基于主从处理器结构的系统架构已经成为一种主流(如 DSP+FPGA,MCU+FPGA等),FPGA是在ASIC的基础发展出来的,它克服了专用 ASIC不够灵活的缺点。与其他中小规模集成电路相比,其优点主要在于它有很强的灵活性,即其内部的具体逻辑功能可以根据需要配置,对电路的修改和维护很方便。目前,FPGA的容量已经跨过了百万门级,使得 FPGA成为解决系统级设计的重要选择方案之一。在这种架构下,应用FPGA来构建SPI通信接口是切实可行的。并FPGA是可编程并可重复擦写的,从而具有更大的灵活性,在协议不标准的情况下,可根据外围设备的不同而灵活的改动SPI设计,使设计周期大大降低,并与外围设备连接更加方便。1.3 本章小结本章主要介绍了SPI的背景,及研究的目的与意义,进而可以知道SPI提出的目的以及其现阶段的发展状况,从而可以对SPI的这些理解达到举一反三的目的,体现了本课题研究的意义与价值。2 SPI原理分析SPI原理主要介绍SPI的基本机构,工作模式,传输模式以及SPI的典型协议,通过本章的介绍,对于SPI的要点介绍,以及其工作过程有一个通透了解,从而可以能设计达到原理目的的功能设计以及程序的设计。2.1 SPI介绍SPI接口的全称是“Serial Peripheral Interface”,意为串行外围接口。SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器,分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。数据外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。(1)MOSI 主设备数据输出,从设备数据输入 (2)MISO 主设备数据输入,从设备数据输出 (3)SCLK 时钟信号,由主设备产生 (4)CS 从设备使能信号,由主设备控制在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从器件的系统中,每个从器件需要独立的是能信号,硬件上比I2C系统要稍微复杂一些。SPI接口在内部硬件实际上是两个简单的位移寄存器,传输的数据为8位,在主器件产生的从器件使能信号和位移脉冲下,按位传输,高位在前,低位在后。如下图2.1.1和图2.1.2所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器。其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。图2.1.1 通讯时序图 SCLK MOSISPI Master MISO SS1 SS2 SS3 SS3SCLKMOSI Slave1MISOSSSCLKMOSI Slave1MISOSSSCLKMOSI Slave1MISOSS图2.1.2 多个从器件硬件连接示意图接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。 要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。2.2 SPI工作模式SPI由工作方式的不同,可分为两种模式:主模式和从模式(1)主模式将Master的数据传送给Slave,8位数据传送,传送完毕,申请中断,如图2.2.1MOSIMOSISCLKSCLK图 2.2.1 SPI工作主模式(2)从模式此时,从控制器从SIMO引脚接收串行数据并把数据移入自身移位寄存器的最低位或最高位。要注意的是,其是在主控制器输出时钟SCLK的控制下,在SCLK的上升沿或者下降沿读出一个数据输出给主设备。其传播模型如图2.2.2所示:MISOCSSCLKMISOCSSCLK图 2.2.2 SPI工作从模式须注意的是,主设备可以再在任意时刻起动数据发送,因为它控制着SCLK信号,而在从模式下,从控制器要发送数据,必须要用先设置片选信号以确保使能端CS输入允许。2.3 SPI传输模式SPI 的工作模式分为主模式和从模式,二者都需要在 SCK 的作用下才能工作;但主模式不需要 CS 信号,而从模式必须在 CS 信号有效的情况下才能完成。不论是在主模式下还是在从模式下,都要在时钟极性(CPOL)和时钟相位(CPHA)的配合下才能有效地完成一次数据传输。其中,时钟极性表示时钟信号在空闲时的电平;时钟相位决定数据是在 SCK的上升沿采样还是下降沿采样。根据时钟极性和时钟相位的不同组合,可以得到 SPI 总线的4 种工作模式,入图2.3.1所示:图2.3.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上升沿采样数据。2.4 SPI协议SPI接口是一种事实标准,并没有标准协议,大部分厂家都是参照Motorola的SPI接口定义来设计的,但正因为没有确切的版本协议,不同厂家产品的SPI接口在技术上存在一定的差别,容易引起歧义,有的甚至无法互联(需要用软件进行必要的额修改)。本次设计基于一种使用较为普遍的协议来进行设计,通过简单协议来理解并设计SPI接口功能。SPI 协议是一个环形总线结构,其时序其实比较简单,主要是在时钟脉冲 SCK 的控制下,两个双向移位寄存器 SPI数据寄存器数据 进行数据交换。我们假设主机的 8 位寄存器 SPIDATA1 内的数据是10101010,而从机的 8 位寄存器 SPIDATA2 内的数据是 01010101,在上升沿的时候发送数据,在下降沿的时候接收数据,最高位的数据先发送,主机和从机之间全双工通信,也就是说两个 SPI接口同时发送和接收数据,如图2.4.1 所示。从图中我们也可以看到,SPIDATA 移位寄存器总是将最高位的数据移出,接着将剩余的数据分别左移一位,然后将接收到得数据移入其最低位。CSMISOMOSISCLKCS1010101001010101MSBSPIDATA1LSBMSBLSBSPIDATA2图2.4.1 SPI的环形总线结构如图 所示,当第一个上升沿来的时候,SPIDATA1 将最高位 1 移除,并将所有数据左移1位, 这时 MOSI 线为高电平,而 SPIDATA2 将最高位 0 移出, 并将所有数据左移 1 位, 这样 MISO线为低电平。然后当下降沿到来的时候,SPIDATA1 将锁存 MISO 线上的电平,并将其移入其最低位,同样的,SPIDATA2 将锁存 MOSI 线上的电平,并将其移入最低位。经过 8 个脉冲后,两个移位寄存器就实现了数据的交换,也就是完成了一次 SPI 的时序。1010101010101010101010101010101010101010101010100011第一个上升沿第一个下降沿图2.4.2数据传输示例2.5 本章小结本章通过对SPI的原理分析,介绍其首发原理及基本结构,再介绍其工作模式,再介绍其传输模式和协议距离。通过以上分析,便可以知道本次设计的SPI所必须具备的功能有哪些,哪些是需要注意的功能。从而可以确定本次设计的工作模式,以及设计所的传输模式,并且通过介绍的协议举例来通过此协议来设计SPI系统结构。通过本章的分析,本次设计确定为主模式,及主控模式的设计,并且四种传输模式均需要实现,并且遵循SPI协议,按照此协议来设计SPI结构。以此,便可以进行SPI结构设计了。3 方案论证随着技术的不断进步,FPGA的发展将呈现以下几个方面的趋势;(1)向高密度、大规模的方向发展;(2)向系统内科重构的方向发展;(3)向低电压、低功耗的方向发展;(4)向高速可预测延时器件的方向发展;(5)向混合可编程技术方向发展;结合对FPGA接口的学习与了解,本设计对基于嵌入式FPGA的RS232通信接口和SPI通信接口进行了比较论证。3.1 基于FPGA的RS232通信接口系统RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。随着设备的不断改进,出现了代替DB25的DB9接口,现在都把RS232接口叫做DB9。RS232接口是现在主流的串行通信接口之一。RS232是一种异步串行通信接口,RS232只是一个物理层的标准,只规定了信号物理特性,链路层的协议时UART,RS232接口的逻辑设计是指这部分内容。图3.1.1给出了UART的帧格式。在线路空闲的时候,主设备将发送“1”;在通信时,主设备需要先发一个起始位“0”,以表示通信的开始;然后开始发送有效数据;之后再传送一比特的奇偶校验值;最后发送停止位“1”,以表示当前通信的完成。其中,数据可以事先约定为5位、6位、7位或者8位;奇偶校验位根据事先约定由对数据位按位进行异或或者同或而得到,它不是必须的。图3.1.1 UART的帧格式另外,在RS232中,还有一个波特率的概念。所谓波特率,指单位时间内传送二进制数据的位数,以位/秒为单位,是衡量串行数据传输快慢的重要指标。如果某串口的波特率为115200,指的是串口一115200bit/s的速率在传输数据。基于FPGA的RS232功能的UART的设计与实现FPGA的设计流程如图3.1.2所示,它包括设计输入、设计实现和设计验证3个相互有关的步骤。设计输入设计校验设计实例功能仿真时序仿真原理图文本输入仿真电路内校验静态时序分析图3.1.2 FPGA的设计流程由于RS232接口标准出现较早,难免有不足之处,主要有以下四点:(1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。(2)传输速率较低,在异步传输时,波特率为20Kbps;因此在“南方的老树51CPLD开发板”中,综合程序波特率只能采用19200,也是这个原因。(3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。(4)传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在15米左右。3.2 基于FPGA的SPI通信接口系统同样的串口连接SPI通信接口,用可编程逻辑的方法设计硬件来用简单的程序来应用外围硬件来实现SPI传输。通过对SPI的结构的了解可以设计一个系统框架,按照框架完成输入输出的功能。一般一个典型的SPI系统如图3.2.1所示,其主要包括MPU和一个或几个外围器件,SPI一端与MPU接口相连,另一端便是负责传输的四条线了。当此微处理器处于主机模式时,就能与从机进行通信,当此微处理器处于从机模式时,就能与另一主机通信。总之,一个系统中只有一个主机,否则无法工作。用FPGA设计的系统框架如下图3.2.1所示:微处理器微处理器接口SPI总线接口adr_i1:0dat_i7:0dat_o7:0int_owe_ics_omiso_imosi_osck_orst_i图3.2.1 介于SPI的FPGA设计系统框架SPI接口的设计在实际应用中,许多单片机已经采用了SPI接口,可见SPI接口应用很广泛,只要高级点的单片机,都自带SPI接口,并且如DSP等也集成了SPI接口,可见大多芯片都趋向于用硬件实现而非软件实现。这是因为软件模拟SPI接口方法虽然简单方便,但是速度受到限制,在高速且日益复杂的数字系统中,这种方法显然无法满足系统要求,所以采用硬件的方法实现最为切实可行。这使得与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。在可编程逻辑器件不断地完善改善完美并且功能强大且日益便宜,用硬件实现已经成为可能,在大型系统用硬件实现更加稳定。同时可编程逻辑也有自身的优点。在外围器件有改变时,由于可编程逻辑可以重复擦鞋的优点,从而在外围器件有些许改变之时,可以同时稍微改变可编程的程序,因而可编程又有灵活性大的特点。因此,本次设计便选用了SPI通信接口完成。3.3 本章小结本章比较了在基于FPGA嵌入式系统的RS232接口设计与SPI设计,通过对比分析,可以知道RS232接口设计与SPI接口设计之间的区别,通过比较可以得出每种设计的优劣。软件设计简单,但有其缺点,硬件设计相比复杂些,但是其灵活性强,可以让微处理器省出资源。4 SPI方案设计电路设计主要是对系统设计的功能,各部分功能具体实现方案比如管脚说明,寄存器的说明即设计,以及状态机的动态描述,由各个功能的说明便可设计出本次SPI设计的流程图,由流程图便可以写出我们所需要的程序。4.1 开发试验平台简介4.1.1 硬件开发平台GX-SOC/SOPC-Dev-Lab Platform 开发试验平台采用Altera公司的Cyclone系列的FPGA为核心,整个系统采用模块化设计,各个模块之间可以自由组合,大大提高试验平台的灵活性。同时试验平台还提供了丰富的接口模块,供人机交互。开发工程师可以使用VHDL语言、VerilogHDL语言、原理图输入等多种方式,利用Altera公司提供的Quartus II及Nios II软件进行编译、下载,并通过北京革新科技有限公司GX-SOC/SOPC-EP2C35-M672创新开发试验平台进行结果验证。开发试验平台提供多种人机交互方式:固定模块,灵活互连,如键盘阵列、按键、拨档开关输入、七段码管、大屏幕TFT彩色LCD显示、串口通信、VGA接口、PS2接口、USB接口、Ethernet、CF卡、SD卡、CAN总线接口等,通过MODULE选择开关组,利用Altera公司提供的一些IP资源和Nios II 32位处理器,用户可以在该开发试验平台上完成不同的SPOC设计。GX-SOC/SOPC-Dev-Lab Platform 开发试验平台参考图片如图4.1.1所示:图4.1.1 GX-SOC/SOPC-Dev-Lab Platform 结构示意图4.1.2 软件开发平台(1)Quartus II介绍Quartus II是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。(2)Nios介绍Nios集成开发环境(IDE)是Nios系列嵌入式处理器的基本软件开发工具。所有软件开发任务都可以在NiosIDE下完成,包括编辑、编译和调试程序。Nios IDE提供了一个统一的开发平台,用于所有Nios处理器系统。仅仅通过一台PC机、一片Altera的FPGA以及一根JTAG下载电缆,软件开发人员就能够往Nios处理器系统写入程序以及和Nios处理器系统进行通讯。NiosIDE基于开放式的、可拓展的Eclipse ID project工程以及Eclipse C/C+开发工具(CDT)工程。NiosIDE为软件开发提供四个主要功能:工程管理NiosIDE提供多个工程管理任务,加快嵌入式应用程序的开发速度。编辑器和编译器Altera NiosIDE提供了一个全功能的源代码编辑器和C/C+编译器NiosIDE编译环境自动生成一个基于用户特定系统配置(SOPC Builder生成的PTF文件)的makefile。NiosIDE中编译/连接设置的任何改变都会自动映射到这个自动生成的makefile中。这些设置可包括生成存储器初始化文件(MIF)的选项、闪存内容、仿真器初始化文件(DAT/HEX)以及profile总结文件的相关选项。调试器NiosIDE包含了一个强大的、在GNU调试器的基础之上的软件调试器-GDB。该调试器提供了许多基本调试功能,以及一些在低成本处理器开发套件中不会经常用到的高级调试功能。闪存编程器使用Nios处理器的设计都在单板上采用了闪存,可以用来存储FPGA配置数据和Nios编程数据。NiosIDE提供了一个方便的闪存编程方法。任何连接到FPGA的兼容通用闪存接口(CFI)的闪存期间都可以通过NiosIDE闪存编程器来烧结。除CFI闪存之外。NiosIDE闪存编辑器能够对连接到FPGA的任何Altera串行配置器件进行编程。4.2 SPI各部分具体实现SPI接口系统设计总体框图如下图4.2.1所示:A/D转换模块(AD7476)FPGA 系 统D/A转换模块(DA5302)软件模块LCD1显示模块图4.2.1 系统设计框图4.2.1 嵌入式系统设计原理用程序把自己设计的一组正弦数字信号值输入到D/A中转换成住正弦信号模拟波形,然后通过闭环输入到A/D中,在使用程序来接受A/D产生数字信号,并在LCD上显示对应的电平值和电压值。开发平台上的串行ADC模块由一个串行的ADC器件和电压基准源组成。串行ADC期间采用Analog Devices公司的AD7476芯片,是一个8位、高速、低功耗的连续渐进模块转换器,工作电压为2.35V到5.25V,并产生1MSPS的传输率。转换过程和数据获取可通过CS信号和串行时钟来控制,并且可以与微处理器或DSP相接。在CS信号下降沿采样数据的同时转换也开始,在这些过程中不存在线路延时。开发平台上的串行DAC模块由一个串行DAC器件和电压基准源组成。串行DAC器件采用Analog Devices公司的DA5302芯片,是一个双向8为缓冲电压输出数据模块转换器,工作电压为2.5V到5.5V,片上的输出放大器可使轨对轨输出摆幅的百率为0.7V/us。这系列芯片使用30Mhz时钟频率的多用途3先串行接口,并能兼容多种接口标准。硬件配置图和系统原理图如图4.2.2和4.2.3所示图4.2.2 系统总线连接图图4.2.3 系统硬件配置管脚分配如表4.2.2所示表4.2.2 管脚分配表设计端口芯片引脚开发平台模块spi_adc_csPIN_V24AD芯片的片选Spi_adc_dataPIN_Y22AD芯片的数据口Spi_adc_sclkPIN_V23AD芯片的时钟Spi_dac_csPIN_AE18DA芯片的片选Spi_dac_cslkPIN_AF18DA芯片的时钟Spi_dac_dataPIN_AE19DA芯片的数据口注:因为本文主要介绍SPI接口设计,液晶、AD、DA等元器件的管脚分配表从略。下图4.2.4 为Quartus II系统连接框图图4.2.4 Quartus II系统连接框图4.2.2 SPI系统中所用的寄存器本次设计中SPI用到四种寄存器,包括SPCR(SPI控制寄存器)、SPER(SPI扩展寄存器)、treg(SPI数据传输/接收寄存器)其功能如下所示: (1)控制寄存器本次设计时参照MC68HC11A8单片机的SPI结构进行设计,并进行了一些改进,所以本次设计的控制寄存器的控制位与MC68HC11A8单片机的控制位大致相似,同时进行了一些扩展和不同的功能,扩展在扩展寄存器中再做介绍,其控制寄存器的控制位如下表4.2.3所示:表4.2.3 SPI设计的控制寄存器SSMMCCSS其各功能如下: 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从而保证单片机完成读取数据后在重新传输数据,从而保证每位数据传输完毕,保证数据读取后才能传送下一位数据。4.2.3 SPI速率控制速率控制为控制寄存器的低两位和扩展寄存器的低两位共同控制的,本次设计通过此四位的控制一共支持12种速率,其为系统时钟的N次分频。本次将每一个控制赋值给clkcnt寄存器,并起每一个时钟减一,当为0是从而影响控制位状态机ena = |clkcnt,当ena为1是则执行状态机,从而达到分频目的其详细控制如表4.2.4下:表4.2.4 SPI的速率控制spreesprclkcnt分频000002分频000114分频001028分频0011316分频0100432分频0101564分频01106128分频01117256分频10008512分频100191024分频1010a2048分频1011b4096分频由于每一个时钟上升沿执行一次,从而每个完整时钟sck_o执行一次跳变,顾其为2的n此分频,如上表所示。4.2.4 SPI程序设计流程图由上分析,可知,首先是设置控制寄存器,设置系统允许,spe为1时系统运行,当adr_i为收发命令时,在满足条件是便开始传送数据,在传送数据最重要的是sck信号产生以及收发信号的完成,以及收发信信号与sck信号的匹配。考虑到这些,其流程图如下图4.2.6所示:开始判断系统允许位spe=1adc_i=2b10&!spi_i&we_i&rst_ispe & (|clkcnt & |state)=0空闲状态输入数据,sck反向,选片信号成立spe & (|clkcnt & |state)=0sck反向,匹配sck信号spe & (|clkcnt & |state)=0接收发送数据,sck反向,发送八位完毕产生中断是否是否否是否是图4.2.6 SPI设计软件流程图4.3 SPI仿真及开发板上调试验证分析4.3.1 仿真结果综上可以编写出SPI程序,其程序见附录 当设置为开始时spi_adc_in为写指令,即spi_adc_in=00时,写指令到控制寄存器,spi_adc_in=11时,写指令到扩展寄存器,以下设置为中断允许,系统允许,为主模式,极性为0,即初始状态空闲状态为低电平,相位为1,即为第一个跳变即第一个上升沿采样数据,设置速率控制位为00,并设置扩展寄存器也为0,则控制寄存器设置为8hF0,扩展寄存器设置为8h00。 图 4.3.1 Quartus II仿真上图4.3.1所示为本次试验Quartus II仿真图。Nios II仿真结果如下图4.3.2(a,b)所示:图4.3.2 Nios II仿真结果a图4.3.2 Nios II仿真结果b4.3.2开发板上调试经连接在GX-SOC/SOPC-Dev-Lab Platform 开发试验平台上LCD1实时显示结果,与Nios软件比较,下图4.3.3为在GX-SOC/SOPC-Dev-Lab Platform 开发试验平台上的试验结果。图4.3.3 GX-SOC/SOPC-Dev-Lab Platform 开发试验平台上LCD1实时显示结果综上仿真,从软件Nios II仿真与硬件调试与理想结果一致,从而说明本次设计时成功的。本设计可以在空时等待数据传送在读取数据,从而在读取数据更加自由。限于毕业设计的时间问题没有进一步深入研究。顾到此为止,能实现SPI结构,这便是本次设计的成功之处。4.4 本章小结本章是结构设计,功能模块描述,通过一个个模块的分析,便能得出总体设计框架,由设计的框架思路便可以设计出本次设计所需要的程序了。程序仿真与调试,可以看到起结果一致,并且完成了SPI所需要的功能,通过此结果分析,可知,本次设计试验是成功的。结 论本次毕业设计的是一个基于FPGA嵌入式系统的SPI接口设计,参考很多FPGA或其他处理器的定义,学习掌握了FPGA设计平台的基本使用方法,根据其提供的控制寄存器,扩展寄存器,状态寄存器的定义,通过其中的功能,来设计实现SPI小系统。本设计是一个稍微简化的SPI主控设备,因而并不需要很多的模块。通过此次设计,使得对Quartus II和Nios II软件使用已经非常熟悉,并且因为EDA方案的比较,对VHDL语言设计也更加熟悉了。同时通过在图书馆与网络大量资料的查阅整理与学习,对于SPI已经有着非常通透的了解,并且对RS232和I2C等串口也有一定的了解,对于板上调试,仿真分析也掌握了一定的技巧,同时培养了在正确的设计思想和分析问题解决问题的能力,特别是整体设计和零部件能力的运用,学到了很多知识,这为我们将来的发展提供了更多的机会。经过本次毕业设计,我深深体会到严谨、认真、仔细、耐心是一个工程设计人员必须具备的素质。SPI接口是Motorola首先提出的全双工三线同步串口外围接口,采用主从模式架构,SPI接口有2跟单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。由于其占用线的资源少,且稳定可靠,该总线大量用在与EEPROM、ADC、FLASH和显示驱动器之类的慢速外设器件通信,现在很多单片机等都有SPI模块来连接外围设备,从而使主机与外设传输数据更加方便,所以在现代通信接口技术中得到了广泛应用,因此本课题研究有一定的市场价值和科研价值。致 谢在我学士论文完成之际,谨向我攻读学士学位的过程中曾经教育过我的老师,关心过我的亲人,关心过我的朋友,和所有帮助过我的人们致以最崇高的敬意和深深的感谢!衷心感谢我的指导老师殷卫真老师。她丰富的知识和渊博的学识是我设计时所有理论知识的源泉,她为我的毕业设计进行了详细的讲解,为我提出的问题进行了耐心的解答,并指导我如何入手项目和查找资料,为我提供正确的导向。除此之外,她还为我的毕业设计提供了优越的环境以及毕业设计所需的硬件开发环境,通过在开发试验平台上进行调试和验证,我很快的理解和掌握了调试工具。衷心感谢一起完成毕业设计的同学们,在设计进行和测试的时候给我的无私的帮助和支持,通过与他们的交流,我不仅了解了关于调试方面的知识,还熟悉了GX-SOC/SOPC-Dev
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 多模态测试交互-洞察及研究
- 个体行为调控机制-洞察及研究
- 企业价值-义工合作效应-洞察及研究
- 2026届湖南省衡阳二十六中化学高二上期中学业质量监测模拟试题含解析
- 保障性住房申请及合同管理指南
- 气候变化对海洋生物群落结构的影响-洞察及研究
- 供应链金融解决方案-洞察及研究
- 低碳建材研发与推广-洞察及研究
- 教育公平性与课程设计的深度融合-洞察及研究
- 机车智能化检修技术-洞察及研究
- 2025河北涿州京源热电有限责任公司秋季校园招聘10人笔试历年难易错考点试卷带答案解析2套试卷
- 2025标准个人租房合同范本下载
- 企业节能减排行动计划方案
- 2025中国智能制造软件市场发展现状及未来趋势与投资策略分析报告
- 养老院消防安全培训课件
- 项目阶段性沟通与反馈机制构建方案
- 广药集团校招试题及答案
- 厂房公共抗震支架施工方案
- 英语二2022真题题目文档版
- 雨刮器基础知识培训课件
- 河北省2026届高三年级上学期10月阶段性联合考试英语试卷
评论
0/150
提交评论