SPI_master


前言

用FPGA实现SPI主机


一、SPI 特性

1.1同步

发送数据时钟+发送数据

1.2速率

I2C协议v2.1规定了100K,400K和3.4M三种速率(bps)。

具体到产品中SPI的速率为系统时钟频率的1/2。

1.3全双工

两根数据线

二、数据接口

2.1主从机连接

在这里插入图片描述

2.2传输模式

MODECPLOCPHL
000
101
210
311

二、难点

2.1 难点1:SPI数据是在下降沿变化,上升沿保持

解决思路:对系统时钟产生二分频计数器,既可以指示spi_clk上升下降沿,又可以在spi_clk时钟下降沿改变数据,上升沿数据保持。

2.2 难点2:串并转换

思路:串转并移位寄存器往里填数,并转串移位移位寄存器往外溢数

always@(posedge i_clk)begin
    if(i_rst)
        ro_spi_mosi <= 'd0;
    else if(w_user_active)
        ro_spi_mosi <= i_user_data[cnt];//并转串
    else 
        ro_spi_mosi <= ro_spi_mosi;
end 


always@(posedge ro_spi_clk,posedge i_rst)begin
    if(i_rst)
        user_data <= 'd0;
    else
        user_data <= {user_read_data[6 : 0],i_spi_miso};//串转并
end

3 仿真

简单仿真验证一下逻辑,输出信号下降沿变化,对应从机就是上升沿读取数据,没啥问题,ok
在这里插入图片描述


备注

仅用于记录日常学习,侵权必究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徕卡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值