//SPI_SLAVE.v
//SPI从端接口
//SPI的数据线上,高位数据先发
//2010-12-20
/*
SPI从模块接受端
在iCS_N为低电平时,每一个iSCLK信号上升沿到来时,从iMOSI端口接受一位数据
当接收一个字节的数据后,oDATA端口输出数据,同时oEN置高电平,表示当前oDATA端口的数据为有效数据
*/
module SPI_SLAVE(
iCLK, //全局时钟
iRST_N, //全局复位
iSCLK, //SPI时钟信号
iCS_N, //片选信号
iMOSI, //SPI数据输入端口
oDATA, //输出数据
oEN //输出有效信号
);
input iCLK;
input iRST_N;
input iSCLK;
input iCS_N;
input iMOSI;
output [7:0] oDATA;
output oEN;
reg [7:0] oDATA;
reg [3:0]rOEN;
reg [7:0] rData;
reg [2:0] rCnt;
reg sclk_bak;
always@(posedge iCLK)begin
sclk_bak <= iSCLK;
end
wire wSclkRaise=((sclk_bak==1'b0)&&(iSCLK==1'b1)); //iSCLK上升沿
always@(posedge iCLK or negedge iRST_N)begin