wwwjjj-1 发表于 2013-7-12 08:08:01

应如何计算fifo中的wrusedw

module EASY_FIFO

(
        aclr,
        Wr_Clk,
        nWr,      
        Din,   
        Rd_Clk,
        nRd,   
        Dout,   
        wrusedw
);

inputaclr,Wr_Clk, nWr, Rd_Clk, nRd;

input Din;
output Dout;
output wrusedw ;

reg Buff ;
reg Wr_Addr, Rd_Addr,wruser;

assign Dout = Buff;
assign wrusedw = Wr_Addr-Rd_Addr;//?????这里的计算有问题,没想明白如何处理
always @ (posedge Wr_Clk)
        begin
                if (~nWr )
                        Buff <= Din;
                else            
                        Buff <= Buff;
        end

always @ (posedge Wr_Clk or negedge aclr)

        if(!aclr) Wr_Addr<= 4'd0;
        else if(~nWr)Wr_Addr <= Wr_Addr + 1'b1;
        else Wr_Addr<= Wr_Addr;


always @ (posedge Rd_Clk or negedge aclr)

        if(!aclr) Rd_Addr <= 4'd0;
        else if(~nRd)Rd_Addr <= Rd_Addr + 1'b1;
        else Rd_Addr <= Rd_Addr;

endmodule       

skyxjh 发表于 2013-7-13 09:42:55

reg Buff ;
reg Wr_Addr, Rd_Addr,wruser;
assign Dout = Buff;
assign wrusedw = Wr_Addr-Rd_Addr;//?????这里的计算有问题,没想明白如何处理


地址线用3位就没问题,无符号数减法。

sjx000000 发表于 2015-6-4 00:07:41

高手谢谢分享
页: [1]
查看完整版本: 应如何计算fifo中的wrusedw