EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
下载到开发板上遇到一个与仿真不同的问题:波形不一致!! b8 c' ^! ^2 |/ G7 C
1 k3 i' }3 z2 `/ r2 k6 A% b" |
我用嵌入式分析仪抓数据发现波形与我仿真时的波形不一致
1 v1 X6 D4 w! I5 c8 w! V1 [比较奇怪
4 }. U0 {% p2 C1 P' B0 z3 x0 G
) x0 N' f( z6 C我的设计思路是通过串口接受数据( ]( I5 ~5 w+ k d
然后把接收的数据写入sram器件里面去
/ H; r) S! M, m- e2 J
$ q8 H# Y! r+ P- T B* B9 p但发现那个控制信号与仿真时不一致(见附图所示)4 R6 p i! ?9 q8 R2 S) t# |+ @
2 C/ c8 r+ U+ u; w7 E4 Y
5 t% [9 F7 A* w$ q7 i跟sram接口相关的代码如下:
7 @6 C1 h+ G. ^& _" d1 h2 l( s8 a/ n: b2 D" i+ k x
----------------------------------------------------------------------------------------- always @(posedge i_Clock or negedge i_Reset_n)
# Z! H+ @2 t% ~; W if(~i_Reset_n)begin
; `8 j+ \5 n) h8 i) I' g SRAM_STATE<=`SRAM_IDLE;$ s7 a( u% b) P, f" g6 ^
Write_ack<=0;; @+ `$ z5 F( X5 {3 ]$ o
Read_ack<=0;
& M- q# M; P& H9 l0 {+ f, D+ _' L end
3 o. f8 s- z1 m: {% J* N: T else begin
2 [3 L, Z4 Z, T Write_ack<=0; ( K" k/ W1 D6 ~# \1 M" t1 |" a
Read_ack<=0;
, k/ x( y8 a; ~0 o3 W* b case (SRAM_STATE)" v& f/ C2 ~# s: K$ r
`SRAM_IDLE:begin
' z& E! c9 f4 _: i [' x3 p Write_ack<=0;
# ^: P% P9 S8 c- A9 q Read_ack<=0;; J, G) \% u) Y6 @- X0 f; }
case({Write_req,Read_req})( Q4 E9 E Z% D( h. A! K4 j
2'b10:begin V. ?8 Q8 T" L7 S5 n
SRAM_STATE<=`SRAM_WRITE; ; H* f* Q7 j( R3 [2 R8 c1 o" i
Write_ack<=1;
4 h! j8 W% y8 y end/ s& s7 i) V. _( q4 y% L' v
2'b01:begin
0 \) P3 G& N- q2 [6 k7 h SRAM_STATE<=`SRAM_READ; - |9 R. R. I+ {/ V+ ]$ p
end) }) G- H1 ?6 z y" F$ O
default:SRAM_STATE<=`SRAM_IDLE;" s: f. I* e) U/ j c0 S1 V7 E
endcase
- |: s# A0 C: j/ T5 B8 R6 Q end
- K' o7 w8 W3 v% Q5 f' Z `SRAM_WRITE:begin 0 W e, @. D+ E! k& F0 P1 h+ q
SRAM_STATE<=`SRAM_IDLE; ! o. O! v; x, F: O- I' L
end- F a' J, u5 _& J' ?* k7 f
`SRAM_READ:begin
* U, l; t3 U' ]9 m! ` SRAM_STATE<=`SRAM_READ_KEEP;, S) `/ u; h3 g9 V3 x8 d6 _) Z0 g
end
9 I' x5 Q5 w$ m) }( x; a `SRAM_READ_KEEP:begin
5 Z& @+ L. ~) Z$ J SRAM_STATE<=`SRAM_IDLE; $ [: B8 c/ f* c. R, K8 k
Read_ack<=1; # p$ ~( U4 q; S$ V3 G2 s& l# l
end) n5 c# @; [9 t3 s8 A- r
default:begin 0 e. p: P+ R. [$ a; f# A Z
SRAM_STATE<=`SRAM_IDLE;0 M: j/ F0 i" a9 n1 S* k5 M
Write_ack<=0;" A( a2 ~8 z8 E5 O8 g
Read_ack<=0;
/ O& O* I) d0 n end" u; u! V; C& E W' X& \, C! q
endcase
' [) ^- N v1 |& k" I N end ----------------------------------------------------------------------------------------- assign io_Sram_data =(o_Sram_OE_n) ? Sys_dataout:{16{1'bz}}; 2 W, u1 I; J3 W; ^" B
assign Sys_datain = io_Sram_data;
4 v0 C& R5 }$ r& K, c //9 v5 T" J* v! N; Y' Z' t
always @(posedge i_Clock or negedge i_Reset_n)
, P! b) g# s. ~4 B) ?3 V if(~i_Reset_n)begin# K1 f4 R, j+ C2 x2 M( P
o_Sram_CE_n<=1;
' V G9 J$ Z0 | o_Sram_WE_n<=1;# G% S- N! `# K
o_Sram_OE_n<=1;
) C7 `& w" U F2 [# O o_Sram_UB_n<=1;. }6 l6 {( u/ t5 }$ s W, l
o_Sram_LB_n<=1; 2 V' [6 @* U, C/ V/ m& [' ]
o_Sram_add<={16{1'b0}};
' K; p& X- C9 J end: y$ v; r8 l- b' R x
else begin! V( H$ `, S9 @% l) _ \; f# r1 C
case(SRAM_STATE)
$ s5 d2 R* m( ] \" o `SRAM_IDLE:begin% k1 B3 M' _6 ~
o_Sram_CE_n<=1;
, \. {: Y, N# t9 R! ? o_Sram_WE_n<=1; `7 y& b J! o" @; q, B3 k
o_Sram_OE_n<=1; [/ [. e0 C8 d) f
o_Sram_UB_n<=1;
+ ?, f! t) h% S o_Sram_LB_n<=1;
' K, y0 D. p$ {$ o6 B o_Sram_add<=Sys_ADDR;
$ w* {5 X, a! O end. \& Y( t7 ^2 U9 R( ?$ R, }
`SRAM_WRITE:begin
; \) A) X4 Z+ [, H) @ o_Sram_CE_n<=0;; s1 f! Y: \% V, ^! r2 d' Z
o_Sram_WE_n<=0;3 N: w0 s' |4 f7 D! }* H
o_Sram_OE_n<=1;8 ]6 i" u. C m8 C" I
o_Sram_UB_n<=0;
7 P3 O' f4 d1 e: m7 u N" v2 D9 U o_Sram_LB_n<=0; ! z( ?, f+ o' a1 ^' ]
o_Sram_add<=Sys_ADDR;
. F5 U8 c4 {* k5 M* P' p end) M( ^5 j+ x! L* n: E. {
`SRAM_READ,+ ]6 ?1 R( {$ f3 u5 E
`SRAM_READ_KEEP:begin
+ t- X) Q7 i/ b; q1 ~ o_Sram_CE_n<=0;
/ X; `' y. ?: ~ o_Sram_WE_n<=1;
+ Z) m. Z6 W! @ o_Sram_OE_n<=0;, T0 P5 i5 g0 D+ H' S
o_Sram_UB_n<=0;( R+ Q& I5 t' G, q& I
o_Sram_LB_n<=0;; W: ] @& ], v7 G8 b$ d7 a
o_Sram_add<=Sys_ADDR;
$ d2 p' g/ ^* `3 i/ C! z$ N+ m9 N end
: B. |1 S3 W) k0 J/ \" [8 n% ` B* m default:begin ! N1 F* Q8 G8 O6 Q/ o; F3 W4 `' l9 M1 l
o_Sram_CE_n<=1;6 H. w( M$ h, S h+ l" k/ J
o_Sram_WE_n<=1;
: Z& f3 _# E5 I& W4 I o_Sram_OE_n<=1;0 q6 T6 } E# V& h
o_Sram_UB_n<=1;, y/ f' ~ M/ c1 n1 O
o_Sram_LB_n<=1;
+ d' p6 j+ y2 V9 l o_Sram_add<=Sys_ADDR;
. ~) }8 R' L1 V4 q( m end , j; U3 j' }, s3 m. z* K6 L
endcase$ G2 Y! W9 @2 C T$ y7 }' Q3 H; l. l2 Y
end ----------------------------------------------------------------------------------------- |