- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于APB总线SPI控制器设计
基于APB总线SPI控制器设计【摘要】随着以IP核复用为基础的SoC设计技术的发展,SoC的规模不断扩大,片上各个模块之间的通信问题越来越突出。本文描述了一个可用于传感器网络核心芯片中的SPI接口模块的设计。该设计可灵活配置为主从机模式,同时配置主机时可以支持对基带控制器的操作;最后,通过详细的功能验证表明,该设计能满足SPI通信协议,性能可靠。
【关键词】基带;SPI;接口模块;IP
1.引言
随着以IP核复用为基础的SoC设计技术的发展以及对SoC设计越来越高的功能要求,SoC的规模不断扩大,集成的IP模块不断增多,使得片上各个模块之间的通信问题越来越突出,许多通信协议出现了[1]。然而,随着处理器需要的外设越来越多,这时串行总线相比于并行总线用的接口线数较少的优点就逐渐显现出来了。当我们需要在集成模块,比如微控制器和一些低速外设之间通信时,是没有必要用过于复杂的协议的[2];此时,SPI(Serial Peripheral Interface,串行外围设备)将是很好的选择。它具有电路结构简单(只有四根接口线),通信可靠等优点,比较适合在集成模块和片上外设以中低速传输数据的。实现SPI协议的IP核已经成为业界的设计热点之一[3-7]。本文中,我们将介绍一种可灵活配置为主从机模式,并在配置主机时可以支持对基带控制器的操作的SPI接口的设计。
2.SPI协议分析(SPI工作原理)
SPI有两种工作模式[8]:主模式和从模式;工作在主模式的为Master,工作在从模式的为Slave。SPI接口信号在两种工作模式下的作用是不一样的。
只有Master可以发起数据传输。可以通过对Master的数据寄存器执行写操作启动数据传输。数据传输过程中,串行时钟SCLK同步MOSI和MISO数据线的发送和采样。为了和外设进行数据交换,根据外设要求,其输出串行时钟极性(CPOL)和相位(CPHA)可以进行配置;当然,相连的Master和Slave的时钟极性和相位必须保持一致。其中,时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。其传输时序分别如图1和图2所示(以传输8bit数据为例)。
在具体应用中,要想完成一次操作,比如读基带控制器,一次需要传输多个比特的数据,包括读写命令、地址、数据等,具体内容与从设备有关。在读写基带寄存器时,在开始每次操作之前将来自APB总线的信号进行组帧。采用加一个头字节的方式,其中,bit[7]代表读写操作,bit[0]~bit[3]为读写地址,依次从MOSI串行输出。若为写操作,则后面紧接着将要写的数据。如写基带控制器的时序如下图3所示,此时CPOL=1b0,CPHA=1b0。
相应的Slave将采样Master的MOSI结果分别写入读写指示、地址线、输入数据对应的寄存器;并将寄存器中的数据置入发送移位寄存器通过其MISO输出。
3.SPI接口模块的设计
像很多IP模块的设计一样,我们采用先定义了关键特性和规范,明确设计目标;将目标分解为各个子模块分别实现并集成的自顶而下的方法,之后进行了全面地功能仿真。
3.1 接口模块顶层设计
由我们设计的SPI Controller是一个基于AMBA的APB总线的外设类接口模块,Master Host通过APB总线对模块进行操作;同时另一端通过SPI总线与外部设备相连。根据功能定义和SPI工作原理,可以得出SPI接口模块结构框图如图4所示。
SPI接口模块上除了四个中断信号外,还需要14个I/O端口,主要由APB总线信号和SPI总线信号组成。其中,APB信号是主从模式通用的,对于APB总线信号定义,详见参考文献[9]。对于SPI信号而言,为了满足SPI可配置不同工作模式的需要,在模块内部,需要设计比SPI协议要求更多的接口信号。其中,txd在主模式时,相当于MOSI,从模式时相当于MISO;rxd在主模式时相当于MOSI,从模式时相当于MISO。
3.2 主模式设计实现
本接口模块支持可编程的数据帧格式(数据宽度为4/8/16/32 bit),还支持可编程四种传输模式:读写基带寄存器,发送又接收,只发送,只接收。现将各个组成模块介绍如下:
APB Slave主要负责地址译码,实现接口模块与ARM的APB总线相连接。通过该模块,ARM可以对相应控制寄存器以及Data FIFO严格按照APB总线协议进行读写,从而实现对本模块和外设的控制。
寄存器模块(Registers)则包含各控制寄存器,状态寄存器。在模块使能(spe=1)后,模块才可以开始正常工作。分频逻辑用于在主机模式时通过一个逻辑分频变量实现对pclk信号的分频控制。该分频变量在内部减法计数器为零且
原创力文档


文档评论(0)