前言:

鉴于一般ADI的AD、DA、时钟类的芯片应用的比较广泛,正好手上的一块板子上有三片ADI的芯片,都是SPI的接口。就想到设计一个比较通用的SPI Master,希望可以做到基本通用。

一、SPI的接口时序如下(摘自AD9517-3 datasheet)

1、 前16bit为Instruction Header,就是控制读/写、地址、长度(读/写)的。

2、后面跟的是读/写的数据。

说明:sdio是双向的,一般默认的就是双向的,所以sdo引脚可以不用。

二、设计SPI时序

SPI的时序很简单,就是一个时钟对应一个数据。通常SCLK的最高频率不超过25MHz。

对于低速的时序,我们可以在2倍或者4倍的系统下来控制输出的时序。如下图,clk是50MHz,输出的SCLK是25Mhz。这是一种时序控制的思想。

上图中,我们用到了一个计数器cnt,然后按照cnt的值来控制SCLK和高和低,以及SDIO上的数据。

部分verilog代码如下:

Case(cnt)

0: begin sclk <= 1; csb <= 0; cnt <= cnt + 1'b1; end(将csb信号拉低,对应图中cnt=1)

1: begin sclk <= 0; sdio <= instr_header[15]; cnt <= cnt + 1'b1; end(低电平送数据,保持一个周期,对应图中cnt=2,3)

2: begin sclk <= 1; sdio <= instr_header[15]; cnt <= cnt + 1'b1; end

3: begin sclk <= 0; sdio <= instr_header[14]; cnt <= cnt + 1'b1; end

4: begin sclk <= 1; sdio <= instr_header[14]; cnt <= cnt + 1'b1; end

5: begin sclk <= 0; sdio <= instr_header[13]; cnt <= cnt + 1'b1; end

6: begin sclk <= 1; sdio <= instr_header[13]; cnt <= cnt + 1'b1; end

7: begin sclk <= 0; sdio <= instr_header[12]; cnt <= cnt + 1'b1; end

8: begin sclk <= 1; sdio <= instr_header[12]; cnt <= cnt + 1'b1; end

……..

这样,一个完整的SPI总线“写操作”时序设计出来应该是这样子:

注:图中是8位的地址+8位的数据,所以SCLK共16个周期。如果是16位地址,应该共24个周期。

三、双向IO的控制

由于默认SDIO是双向的,所以这里再提一下双向IO的控制。

一般双向IO是这样定义的,先在模块中如下申明:

module spi_master(

inout sdio,

);

然后在程序中:

reg sdio_en = 0;

wire sdi;

reg sdo = 0;

assign sdio = (sdio_en) ? sdo : 1'bZ;

assign sdi = sdio;

sdio_en是使能双向端口的,sdio_en为1时输出,为0时输入。

sdo作为输出寄存器,sdi作为输入。

在程序中要输出的时候,要先把sdio­_en置为1,同时将数据放入sdo寄存器。输入的时候,先将sdio_en置0,再从sdi上取数据。

未完,敬请期待。。。

转载于:https://www.cnblogs.com/craftor/archive/2012/09/20/2695187.html

