




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
基于FPGA的SPI接口设计 SPI是一种在FPGA和其他芯片之间传输数据的简单有效的接口方式。 SPI项目 第一部分:什么是SPI 第二部分:SPI的简单实现 第三部分:应用 第一部分:什么是SPI SPI是允许一个器件同其他一个或多个器件进行通讯的简单接口。 SPI是什么样的? 首先让我们来看看两个芯片之间的SPI接口是如何连接的。 在两个芯片时间通讯时,SPI需要4条连线。 正如你所看到的,他们是SCK、MISO、MOSI以及SSEL。其中一个芯片叫做主控芯片,另一个叫从芯片。 SPI基础 基本特点: 1.同步 2.串行 3.全双工 4.非即插即用 5.一主多从 更多细节: 1.同步时钟有主控芯片产生,每个时钟传输一位数据 2.数据在传输前,首先许要进行并转串,才能用一条线传输 3.两条数据线,一条输入、一条输出 4.主从双方有关于SPI传输的先验知识,如比特顺序、数据长度等 5.数据传输有主控芯片发起,每次只与一个从芯片通讯 SPI是一种同步全双工的通讯接口,每个时钟在两条数据线上各传输一比特数据。 简单的传输 假设在主从芯片之间进行的是8位长度的,高位数据在前的SPI传输,则单个字节的传输在波形上看起来是这样的。 MOSI是主输出线,而MISO则是从输出线。由于SPI是全双工的,所以在时钟沿上两条线同时传输数据。MOSI将数据从主控芯片传输至从芯片,MISO则将从芯片的数据传输到主控芯片。 详细的说是这样的: 1,首先主控芯片使能相应的SSEL信号,通知相应的从芯片数据传输要开始了; 2,主控芯片产生8个SPI时钟周期,并将数据在每个时钟沿发送出去,同时从芯片在也每个时钟沿将数据发送到MISO线上。 3,主控芯片撤销SSEL信号,一次SPI传输结束 多个从芯片的情况 通过扩展SSEL信号,一个主控芯片可以和多个从芯片进行SPI通讯。下图是有三个从芯片的情况: 主控芯片有3条SSEL线,每次只使能条,和其中一个从芯片进行SPI通讯。由于所有芯片的MISO都连接在一起,所以不允许同时有多个从芯片驱动MISO线。 SPI有多快 SPI可以很轻易的做到几Mbps的传输速率,这就意味着SPI可以用来进行非压缩的音频和和压缩的视频信号传输。 相关链接:HYPERLINK"http://blog.xdnice.com/link.php?url=http://en.wikipedia.org%2Fwiki%2FSerial_Peripheral_Interface_Bus"Wikipedia的SPI接口总线 第二部分 SPI接口的FPGA简单实现 ARM处理器 为了检验我们刚学得的关于SPI的知识,我们使用一个带有SPI接口的ARM7板和FPGA板,板间由SPI总线连接。 ARM处理器作为主控器,FPGA作为SPI从机。下图为他们之间的连接方式。 SPI主控机-C语言程序 使用ARM的SPI接口,只需要初始化一些寄存器,然后对SPI接口进行写数和读数操作即可让SPI接口自动完成发送和接收数据。 voidmain(void) { //初始化SPI接口,因处理器而异 SSP0CPSR=0x02; SSP0CR0=0x07; SSP0CR1=0x02; PINSEL1=0x2A8; while(1) { //发送两个字节 SSP0DR=0x55;SSP0DR=0x54; //等待数据发送完毕 while(!(SSP0SR&0x01)); //读数 intdata1=SSP0DR; intdata2=SSP0DR; //... } } SPI从机-HDL代码 再来考虑FPGA端SPI从机的设计。 SincetheSPIbusistypicallymuchslowerthantheFPGAoperatingclockspeed,wechoosetoover-sampletheSPIbususingtheFPGAclock.Thatmakestheslavecodeslightlymorecomplicated,buthastheadvantageofhavingtheSPIlogicrunintheFPGAclockdomain,whichwillmakethingseasierafterwards. Firstthemoduledeclaration. moduleSPI_slave(clk,SCK,MOSI,MISO,SSEL,LED); inputclk; inputSCK,SSEL,MOSI; outputMISO; outputLED; Notethatwehave"clk"(theFPGAclock)andanLEDoutput...anicelittledebugtool."clk"needstobefast

王子****青蛙
实名认证
内容提供者


最近下载