Chip123 科技應用創新平台

標題: 一个关于 SPI Slave 的问题。 [打印本頁]

作者: linuxhaha    時間: 2012-1-25 10:16 PM
標題: 一个关于 SPI Slave 的问题。
以下这段有啥问题?
( A6 t5 Y( U: t8 L6 }& T0 B5 }我使用 SignalTap II 调试了,nss 常为 Lo,shifter[0] 与 mosi 输入一致,但 shifter 不做任何移位。且 shifter_out 为 0x00, 0xCF 等随机数。/ `2 v; s/ N+ t( o( Z' s
去掉 or posedge nss 及 if (!reset || nss) 中的 || nss,位移正常,但传输几秒发生不可恢复的数据错位。
( L+ n- \6 E" V1 ~% m/ _% h% q% u1 H将下面的 if (!nss) 也去掉,长时间数据传输无任何异常。1 I7 H; @* \  l" A
通过 SignalTap II 設定 Trigger,nss 未触发,因此证明 nss 常时为 Lo。5 E) P4 x0 [: f7 p; z% v
未做修改前,时序中所有 Slack 值 > 0,Fmax > 100MHz (工作频率),Fitting 后的結果看上去也正常。不解啊...求助.../ x- ?; i( `& {: \* |# \$ y
    always @(posedge sclk or negedge reset or posedge nss) begin+ F& z2 a& q: r4 o& l
        if (!reset || nss) begin2 D# r& f- H% k3 ~2 q! a, P: `
            shifter     <= 8'b00000000;
1 {' C  R* t2 M  d  \0 R) T7 U( N            shifter_out <= 8'b10111010;
( T( P2 G) s0 H            cnt         <= 8'b00000000;
( x) ]# ~0 U5 b4 U2 J9 c        end
3 C8 o4 m& H) ]  u. y        else begin9 E# Z: q5 K1 c
            if (!nss) begin& @% P+ M4 _6 B3 l, ?
                shifter     <= {shifter[6:0], mosi};, j! ~$ Q9 w3 Q: D
                shifter_out <= {shifter_out[6:1], shifter_out[0], shifter_out[7]};; ]* T" u8 d3 m  ?( `$ y
$ l3 F& k6 J$ x; X
                if (cnt == 8'h7)& K: I6 l0 Q  V6 N
                    cnt <= 8'b00000000;. ]9 @: H+ \* e2 ^% A7 V% }6 f
                else9 g% @; K. i) [. c+ K
                    cnt <= cnt + 1'b1;; S/ w, q( Z0 ^3 I
            end( m. M2 t( o$ M. A( B8 i4 ^* U3 [
        end
! }. V) M! {6 l9 d( h/ P    end+ U$ Q9 Q& c& u! u9 U
) R" M' c2 `3 U6 a& ^' j
[attach]15399[/attach][attach]15400[/attach]
作者: linuxhaha    時間: 2012-1-31 09:38 PM
已解决.....................




歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/) Powered by Discuz! X3.2