1. 输入端,

      输入信号, i_vld,表示输入请求写同步fifo,如果fifo不满,则fifo发送i_rdy 到输入端,开始写fifo。i_vld和i_rdy是写握手信号。

2.输出端

      o_rdy表示接受端已经准备好了,可以读取fifo,o_vld表示fifo准备好了,不为空,可以输出到接收端。o_rdy和o_vld是握手信号。


3.如果fifo是深度为0,则是bypass模式,只要请求写,就直接准备输出,所以

assign o_vld = i_vld;
assign i_rdy = o_rdy;
assign o_dat = i_dat;

可以立即发送数据 o_dat=idat, 对于深度为n的情况, i_rdy = ~full, o_vld=~empty, 就是i_rdy和o_vld是满空标志取反。

E203 同步fifo


4.如果深度为n,假设为4, 我们设置i_vld=1,但是o_rdy 总是0,则输入端写fifo,直到fifo满。

testbench代码如下:

module sirv_gnrl_dffs_tb;

   reg  clk=0,rst_n;
   reg  i_vld, o_rdy;
   reg  [31:0] i_dat;

   wire i_rdy, o_vld;
   wire [31:0] o_dat;

   sirv_gnrl_fifo  #(.CUT_READY(1),.DP(4),.DW(32)) mybuf(.i_vld(i_vld),.i_rdy(i_rdy),.i_dat(i_dat),.o_vld(o_vld),.o_rdy(o_rdy),.o_dat(o_dat),.clk(clk),.rst_n(rst_n));

   always #10 clk=~clk;

   initial
   begin
	rst_n=1'b1;
	i_vld = 1'b0;
        o_rdy = 1'b0;
	i_dat = 32'h12345678;
	#20
	rst_n=1'b0;
	#80
	rst_n=1'b1;
	#80
	i_vld = 1'b1;
        o_rdy = 1'b0;
	i_dat = $random()%32;
	#80
	i_vld = 1'b1;
        o_rdy = 1'b0;
	i_dat = $random()%32;
	#20
	i_vld = 1'b0;
        o_rdy = 1'b0;
	i_dat = $random()%32;
	#20
	i_vld = 1'b1;
        o_rdy = 1'b0;
	i_dat = $random()%32;
	#20
	i_vld = 1'b1;
        o_rdy = 1'b0;
	i_dat = $random()%32;
	#20
	i_vld = 1'b1;
        o_rdy = 1'b0;
	i_dat = $random()%32;
	#20
	i_vld = 1'b1;
        o_rdy = 1'b0;
	i_dat = $random()%1024;
	#20
	i_vld = 1'b1;
        o_rdy = 1'b0;
	i_dat = $random()%1024;
	#20
	i_vld = 1'b1;
        o_rdy = 1'b0;
	i_dat = $random()%1024;
	#20
	i_vld = 1'b1;
        o_rdy = 1'b0;
	i_dat = $random()%1024;
	#20
	#20
	i_vld = 1'b1;
        o_rdy = 1'b0;
	i_dat = $random()%1024;
        #500 $finish;
   end

   initial
	   $monitor($time,,,"clk=%b,rst_n=%b,i_vld=%b,o_rdy=%b, i_rdy=%b, o_vld=%b,",clk,rst_n,i_vld,o_rdy,i_rdy,o_vld);
   initial
   begin
   	//$dumpfile("dump.vcd");
   	//$dumpvars;
   	$fsdbDumpfile("dump.fsdb");
	$fsdbDumpvars("+all");
   end



   endmodule
View Code

相关文章:

  • 2022-02-19
  • 2021-07-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-21
  • 2021-12-27
  • 2022-12-23
  • 2022-12-23
  • 2021-05-13
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案