专栏中心

EEPW首页 > 专栏 > FIFO编写

FIFO编写

发布人:0750long 时间:2010-03-10 来源:工程师 发布文章
FIFO编写

 

 

//FIFO采用四个always块处理写、读、更新读写指针、FIFO计数

module FIFO (
input [7:0] data_in,
input clk,rst,rd,wr,
output empty,full,
output reg [3:0] fifo_cnt,
output reg [7:0] data_out
);

reg [7:0] fifo_ram[0:7] ;
reg [2:0] wr_prt,rd_prt;

always@ ( posedge clk)
 begin:write
  if(wr&&!full)
   fifo_ram[wr_prt] <= data_in;
  else if( wr&&rd)
   fifo_ram[wr_prt] <= data_in;
 end

always @ (posedge clk)
 begin :read 
  if(rd&&!empty)
   data_out <= fifo_ram[rd_prt];
  else if( rd && wr &&!empty)
   data_out <= fifo_ram[rd_prt];
 end

always @ (posedge clk or negedge reset)
 begin : pointer
  if(!rst)
   begin
    wr_prt <= 0;
    rd_prt <= 0;
   end
  else
   case({rd,wr})
    2'b00:begin
        wr_prt <= wr_prt;
        rd_prt <= rd_prt;
       end
     2'b01:begin
         if(!full)
         wr_prt <= wr_prt+1;
        rd_prt <= rd_prt; 
       end 
     2'b10:begin
         wr_prt <= wr_prt;
         if(!empty)
        rd_prt <= rd_prt+1; 
       end 
     2'b11:begin
         wr_prt <= wr_prt+1;
        rd_prt <= rd_prt+1; 
       end 
    default:begin
         wr_prt <= wr_prt;
         rd_prt <= rd_prt;
         end
   endcase
 end   

always @ ( posedge clk)
 begin:count
  if(!rst)
   fifo_cnt <= 0;
  else begin
   case ({wr,rd})
    2'b00: fifo_cnt <= fifo_cnt;
    2'b01: fifo_cnt <= (fifo_cnt==0)?0:fifo_cnt - 1;
    2'b10: fifo_cnt <= (fifo_cnt==8)?8:fifo_cnt + 1;
    2'b11: fifo_cnt <= fifo_cnt;
    default: fifo_cnt <= fifo_cnt;
   endcase
  end
 end

assign empty = (fifo_cnt == 0);
assign full = (fifo_cnt ==8);

endmodule

endmodule

 

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

Analog Devices通过CodeFusion Studio 2.0简化嵌入式人工智能

3相永磁同步电机(PMSM)矢量控制

SmartPRO 5000U脱机产量控制功能

Connext Drive 4.0 将 AI 加入 SDV 通信

汽车电子 2025-11-18

NXP将EIS纳入电动车电池管理

汽车电子 2025-11-18

板对板连接器市场预计到2030年将接近160亿美元

SmartARM2200平台专题报导

应用 V.I 晶片驱动LED I - 恒流示范

视频 2010-02-26

MC56F8006 DSC简介

SmartARM2200教学实验开发平台

电子战市场加速发展

安防与国防 2025-11-18

飞思卡尔智能电表演示

视频 2010-02-10

安全气囊概念车展示现代汽车安全性

传罗唯仁决心转战英特尔 若成真台积电将提告退休大将

防干扰GNSS天线的进展

倒计时2天丨魏少军教授主旨报告主题、数据出炉!

2025-11-18

Arm加入英伟达的NVLink Fusion生态系统

通过瑞萨RA系列解决16位MCU平台的关键挑战构想

嵌入式系统 2025-11-18
更多 培训课堂
更多 焦点
更多 视频

技术专区