0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

配置芯片寄存器的SPI通信协议的verilog实现

冬至配饺子 来源:Bug记录 作者:woodfan 2023-06-16 09:50 次阅读

最近正在调试一个芯片的评估板,其中配置寄存器使用的是SPI通信协议。其实很多芯片寄存器的配置都用到了SPI通信协议,我们今天就需要实现这个SPI通信协议。

首先,我们需要了解SPI协议的基本内容,SPI主要有四根传输线,分别为SPI_CLK, SPI_EN, SPI_DI, SPI_DO。

主设备会将数据时钟通过SPI_CLK传送给从设备,从设备根据SPI_CLK进行接收发送工作;SPI需要注意的是极性CPOL和相位CPHA;CPOL指的是时钟极性,CPHA指的是时钟相位。一个时钟周期内,会有两个跳变沿,它既有可能是上升沿也有可能是下降沿;CPOL的值决定了SPI数据时钟在空闲状态下保持为高电平(CPOL=1)还是低电平(CPOL=0),CPHA的值决定了SPI的采样边沿是第一个边沿(CPHA=0)还是第二个边沿(CPHA=1)。

举个例子,从某芯片手册上看,该芯片手册SPI的时序图如下:

图片

芯片SPI写时序

可以看到,SPI_CLK在开始和结束时都保持了低电平状态,所以CPOL=0,而每次SPI_DI在SPI_CLK的上升沿改变电平值,在SPI_CLK的下降沿保持电平不变,所以可以推断,SPI的采样边沿是第二个边沿,CPHA=1;

从图中我们还可以知道,SPI需要工作的时候,SPI_ENB需要拉低,这就是SPI的片选信号,由于SPI没有寻址机制,所以需要使用片选信号选择总线上不同的设备。

所以说,SPI_EN的工作最为轻松,在需要发送数据的时候将SPI_EN反相,在发送结束后再反相回来;SPI_CLK就是在不断地发送周期性方波;SPI_DI则是在恰当的时机根据要发送的数据进行高低电平转换,然后保持不变。

图片

芯片SPI读时序

这里简单说一下这个芯片SPI的协议内容,发送的第一位(MSB)决定了SPI读写操作,为1是写入,为0是读取;接下来发送5位0,接着发送10位的寄存器地址;如果SPI是写操作,继续写入8位数据,否则开始接收SPI_DO上的数据。

图片

指令解释

这里我列出了状态机跳转的状态:

图片

首先状态机不管在任何状态都会回到IDLE空闲状态,在IDLE空闲状态下,接收到发送数据的命令就会跳转到WRITE_ADDR写地址状态,在写完前16位数据后,根据第一位的值决定是跳转到WRITE_DATA状态接着向芯片寄存器写入数据还是转向READ状态读取寄存器的值;操作结束后最终状态机回到IDLE空闲状态。

其实只需要理解芯片手册上SPI的时序图,并用verilog将其描述出来,就已经成功了一大半。这里我们实操前的准备工作都做完了,接下来就是开始码verilog代码并进行仿真,上板测试等等。待我整理出来之后,再与大家一同讨论吧。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5226

    浏览量

    118971
  • 状态机
    +关注

    关注

    2

    文章

    489

    浏览量

    27344
  • SPI通信
    +关注

    关注

    0

    文章

    34

    浏览量

    11310
  • Verilog语言
    +关注

    关注

    0

    文章

    113

    浏览量

    8184
  • MSB
    MSB
    +关注

    关注

    0

    文章

    13

    浏览量

    8229
收藏 人收藏

    评论

    相关推荐

    Verilog设计寄存器

    现代逻辑设计中,时序逻辑设计是核心,而 寄存器又是时序逻辑的基础,下面将介绍几种常见的 寄存器Verilog设计代码供初学者进行学习理解。
    的头像 发表于07-27 09:03 2772次阅读
    <b class='flag-5'>Verilog</b>设计<b class='flag-5'>寄存器</b>

    fpga与spi通信协议

    fpga通过 spi 通信协议在与外围设备 实现 通信的过程中程序代码该怎么写?新手勿喷
    发表于04-09 12:44

    SPI通信协议

    EEPROM,FLASH,实时时钟,AD转换 ,还有数字信号处理 和数字信号解码 之间。 SPI,是一种高速的,全双工,同步的 通信总线,并且
    发表于10-12 11:30

    SPI通信协议

    LOTO虚拟示波器采集到的数据波形并进行对比分析,方便大家的理解。 SPI 通信协议一般只需要四根线将主控 芯片与从 芯片连接起来,其中四根线分别为:(1)SDO– 主设备数据输出,从设备数据
    发表于08-09 07:49

    对串口中断的通信协议理解与应用

    双向 通信。本文主要讲解对正点原子的串口 通信实验中串口中断的 通信协议的理解与应用,关于串口的初始化 配置等这里略过不讲。在正式开始之前,先把涉及到的 寄存
    发表于02-14 07:18

    SPI通信协议及实例打包

    本文是 SPI 通信协议及实例打包分享。
    发表于11-16 13:24 46次下载

    SPI通信协议

    SPI接口简介 SPI内部结构 SPI工作原理 SPI特征 SPI的四种工作方式 SPI时序图
    发表于12-22 19:17 5次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>

    SPI通信协议讲解

    SPI 通信协议讲解 SPI 通信概念 SPI 通信 SPI
    发表于12-22 19:19 26次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>讲解

    通信协议SPI

    STM32模拟 SPI 通信协议 SPI的简介: SPI是串行外设接口的缩写,是一种高速的,全双工、同步的串行 通信总线;
    发表于12-22 19:20 22次下载
    <b class='flag-5'>通信协议</b>:<b class='flag-5'>SPI</b>

    通信协议SPI

    方便,所以越来越多的 芯片集成了这种 通信协议;二、寻址方式当主设备要和某个从设备进行 通信时,主设备需要先向
    发表于12-22 19:33 6次下载
    <b class='flag-5'>通信协议</b>(<b class='flag-5'>SPI</b>)

    通信协议IIC与SPI最全对比

    非常适合近距离低速 芯片通信。Philips(for IIC)和Motorola(for SPI)出于不同背景和市场需求制定了这两种标准 通信协议
    的头像 发表于01-30 14:56 2269次阅读

    通信协议IIC与SPI之间有何区别?

    非常适合近距离低速 芯片通信。Philips(for IIC)和Motorola(for SPI)出于不同背景和市场需求制定了这两种标准 通信协议
    的头像 发表于02-13 10:27 1166次阅读
    <b class='flag-5'>通信协议</b>IIC与<b class='flag-5'>SPI</b>之间有何区别?

    plc通信协议plc通信原理

    Modbus 协议是一种应用层 协议,建立在串口 通信协议之上,常用于工业控制系统中。Modbus 协议定义了一系列数据传输规则和 通信指令,包括读写
    的头像 发表于06-26 17:52 3298次阅读

    SPI通信协议原理是什么

    Peripheral Interface,也就是串行外设接口,同样是一种 通信协议,在很多 芯片中都有集成。 相比之前学习的UART串口 通信,他多了两根线,其中一个是时钟信号,另一个是设备使能信号,用来控制设备是否
    的头像 发表于11-24 17:37 781次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>原理是什么

    scon寄存器在串口通信中的实际应用

    SCON 寄存器的具体操作取决于使用的串行 通信协议和相关硬件的 配置。通过设置或读取SCON 寄存器的不同位字段,可以控制串行 通信的设置,如波特率
    的头像 发表于02-02 15:10 1619次阅读
    scon<b class='flag-5'>寄存器</b>在串口<b class='flag-5'>通信</b>中的实际应用