EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
下载到开发板上遇到一个与仿真不同的问题:波形不一致!' \. ?) } G, T" Y
5 x; M8 S5 G$ G Y/ i9 d9 Q
我用嵌入式分析仪抓数据发现波形与我仿真时的波形不一致8 R& R' ]$ K7 L# K) W
比较奇怪0 `% |0 m0 d0 t9 I$ Z( p, |
( k# U# S" ` m: P( B: l
我的设计思路是通过串口接受数据
( C- Z) }/ F! A" f/ g+ e然后把接收的数据写入sram器件里面去
; T. y7 G7 G( ^2 D" B
5 l( o, M* }0 R; g7 C6 s/ h但发现那个控制信号与仿真时不一致(见附图所示)
4 s$ H3 a. s2 L: }/ m4 q4 L
7 n. A! C+ `& T3 [
# E3 t( A* M. T: k4 x跟sram接口相关的代码如下:1 _2 B7 c; t- ~+ d# g
# ^3 \( ^( l2 @* S; _
----------------------------------------------------------------------------------------- always @(posedge i_Clock or negedge i_Reset_n)* x6 Z8 _: p, G- W" }" E
if(~i_Reset_n)begin & }: x8 r9 }$ I, [
SRAM_STATE<=`SRAM_IDLE;
. g6 f d: d6 w0 w* q. ^ Write_ack<=0;
1 _$ _2 z; s2 m3 n Read_ack<=0;
/ _+ S2 |# r$ z* z) w, U end; U) C% U) ?' `$ h& s
else begin: i0 r- c! m8 \" H
Write_ack<=0;
, G5 y( ]6 @/ C8 E* P. s. }- P Read_ack<=0;
* w0 M9 G0 \3 k. n9 o* z" F case (SRAM_STATE)! `& ?& @- b* q& @3 L3 m" @
`SRAM_IDLE:begin6 m$ E2 x5 Y* n* y
Write_ack<=0;
- ?) t8 s1 `. c1 B& K9 w Read_ack<=0;
! L6 g; {/ |5 q1 | case({Write_req,Read_req})
2 \3 Z8 P5 e$ T/ p 2'b10:begin' R: m3 V U( f0 X0 |3 @) U& M g
SRAM_STATE<=`SRAM_WRITE; # N* I( |4 _& E
Write_ack<=1;) c& L b) U; ^; n, O
end6 X) _: t" k d; W0 K9 R
2'b01:begin
# U( v5 ~: h+ [9 Z9 z: i4 u3 t, o SRAM_STATE<=`SRAM_READ;
2 J5 s* H: z( X$ I3 I$ h9 X, |% W end8 S, u$ K: p7 o! L- q: v
default:SRAM_STATE<=`SRAM_IDLE;
' K+ [3 R: ]3 M) t1 Q' t endcase
$ K; _8 ]8 Q8 ^: M3 r( I q/ S end
$ I O5 {' q2 ?4 x& \/ G7 {6 E/ n `SRAM_WRITE:begin ( u! F j* ?: f$ x
SRAM_STATE<=`SRAM_IDLE; 0 I* X. P( o' k9 r+ u3 V e
end
9 D1 @8 @ V( w' }! O `SRAM_READ:begin
* @6 H9 B: c8 [0 f6 L5 N SRAM_STATE<=`SRAM_READ_KEEP;
" [2 U( R+ ~, K* m7 `/ n; T) S end
0 {( S8 A- ^, P4 Y `SRAM_READ_KEEP:begin
! o8 B0 j% H+ e2 x6 ?8 y SRAM_STATE<=`SRAM_IDLE;
. E' N2 V0 ]7 B* D: @- J% h! k Read_ack<=1;
- m6 s ?3 M& ] o" f0 E' a) X end* }" P/ K7 T( B: @! T/ l( ?; T
default:begin
: j$ Y' g* w; f7 J SRAM_STATE<=`SRAM_IDLE;
& q( w! U# c! S5 K' z; a Write_ack<=0;
* |5 Z% {% X( d$ S* E4 [6 U Read_ack<=0;" n9 t; Q7 X3 `3 T5 s% R
end! \. Y5 a& T" v& y- p+ |* O* l- `
endcase2 \% [' r+ u$ Z% w6 p( v
end ----------------------------------------------------------------------------------------- assign io_Sram_data =(o_Sram_OE_n) ? Sys_dataout:{16{1'bz}};
* G( Z! f k* l" K assign Sys_datain = io_Sram_data;
2 S# P& G/ h' n" O. `* { //- J( }4 K& G$ A* b, c: `
always @(posedge i_Clock or negedge i_Reset_n)8 W/ C# t- H* g9 X* T" N- R9 W! L
if(~i_Reset_n)begin
5 V& G, i2 e& c* L o_Sram_CE_n<=1;
6 k9 O, u- n% A+ ~8 i5 K9 E o_Sram_WE_n<=1;; x2 N) m; `% e' ?9 V/ @
o_Sram_OE_n<=1;
; Z6 s( e- l9 A5 B! |/ w3 I, R o_Sram_UB_n<=1;
a- {* y% ]. b W2 j* ?1 ~& j" g o_Sram_LB_n<=1; ) T# P$ l# e& M
o_Sram_add<={16{1'b0}};
: ]7 m: L6 y+ d: C' F end
1 _6 k! c* G9 x2 `6 c9 s- r else begin8 c) r' y, K4 N: p) V# }, g# q
case(SRAM_STATE)2 |' U0 Z8 M- ~' u! m. t
`SRAM_IDLE:begin9 L5 D) E$ _2 s& k
o_Sram_CE_n<=1;5 R. q% q* `% |! Z- a2 @
o_Sram_WE_n<=1;
. ^4 N( E9 s+ N! `4 T o_Sram_OE_n<=1;" |0 c% y) H ^4 V2 y! T* h
o_Sram_UB_n<=1;* f/ P" r; g. N
o_Sram_LB_n<=1; ; ^2 g5 w& x6 U5 Q
o_Sram_add<=Sys_ADDR; . ^. A/ d8 y' {% D$ L% ]
end1 Y% I" \- {. m( Y% g" v
`SRAM_WRITE:begin
' w6 x9 T! W* s; h/ l- W o_Sram_CE_n<=0;
S4 y+ k( U. K6 K o_Sram_WE_n<=0;# I1 _1 c! {1 b4 d8 {. {) o8 k; f
o_Sram_OE_n<=1;
2 D. k- d# M) B2 G o_Sram_UB_n<=0;/ [: L1 w5 H9 s/ }
o_Sram_LB_n<=0; 4 y6 s* \1 w1 G3 Z: Y( L' _
o_Sram_add<=Sys_ADDR; 5 y7 C. F* J" l$ i! Z
end
4 ^1 l. v+ k1 `6 Q1 x5 H4 J) a `SRAM_READ,) y) \% j2 b+ u. C4 }
`SRAM_READ_KEEP:begin
6 Y% D2 p! b [5 u; N4 z o_Sram_CE_n<=0;
' E/ b/ V; O" z4 A o_Sram_WE_n<=1;
: m( {+ D& R E$ Y, y2 U o_Sram_OE_n<=0;! _$ t9 S2 Q" h$ `; J
o_Sram_UB_n<=0;
2 h, F3 n+ g% C, E o_Sram_LB_n<=0;" P! W2 v3 o, n3 d
o_Sram_add<=Sys_ADDR;
3 g) }. n: [0 C7 T; P# X( Q @ end
( e5 l. n9 k% y5 b; }# h& Q default:begin
/ ? @$ A# u6 B o_Sram_CE_n<=1;
: j! S% B6 o8 S: ] o_Sram_WE_n<=1;
" D; W% F, {+ p) q9 \3 o. h, p9 Q& d o_Sram_OE_n<=1;1 T9 v* k1 h2 V9 A
o_Sram_UB_n<=1;
9 z! f, [( ]: z% F9 J o_Sram_LB_n<=1;
, ]* @& b0 I! i1 {3 H" ~9 d' G; g o_Sram_add<=Sys_ADDR;
8 C4 x5 }: z. l" s0 @ s end
0 ]' h. C% V) v. O5 u endcase
- h. Y; T2 J! `1 G7 J8 z4 Z end ----------------------------------------------------------------------------------------- |