SPIIP串行外围设备接口毕业设计.docx
- 文档编号:14242665
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:29
- 大小:179.16KB
SPIIP串行外围设备接口毕业设计.docx
《SPIIP串行外围设备接口毕业设计.docx》由会员分享,可在线阅读,更多相关《SPIIP串行外围设备接口毕业设计.docx(29页珍藏版)》请在冰点文库上搜索。
SPIIP串行外围设备接口毕业设计
(此文档为word格式,下载后您可任意编辑修改!
)
摘要
SPI是英语SerialPeripheralinterface的缩写,顾名思义就是串行外围设备接口。
SPI是一种高速的、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间。
SPIFlash主要用于代码存储或者其他非易失性存储应用。
本设计目的在于完成一个SPIFlashController的设计,相当于在上层的Driver和Flash器件之间建立起一座连接的桥梁。
控制器接收上层配置的并行数据和控制信号,经过控制器处理之后以串行的方式发送至Flash器件以完成对Flash的相应的读写等操作。
本设计采用VerilogHDL语言,在Vi编辑器中完成设计,并用EDAtool对设计进行了编译、模拟、仿真和调试。
最后又在FPGA上对结果进行了实践证明。
完成上述全部工作之后,再从功能、面积优化和成本缩减等方面对设计进行分析总结本次毕业设计中获得的宝贵经验。
关键词:
闪存VerilogHDL串行并行FPGA
ABSTRACT
SPI(SerialPeripheralinterface)isaserialperipheryslaveinterface.SPIisafast,duplexandsynchronismcommunicationbus.Andthereareonly4pinsonthechipofSPI.ItissoconvenientforwirelayingsofPCB.SPIFlashisidealforcodedownloadaswellasstoringnonvolatilevoice,textanddata.
Inthisdesign,Itheparalleldatawillbeprocessed,andtransmittedtotheflashbySPIinterfaceasserialsignalinordertoexecutethereadorwriteoperationtotheflash.TheprogramactualizesinVerilogHDL,designedinVIunderlinux.EDAtoolsareusedtosimulate,synthesizeanddebugsuchasDebussy.Afterthedesign’sRTLcodeandsimulation,thisdesignmadeupasystemwithotherIPonaFPGAplatforminordertocheckthedesign.Afteralltheworkabovefinished,thispaperanalyzethefunction,areaandcostoftheSPIflashcontroller,summarizetheexperienceofthegraduationdesign.
Keywords:
FlashVerilogSERIALCOLLATERALFPGA
毕业设计(论文)原创性声明和使用授权说明
原创性声明
使用授权说明
第一章引言6
第二章SPIFlashController简介9
2.1SPI简介9
2.2SPIFlash简介11
第三章SPIFlashController设计环境13
3.1VerilogHDL语言简介13
3.2Linux系统下的设计开发环境简介14
3.3数字电路设计方法15
3.4VerilogHDL的设计流程15
3.5编译、模拟仿真EDAtool简介10
3.6ISE软件简介10
3.7XilinxSpartan-3系列器件介绍11
3.8HEregisterBUS协议简介12
第四章SPIFlashController设计与实现13
4.1SPIFlashController的设计流程13
4.2设计规格14
4.2.1设计要求14
4.2.2IO端口14
4.3功能模块划分16
4.4功能模块设计17
4.4.1HEregister总线接口17
4.4.2发送顺序控制逻辑18
4.4.3串并转换控制逻辑21
4.4.4并串转换控制逻辑22
4.4.5数据状态信息选择逻辑23
4.4.6分频模块32
4.4.7片选逻辑模块错误!
未定义书签。
4.4.8中断信号产生模块错误!
未定义书签。
第五章SPIFlashController测试与验证错误!
未定义书签。
5.1测试环境错误!
未定义书签。
5.2测试文件架构错误!
未定义书签。
5.3测试功能点错误!
未定义书签。
5.4测试流程错误!
未定义书签。
5.5FPGA验证错误!
未定义书签。
5.5.1C_CODE的仿真错误!
未定义书签。
5.5.2FPGA硬件测试错误!
未定义书签。
5.6验证结果错误!
未定义书签。
第六章总结35
致谢37
参考文献39
第一章引言
SPI是英语SerialPeripheralInterface的缩写,就是串行外围设备接口。
SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI是一种高速的、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
Flash是一种具有电可擦除的可编程ROM,可以分为两大类:
并行Flash和串行Flash。
并行Flash存储量大,速度快;而串行Flash存储量相对较小,但体积小,连线简单,可减小电路面积,节约成本,二者各有其优缺点,可依据实际需要选取。
随着并行总线的数据传输率越来越高,传统的并行接口逐渐暴露出一些设计上的缺陷,比如并行线路的信号干扰问题,而串行技术采有极少的数据线,虽然传输速率受到限制,但在传输数据时几乎不会因为受到干扰而出错。
SPIFlash就是这样一种采用串行接口的Flash存储器件。
本课题通过对最基本的Flash器件和SPI总线协议的研究和实现,设计了SPIFlashController,以此来熟悉IP核的设计和验证。
第二章SPIFlashController简介
SPIFlashController即为串行外设接口flash存储器控制器。
SPIFlash以其优良的特性已被广泛应用于很多设计之中。
本课题设计开发一款SPIFlash控制器。
2.1SPI简介
SPI—SerialPeripheralInterface(串行外围设备接口)是Motorola首先在其MC68HCXX系列处理器上定义的,正因为引言中所述的诸多优点,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200.
图2.1基本的SPI接口
SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。
外围设置FLASHRAM、网络控制器、LCD显示驱动器、AD转换器和MCU等。
SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,SPI接口一般使用4条线:
串行时钟线(SCK)、主机输入从机输出数据线MISO、主机输出从机输入数据线MOST和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出从机输入数据线MOSI)。
SPI的通信原理很简单,它以主从方式工作。
这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时或者使用双工IOPIN)。
所有基于SPI的设备共有的PIN脚,它们是SDI(数据输入),SDO(数据输出),SCLK(时钟),CS(片选)。
(1)SDO–主设备数据输出,从设备数据输入
(2)SDI–主设备数据输入,从设备数据输出
(3)SCLK–时钟信号,由主设备产生
(4)CS–从设备使能信号,由主设备控制
其中CS是控制芯片是否工作,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效,否则会被忽略。
这就允许在同一主机上连接多个SPI设备。
其余的3根线是负责通信的。
通讯是通过数据交换完成的,SPI是串行通讯协议,也就是说数据是一位一位的传输的。
这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI、SDO则基于此脉冲完成数据传输。
数据输出通过SDO线,数据在时钟下降沿时改变,在紧接着的上升沿被读取。
完成一位数据传输,输入也使用同样原理。
这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。
要注意的是,SCLK信号线只由主设备控制,从设备不能控制信号线。
同样,在一个基于SPI的设备中,至少有一个主控设备。
这样的传输方式有一个优点:
与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时从设备不采集或传送数据。
也就是说主设备通过对SCLK时钟线的控制可以完成对通讯的控制。
SPI还是一个数据交换协议:
因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。
不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义。
应该注意的是SPI主模块和与之通信的外设备时钟相位和极性应该一致。
这句话有2层意思:
其一,主设备SPI时钟和极性的配置应该由外设来决定;其二,二者的配置应该保持一致,即主设备的SDO同从设备的SDO配置一致,主设备的SDI同从设备的SDI配置一致。
因为主从设备是在SCLK的控制下同时发送和接收数据,并通过2个双向移位寄存器来交换数据在点对点的通信中。
SPI接口不需要进行寻址操作且为全双工通信,显得简单高效。
在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
最后,SPI接口的一个缺点:
没有指定的流控制,没有应答机制确认是否接收到数据。
2.2SPIFlash简介
本次所设计控制器针对的是华邦公司的W25X20(2Mbit)、W25X40(4M-bit)、W25X80(8M-bit)系列,该系列为只有有限的空间、pin的串行存储器。
W25X204080的SPI接口主要由4个引脚构成:
SL_SPI_CLK、SPI_DO、SL_SPI_DI及SPI_CS_B,其中SL_SPI_CLK是整个SPI总线的公用时钟,SPI_DO、SL_SPI_DI作为主机,从机的输入输出的标志。
SPI_DO是主机的输出,从机的输入,SL_SPI_DI是主机的输入,从机的输出。
SPI_CS_B是从机的标志管脚,在互相通信的两个SPI总线的器件,SPI_CS_B管脚的电平低的是从机,相反SPI_CS_B管脚的电平高的是主机。
在一个SPI通信系统中必须有主机。
SPI总线可以配置成单主单从,单主多从,互为主从。
第三章SPIFlashController设计环境
3.1VerilogHDL语言简介
VerilogHDL是在1983年由GatewayDesignAutomation(GDA)公司的PhilMoorby首创的。
1989年CadenceDesignSystems公司收购了GDA公司,并于1990年公开VerilogHDL语言,极大地推动了VerilogHDL的发展。
基于VerilogHDL的优越性IEEE于1995年制定了VerilogHDL的IEEE标准,即VerilogHDL1364-1995。
VerilogHDL具有以下特点:
能形式化地抽象表示电路的结构和行为;借用高级语言的结构和语句(如循环语言,赋值语言等),简化了电路行为的描述;能在多个层次上对所设计的电路进行描述;内置了基本的逻辑门,更接近开关级电路;可以使用用户自定义原语UDP,使得设计更加灵活,等等。
与VHDL语言相比,VerilogHDL和VHDL作为描述硬件电路设计的语言,其共同的特点在于:
能形式化地抽象电路的行为和结构,支持逻辑设计中层次与范围的描述,可借用高级语言的精巧结构来简化电路行为的描述,具有电路仿真与验证机制以保证设计的正确性,支持电路描述由高层到底层的综合转换,硬件描述与实现工艺无关(有关工艺参数可通过语言提供的属性包括进去),易于理解和设计重用。
但是VerilogHDL和VHDL又各有其自己的特点。
与VHDL相比VerilogHDL最大的特点在于它是一种非常容易掌握的硬件描述语言,而且和C语言有许多相似之处,并继承和借鉴了C语言的多种操作符和语法结构,而且VerilogHDL在开关级电路的建模能力比VHDL要强。
而与VerilogHDL相比,VHDL则显得严谨的多,比较抽象,所以掌握起来比较困难,还有VHDL在系统级建模方面要比VerilogHDL强一些。
这两种语言各有其特点,而且都在不断完善。
2001年公布的VerilogIEEE1364—2001标准,使得Verilog语言在综合和仿真性能方面有了大幅度的提高。
学习掌握VerilogHDL建模、仿真和综合技术不仅可以对数字电路设计技术有更进一步的了解,而且为以后学习高级的行为综合和物理综合打下坚实的基础。
3.2Linux系统下的设计开发环境简介
Linux以它的高效性和灵活性著称。
它能够在PC计算机上实现全部的Unix特性,具有多任务、多用户的能力。
Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。
Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。
它还包括带有多个窗口管理器的X-Window图形用户界面,如同我们使用WindowsNT一样,允许我们使用窗口、图标和菜单对系统进行操作。
VI编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。
由于不需要图形界面,使它成了效率很高的文本编辑器。
尽管在Linux上也有很多图形界面的编辑器可用,但VI在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
VI编辑器是Visualinterface的简称,通常称之为VI。
它在Linux上的地位就像Edit程序在DOS上一样。
它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
VI编辑器并不是一个排版程序,它不像Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。
没有菜单,只有命令而且命令繁多。
Vi有3种基本工作模式:
命令行模式、文本输入模式和末行模式。
VIM是VI的加强版,比vi更容易使用。
vi的命令几乎全部都可以在vim上使用。
要在Linux下编写文本或语言程序,您首先必须选择一种文本编辑器。
可以选择使用vim编辑器,使用它的好处是几乎每一个版本的Linux都会有它的存在。
然而它是在文本模式下使用,需要记忆一些基本的命令操作方式。
3.3数字电路设计方法
数字电路设计中主要有两种基本的设计方法:
自底向上和自顶向下设计方法。
在自顶向下的设计方法中,我们首先定义顶层模块,然后分析实现顶层模块功能需要那些必要的子模块,然后按照相同的方法对子模块进行分解,知道无法进一步细分的最底层模块为止。
在自底向上的设计方法中,我们首先对现有的功能模块进行分析,然后利用这些模块去搭建较大的功能模块,如此继续直至顶层的功能模块。
在实际的设计中,通常是两种方法混合使用的。
设计者首先根据电路体系接口定义顶层模块。
逻辑设计者确定如何根据功能将整个设计划分为子模块;同时,电路设计者对底层功能快进行优化设计,并进一步使用这些底层模块来搭建其高层模块。
两者的工作按相反的方向独立的进行,直至在某一中间点会合。
这是,电路设计者已经使用开关级原语创建了一个底层功能块库,而逻辑设计设也通过使用自顶向下的方法将整个设计分解为由库单元构成的结构描述。
3.4VerilogHDL的设计流程
在用VerilogHDL进行硬件设计的过程中,开发人员通常是将设计分层三个层次进行设计。
第一层次是行为描述。
就是用数学模型对整个系统进行的描述。
一般来说,对系统进行行为描述的目的是为了在系统设计的初始阶段,通过对系统行为的仿真来发现设计中存在的问题。
在行为描述阶段并不真正考虑实际的算法和操作用什么方法来实现,注意力主要集中在系统的结构和工作过程能否达到设计要求方面。
在进行完行为描述之后,通常要把它转换为RTL级的描述,因为现有的EDA工具只能接受RTL级描述的HDL文件进行自动逻辑综合。
第二层次是RTL方式描述,又称为寄存器传输描述。
用行为方式描述系统结构的程序抽象程度很高,很难直接映射到具体逻辑元件的实现。
要想得到硬件的具体实现,必须将行为方式的VerilogHDL程序改为RTL方式的程序。
在编写完RTL方式的程序之后,就可以利用仿真工具对程序进行仿真了。
如果仿真通过,就可以利用逻辑综合工具进行综合了。
第三层次是逻辑综合。
在这一阶段主要是利用逻辑综合工具,将RTL级的程序转换成用基本逻辑元件表示的文件(门级网表),并且综合结果也可以以原理图的方式输出。
得到网表之后,还需要进行门级仿真和定时检查。
其设计过程如图3.1所示:
图3.1VerilogHDL设计流程
3.5编译、模拟仿真EDAtool简介
Debussy是NOVASSoftwareInc(思源科技)发展的HDLDebug&Analysistool,这套软体主要不是用来跑仿真或看波形,它最强大的功能是:
能够在HDLsourcecode、schematicdiagram、waveform、statebubblediagram之间,即时做trace,协助工程师debug。
在本次设计中使用的是经过公司自己修改过的版本(verdi)
3.6ISE软件简介
Xilinx公司的ISE软件是一套用以开发Xilinx公司的FPGA&CPLD的集成开发软件,它提供了一个从设计输入到综合、布线、仿真、下载的全套解决方案,并很方便的同其它EDA工具接口。
原理图输入用的是第三方软件ECS,HDL综合可以使用Xilinx公司开发的XST、Synopsys的FPGAExpress和Synplicity公司的SynplifySynplifyPro,测试台输入是图形化的HDLBencher,状态图输入用的是StateCAD,前、后仿真则可以使用ModelsimXE(XilinxEdition)或ModelsimSE。
除了上述软件以外,也可以使用其它公司的相关EDA软件产品。
具体利用ISE进行FPGA测试的过程包括:
环境设置,新建工程,添加源文件,编写测试文件,前仿真,综合,布线,后仿真,配置管脚和下载测试。
这里前仿真主要针对电路的语法和逻辑错误,仿真属于行为级的仿真。
而后仿真是在完成布局和布线、时序分析完成生成时序网表以后,根据器件中门,或者布线的延时,将时序网表与功能网表一起进行的仿真。
3.7XilinxSpartan-3系列器件介绍
Spartan-3系列器件采用Xilinx最成功的Virtex-ⅡFPGA器件构架,并利用90nm和12英寸晶圆工艺生产,芯片大小比0.13μm工艺的产品缩小了80%。
为了优化结构,降低成本,Xilinx对Spartan-3系列器件的内部结构做了部分简化,器件的晶元大小比0.13μm工艺缩小了50%。
这就使得新产品的成品价格比其他厂商的器件降低了80%,Spartan-3的性价比大幅度提高。
为了能够提供更多的IO引脚,Spartan-3采用错位的双排IO引脚结构。
该系列产品可提供5万至500万的系统逻辑门,从3.50美元起价,完全满足顾客对低成本解决方案的要求,并把价格降低到可以和ASIC、ASSP和微控制器相抗衡的水平。
器件主要由可配置逻辑块(CLB)、输入输出模块(IOB)、基于矢量的内部互连结构、数字延迟锁相环(DLL)、先进的多级存储器结构组成。
Spartan-3系列器件还提供四个功能强大的数字化时钟管理器(DCM),由基本的数字延迟锁相环(DLL)构成,具有完善的频率合成、相移、时钟偏移消除等功能。
另外,Spartan-3还提供丰富的嵌入式DSP功能,可保证每秒执行3300亿次乘累加(MAC)运算的高性能DSP应用。
在块存储器方面,Spartan-3可提供多达1872Kb的块存储器,及多达520Kb的分布式存储器,这些存储器都具有完全的双口功能。
据权威统计,到目前为止,Xilinx的Spartan-3系列FPGA是工艺最先进、价格最低、单位成本最有效、IO管脚最多的平台级可编程逻辑器件,能够满足大部分的芯片设计验证的需要。
设计验证采用Spartan-3系列的XC3S5000FPGA器件,内部时钟频率达326MHz,可提供74880个逻辑单元,500万个系统门。
XC3S5000支持17种单端接口标准和6种差分接口标准,输出信号的逻辑摆幅可达1.14V和3.45V,每个IO口支持622Mbs的数据传输率。
104个18位×18位乘法器,104个18Kb块存储器,这些使得在一般的集成电路设计验证中,XC3S5000能够完全胜任。
3.8HEregisterBUS协议简介
该BUS协议共有7类信号线,包括片选信号R_RGST_SEL(位宽为1)、读信号R_RGST_RE(位宽为1)、写信号R_RGST_WE(位宽为1)、地址信号R_RGST_ADR(位宽为5)、写入数据信号R_RGST_BUS(位宽为32)、读出数据信号SL_RGST_BUS(位宽为32)、反馈信号SL_RGST_ACK(位宽为1)。
该协议的主要内容包括:
1.读信号或写信号、地址信号和片选信号必须同时有效;
2.当对寄存器进行写入操作时,在检测到反馈信号有效之前,写信号、地址信号、片选信号和写入数据信号必须一直保持有效状态;
3.当对寄存器进行读操作是,在检测到反馈信号有效之前,读信号、地址信号和片选信号必须一直保持有效状态,而且只有当反馈信号有效时,才能采集读出数据信号线上的值;
4.读信号和写信号只能在片选信号有效时才会有效,而且读信号和写信号不能同时有效。
第四章SPIFlashController设计与实现
数字电路设计中经常需要使用大容量存储器,串行Flash体积小、占用系统资源少、连线简单,已被应用于数字设计的很多方面。
本设计使用VerilogHDL编写了一个针对WinbondW25X204080系列Flash的控制器,整个设计紧凑、稳定且可靠。
4.1SPIFlashController的设计流程
设计流程如图4.1所示:
图4.1SPI的设计流程
编写设计代码的前提,是搞清楚所要设计的IP,要完成什么样的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SPIIP 串行 外围设备 接口 毕业设计