|
在做用串口通过IIC协议去读写EEPROM的实验时,遇到了非常奇怪的事情。部分程序如下
// 串口发送读数据命令和任务
task send_uart_data_rd;
begin
//读数据指令
rdata_cmd={{2'b00,WdAr_UNM,1'b0,DevAddr},8'hf1,addr[15:8],addr[7:0],data_num};
//发送读数据指令
repeat(5)begin
tx_en=1;
tx_data=rdata_cmd[39:32];
#(`clk_period)
tx_en=0;
@(posedge tx_done)
#100;
rdata_cmd={rdata_cmd[31:0],8'h00};
endtask
可以看到tx_data首先是等于rdata_cmd的高8位,即rdata_cmd[39:32]。但是在仿真过程中tx_data首先等于f1,即rdata_cmd[31:24]。然后依次等于后面的数值。导致接下来的数据读写出错,求高手指教。
|
-
这是EEPROM的仿真文件中的读数据指令,
-
这是仿真文件,标记处应该为读命令的高8位
|