EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
下载到开发板上遇到一个与仿真不同的问题:波形不一致!
. h c, G! l! h w d+ E
* Z8 i N( i8 u我用嵌入式分析仪抓数据发现波形与我仿真时的波形不一致! L& m* i- U9 m! d! h) Y1 u
比较奇怪
5 R: |5 {# o- u' S/ \4 s$ `: C9 k6 J1 x5 j) T: z, x
我的设计思路是通过串口接受数据
( E8 }& O5 [6 Y5 ~然后把接收的数据写入sram器件里面去0 h' R: l/ c) s
" i- E0 A+ ^; X+ g4 T( t9 U. M
但发现那个控制信号与仿真时不一致(见附图所示)
6 K& v+ B& D, `) U- x
/ Y r+ A9 b- G I1 _
* G$ P4 r. Q; Y- G跟sram接口相关的代码如下:: ?0 s' q7 b$ d6 Y/ V8 @
8 c+ e6 R0 R5 \ R1 w----------------------------------------------------------------------------------------- always @(posedge i_Clock or negedge i_Reset_n)( m/ R" x" P; S
if(~i_Reset_n)begin
& H: C* j7 s4 ]( |3 P5 @ SRAM_STATE<=`SRAM_IDLE;
( c: c+ M$ c" c; A; @6 k: F Write_ack<=0;! @' e! h/ A R" q, c5 `3 \
Read_ack<=0;% v4 G7 y) W# L, A! M( s
end" R/ s0 }5 K. Y$ \
else begin* T) n/ [) ?/ L/ j
Write_ack<=0;
Z& b1 I7 d1 \, v Read_ack<=0; R0 `7 J+ k, R$ V5 {& U
case (SRAM_STATE)- I+ @7 S7 g3 j1 i5 r* l+ ~% ]
`SRAM_IDLE:begin
$ Z2 `' o* Z. u Write_ack<=0;1 E) |0 ~" D" o; X8 C8 M! D+ O
Read_ack<=0;
* r8 J! p! N9 G l( J case({Write_req,Read_req})* l8 w8 X. E) Q |
2'b10:begin
9 u& a) ?4 l4 K$ f SRAM_STATE<=`SRAM_WRITE;
: S- V9 y" I: M' l Write_ack<=1;& \) R3 L; L f+ o
end6 Y& f7 ?6 R% H8 m6 o" F
2'b01:begin $ U `6 }6 T& j+ l8 K
SRAM_STATE<=`SRAM_READ;
5 w' @; Y/ ]5 U0 Y- R1 f* f end
7 o+ d' T' p; L" Y default:SRAM_STATE<=`SRAM_IDLE;
0 x- K( g% [# Y endcase/ B+ L1 n9 }% E* ~8 M
end
' B$ U |! l1 \) k `SRAM_WRITE:begin 8 n' b. o! l% l: ?
SRAM_STATE<=`SRAM_IDLE; - L3 N/ }( ?/ e) L& `& C s* R
end
3 u( b" q# [" A% X7 t `SRAM_READ:begin 0 S" A* {+ u( k0 ]+ H. q$ @/ j
SRAM_STATE<=`SRAM_READ_KEEP;
S9 K2 c' |& K8 w; z2 E5 i end' h0 \" w0 X. q* O3 B1 S2 E% }" i
`SRAM_READ_KEEP:begin . g5 F1 c: ^$ u4 n' o
SRAM_STATE<=`SRAM_IDLE;
. r$ _! a: w6 n& t* J* C Read_ack<=1;
7 y1 w4 [" _7 m8 U& A; ]) r! w end" C0 v2 N9 `* e, }( w
default:begin |3 o; W5 Y! e+ Q' O7 b- s4 [
SRAM_STATE<=`SRAM_IDLE;: u8 ?: s1 I3 g1 M. u* v, b" m+ x R' a3 _
Write_ack<=0;% B3 W# n @- M3 p' ~
Read_ack<=0;
+ w7 z4 @1 b6 A( z end
! ?( |$ p* z4 r& m' f+ p" I- t endcase% @7 p0 q0 h1 i. n$ t# }( d
end ----------------------------------------------------------------------------------------- assign io_Sram_data =(o_Sram_OE_n) ? Sys_dataout:{16{1'bz}}; 5 `8 v# Y- D) K; w$ i
assign Sys_datain = io_Sram_data;
1 H$ h g ]* |- k& ?4 C. w //
/ \) v, ?" b, g& O. v always @(posedge i_Clock or negedge i_Reset_n)2 F7 r, r1 j' e
if(~i_Reset_n)begin
' `; U+ P3 x8 V% e o_Sram_CE_n<=1;$ ^% [% Q) ^! v! s' P! O) ~
o_Sram_WE_n<=1;% _) a8 K- |. E0 I" @- n& F. o
o_Sram_OE_n<=1;8 ~, j- p# K9 o! r- M: J
o_Sram_UB_n<=1;7 Z& R: o3 G1 y) g* ]1 z2 c/ M% L L
o_Sram_LB_n<=1;
! h) g- `% L& c8 m' _) s8 b o_Sram_add<={16{1'b0}};
$ Z1 ^1 w! S9 M, g8 W6 u, g end+ g: H% W. V& D9 h- d" G! c
else begin: n; b/ I8 e4 f2 a% v9 v& F
case(SRAM_STATE)1 T0 D5 L; v/ Z, @& M/ T
`SRAM_IDLE:begin
+ B$ j! Z1 K- r% f8 Z" T o_Sram_CE_n<=1;- ]& a6 n( |, {( ~5 J
o_Sram_WE_n<=1;
% I+ Q+ X/ q- J o_Sram_OE_n<=1;# E2 D' Z# X H* Y
o_Sram_UB_n<=1;, P' q% V. s8 i6 s5 P7 T x
o_Sram_LB_n<=1;
% P0 G+ O: F8 b+ H" L o_Sram_add<=Sys_ADDR; 1 H' E+ C2 E( K; {( I( u7 f
end
* }8 q c5 J( P+ j0 O `SRAM_WRITE:begin 4 P: l* K [3 |. P) ]
o_Sram_CE_n<=0;
* T. Y! Q5 N9 @* c' n# }! f o_Sram_WE_n<=0;6 d: \" C% J! Y7 U7 }$ \1 ^
o_Sram_OE_n<=1;
6 _* z! B- `8 b1 |) r2 V o_Sram_UB_n<=0;% h1 T7 K' N3 d0 n
o_Sram_LB_n<=0;
; n' ^6 e3 J% x( y; ^3 ~ o_Sram_add<=Sys_ADDR; ( o5 ~5 w. U1 G8 S4 D3 A' L! h0 C
end
/ Y/ ?( F" t; k `SRAM_READ,
+ L7 A- j6 q' V# { `SRAM_READ_KEEP:begin
8 a* I, q# }; n6 f+ R o_Sram_CE_n<=0;
7 \/ K) C# `3 Z0 ]5 w$ H o_Sram_WE_n<=1;
. i& j( M3 ~2 z+ F) F$ l o_Sram_OE_n<=0;$ \- V3 n& Y2 a& {" J" z
o_Sram_UB_n<=0;
5 \( u8 R. t1 A L o_Sram_LB_n<=0;
' W: w9 Z3 [( E7 O$ G8 r o_Sram_add<=Sys_ADDR;+ K' ?6 ~5 T/ x6 p' H
end' @/ M- M1 @7 J1 @+ D0 m' I
default:begin
! F0 w8 B) Y0 `0 ` o_Sram_CE_n<=1;
2 J8 |6 y5 P( i. M& l) r; D0 ] o_Sram_WE_n<=1;
1 d) y1 V7 ^) ?$ a, O* M6 L3 }) X o_Sram_OE_n<=1;0 Y8 z* |0 Z: e' U3 M- y3 k
o_Sram_UB_n<=1;: W: c7 y0 l3 H
o_Sram_LB_n<=1;
5 r5 S5 E$ p2 I o_Sram_add<=Sys_ADDR;
8 d7 h5 P2 h" ~4 { end - A! T6 A5 H1 Q6 E) c1 `% M
endcase; a9 E) L' L. n0 |" q L
end ----------------------------------------------------------------------------------------- |