EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
下载到开发板上遇到一个与仿真不同的问题:波形不一致!
+ }- W1 o3 n7 Z& J {
9 |6 [# E/ @0 E3 q) t# z+ i, ]- k我用嵌入式分析仪抓数据发现波形与我仿真时的波形不一致: G0 s$ I4 N9 i+ l% q
比较奇怪
3 J1 L: T' g! q v! |
1 Z7 ^5 D% n# O4 A3 i- t6 A0 {我的设计思路是通过串口接受数据
6 o+ n1 @- |5 O7 \# t然后把接收的数据写入sram器件里面去* y3 ^( O: G. B
3 n* f; y, U) k9 f" h但发现那个控制信号与仿真时不一致(见附图所示)* M0 ~# b5 j3 x. u E
" X; h) d0 t9 D9 p* {
; A5 g, J; H1 \- z( L) d跟sram接口相关的代码如下:
) x, z _5 t' F }$ @: w5 x
/ p& n4 w3 ~$ [/ S, j% N----------------------------------------------------------------------------------------- always @(posedge i_Clock or negedge i_Reset_n): C4 q+ ]) d% s+ [
if(~i_Reset_n)begin
. p" Z6 R1 p+ T( c1 W SRAM_STATE<=`SRAM_IDLE;
4 ~7 M5 y. R3 a* G Write_ack<=0;- ?0 f6 |" S5 \8 T+ ~" q5 Y1 V
Read_ack<=0;
0 q$ ?: O ]" Q, L" S' R end
9 q) w; s0 h1 B8 X2 q else begin
1 u# K$ t/ @$ g( q. } Write_ack<=0; 7 Y) s1 g, p) n* X) C! ?3 Y% ?
Read_ack<=0;
! [0 u, G( J5 y9 M5 Z5 c2 O$ T case (SRAM_STATE)4 T Q- {/ ~* e7 @: X! Y4 f
`SRAM_IDLE:begin/ G. u, V0 R3 B8 l# ]
Write_ack<=0;+ |5 B8 y0 N ~; l
Read_ack<=0;' i/ M( V( F! j. J# N' c6 D5 X
case({Write_req,Read_req})0 M. L* ^( l( v
2'b10:begin
6 T: g9 f3 ?) I" @% i. N SRAM_STATE<=`SRAM_WRITE;
0 @# B' @/ M2 U Write_ack<=1;6 g- O. s+ k: n! ~
end
0 ~& ` U: D# o, A y9 ~% l; ~ 2'b01:begin
1 l" }& k: X% G ~+ C; } SRAM_STATE<=`SRAM_READ;
! ~' R$ q% T( U( U6 v$ g end7 h4 _$ t2 K6 ?6 n( X/ c
default:SRAM_STATE<=`SRAM_IDLE;+ }& b/ @3 c) t3 W" r
endcase
* \) f% \ `/ z/ R end& e; ^' k _% J! \! n& {
`SRAM_WRITE:begin - P$ O& M' f; t: d
SRAM_STATE<=`SRAM_IDLE;
. _& G; |5 L! y; ]# O5 ], A end& [9 g7 C/ l. j s
`SRAM_READ:begin 1 I s8 R1 K/ w1 r
SRAM_STATE<=`SRAM_READ_KEEP;
. t$ b$ Z9 d& I6 I! J# Z. k end
$ ]2 v0 s; b! [ `SRAM_READ_KEEP:begin
8 I- G. x4 x5 J4 I- `* v: ?* i SRAM_STATE<=`SRAM_IDLE; / T! V! l3 u' q
Read_ack<=1;
4 U/ K; @6 ?- S! _4 ` end
& G( C0 N, J! ^2 C" ?2 w9 q default:begin 0 E5 Z) c- y) R8 e& l8 D+ t
SRAM_STATE<=`SRAM_IDLE;0 ?- I% O A/ T) _( q, X
Write_ack<=0;( e+ h( t. B& D. j1 B
Read_ack<=0;
1 v' w; x, Y* x2 l; x' u9 t2 e end( l/ K; }7 {* H5 D' v, R+ T
endcase& X! L0 @1 @) _- K% o/ ~6 \# V2 j! t: W
end ----------------------------------------------------------------------------------------- assign io_Sram_data =(o_Sram_OE_n) ? Sys_dataout:{16{1'bz}}; : v, T# |: P: t; Y0 z# s: I
assign Sys_datain = io_Sram_data;2 d( T0 a4 w6 N {$ C. b
//
0 F6 L/ l* v! [/ v, d8 o8 _ always @(posedge i_Clock or negedge i_Reset_n)
4 P9 F( J) O4 T4 Z! } if(~i_Reset_n)begin8 v( x: F8 @6 M6 M- l
o_Sram_CE_n<=1;
) r+ T w* t' R* E! J/ i0 p o_Sram_WE_n<=1;
) N: g' m8 t6 c. @; x7 m o_Sram_OE_n<=1;
/ n: l, H7 ^0 u# @2 a4 o9 m o_Sram_UB_n<=1;
4 E. w+ a# i& Z! g7 T4 M9 K o_Sram_LB_n<=1; 1 z: L6 G7 _) `# t
o_Sram_add<={16{1'b0}};
7 R% p ?! g- L' v5 O5 C end
A5 h# C% V! S4 a& h/ t else begin
7 v* `- a& x( |, q! |/ [& `. Y case(SRAM_STATE)
7 F1 e3 R. Z1 C( v! P `SRAM_IDLE:begin
0 J3 t9 A m p o_Sram_CE_n<=1;/ ^0 s' S7 e5 h
o_Sram_WE_n<=1;
- y1 c. X/ @# t' E. d o_Sram_OE_n<=1;: t/ a# E4 B" M9 C# B: g0 e8 P I& S
o_Sram_UB_n<=1;; J8 t) j* }# A* b+ R8 ]7 F
o_Sram_LB_n<=1; 0 y! ^0 K7 f0 _' a+ ~3 \+ w0 C
o_Sram_add<=Sys_ADDR;
$ `! N t( P. d. J3 j end: V% O* R5 s0 i+ r
`SRAM_WRITE:begin 6 a2 ]4 T: d1 L9 d6 d: o: [9 z
o_Sram_CE_n<=0;
1 I( R! V8 o% J W( i; L& N o_Sram_WE_n<=0;
, B* b2 H [) v; ~3 O8 e o_Sram_OE_n<=1;9 ?! \0 I* W" s
o_Sram_UB_n<=0;; d U# c9 o* s* M
o_Sram_LB_n<=0; 9 c, z: T0 N, Z( }7 d s) v8 i
o_Sram_add<=Sys_ADDR;
! f0 ^; i$ H- N1 o end
& Z; r$ ~- T4 o. \6 c- |% h$ m `SRAM_READ,& w4 m5 o! `+ F x7 v6 Q+ i
`SRAM_READ_KEEP:begin
8 f$ u1 d7 h9 A) z- a9 C$ ~ o_Sram_CE_n<=0;
5 p, N+ ]: U/ G6 w& W. ` o_Sram_WE_n<=1;/ I A* b1 B+ [5 W. e# [
o_Sram_OE_n<=0;
C# O5 C: m4 |# _* W+ c! A o_Sram_UB_n<=0;
# E6 p3 Y( N f' z0 _ P o_Sram_LB_n<=0;5 c0 J# U* b5 H2 ~& F" h
o_Sram_add<=Sys_ADDR; g+ K8 A$ L& n- L8 E) Z0 w7 ?
end
$ _: d {, d) f1 ^; f W: V: V+ q( x- K default:begin
, a$ U$ G' ], d6 R q6 b o_Sram_CE_n<=1;
& n: O7 R4 ~$ i; { o_Sram_WE_n<=1;2 f- q" I$ e2 c# j
o_Sram_OE_n<=1;% n" X! j5 \& @" v: m8 [9 c
o_Sram_UB_n<=1;
& E3 W- [- }- y: b+ C b' E o_Sram_LB_n<=1;$ ~" C: O7 [" n5 ?2 W( q/ W
o_Sram_add<=Sys_ADDR;
$ z. `! v5 F7 [" y8 F# ? end
/ R1 V/ M: n7 w2 G- m endcase
% y2 A) N8 A3 L8 @ end ----------------------------------------------------------------------------------------- |