EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
下载到开发板上遇到一个与仿真不同的问题:波形不一致!- c6 n0 H; o: m2 W, I8 l4 D. A& J
0 G! }) l7 y" J
我用嵌入式分析仪抓数据发现波形与我仿真时的波形不一致
9 M& N$ [/ f+ p4 C8 t比较奇怪$ u; u8 t3 r( j9 \
( l$ B( a6 C7 B: I4 o: F8 q0 L
我的设计思路是通过串口接受数据
) q" w7 X7 g/ S0 }7 Y0 f# m* f然后把接收的数据写入sram器件里面去9 C7 m x/ m: v* L1 v9 d. [. _
$ F0 n8 M# W' F2 z: P# O
但发现那个控制信号与仿真时不一致(见附图所示)) U5 A j/ a: b
) e: s" x5 U- h+ H- V! N& t C
( ]$ L3 B; ]6 R/ s e" k' W0 E跟sram接口相关的代码如下:& ?, _0 w4 q y8 H- I9 u6 T
q/ C' l1 J) f* i: S6 r----------------------------------------------------------------------------------------- always @(posedge i_Clock or negedge i_Reset_n)
3 l8 _# o+ B8 Z! c+ F5 O if(~i_Reset_n)begin
9 G+ W7 @8 Y7 V4 c9 {$ M SRAM_STATE<=`SRAM_IDLE;/ D0 P# \4 V- D0 U5 D: L. |
Write_ack<=0;! J$ q" `) J* l8 n* |4 h
Read_ack<=0;
4 ~5 y$ F" S* S: V4 v1 ` end
1 q% E9 r8 u3 V9 X6 D' _ else begin
$ j( {& y' h. n) o Write_ack<=0;
& E9 T5 `% _3 @6 r. ?+ C4 X Read_ack<=0;
4 o, `) Z# R% O0 c case (SRAM_STATE)4 s2 h c7 }6 P) C6 k, U8 `
`SRAM_IDLE:begin% x: p) B H- y( [# ~
Write_ack<=0;
+ w6 v* }$ y! y H9 c' U" V. W Read_ack<=0;
- \) A2 I7 G' p) y/ n2 g2 R/ T; X* J case({Write_req,Read_req}); e# E# X: g' X
2'b10:begin
3 c. U" A: d) W- C SRAM_STATE<=`SRAM_WRITE;
5 E# L, o: M9 @7 q+ L6 f Write_ack<=1;
# t; c# m6 i; J. U5 Z end; q& i9 {" n. u1 t s) c
2'b01:begin
* j* k# R U; ^! q SRAM_STATE<=`SRAM_READ;
$ X4 [' y# f( I4 T2 Q- ] end
. t' s% Q( A# Z" }, f default:SRAM_STATE<=`SRAM_IDLE;
9 l; H l0 j0 l; @0 y% ? endcase
3 d9 Q& b& a+ b4 t end: z8 |; G9 ~2 c& q
`SRAM_WRITE:begin : z a. L+ S7 Q1 w7 N
SRAM_STATE<=`SRAM_IDLE; / Y# x7 P; s7 y5 D0 ]8 Q0 p3 M
end
# H8 X* L, S* M# q8 Z1 b) T1 } u `SRAM_READ:begin
9 S: w [6 S/ a, j+ [ SRAM_STATE<=`SRAM_READ_KEEP;
6 p- x. Q3 j9 K) l5 L: n* x0 Z end3 B O2 W& V( |$ g3 Q$ N" v8 g
`SRAM_READ_KEEP:begin
% f0 T9 e8 E/ ?9 k7 l4 y SRAM_STATE<=`SRAM_IDLE;
$ L1 a# s) A3 G- O( V/ |0 ? Read_ack<=1;
! K$ v" {$ @( T9 M2 |, p end1 O, X$ F0 ?) r" n
default:begin 4 V% J6 M8 a# {* \ x) U, z
SRAM_STATE<=`SRAM_IDLE;
1 Y: v Y; T7 u6 w! F7 J1 P& C Write_ack<=0;( q! g; t# M/ C) h) o. K
Read_ack<=0;! u" O8 r# M" h: b; M' ~0 R1 o7 i
end {' d6 Y0 j/ m6 B) `
endcase
! b+ y' q" c; x' x/ { end ----------------------------------------------------------------------------------------- assign io_Sram_data =(o_Sram_OE_n) ? Sys_dataout:{16{1'bz}};
* h+ U% Y( R5 g ~; g assign Sys_datain = io_Sram_data;2 [. ?; o) n" S4 [" ], c; l6 B$ Y
//& j' z' D9 x9 _! ~ z+ I6 u
always @(posedge i_Clock or negedge i_Reset_n): j1 \6 F/ t7 i
if(~i_Reset_n)begin7 [3 }6 d% k3 H" @! f( N3 E* T' Y
o_Sram_CE_n<=1;& E ]! a% j! E! w( f% L8 ?5 P
o_Sram_WE_n<=1;
( z: D3 R! T3 s! A o_Sram_OE_n<=1;9 K$ J2 Z7 `$ f3 s
o_Sram_UB_n<=1;: p6 Q+ S8 H6 U" G
o_Sram_LB_n<=1; / P: q& t" `6 o% O/ \2 L
o_Sram_add<={16{1'b0}};
# {( n5 y4 Q y( f# e1 H- |$ |, J end4 H/ O+ p9 Z- \9 ^7 _: W
else begin$ \( x! n1 R( O7 J& m+ F
case(SRAM_STATE)
, C$ b1 b" z; x: n7 f' s7 l `SRAM_IDLE:begin/ ~& f' |9 x- t5 q% Q8 d
o_Sram_CE_n<=1;+ M/ e. `+ `4 t- g
o_Sram_WE_n<=1;
& `5 W# S q) C* X* M o_Sram_OE_n<=1;6 H" h5 p5 G) @7 k8 F0 g
o_Sram_UB_n<=1;9 X* O% c; c; ]' r4 d$ U
o_Sram_LB_n<=1;
- e: f" e' a# S/ S8 [; E8 O o_Sram_add<=Sys_ADDR; ) _0 r l; ]6 {2 o) Q2 ~
end
- A# p1 i2 g/ u- K, q( I7 ? `SRAM_WRITE:begin
: H9 x- s1 o) N o_Sram_CE_n<=0;: A1 _* k6 O7 a: ?! D) a
o_Sram_WE_n<=0;" l* j7 u% f4 }6 L G
o_Sram_OE_n<=1;% g. f; R8 @ Y( `2 B
o_Sram_UB_n<=0;
( S( o$ D9 g5 n# Q2 \3 A* y o_Sram_LB_n<=0; + D- C6 _, s. f! `0 E" L) J! M- V
o_Sram_add<=Sys_ADDR; % K. W1 B7 f8 @) T! h1 V6 T! O3 o
end
! C% `7 X1 t7 b1 s( k0 I" a1 L0 r `SRAM_READ,9 K0 z8 ]; \% Y. a1 @* Z1 Z
`SRAM_READ_KEEP:begin
. d* g9 u; q6 O$ J$ f o_Sram_CE_n<=0; J9 [9 ]) g* H) H9 I! a, y
o_Sram_WE_n<=1;9 I! A6 d. T8 t( E' X. x% h* J( x
o_Sram_OE_n<=0;9 y1 F$ C6 x' c: M
o_Sram_UB_n<=0;
8 R( v: O! g, `) r# T o_Sram_LB_n<=0;
; I# w" c) T: g6 I4 f7 h$ E o_Sram_add<=Sys_ADDR;8 c; J- B6 C3 X k' I5 |
end% q2 q9 ?; p; O5 r9 r5 ^
default:begin
- V J( f+ A r' E o_Sram_CE_n<=1;- K0 E5 b+ I9 N. ]$ A1 L9 f7 Q7 X
o_Sram_WE_n<=1;. i! K# O/ d8 v' C
o_Sram_OE_n<=1;
4 a& O8 f2 a3 b# Q: ?. F0 x; p. ?, @ o_Sram_UB_n<=1;( p' o/ X# K5 D6 P
o_Sram_LB_n<=1;2 O ?; k7 \, `% e" y
o_Sram_add<=Sys_ADDR;
+ g$ R G8 e ] end
; b) j! H1 w* C- y" ] endcase: c( G \0 t7 | Z+ D: x
end ----------------------------------------------------------------------------------------- |