|
以下这段有啥问题?0 R+ x3 h; h3 t3 H) ^+ G8 Q" y
我使用 SignalTap II 调试了,nss 常为 Lo,shifter[0] 与 mosi 输入一致,但 shifter 不做任何移位。且 shifter_out 为 0x00, 0xCF 等随机数。
5 N' g. H+ N+ K1 B& h# R去掉 or posedge nss 及 if (!reset || nss) 中的 || nss,位移正常,但传输几秒发生不可恢复的数据错位。
* G. z& A+ ?% Y! B7 q! p" [将下面的 if (!nss) 也去掉,长时间数据传输无任何异常。# L2 Q; `5 u, |) P
通过 SignalTap II 設定 Trigger,nss 未触发,因此证明 nss 常时为 Lo。: e) G, K0 _& V, U2 i
未做修改前,时序中所有 Slack 值 > 0,Fmax > 100MHz (工作频率),Fitting 后的結果看上去也正常。不解啊...求助...
$ x1 C: g, {" E8 F- x always @(posedge sclk or negedge reset or posedge nss) begin
* c, `! G+ ]& G if (!reset || nss) begin- t& w- d/ b- u
shifter <= 8'b00000000;
7 `* @' o6 o3 g. B shifter_out <= 8'b10111010;0 X, q3 y2 v9 C# `
cnt <= 8'b00000000;# }) c' p7 T8 X+ {
end3 z' X: L; a+ m9 C0 u& @* d
else begin
! U0 Z. h, C; ~% @ if (!nss) begin8 W& h: q* t" Z0 f( X
shifter <= {shifter[6:0], mosi};
/ \* m% z/ p/ K( O shifter_out <= {shifter_out[6:1], shifter_out[0], shifter_out[7]};% t {, r' p, R9 y: N7 X3 A
! U; f; c( ?# }7 n5 L% w+ P if (cnt == 8'h7); _0 Y2 K; ]* m v: F1 A# u+ w
cnt <= 8'b00000000;
/ g1 _. u- U* X# C C* }4 m else" g: P* |: B& \: {
cnt <= cnt + 1'b1;6 _( R k4 q; O2 b8 B
end
6 `, K3 }, J3 d2 I2 ^ C, f% \ end+ ^0 `; \7 Z5 J$ A# P8 b2 D
end
' {1 S' x5 ~" ], q t& Z6 M
8 p7 S9 O- p# k) k& o6 y |
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有帳號?申請會員
x
|