Verilog语言实现异步FIFO
本帖最后由 UNICORNLI 于 2016-12-4 18:27 编辑这个月做项目,使用了Verilog写程序,这里分享一下异步FIFO,这是基本的,可以根据项目需要做修改。不对的地方请大家指正。
module fifo_interface(
inputclk1,
inputclk2,
input in_data,
inputaddr,
inputrst,
output out_data,
outputfull,
outputempty
);
reg[ bite_Size-1:0]Buff ;//FIFO的存储空间
regcur_Wr_Pt,next_Wr_Pt;
regcur_Rd_Pt,next_Rd_Pt;
regfull_Flag,empty_Flag;
regfifoWR, fifoRD;
parameterdeep_Size = 256, addr_Size = 8, bite_Size = 8 ,couter_Size = 8;
initial
begin
full = 0;
empty = 1;
wr_Addr_Bin = 0;
rd_Addr_Bin = 0;
couter =0;
cur_Wr_Pt = 0;
cur_Rd_Pt = 0;
next_Wr_Pt = 1;
next_Rd_Pt = 1;
end
always @(addr)
begin
case (addr)
2'b01: fifoWR = 1;
2'b10: fifoRD = 1;
default:
begin
fifoWR = 0;
fifoRD= 0;
end
endcase
end
reg couter;
always @(cur_Wr_Pt )
begin
if(cur_Wr_Pt>0)
empty_Flag = 0;
end
always @(posedgeclk)
begin
if(full_Flag==1 ||couter_Rst==1)
couter <= 0 ;
if (full_Flag!=1 &&??)
couter<= couter+1;
end
always @(posedgeclk1)
begin
if (rst == 1)
begin
Buff <= 0;
cur_Wr_Pt = 0;
next_Wr_Pt = 1;
end
if ((full_Flag!=1)&&(fifoWR==1))
begin
Buff <= in_Data;
if (next_Wr_Pt< deep_Size-1)
begin
cur_Wr_Pt<= next_Wr_Pt;
next_Wr_Pt <=cur_Wr_Pt+1;
end
else
begin
full_Flag<=1;
cur_Wr_Pt = 0;
next_Wr_Pt = 1;
end
end
always @(posedgeclk2)
begin
if (rst == 1)
begin
Buff <= 0;
cur_Wr_Pt = 1;
next_Rd_Pt = 1;
end
if ((empty_Flag!=1)&&(fifoRD==1))
begin
out_data <= Buff;
if (next_Wr_Pt< deep_Size-1)
begin
cur_Wr_Pt<= next_Wr_Pt;
next_Wr_Pt <=cur_Wr_Pt+1;
end
else
begin
empty_Flag<=1;
cur_Rd_Pt = 0;
next_Rd_Pt = 1;
end
end
endmodule
刚学verilog,受不了begin和end Verilog是一種用於描述、設計電子系統(特別是數位電路)的硬體描述語言
沒聽過
深蓝浅 发表于 2016-12-4 19:41
刚学verilog,受不了begin和end
把它当做其他语言中的大括号{:301_996:} 蓝家骑士 发表于 2016-12-4 23:25
好东西,谢谢分享
谢谢回帖 psx1lin 发表于 2016-12-4 19:52
Verilog是一種用於描述、設計電子系統(特別是數位電路)的硬體描述語言
沒聽過
嗯,还有类似的语言是古老的VHDL UNICORNLI 发表于 2016-12-5 09:16
把它当做其他语言中的大括号
对啊,为什么不用大括号,代码写起来和看起来都好麻烦 因为它里面的大括号有其他作用了,再用会让编译器懵逼 深蓝浅 发表于 2016-12-5 09:55
对啊,为什么不用大括号,代码写起来和看起来都好麻烦
因为大括号有其他作用了,用它做多种作用会让编译器懵逼,也许以后会改呢 UNICORNLI 发表于 2016-12-5 11:18
因为大括号有其他作用了,用它做多种作用会让编译器懵逼,也许以后会改呢
{:1_893:}原来如此
页:
[1]
2