微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 定义了一个apb_read task,为什么task返回 的值晚 一拍 ?

定义了一个apb_read task,为什么task返回 的值晚 一拍 ?

时间:10-02 整理:3721RD 点击:
task apb_read;
input [31:0] addr;
output [31:0] data;
@(posedge CLK);
PSEL<= 1'b1;
PWRITE<=1'b0;
PADDR<=addr;
@(posedge CLK);
PENABLE <= 1'b1;
@(posedge CLK);
data <= PRDATA;
PSEL<=1'b0;
PENABLE<=1'b0;
endtask

module tb_top;
reg [31:0] data;
apn_read(32'h0000_0000,read_data);
endmodule
从 波形 文件上看, task里 的data是对 的 ,但是 read_data是 data的上一拍 的 值 ,这是 为什么 ?task不是 应该 直接 返回data的值吗

prdata 和PSEL无效/PENABLE无效在同一拍了,所以~
如果把PRDATA放到了PENABLE <= 1同一拍就可以了

是task里 的data和apb_read里的read_data不一样 ,read_data是 data上一拍 的值

不知道什么意思,从task里面的状况看,
第一拍是PSEL,~PENABLE,
第二拍是PSEL,PENABLE
第三拍是~PSEL,~PENABLE,DATA。
按照APB协议的话,data回的时机是不对的。

第二拍数据应该已经出来了,第三拍去采,不是应该采到第二拍的吗

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top