您好,欢迎来到年旅网。
搜索
您的当前位置:首页用verilog编写spi通信模块

用verilog编写spi通信模块

来源:年旅网

spi模块测试(没有按照状态机方式生成时钟,感觉如果传输的不是8位而是16或32位代码将过长),发送端连接到了接收端,不一定实用属自娱自乐,供大家参考

`timescale 1 ns / 1ns

module exx(en,clk,sclk,cs,sdi,sdo);       //exx我想表达举例,大家可以改为spi名称
  input en,clk,sdi;         //en允许发送数据
  output cs,sclk,sdo;
  reg sdo;
  reg[7:0] data=8'b10111111;//待发送数据寄存器
  reg[7:0] buff=8'b00000000;//接收数据缓冲寄存器
  reg[2:0] cnt=7;           //计数器初值为7
  reg cs;                   //片选信号高有效
  
  assign sclk=clk;          //串行时钟直接引用晶振时钟

always @(posedge sclk)       
if(en)  cs<=1;              //en启动cs
else if(cnt==0)  cs<=0;     

always @(posedge sclk)
if(cs)  cnt<=cnt-1;
else cnt<=7;                 //发送完毕自动恢复为7

always @(negedge sclk)      //下降沿发送数据
if(cs)  sdo<=data[cnt];  
    
always @(posedge sclk)      //上升沿接收数据<

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务