spi主从机通信spi misoo mosi clk 连接具体怎么实现的啊?

5749人阅读
SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。由于SPI系统总线一共只需3~4位数据线和控制即可实现与具有SPI总线接口功能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、8~16位地址线、2~3位控制线,因此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。由此可见,在MCS51系列等不具有SPI接口的单片机组成的智能仪器和工业测控系统中,当传输速度要求不是太高时,使用SPI总线可以增加应用系统接口器件的种类,提高应用系统的性能。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:31154次
排名:千里之外
转载:29篇
(1)(1)(1)(2)(1)(5)(4)(3)(1)(2)(3)(7)(2) 上传我的文档
 下载
 收藏
9岁女童开车
9岁女 开车
 下载此文档
正在努力加载中...
spi半双工主从通信
下载积分:999
内容提示:spi半双工主从通信
文档格式:DOC|
浏览次数:40|
上传日期: 01:50:10|
文档星级:
该用户还上传了这些文档
spi半双工主从通信
官方公共微信论文发表、论文指导
周一至周五
9:00&22:00
基于MCU IP核的接口ASIC设计及实现
2011年第10期目录
&&&&&&本期共收录文章19篇
  摘要:本文介绍了SPI接口的工作原理, 详细阐述了该接口工作于主机、从机时各种工作方式下的设计要点、设计思路以及验证过程和结果。用Verilog HDL的可综合语法实现SPI功能描述,用Modelsim进行功能仿真来保证符合设计要求。将SPI模块嵌入到单片机(MCU)中并下载到Xilinx公司的FPGA板 VIRTEX-II PRO系列的xc2vp30-ff89上,利用外围电路与具有SPI接口的PIC单片机、STC单片机与FLASH存储器进行各种模式下的通信测试。硬件验证结果表明所设计MCU的SPI接口虽然在具体实现方式上与其他器件可能有所差异,但是完全符合SPI协议。另外,本文介绍了基于MCU的SOC系统采用基于标准单元的方法进行ASIC设计的流程和结果以及用Design compiler单独对SPI模块综合的结果。 中国论文网 /8/view-51632.htm  关键词:SPI接口;单片机;SOC      ASIC design and implementation of SPI interface of MCU      SU Wei-lu,SHI Long-zhao   (Institute of Physics and Information Engineering, Fuzhou University, Fuzhou,Fujian,350108,China)      Abstract: This paper firstly introduces the basic principle of SPI interface of MCU , then presents the design difficulties, design idea and the process and results of verification of it in detail. Hardware description language verilog was used to describe SPI interface of MCU using the synthesizable syntax part and modelsim was used as the function simulation tool to ensure SPI interface designed meet the requirement. And it communicates with PIC microcontrollers, STC microcontrollers and flash memory chips all of which have SPI interface by downloading the whole MCU system with SPI interface into Xilinx’s FPGA device xc2vp30-ff89 of VIRTEX-II PRO series and using peripheral circuits. Hardware verification shown that the SPI interface of MCU IP core we design is in accordance with SPI protocol, although maybe it is different from others SPI devices in the concrete implementations of them. In addition, the paper presents the ASIC design flow and results of soc system based on MCU using method of standard cells and the synthesis results of SPI module using Design compiler.   Key words: Serial Peripheral I MCU;SOC      1 引言       串行外设接口 (Serial Peripheral Interface)总线是一种同步串行外设的接口总线,它可以使MCU 与各种外围设备以串行方式进行通信。最初SPI 接口总线是由 Motorola在其MC68HCXX系列处理器上定义的,现在已广泛应用于EEPROM、FLASH、实时时钟、A/D转换器,还有数字信号处理器和数字信号解码器之间。    SPI 是一种高速的、全双工的同步通信总线,使用四根线通信,节约了芯片的管脚,同时节省了PCB 的布局空间。正是出于这种简单易用的特点,现在越来越多的芯片集成了SPI通信协议。SPI 通信双方为主、从关系,在这种工作模式下,通常有一个主设备和一个或多个从设备,设备之间可以用4线模式(双向传输时)或3 线模式(单向传输时)连接。在4线模式下,4线定义为MOSI(主机输出从机输入),MISO(主机输入从机输出),SPICLK(传输时钟),SS(片选信号);在3线模式下,MISO 和MOSI可合并为一根或者SS引脚空置[1][2][3]。      2 SPI工作原理       对于特定功能芯片,一般SPI接口都只有主或从工作方式,而作为MCU的接口,则必须同时拥有主、从工作方式。SPI的工作方式由其内部寄存器控制。       2.1寄存器的功能说明    SPI接口共有三个寄存器:控制寄存器、状态寄存器和数据寄存器。    SPI控制寄存器的各位定义如表1所示[4][5][6]。CPOL和CPHA用来决定发送、接收数据的时钟沿,与SSIG位、MSTER位组合,可以形成主机、从机各6种不同的工作模式。在SSIG=1时,CPHA不为1。当CPOL和CPHA的异或逻辑值为1时,主从机在每个SPICLK的上升沿发送数据、下降沿接收数据;反之,主从机在每个SPICLK的下降沿发送、上升沿被接收。在CPHA=O时,由SS的下降沿启动数据的第一次发送。    以{SSIG、CPOL、CHHA}三位值等于000为例,说明SPI接口主从机的通信过程。主机在置SS为低电平的同时,也启动了一帧数据的发送/接收过程,如图1所示,主机在SS的下降沿发送第一位数据之后,在每个SPICLK下降沿发送余下的数据(见MOSI数据线),在上升沿接收数据(见MISO数据线);从机在SS引脚被拉低,MSTER位被清零之后,也启动了一帧数据的发送与接收过程,从MISO引脚发送第一位数据,之后也是在每个SPICLK下降沿发送余下的数据(见MISO数据线),在上升沿接收数据(见MOSI数据线)。从中可以看出,主机处于主动的位置,SPICLK与SS由主机自己产生,而从机处于被动位置,在主机的SPICLK与SS信号的控制下发送与接收数据[7][8][9]。    SPI通信双方工作模式必须相同,主机和从机的移位寄存器可以看成两个循环移位寄存器。当数据从主机的输出移位寄存器移位发送到从机的输入寄存器的同时,主机的输入寄存器也同时接收从机输出寄存器发送过来的数据。这意味着在一个移位周期中,主机和从机的数据互相交换。引脚连接关系如图2和图3所示。
   SPI的状态寄存器只在高两位定义了SPI传输完成标志SPIF与SPI写冲突标志WCOL。SPI每交换完一次数据置SPIF=1。在发送过程中对数据寄存器进行写操作时,写冲突标志将置1,在这种情况下,当前数据发送完后可继续发送刚写入的数据。如在WCOL=1时再写入数据,则新写入的数据将覆盖前一个数据。       2.2 SPI的工作模式    SPI接口有三种工作模式:单主单从模式、互为主从模式与单主多从模式。    单主单从模式下,SSIG可为1也可为0。在这种模式下, SSIG=0时主机用SS来选择要交换数据的从机。互为主从模式如图2所示,这种模式只能工作于SSIG=0的情况,没有通信时,两个器件都配置为主机,SS被配置为输入模式。当其中一个器件启动传输时,SPI自动将SS配置为输出并驱动输出低电平,强制另一个SPI器件变为从机。单主多从模式如图3所示。在这种模式下,主机只能有一个,而从机可以有一个或多个,主机可以用任何引脚来驱动从机的SS引脚,SS用于选择从机,通过控制从机SS引脚可从多个从机中选择一个从机并与之通信。      3 基于单片机IP核的SPI设计       3.1 SPI的内部结构设计    本设计作为MCU接口之一,其结构如图4所示。SPI接口对外与管脚P1.4、 P1.5、 P1.6、 P1.7复用,对内使用内部寄存器总线,通过读写寄存器的方式实现数据交换。SPI模块按功能可分为时钟模块、传输模块以及SPI与单片机IP核的接口模块。    时钟模块产生作为主机时在不同模式下的SPICLK、SS信号。根据SPR1、SPR0、CPOL和CPHA来产生不同频率和相位的SPICLK。    传输模块由传输控制部分和移位部分组成。传输模块主要完成以下功能:①对异步信号做同步处理。主、从机的SPI数据交换,它们的工作时钟不一样,属于两个不同的时钟域。所以,从机的SPI端口需要对主机发来的SPICLK和SS信号进行同步。②通过采用独特(One-hot)编码的状态机来控制发送、接收过程。    SPI与51单片机IP核的接口模块主要完成对数据寄存器、控制寄存器和状态寄存器的读写功能,其操作通过内部寄存器的数据总线、地址总线、读写总线来实现。       3.2 SPI的传输模块    主机和从机的SPI工作在不同的时钟源,如不进行同步处理,可能会引起亚稳态问题[10]。所以,从机需要对SPICLK和SS信号进行同步处理,而异步时钟域数据的同步技术主要有单点取样、同步结构、跨时钟协议和跨时钟域收敛等。同步装置也有多种形式,主要有2DFF同步、先入先出同步、DMUX 同步、特别数据同步、重值同步等[11]。本设计采用2DFF方式来同步SPICLK和SS信号。    传输模块的状态机如图5所示。A、B、C表示状态的触发条件。将传输过程分成IDLE、SEND和END三个状态。IDLE状态表示空闲或就绪状态,条件A满足时切换到SEND状态。条件A包括:SPI作主机时,写数据寄存器的操作;作从机且CPHA=0时,接收到SS下降沿信号;作从机且CPHA=1时,端口接收到时钟有效沿信号(CPOL=0时为上升沿,CPOL=1时为下降沿)。SEND状态表示数据的发送与接收过程,发送与接收数据是在SS与SPICLK的控制下完成的,如图5所示。END状态表示发送/接收一帧数据已完成,并将接收的数据写入到接收数据寄存器中,同时置SPIF标志位等。条件B为传输完一个字节数据;条件C指SPI模块的上电复位。      4 功能仿真、验证及ASIC实现       系统仿真工具用Mentor公司的Modelsim仿真软件,主、从模式分开仿真,编写的testbench 包含了时钟的产生、控制寄存器的配置、发送/接收数据等。图6给出了从机在CPOL=1、CPHA=0、SSIG=0时,由SS信号启动从机一帧数据的发送与接收过程。从图中可以看出SS信号的下降沿主机启动数据发送(数据值为0XAA),从机也启动了数据的发送过程(数据值为0XAA),之后主机/从机都在每一个SPICLK上升沿发送一位数据,在SPICLK的每一个下降沿接收一位数据,当接收完一帧数据后,产生SPIF信号。各个过程符合SPI协议, 中断的产生和处理也满足设计的要求。    做完Modelsim仿真验证后,需进一步做FPGA的硬件仿真验证。将SPI模块嵌入到8051MCU的IP核中,并用ISE软件综合下载到Xilinx公司的VIRTEX-II PRO系列的xc2vp30-ff896 FPGA板上,利用扩展接口电路与具有SPI接口的PIC单片机、STC单片机和flash存储芯片等进行各种模式下的通信测试与验证。结果表明设计的SPI模块能与这些器件进行正常通信,系统工作频率为100MHz,SPI传输速率为25MHz。    表2为单独的SPI模块用ISE软件并选用VIRTEX-II PRO系列的xc2vp30-ff896器件综合所得到的资源使用情况。    设计应用于数字抄表系统的基于8051MCU的SOC芯片不仅有本文所设计的SPI接口,内部还集成1 kB RAM、32 kB Flash、DC-DC、8路10位ADC 转换器等硬宏单元;除了具有MCU所有功能外,还具备看门狗、DES加密、SPI接口等功能,可工作掉电模式、空闲模式和正常工作模式。系统结构图如图7所示。系统采用VeriSilicon公司的标准单元库、1kB RAM,SMIC 公司的IO库和DC-DC转换器以及8路10位ADC,Chingis公司的32kB Flash和自行设计的看门狗等按照图8流程进行ASIC设计。RTL验证包括软件仿真和硬件验证。利用Modelsim 、LEDA 工具和IP CORE 仿真模型进行代码的仿真和验证。在进行数字部分的FPGA硬件验证时,用E2RPOM器件代替IP存储核。根据设计的需求、实际中IP核的时序要求和对不确定的时序进行估算来进行时序约束,采用Design compiler、DFT compiler对Verilog语言描述的 RTL进行可测性综合得到可测试综合网表。用Formality 进行形式验证以及 PT(Prime Time)进行时序约束分析来保证综合出来的网表符合要求。    由于除了一些硬IP核在RTL级是用空模块来表示和基于MCU的SOC芯片门数差不多为几万门左右,所以综合时间相对不会很长,在用DC(Design Compiler)综合时采用Top-down 流程来得到相对更优化的结果。用DFT Compiler进行可测试设计时,采取共用Pad的方法来减少可测试设计引起管脚增加的数目。由于SOC芯片的端口都是双向口和有多个模块共用一些端口。被选用于可测试性设计的端口只能是单方向的。为了实现这个目的,我们可以借助于DFT Compiler工具命令或者直接修改RTL代码的方式来配置双向端口为单向端口。    为了较少不控制逻辑降低测试覆盖率,通过set_dft_configuration 和 set_autofix_confi-guration的相关命令来修复与复位信号、时钟相关的不可控制逻辑。对门控时钟和复位信号采用MUX来旁路不可控制逻辑。用TetraMAX工具生成测试向量并通过Modelsim 进行仿真确保测试向量的正确性。最终得到6条均衡的扫描链,每条扫描链为483门或者482门,Test coverage 为99.43%。在RTL代码和DC综合完的逻辑网表中IP硬盒都是空模块来表示。用Formality对可测试网表和RTL进行形式验证时,在执行设置时用以下命令:set_case_analysis 0 [get_ports test_mode];set_case_analysis 0 [get_ports scan_en]使综合网表工作在正常模式。形式验证结果如图9所示。
   DC综合时是用非线性模型来计算单元的延迟,用线负载模型来计算连线的延迟。用线负载模型计算连线的长度和延迟,并不考虑连线以及其相连接的单元在版图中的位置;综合时是将时钟网络和复位网络设为理想情况;后端也可以通过插入延迟单元来解决保持时间的问题[12]。因此,前端综合后没有必要进行保持时间的时序分析。故综合时采用Worst timing model得到综合结果进行用PT进行正常模式和测试模式下的建立时间分析,得到的最小建立时间为0.26ns。得到满足时序约束和可测试覆率要求的可测试综合网表后,开始后端物理设计,具体参考文献[13]。采用Cadence的AMS软件进行数模混合后仿真。通过了后仿真的MCU SOC系统可达到如下参数:工作频率40MHz,芯片面积 5.0141mm2,功耗43.12mW,最大电压降65.262mV,最大地电压反弹值59.735 mV,电迁移和串扰均低于规定的阈值 [13]。    利用Synopsys的Design Compiler单独对SPI接口模块进行合理约束并综合。最终综合时序优化后的面积为。结果表明单独SPI接口模块工作频率可达到100MHz。综合完后report_timi-ng -max_paths 10命令查看关键路径,关键路径都为纯组合路径。所以,SPI接口模块的工作频率一定程度上取决于这些关键路径。这说明所设计的SPI接口可以用于更高时钟频率的SOC芯片系统中。      5 结论       本文阐述了SPI主机、从机在各种工作模式下的工作特点,并分析了设计的难点。系统用Verilog HDL实现SPI逻辑,通过了软件仿真与FPGA硬件验证,并成功应用于8051为MCU的SOC芯片中。说明所设计的SPI模块可以当作MCU的一个软IP核并修改SPI与MCU、ARM等CPU的接口部分应用于各类SOC系统中,有较广泛的应用领域。      参考文献   [1]http://en.省略/wiki/Serial_Peripheral_Inte rface_Bus   [2] 毛建权,季晓勇.基于SPI的DSP与MCU双向通信的设计与实现[J].科学技术与工程,):.   [3]易志明,林凌,郝丽宏,李树靖.SPI串行总线接口及其实现[J].自动化与仪器仪表,-46.   [4] http://www.省略/   [5] 曹傧,王详,程野,张瑞峰,杜杨.SPI控制器的ASIC设计及实现[J].数字通信,2010,1 (2):94-97.   [6] 杨承富,徐志军.SPI总线接口的FPGA设计与实现[J].军事通信技术,):72-76.   [7] 李?宇,杨家玮.用SPI总线实现DSP和MCU之间的高速通信[J].电子元器件应用,):28-29.   [8] 易志明,林凌,郝丽宏,李树靖.SPI串行总线接口及其实现[J].自动化与仪器仪表,-46.   [9] 廖彬彬,张福洪,尚俊娜. SPI总线接口的SOPC模块设计与实现[J].现代电子技术, -14.   [10] 郭炜,郭筝,谢憬.SOC设计方法与实现[M].北京:电子工业出版社,2007.   [11] Mentor Graphics. 自动跨时钟域验证方法的需求[J].明导通讯,-30.   [12]虞希清.专用集成电路设计实用教程[M].杭州:浙江大学出版社,2007.   [13] 王仁平,何明华,魏榕山.基于MCU的SoC芯片版图设计与验证[J]. 福州大学学报,-544      作者简介   苏伟禄,现就读于福州大学物理与信息工程学院微电子系,在读研究生。   施隆照,副教授,福州大学物理与信息工程学院。
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。君,已阅读到文档的结尾了呢~~
基于多机SPI协议的多机通信
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于多机SPI协议的多机通信
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 spi mosi miso 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信