EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
下载到开发板上遇到一个与仿真不同的问题:波形不一致!
0 T# ]: B# `* E; R8 M/ w `/ I+ {. k% B4 A% F% u
我用嵌入式分析仪抓数据发现波形与我仿真时的波形不一致
a7 P: [# l1 ?7 M% o3 {比较奇怪
! R2 w2 B5 ^1 l0 O/ L' m; H9 X4 }. H7 K6 p% c9 }- S
我的设计思路是通过串口接受数据: o8 D0 G4 [# r
然后把接收的数据写入sram器件里面去
! Y. R0 s+ s' K
& O @) Z2 v& g4 N! G2 d2 C. p但发现那个控制信号与仿真时不一致(见附图所示)
5 R, |, j9 J6 U9 | Q7 o+ H/ \) l, N/ p4 m
6 f$ F( I( R) ^$ ]5 p
跟sram接口相关的代码如下:
* v' y# Z) m+ d" Q& \: _! N# W# \% ?1 P5 q! A. p
----------------------------------------------------------------------------------------- always @(posedge i_Clock or negedge i_Reset_n)) S- r/ m) \; K) E
if(~i_Reset_n)begin 2 T6 h' y( d3 D" M" P
SRAM_STATE<=`SRAM_IDLE;5 u8 B5 M1 ?8 G" z- K
Write_ack<=0;
! {0 W; h* U/ J: _9 } Read_ack<=0;) y( W& J1 T0 i( ?
end4 l; D( z4 K2 v1 X J" o
else begin
* J% E/ n2 W8 I4 i G Write_ack<=0;
8 p: P8 g- Y; R Read_ack<=0;( a$ s8 z7 n4 ^ i+ }8 Y
case (SRAM_STATE)3 O2 n; D# m( r" k
`SRAM_IDLE:begin- e$ H- g3 F9 N% |6 {
Write_ack<=0;
. Y. E, z, E( t: b2 O Read_ack<=0;, y5 {$ X4 `' v" d
case({Write_req,Read_req})( `. w/ H4 v. g0 w( F7 A4 m4 X
2'b10:begin/ a# D: M5 g" S9 q2 O: [- e0 ?
SRAM_STATE<=`SRAM_WRITE;
$ l; q' E+ S6 `2 C9 L. E Write_ack<=1;4 r4 o0 V* T0 F$ M6 w
end& ~# y( N# f( ^0 H! I( ]
2'b01:begin : b# B0 j, a+ c8 I; o) h" n
SRAM_STATE<=`SRAM_READ; ; P; u9 T( K8 h/ n: a9 F; B
end
$ y* N7 A( n) J' f* Y default:SRAM_STATE<=`SRAM_IDLE;, B. p( a( G: G- J1 @) _4 W
endcase
( H7 Q0 P1 W4 _% G4 ` end
5 U$ N6 x5 D, F# s% p& n' { `SRAM_WRITE:begin / |- n X9 H; f0 P. q* z
SRAM_STATE<=`SRAM_IDLE;
. T" ~% |6 a" M6 m end
; S: m- H1 Y9 p( x `SRAM_READ:begin
8 y; J* c* z9 U$ k- k SRAM_STATE<=`SRAM_READ_KEEP;" L6 S. h0 C' g8 x
end( g: p: r: R( D& g! r( a
`SRAM_READ_KEEP:begin 1 e6 t0 U% ]$ p3 C) g3 Z
SRAM_STATE<=`SRAM_IDLE;
. m' d& t1 \1 z2 n/ b, J0 `- w Read_ack<=1;
' J# ^2 X8 h) ~- e- P end9 F, ^+ u) u$ x* ^3 e' }
default:begin
" S- B+ R2 y: M5 T SRAM_STATE<=`SRAM_IDLE;
5 e5 j! l8 [% z! C& Z8 s: i0 ^ Write_ack<=0;1 [$ X! z2 J1 V R7 u
Read_ack<=0;& l7 Y1 o, s' X4 j# C2 B
end- q; R* r. h+ t, w8 N( E
endcase
( W! N" R* |1 u& B* a end ----------------------------------------------------------------------------------------- assign io_Sram_data =(o_Sram_OE_n) ? Sys_dataout:{16{1'bz}}; 7 m' E- g# J+ ~& t
assign Sys_datain = io_Sram_data;
+ @" Y4 M' o( w. e: h2 @6 H0 [ //
/ _5 [% c; [9 ~* N always @(posedge i_Clock or negedge i_Reset_n)
. |& t) g0 q; g6 q" C9 z if(~i_Reset_n)begin
+ W- f+ _2 M. O* u$ C, m% D o_Sram_CE_n<=1;
0 A; b' N5 V5 H1 J. \' c" Y! E. \4 O- d o_Sram_WE_n<=1;
: S. W" h8 y; s o_Sram_OE_n<=1;
6 ?8 P4 ]3 x# n T) ` | o_Sram_UB_n<=1;& Y5 U" U5 h8 L) o0 F
o_Sram_LB_n<=1; * z: ~- Q" a! }/ g
o_Sram_add<={16{1'b0}};( q8 M. b6 a" g; U" `; J& c* J
end
& g$ S, G, Q4 R/ x- F0 j else begin$ ~3 x; _" d4 l4 F `/ \
case(SRAM_STATE)
! n/ J1 [9 a A8 J# i' S6 f1 Q `SRAM_IDLE:begin
) u% v/ d" o9 |) H* s$ O o_Sram_CE_n<=1;! d# @% \1 N) q1 z) J
o_Sram_WE_n<=1;1 A& N8 z' X/ j
o_Sram_OE_n<=1;
' @5 S+ [, F. _- x o_Sram_UB_n<=1;
6 |4 Z5 ~, d6 e: C- [( O, k2 s7 n o_Sram_LB_n<=1;
+ ]/ u6 w& Y, F! v: _ o_Sram_add<=Sys_ADDR; + P! u; Z: e! B# ~
end U* z. v+ w0 O/ O, c
`SRAM_WRITE:begin
9 o; N2 Q* k& A! {( S# [5 @* ? o_Sram_CE_n<=0;( B/ R- L3 l( x4 ^5 @; R- y
o_Sram_WE_n<=0;
0 F' O+ @) V( e2 ]- s' ] o_Sram_OE_n<=1;- I; Z4 x3 H4 H0 t% v: ]8 E
o_Sram_UB_n<=0;
2 t/ I9 I. \6 F% K& N- l3 Y o_Sram_LB_n<=0;
+ C1 o( u3 F I$ y3 W/ S o_Sram_add<=Sys_ADDR; 8 u7 g! J/ d( D0 H. C @" F# B
end }) s4 ]1 N* `% W T
`SRAM_READ,
! d$ K* h: h: t6 p! [ `SRAM_READ_KEEP:begin
' |& k& N0 k1 g! T8 Z- p6 m o_Sram_CE_n<=0;
% L+ P _! F) m0 c8 i% @. | o_Sram_WE_n<=1;6 S& N& I" p) E0 s" N
o_Sram_OE_n<=0;# [1 F* b8 y0 X
o_Sram_UB_n<=0;$ M' q( x& S4 g% c. k7 Z
o_Sram_LB_n<=0;' V' g1 x( p" m8 v" r# d
o_Sram_add<=Sys_ADDR;
8 i& b. s2 P# Y9 s end' w6 u, E) E1 c
default:begin
2 ^$ H. [0 z4 c7 F! H$ p o_Sram_CE_n<=1;
( R5 [# }$ u& N- n o_Sram_WE_n<=1;+ `8 }' u# p7 C5 B
o_Sram_OE_n<=1;" l {$ e' ?$ O; O" i3 ]6 J% j% L
o_Sram_UB_n<=1;9 q1 u3 m' H8 i, L6 t3 J+ h
o_Sram_LB_n<=1;6 |- s* T$ | M
o_Sram_add<=Sys_ADDR;
- @9 t3 f% Q/ M. b1 m end
- ], A, C _5 D8 X8 I1 I endcase
0 I" e7 y9 o" U' u end ----------------------------------------------------------------------------------------- |