|
以下这段有啥问题?& ]' f4 Z/ H/ q- l9 [) U/ g
我使用 SignalTap II 调试了,nss 常为 Lo,shifter[0] 与 mosi 输入一致,但 shifter 不做任何移位。且 shifter_out 为 0x00, 0xCF 等随机数。- @1 D' Q" G9 g" C; u' A' U
去掉 or posedge nss 及 if (!reset || nss) 中的 || nss,位移正常,但传输几秒发生不可恢复的数据错位。7 M- O/ d" l6 [0 I% i% y4 s5 L
将下面的 if (!nss) 也去掉,长时间数据传输无任何异常。 k* }5 x2 V0 C% y5 A
通过 SignalTap II 設定 Trigger,nss 未触发,因此证明 nss 常时为 Lo。5 t- i$ d) D& w3 \0 }. Q
未做修改前,时序中所有 Slack 值 > 0,Fmax > 100MHz (工作频率),Fitting 后的結果看上去也正常。不解啊...求助...$ B# L8 ^. d D1 s; H0 a" |
always @(posedge sclk or negedge reset or posedge nss) begin2 X, q7 Z0 A( p" x3 K
if (!reset || nss) begin
9 z+ p, h7 N, P/ i5 Z" |3 N; v shifter <= 8'b00000000;5 z( j1 {, W) G: g' @( t
shifter_out <= 8'b10111010;
) Q9 \/ C* C$ ^+ `$ M2 _+ @, A7 ?7 ] cnt <= 8'b00000000;
4 O6 g5 N7 t6 @6 Z2 Z5 | end2 l& \; J) D& y0 r9 ~
else begin0 W1 ~2 P$ \+ l& z/ o' N- w# s; z
if (!nss) begin8 y9 @6 D- \/ x9 C
shifter <= {shifter[6:0], mosi};
+ k# u% }+ g: k/ K1 c$ M shifter_out <= {shifter_out[6:1], shifter_out[0], shifter_out[7]};$ x4 U9 m" q: F1 C* c
s4 T( k3 T! f3 a9 Z W8 E# v if (cnt == 8'h7)
; a2 K$ N7 C( ] cnt <= 8'b00000000;
9 \- R9 D% t9 O else2 T, F7 L* G \: @
cnt <= cnt + 1'b1;& O# v! U/ o* }, a& n L
end
' C) Q* a) k& |' j2 c9 m X! E end8 \7 C9 R; c* Z8 C" A( Z4 s8 f
end
& m: Z. D$ Q l( J* O4 e) `5 |+ ~# \( d# j/ J) ~' X
|
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有帳號?申請會員
x
|