DW_fifo
DW_fifo_s1_sf 和 DW_fifo_s2_sf 是 DesignWare 提供的两种 FIFO IP 核,主要用于数据缓冲和同步。它们的主要区别如下:
- 时钟域
DW_fifo_s1_sf:单时钟 FIFO,适用于单时钟域内的数据缓冲。
DW_fifo_s2_sf:双时钟异步 FIFO,支持两个独立的时钟域(写时钟和读时钟),适用于跨时钟域的数据传输。
如果设计中只需要单时钟域的数据缓冲,可以选择 DW_fifo_s1_sf。
如果需要跨时钟域的数据传输,则应选择 DW_fifo_s2_sf。
DW_fifo_s1_sf 和 DW_fifo_s1_df 是 DesignWare 提供的两种单时钟同步 FIFO IP 核,它们的主要区别在于标志位(Flags)的控制方式:
- 标志位控制方式
DW_fifo_s1_sf:标志位(如 almost_full 和 almost_empty)是静态的,其阈值在实例化时通过参数固定,无法在运行时动态调整。
DW_fifo_s1_df:标志位是动态的,其阈值可以通过输入端口(如 ae_level 和 af_thresh)在运行时动态调整。
如果设计中对 FIFO 的标志位阈值有固定要求,且不需要动态调整,可以选择 DW_fifo_s1_sf。
如果需要在运行时动态调整标志位阈值以优化系统性能,应选择 DW_fifo_s1_df。
DW_fp
DW_fp_flt2i 专门用于将符合 IEEE 754 标准的浮点数转换为整数
DW_ram_r_w_s_dff
module DW_ram_r_w_s_dff_inst(inst_clk, inst_rst_n, inst_cs_n, inst_wr_n,
inst_rd_addr, inst_wr_addr, inst_data_in,
data_out_inst );
parameter data_width = 8;
parameter depth = 8;
parameter rst_mode = 0;
`define bit_width_depth 3 // ceil(log2(depth))
input inst_clk;
input inst_rst_n;
input inst_cs_n;
input inst_wr_n;
input [bit_width_depth-1 : 0] inst_rd_addr; input [
bit_width_depth-1 : 0] inst_wr_addr;
input [data_width-1 : 0] inst_data_in;
output [data_width-1 : 0] data_out_inst;
// Instance of DW_ram_r_w_s_dff
DW_ram_r_w_s_dff #(data_width, depth, rst_mode)
U1 (.clk(inst_clk), .rst_n(inst_rst_n), .cs_n(inst_cs_n),
.wr_n(inst_wr_n), .rd_addr(inst_rd_addr), .wr_addr(inst_wr_addr),
.data_in(inst_data_in), .data_out(data_out_inst) );
endmodule