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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务