一、何为SPI
SPI为全双工通信技术,具有信息传输快等特点,主要通信通过MOSI、MISO、SCLK和CS四根线来实现。
二、错误及分析
(1)数组的定义及赋值
数组的定义 reg [7:0] mem [0:7]
前一个[7:0]为数组宽度,即一个数组深度为8;
后一个[0:7]为数组个数,即8个深度为8的数组。
初始化时,使用for循环
reg [7:0] mem [0:7] ;
integer i ;
always @(posedge clk or negedge rstn)begin
if (!rstn)begin
for (i=0 ; i <= 7 ; i= i+1)begin
mem [i] <= 8'b0 ;
end
end
进行赋值时,需要采取另一种方式,例如
reg miso_r ;
always @(posedge clk or negedge rstn)begin
if (!rstn)
miso_r <= 0 ;
else if ()begin
for (i=0 ; i <=7 ; i = i +1)begin
miso_r <= mem [3] [i] ;
end
end
end
前一个【3】代表第几个数组;
后一个【i】表示第几位。
(2)verdi看数组的方式
在tb中加入
而后在波形中添加即可。
(3)编译卡住
编译卡在此处,大概率是代码陷入了某个循环。
此时ctrl C + q即可退出编译,波形仍存在,看波形改代码即可
(3)slave
slave中bit_cnt应该下降沿加一(因为下降沿接受数据,若上升沿接受数据就上升沿加一)。