SPI参数化分配寄存器
SPI的原理请参考:spi 协议驱动设计
//SPI salve支持功能:
//支持三线SPI或者四线SPI,通过define切换
//支持指令长度、帧长自定义
//工作时钟可自定义,大于SPI clk的2倍
//只需要修改:几线SPI 单帧长度 指令长度 寄存器开辟
//注意:指令最高bit表示读写,低写高读,其余bit表示地址
//指令接着为数据端,二者位宽之和即为SPI单帧长//`define SPI_LINE //是否是三线SPI
`define SPI_FRAME_WIDTH 16 //SPI一帧长度为16
`define SPI_INS_WIDTH 8 //SPI指令长module spi_slave(input i_clk,//work clkinput i_rst_n,input i_spi_clk,//SPI CLKinput i_spi_cs,//SPI CS`ifdef SPI_LINE //条件编译inout io_spi_sdio`elseinput i_spi_mosi,//SPI MOSIoutput o_spi_miso //SPI MISO`endif);//位宽计算函数
function integer clogb2(input integer depth);
beginfor(clogb2 = 0;depth > 0;clogb2 = clo