在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 4238|回复: 13

关于FIFO的原代码,有通用性!

[复制链接]
发表于 2004-6-13 09:42:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
`timescale 1ns/1ns
module FIFO_SYNC(RST, CLK, DIN, DOUT, WEN, REN, OE, EF, FF);
parameter DATA_WIDTH = 16;
parameter FIFO_DEPTH = 4;
`define D_WIDTH 16
`define F_DEPTH 4
input RST, CLK, WEN, REN, OE;
input [DATA_WIDTH-1:0] DIN;
inout [DATA_WIDTH-1:0] DOUT;
output EF, FF;
reg [DATA_WIDTH-1:0] SF_RAM [01<<FIFO_DEPTH)-1]; // (1<<FIFO_DEPTH)-1 = 15
reg [01<<FIFO_DEPTH)-1] WPTR;
reg [01<<FIFO_DEPTH)-1] RPTR;
reg FF_REG, EF_REG;
wire EF_TMP;
// Output Assignment
assign  DOUT = (OE==1'b1)? SF_RAM[RPTR]: `D_WIDTH'bz;
assign  FF = FF_REG;
assign  EF = EF_REG;
// End of Output Assignment
// FIFO
always @(posedge CLK)
  begin
    if(WEN==1'b1 & FF_REG==1'b0)
                SF_RAM[WPTR] <= DIN;
  end
//Write Pointer
always @(posedge CLK or posedge RST)
begin
  if(RST==1'b1)
        WPTR <= `F_DEPTH'b0;
  else
    begin
      if(WEN == 1'b1 & FF_REG == 1'b0)
        if(WPTR == `F_DEPTH'b1111)
                WPTR <= `F_DEPTH'b0;
        else
                WPTR <= WPTR + 1'b1;
   end
end
//Read Pointer
always @(posedge CLK or posedge RST)
begin
  if(RST==1'b1)
        RPTR <= `F_DEPTH'b1111;
  else
    begin
      if(REN == 1'b1 & EF_REG == 1'b0)
        if(RPTR == `F_DEPTH'b1111)
                RPTR <= `F_DEPTH'b0;
        else
                RPTR <= RPTR + 1'b1;
    end
end
//Full Flag
always @(posedge CLK or posedge RST)
begin
  if(RST==1'b1)
        FF_REG <= 1'b0;
  else
    begin
      if(WPTR == RPTR & WEN == 1'b1 & REN == 1'b0)
                FF_REG <= 1'b1;
      else if(FF_REG == 1'b1 & REN == 1'b1)
                FF_REG <= 1'b0;
    end
end
//Almost Empty
assign EF_TMP = ((RPTR == WPTR-1'b1)|
                 (RPTR == `F_DEPTH'd15 & WPTR == `F_DEPTH'd1)|
                 (RPTR == `F_DEPTH'd14 & WPTR == `F_DEPTH'd0))? 1'b1 : 1'b0;
//Empty Flag
always @(posedge CLK or posedge RST)
begin
  if(RST==1'b1)
        EF_REG <= 1'b1;
  else
    begin
      if(EF_TMP == 1'b1 & WEN == 1'b0 & REN == 1'b1)
                EF_REG <= 1'b1;
      else if(EF_REG == 1'b1 & WEN == 1'b1)
                EF_REG <= 1'b0;
    end
end
endmodule      
发表于 2004-6-13 17:14:08 | 显示全部楼层

关于FIFO的原代码,有通用性!

怎么用呢
回复 支持 反对

使用道具 举报

发表于 2004-6-14 09:33:05 | 显示全部楼层

关于FIFO的原代码,有通用性!

spec呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-18 12:41:51 | 显示全部楼层

关于FIFO的原代码,有通用性!

this is circuit diagram.

5_1418_3.pdf

41.2 KB, 下载次数: 46 , 下载积分: 资产 -2 信元, 下载支出 2 信元

回复 支持 反对

使用道具 举报

发表于 2006-8-24 12:36:35 | 显示全部楼层
看看是啥东西
回复 支持 反对

使用道具 举报

发表于 2007-8-31 08:52:22 | 显示全部楼层
看看哈。
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2007-9-17 17:05:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2008-3-7 15:26:33 | 显示全部楼层
嗬嗬,多讲点
回复 支持 反对

使用道具 举报

发表于 2008-6-26 14:30:40 | 显示全部楼层
THanks!
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2008-10-4 10:51:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-17 21:10 , Processed in 0.019344 second(s), 4 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表