SPI总线的原理与Verilog设计实现_第1页
SPI总线的原理与Verilog设计实现_第2页
SPI总线的原理与Verilog设计实现_第3页
SPI总线的原理与Verilog设计实现_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页SPI总线的原理与Verilog设计实现一、软件平台与(硬件)平台

软件平台:

1、(操作系统):Windows-8.1

2、开发套件:ISE14.7

3、(仿真)工具:Model(Sim)-10.4-SE

硬件平台:

1、(FPGA)型号:Xilinx公司的XC6SLX45-2CSG324

2、Flash型号:WinBond公司的W25Q128BV

QualSPIFlash存储器

二、原理介绍

SPI(SerialPeripheralInterface,串行外围设备(接口)),是Motorola公司提出的一种同步串行(接口技术),是一种高速、全双工、同步(通信)总线,在(芯片)中只占用四根管脚用来控制及数据传输,广泛用于EEP(ROM)、Flash、RTC((实时时钟))、(ADC)((数模转换器))、(DSP)((数字信号)(处理器))以及数字信号解码器上。SPI通信的速度很容易达到好几兆bps,所以可以用SPI总线传输一些未压缩的(音频)以及压缩的(视频)。

下图是只有2个chip利用SPI总线进行通信的结构图

时序图如下所示:

从上面的时序图可以很清楚的看出,当ROM的地址加1以后,ROM的数据是滞后了一个时钟才输出的,而ROM数据输出的时刻(这个时候ROM的输出数据并没有稳定)刚好是spi_module模块发送下个数据最高位的时刻,那么这就有可能导致数据发送错误,从以上时序图就可以看出8’h33和8’h24两个数据正确发送了,但是8’h98这个数据就发送错误了。

为了解决这个问题,其实只需要把spi_module模块的发送状态机在加一个冗余状态就行了,spi_module模块的发送状态机一共有0~15总共16个状态,那么我在加一个冗余状态,这个状态执行的操作和最后那个状态执行的操作完全相同,这样就预留了一个时钟的时间用来预先设置好要发送的数据,这样的效果是发送数据的最后一个bit实际上占用了3个时钟周期,其中第一个时钟周期把O_tx_done拉高,后两个时钟周期把O_tx_done拉低。修改后的spi_module模块的代码如下:

modulespi_module(inputI_clk,//全局时钟50MHzinputI_rst_n,//复位信号,低电平有效inputI_rx_en,//读使能信号inputI_tx_en,//发送使能信号input[7:0]I_data_in,//要发送的数据outputreg[7:0]O_data_out,//接收到的数据outputregO_tx_done,//发送一个字节完毕标志位outputregO_rx_done,//接收一个字节完毕标志位//四线标准SPI信号定义inputI_spi_miso,//SPI串行输入,用来接收从机的数据outputregO_spi_sck,//SPI时钟outputregO_spi_cs,//SPI片选信号outputregO_spi_mosi//SPI输出,用来给从机发送数据);reg[4:0]R_tx_state;reg[3:0]R_rx_state;always@(posedgeI_clkornegedgeI_rst_n)beginif(!I_rst_n)beginR_tx_state

时序图如下所示:

观察上面的时序图可以发现,增加冗余状态以后,ROM里面的10个数据全部发送正确了。最后把代码综合生成bit文件,下载到开发板里面用ChipScope抓出时序图如下所示

可以看出,时序和用ModelSim得到的一模一样。至此,整个用SPI总线传输ROM里面数据的实验全部结束。

五、进一步思考

5.1、如果外设芯片的数据位宽是16-bit或者32-bit怎么办?

上文已经完成了8-bit数据从ROM里面通过SPI发送出去的例子,16-bit和32-bit可以照着葫芦画瓢,无非就是多增加几个状态而已。

5.2、发送数据的状态机和接收数据的状态机可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论