ADI芯片的通用SPI接口设计相关推荐

  1. 基于Verilog的SPI接口设计

    SPI接口电路的学习 1.SPI接口电路原理 SPI, Serial Perripheral Interface, 串行外围设备接口, 是Motorola 公司推出的一种同步串行接口技术. SPI 总 ...

  2. pcie总线与cpci总线_基于通用PCI接口功能芯片和热插拔控制器实现CPCI总线控制的设计...

    CPCI总线简介 CPCI总线是一个开放式.国际性技术标准,由PCI总线工业计算机制造商组织PICMG(PCI Industrial Computer Manufacturer Group)负责制定和 ...

  3. Java后端返回通用接口设计

    我印象中,通用返回接口设计是有两种方式,第一种是自定义返回数据的通用类,另一种是springboot中实现ResponseBodyAdvice接口,实现返回数据格式的统一,如我说的有错,请大佬指出.本 ...

  4. 基于PCI9054和LTC4240的CPCI总线接口设计

    CPCI总线简介 CPCI总线是一个开放式.国际性技术标准,由PCI总线工业计算机制造商组织PICMG(PCI Industrial Computer Manufacturer Group)负责制定和 ...

  5. AD硬件电路模块设计——PS7219及单片机的SPI接口电路

    1 PS7219简介 PS7219是一种新型的串行接口的8位数字静态显示芯片.它是由武汉力源公司新推出的24脚双列直插式芯片,采用流行的同步串行外设接口(SPI),可与任何一种单片机方便接口,并可同时 ...

  6. 04【Verilog实战】SPI协议底层硬件接口设计(附源码RTL/TB)

    脚  本:makefile 工  具:vcs 和 verdi 写在前面 这个专栏的内容记录的是个人学习过程,博文中贴出来的代码是调试前的代码,方便bug重现. 调试后的程序提供下载,[下载地址] 发现 ...

  7. DP2515国产带SPI接口汽车CAN总线控制器芯片兼容替代MCP2515/MCP2515-I/ST

    目录 什么是CAN? DP2515简介 DP2515结构框图 芯片特性 参考原理图 什么是CAN? CAN是控制器局域网络(Controller Area Network, CAN)的简称,是如今是国 ...

  8. ESP32-S2上使用SPI接口芯片DM9051NP转以太网的无线物联网网关开发指导

    前言 DM9051NP芯片 SPI接口占用管脚数量比以太网PHY的RMII/MII少,PCBA版线布局可更精简.而DM9051NP驱动软件方面,由于源代码已集成在ESP IDF中,可见其可靠度以及网口 ...

  9. direct wifi 芯片_介绍一款支持WiFi Direct的SPI接口WiFi模块

    从定义上来看,WiFi Direct是一个标准,WiFi Direct标准是指允许无线网络中的设备无需通过无线路由器即可相互连接.与蓝牙技术类似,这种标准允许无线设备以点对点形式互连,不过在传输速度与 ...

最新文章

  1. pyspark汇总小结
  2. Strusts2笔记7--国际化
  3. AI一分钟|研究人员证明“金钱真的可以买到快乐”;特斯拉中国梦面临威胁
  4. 微信-支付宝-支付响应体
  5. Java进阶:@CallerSensitive详解
  6. ios7开发学习笔记-包括c oc 和ios介绍
  7. 5G 来了,我们可以做什么?
  8. Magento: 产品页面下jquery change函数失效 Call javascript function onchange product option
  9. Unity下载文件一(www协程下载)
  10. 百度富文本php配置方法
  11. org.gradle.api.tasks.compile.CompileOptions.setBootClasspath
  12. TypeScript学习笔记(七):模块
  13. StackPanel
  14. 微型计算机原理目录,微型计算机原理与应用 目录
  15. 什么是南大核心、北大核心、科技核心、人文核心、省级期刊和国家级期刊
  16. 百度网盘视频加速代码
  17. 服务器都有哪些安全配置总结
  18. gmail不支持html格式,gmail邮箱附件如何以html格式查看
  19. 截止失真放大电路_音频功放失真?别急!这里有常见改善方法
  20. 计算机控制plc应用论文,PLC自动控制系系统在变频器中的运用

热门文章

  1. 正弦定理和余弦定理_高三 | 数学必修五正弦定理和余弦定理应用举例考点梳理...
  2. 采用Matlab编程实现 高频强调滤波,[转载]MATLAB图像处理-基于高频强调滤波和直方均衡化图像增强...
  3. java 面向对象多态_乐字节Java面向对象三大特性以及Java多态
  4. 可视化排班管理_企业人事资源管理系统
  5. 关于python_关于Python,你必须知道的事!
  6. 应用filestream设置时存在未知错误_开机黑屏?常见启动黑屏错误的中文解释!学习电脑知识电脑小匠...
  7. c语言中三种常用的循环控制结构是,三C语言的基本控制结构.ppt
  8. opencv android 羽化,学习OpenCV:滤镜系列(15)——羽化(模糊边缘)
  9. python在统计中的应用_Python在简单数据统计中的应用--随笔记
  10. matlab编辑rayfile光源文件,rayfile网盘功能详解 rayfile网盘安装步骤及安装注意事项...