EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
下载到开发板上遇到一个与仿真不同的问题:波形不一致!8 d# N6 Q' Q3 S( M9 Q
+ [: L) N) a# m3 G3 X0 N6 V我用嵌入式分析仪抓数据发现波形与我仿真时的波形不一致 w$ A) x! [6 C ~7 v
比较奇怪
7 a$ o2 w( Z1 W' K- _' ]& k& E# ?9 j& S1 v8 ]' ?( _ J7 H$ y7 ~
我的设计思路是通过串口接受数据
5 h1 c' v4 x( P) g+ V$ t$ v! X; ]; q然后把接收的数据写入sram器件里面去
1 @4 P/ O: @8 [# V0 G2 S" [; D* r3 ?
( ]# S* k1 p% g7 B1 j- z2 C但发现那个控制信号与仿真时不一致(见附图所示)
% w2 Z" ~2 _& E$ x& j
" A- j# Q5 N) J3 ?: j9 j3 k0 F1 h4 n6 s' M) L) D: q
跟sram接口相关的代码如下:
, l2 d) ~" x1 b# ~: |* ?% K" s1 ~$ \4 I
# n( |6 R+ A6 w w, h----------------------------------------------------------------------------------------- always @(posedge i_Clock or negedge i_Reset_n)
9 W D8 T$ b/ @ S! k) [7 [ if(~i_Reset_n)begin
: y' z$ a, B7 \6 ^ SRAM_STATE<=`SRAM_IDLE;5 o6 K8 }" c- y! {- c1 E
Write_ack<=0;
% l; G( s/ A% p Read_ack<=0;4 E" c7 P3 U5 r' X8 e
end
( w/ T9 T$ g8 s' I else begin( q$ Y& i4 o, {
Write_ack<=0; & F( A) I: ~ ?6 y* O! s
Read_ack<=0;. [' H, K0 e% I+ Z F: J9 z
case (SRAM_STATE)& A- u [. Y& L
`SRAM_IDLE:begin0 P( B) M+ ?; K' ~
Write_ack<=0;% L* t/ i4 a {
Read_ack<=0;0 _$ {! v; l1 ~8 O$ ~8 K( X1 L- q
case({Write_req,Read_req})/ u; Z! b) J, m0 j# {* ]( \+ v
2'b10:begin
: v$ b: j+ i$ o2 m: H5 [8 V7 h SRAM_STATE<=`SRAM_WRITE; - ?3 W! B0 m& {- W( k, t
Write_ack<=1;
/ ^0 m3 O% t: Q! t end
4 i/ v9 u; T6 V9 X% e; r9 ] 2'b01:begin 7 V4 I. `5 [. U4 Q8 Y3 l
SRAM_STATE<=`SRAM_READ; * G. r8 C) l* I' A4 x
end x- a# u3 u2 K+ L
default:SRAM_STATE<=`SRAM_IDLE;
- U/ f4 p$ j7 X8 q endcase1 { b: \6 ^# t0 y' Y* v2 t. J! x- u
end/ t& r ^$ {$ }4 k
`SRAM_WRITE:begin + m \) {$ g0 w6 T; s$ R
SRAM_STATE<=`SRAM_IDLE;
0 ^8 D" b7 V7 ` end
4 f3 W: y- H2 d `SRAM_READ:begin * R) T/ I4 `4 M0 f7 P
SRAM_STATE<=`SRAM_READ_KEEP;
0 M# r3 z. q, J$ a6 G end, F- Y. B' B4 P4 N& U$ [, G
`SRAM_READ_KEEP:begin
' t6 Z. }& v* P3 ~ SRAM_STATE<=`SRAM_IDLE;
. v* b2 Q+ O! Q3 m# q* y Read_ack<=1; & {2 m4 y/ g" W3 A
end
4 K( m# T; T3 S1 E4 z default:begin
+ y( N! B1 a* j SRAM_STATE<=`SRAM_IDLE;
0 e$ p+ K. l! e* X* h5 q Write_ack<=0;
5 C" H7 [( ] ?7 T4 c% \" Z+ h) J( x Read_ack<=0;
/ ~4 j7 @$ E0 n+ X end$ A0 m- Y6 M0 p3 e9 `& l2 P7 S
endcase
7 [" z% W- o3 `' | end ----------------------------------------------------------------------------------------- assign io_Sram_data =(o_Sram_OE_n) ? Sys_dataout:{16{1'bz}}; 4 Q+ |5 t: }# F- f% ~- [+ I+ L
assign Sys_datain = io_Sram_data;
$ k/ J3 o7 x( G" o5 } C9 t //5 x# Q$ J1 d: o
always @(posedge i_Clock or negedge i_Reset_n)2 D+ e% P4 w: }, B+ H4 h' ?
if(~i_Reset_n)begin' _+ a, @5 ^4 |0 p3 T+ g
o_Sram_CE_n<=1;
6 c: x7 p; P! F) V o_Sram_WE_n<=1;8 u. m7 {" O9 H
o_Sram_OE_n<=1;
( n0 C* M+ [* m0 S- h o_Sram_UB_n<=1;# e$ |* [2 A1 N6 \2 A$ e
o_Sram_LB_n<=1;
1 n: @+ Q: C; n Y7 D4 w o_Sram_add<={16{1'b0}};
* V9 O c0 W7 L3 @2 u2 z end( I% a! i- o# {, d
else begin
, O) j9 t4 w. r1 H$ n* m! c6 z case(SRAM_STATE)
/ ]- B) \& |5 W" {5 b: w! ^ `SRAM_IDLE:begin- O& o8 ?! l+ Y2 @1 i; X6 h& T
o_Sram_CE_n<=1;- z' E9 F- s; N& l
o_Sram_WE_n<=1;/ U+ f( D4 M$ F2 c: y* k4 [- ^5 e4 D- X
o_Sram_OE_n<=1;
2 z$ g% }5 B+ @- y4 K, w# u o_Sram_UB_n<=1;7 w: g0 O9 J/ u
o_Sram_LB_n<=1;
) H7 L0 k9 o2 J3 q- @ o_Sram_add<=Sys_ADDR; 6 H% d3 O) I9 A' \: X$ i R
end
& x9 O% K$ }# r3 H D: z `SRAM_WRITE:begin 0 E. Y0 j ~2 ^
o_Sram_CE_n<=0;
9 @0 i/ A' h8 I: ]6 n o_Sram_WE_n<=0;' e a! D. l; b, E0 t& a: b
o_Sram_OE_n<=1;- e1 U9 Q; R3 ]- F6 t8 l A
o_Sram_UB_n<=0;9 I$ U; x/ t% \; K
o_Sram_LB_n<=0;
9 M/ v1 r) ^1 t0 ^$ A* } o_Sram_add<=Sys_ADDR;
. t B8 j* v5 y end
8 n7 ~$ R* A7 O6 a2 \ `SRAM_READ,% R u; ~, t/ O% _; B# Z6 s7 [
`SRAM_READ_KEEP:begin
! D- |" F. Y- h: W! C( q; d1 B) [ o_Sram_CE_n<=0;
) J8 N4 v/ A1 ]0 ]9 t" D6 N E o_Sram_WE_n<=1;
7 t9 p$ z* E' y% P" [# B8 [ o_Sram_OE_n<=0;, d% n6 X4 v, b$ q, Y4 B( h
o_Sram_UB_n<=0;) l, H9 r8 r" x/ ?; y9 L
o_Sram_LB_n<=0;+ {) F- Z, Q3 f3 O/ \1 L
o_Sram_add<=Sys_ADDR;
8 l' F- z' q+ u& S7 G end
; d7 J" w2 C( ?' x" x default:begin 2 d! H* ]4 A. ~! z; [% d+ Z4 V
o_Sram_CE_n<=1;
% X& g( I# A9 u2 T. W o_Sram_WE_n<=1;* |0 [# S/ P' E1 {, e" J% [9 Z# J
o_Sram_OE_n<=1;3 {! \6 l6 E i9 J1 G* V8 |( U
o_Sram_UB_n<=1;6 P' a8 q" M$ Z; [' H
o_Sram_LB_n<=1;( T5 M0 Z# F& T; q( U* z% k9 P
o_Sram_add<=Sys_ADDR;
$ | [; _" e$ U4 J end
8 M; _4 L& A. x* K, i endcase
% {. l7 R$ a% s8 Q' k- C) { end ----------------------------------------------------------------------------------------- |