日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Verilog功能模块——AXI4-Lite协议主机-单次写-使用FIFO

發布時間:2025/3/13 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Verilog功能模块——AXI4-Lite协议主机-单次写-使用FIFO 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 模塊功能與應用場景

模塊功能:AXI4-Lite協議主機,從FWFT FIFO(首字直通FIFO)中讀取地址和數據,實現將數據寫入到設定的地址中的操作。

二. 模塊框圖與使用說明

2.1 模塊框圖

2.2 參數與接口信號

參數列表:

參數名說明
ADDR_WIDTH地址寬度,可設置為任意正數
DATA_WIDTH數據寬度,可選32/64
RD_CHECK_EN讀檢查使能,1打開使能,0關閉使能

接口列表:

接口名說明
m_axi_xxx以m_axi_開頭的表示axi-Lite協議主機的接口信號
fwft_fifo_xxx共三個,組成首字直通FIFO的讀接口
single_burst_wr_finish單次突發完成
error_flagerror_flag為錯誤指示信號,用來指示有錯誤發生
write_resp_error寫響應錯誤
read_resp_error讀響應錯誤
rdata_notequal_wdata_error讀數據不等于寫數據的錯誤

2.3 模塊IP框圖

m_axi接口與FIFO READ接口封裝完成后框圖如下:

模塊IP參數配置界面:

2.4 使用說明

當FIFO非空時,此模塊會讀取FIFO中的數據,數據位寬必須等于 = 設置的地址位寬 + 設置的數據位寬。高位存地址,低位存數據。此AXI模塊會將接收到的數據寫入設置的地址中。如果使能了讀檢查使能(Rd Check En),此AXI模塊會在寫入完成后再讀取相同地址,并比較寫入數據和讀出數據,不同則報錯。

三. 模塊代碼

太長,見六. 工程分享。

四. testbench

/** @Author : Xu Dakang* @Email : XudaKang_up@qq.com* @Date : 2021-12-09 19:46:44* @LastEditors : Xu Dakang* @LastEditTime : 2021-12-11 13:48:25* @Filename :* @Description : */module AXI4Lite_singleRW_tb ();timeunit 1ns; timeprecision 1ps;localparam ADDR_WIDTH = 13; localparam DIN_WIDTH = 32;logic FIFO_WRITE_full; logic [ADDR_WIDTH + DIN_WIDTH-1 : 0] FIFO_WRITE_wr_data; logic FIFO_WRITE_wr_en; logic error_flag; logic m_axi_aclk; logic m_axi_aresetn; logic rdata_notequal_wdata_error; logic read_resp_error; logic single_burst_wr_finish; logic write_resp_error;AXI4Lite_singleRW_sys_wrapper AXI4Lite_singleRW_sys_wrapper_inst (.*);// 生成時鐘 localparam CLKT = 2; initial beginm_axi_aclk = 0;forever #(CLKT / 2) m_axi_aclk = ~m_axi_aclk; end// 導入輸入波形文件 路徑需要修改 string din_path = "F:/Onedrive/VivadoPrj/AXI4LiteMaster_singleRW_useFIFO/myAXI4LiteMasterV1.srcs/sim_1/new/sin.txt";localparam DATA_NUM = 10000; // 數據量, 也就是txt文件的行數, 如果此參數大于數據行數, 讀取到的內容為不定態 logic [DIN_WIDTH-1 : 0] din_wave_data [DATA_NUM]; // 讀取輸入波形數據 initial begin$readmemb(din_path, din_wave_data, 0, DATA_NUM-1); // vivado讀取txt文件 end// 寫使能 logic start; logic [ADDR_WIDTH-1 : 0] addr; always_ff @(posedge m_axi_aclk) beginif (~m_axi_aresetn)FIFO_WRITE_wr_en <= 1'b0;else if (start || single_burst_wr_finish)FIFO_WRITE_wr_en <= 1'b1;elseFIFO_WRITE_wr_en <= 1'b0; end// 寫地址 always_ff @(posedge m_axi_aclk) beginif (~m_axi_aresetn)addr <= '0;else if (start || single_burst_wr_finish)addr <= addr + 1'b1;elseaddr <= addr; end// 寫數據 always_ff @(posedge m_axi_aclk) beginif (~m_axi_aresetn)FIFO_WRITE_wr_data <= '0;else if (start || single_burst_wr_finish)FIFO_WRITE_wr_data <= {addr, din_wave_data[addr]};elseFIFO_WRITE_wr_data <= FIFO_WRITE_wr_data; end// 控制復位,仿真開始,仿真結束信號 initial beginm_axi_aresetn = 0;#(CLKT * 10) m_axi_aresetn = 1;wait(FIFO_WRITE_full == 0)start = 1;#(CLKT) start = 0;wait (addr == 5000);#(CLKT * 1000) $stop; endendmodule

五. 仿真驗證

仿真工具:Vivado 2021.2 Simulator。

Block Design如下圖:

仿真波形:寫數據和讀數據沒有問題。

六. 工程分享

AXI4LiteMaster_singleRW_useFIFO_Vivado2021.2工程分享:

鏈接:https://pan.baidu.com/s/1pMLVXw1URcthGT2Uv9QHxw
提取碼:dcq6

注意,需要修改testbench中的sin文件路徑才能得到正確的仿真結果。

總結

以上是生活随笔為你收集整理的Verilog功能模块——AXI4-Lite协议主机-单次写-使用FIFO的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。