EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
下载到开发板上遇到一个与仿真不同的问题:波形不一致!3 A1 T; t* }: Q0 H. _0 V4 V0 @- P5 Z
- }9 l% K( T( x9 N% H
我用嵌入式分析仪抓数据发现波形与我仿真时的波形不一致3 D1 r& |8 h0 c. d. `0 E+ r
比较奇怪4 x6 { @, `, T- t3 H
/ A, G' V( i- |4 E* r" \9 g! P& e
我的设计思路是通过串口接受数据 a3 k7 J2 W! N) G `- o$ x4 h* X
然后把接收的数据写入sram器件里面去+ Q2 o1 t+ c2 S5 y5 U- g% |
) R( |8 H) N2 H9 o, Z$ C但发现那个控制信号与仿真时不一致(见附图所示)" a! w% y# O5 ?$ l0 O% t
( q, h: Y* E! M1 ^! l( D8 g8 p
$ N% A5 f0 E1 V1 Z跟sram接口相关的代码如下:% k Y6 V6 r/ f
# A& @% d9 z" l( p/ g----------------------------------------------------------------------------------------- always @(posedge i_Clock or negedge i_Reset_n)1 j" I! V9 k# \+ T k0 v! R: I C
if(~i_Reset_n)begin
; }* L9 U, l0 E* W) T SRAM_STATE<=`SRAM_IDLE;
7 l) ^5 T9 h, }6 h Write_ack<=0;
) T. r7 w. r# o Read_ack<=0;7 ~ [6 \" L) g/ `
end
" s) U9 n& b4 k0 i7 |; z. [ else begin
$ R/ S1 D9 e, {7 _ Write_ack<=0; ! n* }3 d: h* G b5 {0 I
Read_ack<=0;
1 [6 Z* U3 e* v% L! R$ @0 W case (SRAM_STATE)7 \% Y0 i9 t. j' e1 Z
`SRAM_IDLE:begin
) X5 F6 Q/ s) K: [5 i Write_ack<=0;
0 A! P" j s& S: R+ {! S Read_ack<=0;/ B* C' V+ ?3 C5 l i, H6 i" V
case({Write_req,Read_req})$ F2 E8 J: d& d* L- c
2'b10:begin
6 j7 X+ E: m$ Q6 n8 |/ K2 E SRAM_STATE<=`SRAM_WRITE;
/ q4 v+ C' \! a" y0 I2 }& K% Q Write_ack<=1;
7 D4 F: B$ t! g3 t- ?0 l6 X4 F end. k% I* p: ^0 ~7 ]5 a; C
2'b01:begin 5 Z1 h$ I( s; [
SRAM_STATE<=`SRAM_READ; 8 Q' N* g5 K* ?( C1 f; G
end
% P9 E) {' A" D4 T- r/ t& R default:SRAM_STATE<=`SRAM_IDLE;, I% t* U1 P# |7 _
endcase
' z# ~- z' q* g* U& ] end O2 k3 a- c" q# z* m% a
`SRAM_WRITE:begin
4 h! d! \2 q+ J6 [* `- a) I SRAM_STATE<=`SRAM_IDLE; 2 _5 j3 M- F, l9 p2 j6 f' {
end7 i' S+ T v, ~
`SRAM_READ:begin ! d' {+ Y" H6 m+ N: m/ n
SRAM_STATE<=`SRAM_READ_KEEP;
# i$ V& m5 v8 v end
$ o" ?6 d& T$ F$ [ `SRAM_READ_KEEP:begin
# i) L! j( ]2 c5 c" D9 M SRAM_STATE<=`SRAM_IDLE; % `2 ?/ F l$ W' a: X- X
Read_ack<=1;
+ y* W8 b+ P8 d end { d5 k. ]0 w& k0 f2 O! ~4 l3 J
default:begin
7 G- \- @- ?# E) Y- O7 U SRAM_STATE<=`SRAM_IDLE;
7 d" C. W. ? |& _; G; l% { Write_ack<=0;
- H$ ?+ @- ]2 h Read_ack<=0;' Q8 V+ Y: `8 L8 U v/ I
end! c+ ~, ~: M; r% n
endcase
2 r- c' {3 b! v# x end ----------------------------------------------------------------------------------------- assign io_Sram_data =(o_Sram_OE_n) ? Sys_dataout:{16{1'bz}};
# l5 T; f, M6 P9 L assign Sys_datain = io_Sram_data;) G6 M. l: q9 G8 {+ }- @$ V, H# @
//
6 \# ^% d8 a) y4 G! a& j3 h always @(posedge i_Clock or negedge i_Reset_n)1 P' j1 H3 v* L7 b: D
if(~i_Reset_n)begin ?5 Q! Y, } w7 R* J! N. n
o_Sram_CE_n<=1;
, Y9 D. x( E, O3 [* ~' p o_Sram_WE_n<=1;
6 \$ R7 K4 m# E. \; j' Z# c o_Sram_OE_n<=1;
% V7 f4 P" v$ X9 o: s: O o_Sram_UB_n<=1;
/ u. |' _( I* C# D4 J. L" X3 U o_Sram_LB_n<=1; - N' X; {( |+ M- ]3 {( J7 l3 X
o_Sram_add<={16{1'b0}};
. q$ |' O8 y2 k6 A end) i a) A1 n0 }5 A x
else begin
2 r' h; B5 |* \) R* [; I7 T7 P* y case(SRAM_STATE)0 P3 y5 X7 o$ x: _8 V" s
`SRAM_IDLE:begin! Y6 b( f! g, H
o_Sram_CE_n<=1;
& @3 ]1 w2 i1 _$ H- W: O, r3 F o_Sram_WE_n<=1;: P2 X1 c9 o, e9 w9 |0 i
o_Sram_OE_n<=1;
; v3 L4 m! D L4 R2 `- T, y; j o_Sram_UB_n<=1;$ a7 v+ W8 B$ q3 g# ^/ q3 S% ^- c
o_Sram_LB_n<=1;
4 m+ x6 E8 o5 B/ Y: m* x o_Sram_add<=Sys_ADDR; 1 l* h( h7 ?" y' H" q
end3 M5 ?, S/ `9 s, _" s6 Z% j
`SRAM_WRITE:begin
6 c+ Q+ X. _1 n" {9 ?( u. i: j o_Sram_CE_n<=0;8 J% Z1 c1 _9 c) H7 P1 J
o_Sram_WE_n<=0;
" K8 _6 E5 d; w+ c0 z7 w! S o_Sram_OE_n<=1;
S7 U$ E5 Y% v4 L- ~ o_Sram_UB_n<=0;
# L9 O8 @& T. x o_Sram_LB_n<=0; % G4 {. R- r6 f. W* z, g$ M
o_Sram_add<=Sys_ADDR;
; n, b* u. E; u, {9 F end2 o9 q/ S6 K* d, n1 M4 m
`SRAM_READ,
5 m; q$ y. D. {/ ~ `SRAM_READ_KEEP:begin
3 @, w3 `! R! V o_Sram_CE_n<=0;
& z; `, O( O7 R8 c o_Sram_WE_n<=1;* D% }# ^4 Y7 {5 i4 ?
o_Sram_OE_n<=0; A" U: q `0 T* l* J
o_Sram_UB_n<=0;+ ]+ K# h* V' E+ \0 \% B. N
o_Sram_LB_n<=0;
3 \1 m9 \. \0 ?1 ~/ V0 J2 Q o_Sram_add<=Sys_ADDR;- }1 N, {0 p/ g' V0 j
end% ^; e! j' Q* e2 t# L& O9 }* ?4 e
default:begin
9 {( b$ L2 {6 t1 r4 t6 ]9 r o_Sram_CE_n<=1;
3 m0 M$ k: N6 |8 H: Q1 v o_Sram_WE_n<=1;/ W% R7 Z1 o) m% R: ^" B, a6 G
o_Sram_OE_n<=1;' b( P; k3 {: F
o_Sram_UB_n<=1;
1 i! F% |2 D' H( _# z" B o_Sram_LB_n<=1;
/ j; J3 r: J) P1 G8 p o_Sram_add<=Sys_ADDR;
& \: i l6 ~7 Y! s' J& D8 k7 |- r end 8 I/ Q6 g$ ^$ k+ \7 A- r
endcase
! c. V) V$ M9 m0 @, T# N0 L# m; ] end ----------------------------------------------------------------------------------------- |