马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
module rd_logic(
clk,
rst,
wr_ack,
valid,
rd_en
);
input clk;
input rst;
input wr_ack;
input valid;
output rd_en;
reg [5:0] wr_count=6'b000000;
reg [5:0] temp=6'b000000;
reg rd_en;
always @(posedge clk or posedge rst)
begin
if(rst)
wr_count<=0;
else
begin
if((wr_ack==1)&&(valid==0))
wr_count<=wr_count+6'b000001;
else
begin
if(wr_count==6'b110010)
begin
temp<=wr_count;
wr_count<=0;
if((wr_ack==0)&&(valid==1))
temp<=temp-6'b000001;
else
temp<=temp;
end
else
wr_count<=wr_count;
end
end
end
always @(posedge clk or posedge rst)
begin
if(rst)
rd_en<=0;
else
begin
if(temp==6'b110010)
rd_en<=1;
else if (temp==6'b000000)
rd_en<=0;
else
rd_en<=rd_en;
end
end
endmodule
说明:利用wr_count 计数,为50时,rd_en有效,开始读数据,将wr_count的值赋给一个临时变量temp,成功读出一个数据时,temp值减1,直到temp值为零时,表示着五十个数据已经成功读出,再进行计数,满五十重复以上操作。
可是输出一直为零,不知道哪里的逻辑不对,帮忙看看,谢谢! |