EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
下载到开发板上遇到一个与仿真不同的问题:波形不一致!
6 p5 i/ o6 J3 O
' r5 ^# M$ P" w2 d我用嵌入式分析仪抓数据发现波形与我仿真时的波形不一致
) A0 k5 h* R( H" L, o比较奇怪% ^) S, O6 q/ B6 X% F7 l5 E
8 i* Z& b7 ?6 U1 l
我的设计思路是通过串口接受数据; i+ _6 s% ^1 Q4 x! k
然后把接收的数据写入sram器件里面去
: L; f. p0 G, K+ u0 ^- Z9 {- X, k6 x0 h5 C d7 c! Q
但发现那个控制信号与仿真时不一致(见附图所示)
. @1 C' N. p7 z* z' f% _5 y u& J) _, {* ~
" C. I* d& ~9 N) S跟sram接口相关的代码如下:
: J2 U$ _9 `& t/ A3 ~
1 i9 H6 q U* o& j----------------------------------------------------------------------------------------- always @(posedge i_Clock or negedge i_Reset_n)% ?7 w! K- i- z Z
if(~i_Reset_n)begin
- \1 Z- g" ]$ f0 S SRAM_STATE<=`SRAM_IDLE;
( A* @" c1 M. V$ M+ O! m Write_ack<=0;' S9 d9 N; p/ Y0 V
Read_ack<=0;
6 {6 i% u' ^- m* ?: t end+ k- J2 |& Q5 u [
else begin2 G. Q1 y5 X3 G* a. V8 X/ K
Write_ack<=0;
& p" k% S; n J' k, ]( a) y2 t; k Read_ack<=0;
, U7 j2 v3 \! e0 e, k case (SRAM_STATE). S2 B5 `, Z( N' a8 r O
`SRAM_IDLE:begin
5 F7 F! S5 L6 k6 ~" z* Y! q Write_ack<=0;
, } M, q9 T7 z Read_ack<=0;0 y0 @7 l( ~ s7 f& n
case({Write_req,Read_req})1 Q' l& b- y; X
2'b10:begin" h0 c) m0 m2 e0 O1 d* T" d, b
SRAM_STATE<=`SRAM_WRITE; + P" d5 m" g3 W% A* D
Write_ack<=1;8 P# j" C: I, ^4 ^5 U! ?, t
end
) S8 \/ h0 f' T' s# s 2'b01:begin 0 M2 }" q- J8 Q" ?) j7 _% a7 x+ b
SRAM_STATE<=`SRAM_READ;
3 P) p F4 e- f8 d6 q end7 y6 |5 D7 [ y7 G) Y6 y1 \
default:SRAM_STATE<=`SRAM_IDLE;
0 R) z/ \, I6 V- h/ J endcase2 E$ V- n2 J3 z( t0 V
end1 X8 K/ f6 a+ f) m( P
`SRAM_WRITE:begin
0 S/ f& O- U6 a8 q: `+ | SRAM_STATE<=`SRAM_IDLE;
+ m- M% J3 }8 V1 v end, O) o+ E! S6 [' m* h
`SRAM_READ:begin
" b3 e: k4 \7 G* H" ?) w# c SRAM_STATE<=`SRAM_READ_KEEP;
# v( ]+ Q1 s5 |# h6 |7 i end
% C; K$ S( c/ Y) V3 ] `SRAM_READ_KEEP:begin
" W% h& X6 n' I SRAM_STATE<=`SRAM_IDLE; 7 U5 ]: A. x$ z, ]' }9 x! {
Read_ack<=1;
) b# a, m8 k! M6 q) u2 U2 X end& Q* y: a2 Y! Y! E2 o$ L
default:begin 3 k7 D! }5 W5 U* |# ~4 M: b; H# {
SRAM_STATE<=`SRAM_IDLE;
0 y) i7 V4 o6 z* P& v Write_ack<=0;
" o5 O# K6 Y" o. F Read_ack<=0;& h: B d* I0 u$ _! @& \
end4 S6 G7 \+ c" S }, H1 I. F2 Y
endcase
( X( {% Z4 ?% k8 E2 d" [3 _6 o end ----------------------------------------------------------------------------------------- assign io_Sram_data =(o_Sram_OE_n) ? Sys_dataout:{16{1'bz}};
1 l8 A* b0 d8 Y: Q3 O7 [ assign Sys_datain = io_Sram_data;
* c# n- N. u1 |% A0 u5 ?0 O //
7 ]! d" |1 L; T# [- |. c always @(posedge i_Clock or negedge i_Reset_n)
, M& ^8 M# ]- l Y, [* o) n6 q% Z/ j if(~i_Reset_n)begin8 z$ Z9 t! V& p; u2 Y8 @
o_Sram_CE_n<=1; \9 n" x( ^$ O' q' N9 q/ N3 a. a
o_Sram_WE_n<=1;* J, \& r; y5 T) a Y0 z1 Z( R
o_Sram_OE_n<=1;5 i! T! ] Y% a) K
o_Sram_UB_n<=1;5 o9 I; T1 g/ S2 Z
o_Sram_LB_n<=1;
* u8 E- K5 F$ P) U( @6 G; I o_Sram_add<={16{1'b0}};
0 l7 P7 o, ?. z0 ]6 ^: M end
& V9 `2 q$ _4 ~6 K0 [ a* w7 J* o7 a else begin# M7 d8 e- s4 o' x/ g$ \# k3 a
case(SRAM_STATE)
1 `; v+ ?9 q+ N* E/ C `SRAM_IDLE:begin4 { }+ I& i2 n2 |
o_Sram_CE_n<=1;
^2 Y0 F( q6 A+ x o_Sram_WE_n<=1;( p0 E i: Z' o. M# Y6 D
o_Sram_OE_n<=1;
A2 g! t7 z' F8 K. d: p/ c6 }; f u o_Sram_UB_n<=1;* T' v& Z* I8 s. S( }# Y
o_Sram_LB_n<=1; 4 R9 M9 D) l: w# t
o_Sram_add<=Sys_ADDR; ; _2 ~3 I: h1 s! Q* W6 L t
end x+ H6 g9 O4 V: w
`SRAM_WRITE:begin $ R; c' f" x t5 e9 m
o_Sram_CE_n<=0;* J' h1 L/ P0 e9 g3 t: V
o_Sram_WE_n<=0;" i* h5 l- |6 q9 s# i
o_Sram_OE_n<=1;
: U- ]) r$ n: B8 @4 F o_Sram_UB_n<=0;/ D3 A P1 u$ {, k( e9 w
o_Sram_LB_n<=0;
5 H4 a8 E& T6 ?( x; } o_Sram_add<=Sys_ADDR; ' W: o' @9 o8 T, j! m
end
% t! U. Z' o' G' Y `SRAM_READ,5 J9 E8 v/ {3 U" c5 W. o% r
`SRAM_READ_KEEP:begin
* c$ _2 w2 U0 ?# h1 `7 F o_Sram_CE_n<=0;
& V) ]5 w; B/ T) s/ r, B4 q# i o_Sram_WE_n<=1;9 @4 N- U" N1 u c( G* ~5 Z0 V
o_Sram_OE_n<=0;) K8 K) v5 L; ?# [4 W1 ]& l
o_Sram_UB_n<=0;/ \1 l' e, n5 g% s& G$ ?: S
o_Sram_LB_n<=0;3 V0 B% X7 C1 [/ J6 ]
o_Sram_add<=Sys_ADDR;, b3 x% X7 P5 i3 a4 I; d
end
X4 H2 u0 X L0 D default:begin
1 A* e* R& @8 j o_Sram_CE_n<=1;
* Y2 `1 G7 P; H- O2 Y! K o_Sram_WE_n<=1;) D) L: {. h( N0 n- u' z8 f
o_Sram_OE_n<=1;4 g& L6 m& ^; j# j- G3 h
o_Sram_UB_n<=1;9 L* _1 [3 N0 f- z, b- U" _
o_Sram_LB_n<=1;4 J& P2 q! F$ ]# Q) S; m6 `3 I. m
o_Sram_add<=Sys_ADDR;8 n( d6 w5 v8 H/ ~& P
end
- P( j0 D6 q- G! E endcase
. d! B2 a6 q' Y+ d9 A' s, i end ----------------------------------------------------------------------------------------- |