【芯片前端】保持代码手感——握手型同步FIFO设计

前言

工作中做了太久方案,还是要继续对代码手感的保持,这次完成握手型同步FIFO的RTL设计,设计规格如下:

  • 写入与读出均采用握手型接口;
  • 支持2的整数次与非整数次深度;
  • 对外输出逻辑时序较优;

RTL设计

对外接口

握手型同步FIFO,接口如下:

module sync_fifo #(
	parameter DEPTH = 8,
	parameter WIDTH = 32
)(
	input 				clk,
	input 				rst_n,
	
	input  			    in_valid,
	input  [WIDTH -1:0] in_data,
	output 			    in_ready,
	
	output			    out_valid,
	output [WIDTH -1:0] out_data,
	input  			    out_ready
);

localparam DP_WD = $clog2(DEPTH);


endmodule

根据我的设计要求,对外输出的in_ready和out_valid必须为寄存器输出,以保证时序最优。out_data最好也要作为寄存器输出,但是out_data必然会有MUX逻辑,在深度较浅时时序会比较好,深度太深MUX逻辑带来的时序就不能忽略了。

逻辑设计

同步FIFO的设计思路在 【芯片前端】保持代码手感——同步FIFO 中已经盘过了,这次注重握手逻辑的规划,对于涉及过得设计思

你可能感兴趣的:(芯片前端设计,fpga开发,verilog,芯片)