您所在位置: 网站首页 / 基于FPGA的SPI接口设计.doc / 文档详情
基于FPGA的SPI接口设计.doc 立即下载
2024-12-16
约4.2千字
约8页
0
72KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

基于FPGA的SPI接口设计.doc

基于FPGA的SPI接口设计.doc

预览

免费试读已结束,剩余 3 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

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
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

基于FPGA的SPI接口设计

文档大小:72KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用