美文网首页
修改AXI UART D16550 FIFO深度

修改AXI UART D16550 FIFO深度

作者: 望江樵夫 | 来源:发表于2021-10-20 23:07 被阅读0次

    更改 AXI UART 16550 FIFO 大小,步骤如下:

    1. 备份 Vivado/your_version/data/ip/xilinx/axi_uart16550_v2_0 和 /Vivado/your_version/data/ip/xilinx/lib_srl_fifo_v1_0 文件夹
    2. 如果您的设计中有 AXI_UART_16550 IP 核,请将其移除,保存设计/项目并关闭 Vivado
    3. 清除项目目录中的 your_project.cache 文件夹
    4. 编辑 Vivado/your_version/data/ip/xilinx/lib_srl_fifo_v1_0/hdl 文件夹中的 lib_srl_fifo_v1_0_rfs.vhd:
    • 第 677、381、981 行:根据需要更改 C_DEPTH 值
    • 保存并关闭文件
      请注意:clog2 函数用于确定存储值所需的位数。例如,在 Num_To_Reread 的情况下:在 std_logic_vector(0 to clog2(C_DEPTH)-1) 中,该函数将返回 4(位!)的值,因此该行将被处理为 Num_To_Reread :在 std_logic_vector(0 到 3) 中。为您的 C_DEPTH 值计算此值对于以下编辑很重要。clog2 函数返回上限 log2(C_DEPTH) 值,即存储 C_DEPTH 值的最小位数。
      注2:如果您不了解 VHDL 或该函数究竟是做什么的,这里是 C/C+++ 版本:
    int clog2(int x)
    {
       int r = 0;
       int rp = 1;
       while( rp < x )
       {
           r\+\+;
           if( rp > std::numeric_limits<int>::max())
              return std::numeric_limits<int>::max(); //or we could exit with some other value as -1...
           rp \+= rp;
       }
        return r;
    }
    

    随着 rp 值呈指数增长,您可以通过 head 或在一些纸上评估函数 - 对于一些通常的 FIFO 大小值(32、64 ...),它只会是几个循环......

    1. 编辑 Vivado/your_version/data/ip/xilinx/axi_uart16550_v2_0/hdl 文件夹中的 axi_uart16550_v2_0_vh_rfs.vhd 文件:
    • 第 89 行(Rx_fifo_count : in std_logic_vector(3 downto 0 ); -- Rx fifo count):将 3 的值更改为上一步中 clog2 函数返回的值减去 1(从 0 开始计数:-))。
    • 第 510 行:添加库“use ieee.numeric_std.all;” (不带引号)
    • 第 561 行:将 C_DEPTH 值更改为所需的 FIFO 深度
    • 第 574 行:将 Num_To_Reread => X"0" 更改为
      std_logic_VECTOR(to_unsigned(0,your_value_from_clog2_function))//这里不减一
    • 第 1086 行:添加库“use ieee.numeric_std.all;” (不带引号)
    • 第 1140 行:更改“信号 rx_fifo_count : std_logic_vector(3 downto 0);” - 将 3 的值更改为值
      由上一步中的 clog2 函数返回减一(从 0 开始计数)
    • 第 1178 行:将 C_DEPTH 值更改为所需的 FIFO 深度
    • 第 1191 行:将 Num_To_Reread => X"0" 更改为
      Num_To_Reread => std_logic_VECTOR(to_unsigned(0,your_value_from_clog2_function))//这里不减一
    1. 保存文件,打开您的 Vivado 项目/设计,添加 UART IP、合成、生成比特流……您就完成了 :-)

    相关文章

      网友评论

          本文标题:修改AXI UART D16550 FIFO深度

          本文链接:https://www.haomeiwen.com/subject/nbbxaltx.html