马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
下载到开发板上遇到一个与仿真不同的问题:波形不一致!
我用嵌入式分析仪抓数据发现波形与我仿真时的波形不一致
比较奇怪
我的设计思路是通过串口接受数据
然后把接收的数据写入sram器件里面去
但发现那个控制信号与仿真时不一致(见附图所示)
跟sram接口相关的代码如下:
----------------------------------------------------------------------------------------- always @(posedge i_Clock or negedge i_Reset_n)
if(~i_Reset_n)begin
SRAM_STATE<=`SRAM_IDLE;
Write_ack<=0;
Read_ack<=0;
end
else begin
Write_ack<=0;
Read_ack<=0;
case (SRAM_STATE)
`SRAM_IDLE:begin
Write_ack<=0;
Read_ack<=0;
case({Write_req,Read_req})
2'b10:begin
SRAM_STATE<=`SRAM_WRITE;
Write_ack<=1;
end
2'b01:begin
SRAM_STATE<=`SRAM_READ;
end
default:SRAM_STATE<=`SRAM_IDLE;
endcase
end
`SRAM_WRITE:begin
SRAM_STATE<=`SRAM_IDLE;
end
`SRAM_READ:begin
SRAM_STATE<=`SRAM_READ_KEEP;
end
`SRAM_READ_KEEP:begin
SRAM_STATE<=`SRAM_IDLE;
Read_ack<=1;
end
default:begin
SRAM_STATE<=`SRAM_IDLE;
Write_ack<=0;
Read_ack<=0;
end
endcase
end ----------------------------------------------------------------------------------------- assign io_Sram_data =(o_Sram_OE_n) ? Sys_dataout:{16{1'bz}};
assign Sys_datain = io_Sram_data;
//
always @(posedge i_Clock or negedge i_Reset_n)
if(~i_Reset_n)begin
o_Sram_CE_n<=1;
o_Sram_WE_n<=1;
o_Sram_OE_n<=1;
o_Sram_UB_n<=1;
o_Sram_LB_n<=1;
o_Sram_add<={16{1'b0}};
end
else begin
case(SRAM_STATE)
`SRAM_IDLE:begin
o_Sram_CE_n<=1;
o_Sram_WE_n<=1;
o_Sram_OE_n<=1;
o_Sram_UB_n<=1;
o_Sram_LB_n<=1;
o_Sram_add<=Sys_ADDR;
end
`SRAM_WRITE:begin
o_Sram_CE_n<=0;
o_Sram_WE_n<=0;
o_Sram_OE_n<=1;
o_Sram_UB_n<=0;
o_Sram_LB_n<=0;
o_Sram_add<=Sys_ADDR;
end
`SRAM_READ,
`SRAM_READ_KEEP:begin
o_Sram_CE_n<=0;
o_Sram_WE_n<=1;
o_Sram_OE_n<=0;
o_Sram_UB_n<=0;
o_Sram_LB_n<=0;
o_Sram_add<=Sys_ADDR;
end
default:begin
o_Sram_CE_n<=1;
o_Sram_WE_n<=1;
o_Sram_OE_n<=1;
o_Sram_UB_n<=1;
o_Sram_LB_n<=1;
o_Sram_add<=Sys_ADDR;
end
endcase
end ----------------------------------------------------------------------------------------- |