spi 通信的master部分使用的verilog语言实现,可以做为你的设计参考。
module spi_master(rstb,clk,mlb,start,tdat,cdiv,din, ss,sck,dout,done,rdata);
input rstb,clk,mlb,start;
input [7:0] tdat; //transmit data
input [1:0] cdiv; //clock divider
input din;
output reg ss;
output reg sck;
output reg dout;
output reg done;
output reg [7:0] rdata; //received data
parameter idle=2'b00;
parameter send=2'b10;
parameter finish=2'b11;
reg [1:0] cur,nxt;
reg [7:0] treg,rreg;
reg [3:0] nbit;
reg [4:0] mid,cnt;
reg shift,clr;