找回密码
 注册
关于网站域名变更的通知
查看: 261|回复: 0
打印 上一主题 下一主题

FPGA设计中,对SPI进行参数化结构设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
 楼主| 发表于 2024-4-11 18:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
今天给大侠带来FPGA设计中,对SPI进行参数化结构设计,话不多说,上货。+ f# @/ x, }4 p4 D& k  J5 o2 j: r

8 D4 j& Z8 y+ K! O- m
8 O. T  L) O. Y( B- j. m- s$ p- ^

& D( p3 b! W' U5 y. Z& t5 p
          为了避免每次SPI驱动重写,直接参数化,尽量一劳永逸。SPI master有啥用呢,你发现各种外围芯片的配置一般都是通过SPI配置的,只不过有三线和四线。SPI slave有什么用呢,当外部主机(cpu)要读取FPGA内部寄存器值,那就很有用了,FPGA寄存器就相当于RAM,cpu通过SPI寻址读写数据。代码仅供参考,勿做商业用途。
1 l+ c4 w4 O5 f" E4 e7 B1 p
! E; g& E6 H- j4 g  d
# x; l2 \4 W/ {# g' K3 _

SPI salve

% ^+ ~; t: K' A% R& I/ n

SPI salve支持功能:

  • 支持三线SPI或者四线SPI。通过define切换。                                 
  • 支持指令长度、帧长自定义。                              
  • 工作时钟可自定义,大于SPI clk的2倍。3 @, u3 m- s6 v6 h6 i/ i+ D3 o7 v* e- w

+ l0 ?! j" }% H( X8 e+ ~# W" x& L

用户只需修改:(1)几线SPI。(2)单帧长度。(3)指令长度。(4)寄存器开辟。

1 |" t2 v) ]! `0 L0 V) i! D  X+ a, ~

注意:指令最高bit表示读写,低写高读,其余bit表示地址。指令接着为数据端,两者位宽之和即为SPI单帧长。


/ |5 W: X: ^9 P, t$ u  t7 W, d

" x# \- z1 `* }1 B+ F

: W+ _# J+ a: U; h* U7 i3 ^

SPI master

- @5 Q( z& H- s' i% z( N% a

spi master内部仅仅封装SPI驱动,写入值读出控制由上层控制,这部分逻辑很simple,不赘述。用户只需给入SPI帧及控制使能即可。

3 L. f- \2 C3 M2 M+ I" w+ p

用户只需修改parameter参数:(1)单帧长;(2)指令长;(3)数据长;(4)工作时钟;(5)SPI clk。


% z$ r: S5 n: _

实现不使用状态机,采用线性序列计数法。

; X. ^, ?2 ?6 e7 S) u; S2 G" k

+ J& a5 C) Y/ }$ |

# N1 o# s, Y  k/ D$ s

仿真如下所示:写入四个寄存器值,再读出。

9 U, R" A2 H. J. [1 W

仿真代码如下:


7 P" h5 L. q* i/ H


9 m( H0 `1 n& Y' c

- r) W! `9 U) W7 e- ]6 ?( }

4 y7 z' o4 |' y( _4 z  v1 d

三线SPI:


0 |: F' j" J" ]/ M. H


8 Q; w  \& Q% ~


; s* y: L# O, ]( _1 R+ M

  e1 @1 c* p5 l. r1 a1 k

四线SPI:


7 D: m( w! w' K# V3 q) d


* z, E* ]  m) ~) _
+ a) T* |  O, O
) N5 d& f2 R" [$ }4 t# u- L

7 D7 X. Q3 T: e; ?

6 V0 ~! _  R" ~2 x- x! x

可以看到读写是一致的,验证通过。


( h. C9 {' O0 X' |6 {, ]! f* [

- U7 |+ W7 l* ~% }' Q
7 _! T. N& d/ s% v! K$ ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-19 00:34 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表