EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
下载到开发板上遇到一个与仿真不同的问题:波形不一致!! Q v9 N" B& l& d. |
: ^6 ~3 L* A! \/ C我用嵌入式分析仪抓数据发现波形与我仿真时的波形不一致
1 p0 X4 l; e9 S- V$ f6 e2 w比较奇怪
- B8 g! G. @& D1 q5 j& o" J; E" H7 T
我的设计思路是通过串口接受数据
7 g& j9 j2 \: F t然后把接收的数据写入sram器件里面去
6 I5 {/ F9 }3 i i3 Q
# M+ l2 I! p+ s! G( w1 O但发现那个控制信号与仿真时不一致(见附图所示)
' C) H) R- p3 u0 F9 }. ^8 L: Z
4 p- R5 D# X1 S- R8 }% a( e9 W+ {
跟sram接口相关的代码如下:
- j! ~3 ~ _& L: A, s; d; u+ U' [. P( F+ V* d) ^, s) ^: z
----------------------------------------------------------------------------------------- always @(posedge i_Clock or negedge i_Reset_n)' m5 p7 H' M( {$ M
if(~i_Reset_n)begin
$ H t# U: l( @4 ] SRAM_STATE<=`SRAM_IDLE;
7 ^9 _& o) R( c" M Write_ack<=0;; Y2 N: v4 f& H2 G" T6 Q
Read_ack<=0;
9 [$ U$ P* j; X: I2 ~ end
# ]7 B- x) k; [* u else begin) I9 i$ }9 Q0 r7 q; A
Write_ack<=0; , q! I7 N1 J4 k- P1 F
Read_ack<=0;
% `% z! B8 ^) w* V4 J+ s ? case (SRAM_STATE)
5 Z7 q( h/ {: M `SRAM_IDLE:begin6 x; s9 u" j. s8 {& H
Write_ack<=0;
- I# B0 {, g" r5 t0 n) u Read_ack<=0;# K5 {0 c. p8 N
case({Write_req,Read_req})
% w# | M" D* i2 g X 2'b10:begin
4 R, E& q6 Q3 J' b; O. [ SRAM_STATE<=`SRAM_WRITE; ! `3 s. ]/ d% m2 q4 e5 m* l2 t! h
Write_ack<=1;! T9 l$ D7 c; z
end; Y7 S5 S+ d" a$ w" a) t7 W
2'b01:begin 6 q1 T* U( B% h, d3 F( B$ T
SRAM_STATE<=`SRAM_READ; 8 N- z/ N& {, w3 Y! c' v* a% U
end( Z9 P+ w0 ^2 A$ C4 ^
default:SRAM_STATE<=`SRAM_IDLE;) D0 f5 d3 r4 b$ l' X, M j2 x$ {
endcase
4 Y C; T; r' N& N a. I end
1 D6 W. ~* _' D `SRAM_WRITE:begin g5 Y8 a- ?' [ |7 A) y
SRAM_STATE<=`SRAM_IDLE; 8 y3 X% R! [& ?+ n1 _9 r( S; P
end* v# D" r+ z `3 i2 u8 N
`SRAM_READ:begin 9 R" [. Q1 U( y' p* c& ]
SRAM_STATE<=`SRAM_READ_KEEP;
; B8 i. _( D- F9 ^5 n; \4 ?+ A end
9 v2 z( ]- }% ~ `SRAM_READ_KEEP:begin 6 {7 P% M. \% ^. V. \* C) X
SRAM_STATE<=`SRAM_IDLE;
, I: \# U# h2 p8 H* l Read_ack<=1;
) @1 V8 ]' a" J( M end8 M3 v6 O' \( h7 ]
default:begin
. x, ?% Z9 u/ S8 d# U4 _: c6 W SRAM_STATE<=`SRAM_IDLE;7 d+ A" w( k& [, G
Write_ack<=0;: K0 E$ [. H1 w( S. O9 p8 L
Read_ack<=0;
( W- c K( {, R( j: b1 k" f% T! g end: G% _4 W& R- h8 T) Q3 c1 H
endcase
+ r5 K" _5 s7 E8 X4 B/ {8 N end ----------------------------------------------------------------------------------------- assign io_Sram_data =(o_Sram_OE_n) ? Sys_dataout:{16{1'bz}}; % ^! x3 u6 [7 X( h5 Y) D
assign Sys_datain = io_Sram_data;
( ^+ R' f z. z0 ]) g* Q //
; W, q5 b, X n* w always @(posedge i_Clock or negedge i_Reset_n)
& A# i0 x% S8 R8 C3 x; Z% s; J if(~i_Reset_n)begin# m$ ?/ O9 C4 h8 l" b
o_Sram_CE_n<=1;
( u8 B% f1 B( n0 o" _8 V o_Sram_WE_n<=1;# _: H4 A* ~6 i3 i
o_Sram_OE_n<=1;$ G. l. e8 \& L3 [$ B. U
o_Sram_UB_n<=1;3 b- A) a3 h- ?( v$ ~- }
o_Sram_LB_n<=1; # Q& ~; A5 I3 Y0 m, K0 B
o_Sram_add<={16{1'b0}};; [1 o" @1 ~0 ?( R3 t
end
' i- K% S2 \" j, Y5 I else begin3 N: n' i, D+ z' {& }- W! h
case(SRAM_STATE)
w/ v+ _5 `; e1 q) D `SRAM_IDLE:begin
5 p. L* v: F4 p: l5 \( @ o_Sram_CE_n<=1;
' F, R! r! z9 }4 e/ x o_Sram_WE_n<=1;1 f2 L9 U& F7 z6 h0 c6 m2 n) j
o_Sram_OE_n<=1; q! D1 G2 r+ l/ z8 J5 k
o_Sram_UB_n<=1;1 B8 ^4 u8 w8 H! N X, G
o_Sram_LB_n<=1;
2 F1 q* \3 m: Z o_Sram_add<=Sys_ADDR;
9 a( O: z: y5 C, q, ~8 l end
+ T4 Q. O# p8 _. W/ k/ ?1 z; |+ x `SRAM_WRITE:begin
+ v8 J; F3 W X. Z: Y, a4 m$ {' c o_Sram_CE_n<=0;# M# i. r9 r( k; r0 H }& C. n
o_Sram_WE_n<=0;7 r) `- J! x" w `
o_Sram_OE_n<=1;! W" N- J5 `4 f7 h. b' g! b, z
o_Sram_UB_n<=0;* E3 Y1 ?# ^; L
o_Sram_LB_n<=0;
4 _6 k3 w8 b! C) a; {6 L4 m o_Sram_add<=Sys_ADDR; 5 J/ G# f/ I. H% z, ?& Y! `0 {; q
end
6 }! u( }& f) F# M `SRAM_READ,! Y6 K' f6 S4 m* `
`SRAM_READ_KEEP:begin / Q) w) b, b* I# }/ E2 k
o_Sram_CE_n<=0; x9 W4 f* [, u
o_Sram_WE_n<=1;
+ B8 o! `' a6 q9 G, Z( N o_Sram_OE_n<=0;# i% |! m5 ?7 b+ K/ Y
o_Sram_UB_n<=0;
3 B" \) K# \8 k: W o_Sram_LB_n<=0;
4 s7 C- Q4 u6 W o_Sram_add<=Sys_ADDR;6 L7 P4 J& O q( o% h% d* x
end
( X7 a0 f5 H9 j9 Z& I* a default:begin ! }% O, I0 _+ I( |7 ]# a* N: B8 T
o_Sram_CE_n<=1;
1 {) f% n" k0 y3 X+ |0 F; [- }1 q o_Sram_WE_n<=1;+ q* V' H9 I% V
o_Sram_OE_n<=1;: K/ E. u: B0 s$ J, w
o_Sram_UB_n<=1;
: x& }/ W; H( V c, _ o_Sram_LB_n<=1;: Z, _ O. z0 t! p/ Q, I
o_Sram_add<=Sys_ADDR;) \: @/ w5 N9 i$ b5 T5 q+ L
end $ S$ M; F& V9 M8 ^) |; t; e
endcase
$ g# [, v. a7 [ end ----------------------------------------------------------------------------------------- |