亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

標準AXI4與紫光DDR IP Simplified AXI4接口轉換詳解

2025-06-27 02:42:30
15
0

一、接口背景介紹

標準AXI4接口

AXI4(Advanced eXtensible Interface 4)是ARM公司制定的AMBA 4.0規范的一部分,廣泛應用于高性能SoC設計中。標準AXI4協議提供了完整的信號集合,支持復雜的突發傳輸、亂序處理和多ID并發,能夠滿足CPU、GPU等高性能設備的互連需求。

紫光DDR IP的Simplified AXI4接口

紫光同創在其DDR控制器IP中采用了Simplified AXI4接口,這是一種針對內存訪問場景優化的簡化版本。相比標準AXI4,它減少了部分復雜特性,降低了實現復雜度和資源消耗,同時保持了足夠的性能來滿足DDR內存訪問需求。

二、接口信號差異對比

寫通道信號對比

信號名稱 標準AXI4 紫光Simplified AXI4 位寬差異 信號含義
地址信號 awaddr[31:0] bist_axi_awaddr[31:0] 相同 寫地址
傳輸長度 awlen[7:0] bist_axi_awlen[3:0] 8位→4位 突發長度,簡化版最大支持16次傳輸
傳輸ID awid[7:0] bist_axi_awuser_id[3:0] 8位→4位 傳輸標識,簡化版降低路由復雜度
傳輸大小 awsize[2:0] ? 缺失 - 每次傳輸的字節數,簡化版省略
突發類型 awburst[1:0] ? 缺失 - 突發模式,簡化版固定為INCR
用戶信號 標準無 bist_axi_awuser_ap 新增1位 紫光自定義的用戶信號
數據信號 wdata[255:0] bist_axi_wdata[127:0] 256位→128位 寫數據,寬度與DDR接口匹配
字節使能 wstrb[31:0] bist_axi_wstrb[15:0] 32位→16位 字節寫使能,對應數據寬度
最后傳輸 wlast ? 缺失 - 最后一次傳輸指示,簡化版通過計數判斷

讀通道信號對比

信號名稱 標準AXI4 紫光Simplified AXI4 位寬差異 信號含義
地址信號 araddr[31:0] bist_axi_araddr[31:0] 相同 讀地址
傳輸長度 arlen[7:0] bist_axi_arlen[3:0] 8位→4位 讀突發長度
傳輸ID arid[7:0] bist_axi_aruser_id[3:0] 8位→4位 讀傳輸標識
數據返回 rdata[255:0] bist_axi_rdata[127:0] 256位→128位 讀數據
最后數據 rlast ? 缺失 - 最后一次讀數據指示
讀響應 rresp[1:0] 簡化處理 - 讀響應信號

關鍵信號含義解釋

  • awlen/arlen:突發傳輸長度-1,標準AXI4支持1-256次傳輸,簡化版支持1-16次
  • awsize/arsize:每次傳輸的字節大小,2^size字節,簡化版通過數據寬度固定
  • awburst/arburst:突發類型(FIXED/INCR/WRAP),簡化版固定為INCR(遞增)
  • wlast/rlast:指示突發傳輸的最后一拍,簡化版通過內部計數器實現

三、接口轉換機制解析

基于代碼分析,轉換模塊主要通過以下機制實現兩種接口的橋接:

3.1 參數化設計

parameter DATA_WIDTH_MUL = MEM_DQ_WIDTH*8/AXI_DATA_WIDTH;
parameter LEN_SHIFT = (DATA_WIDTH_MUL == 1) ? 0 : 
                      (DATA_WIDTH_MUL == 2) ? 1 : 2;

通過計算數據寬度比例,自動確定長度轉換的移位量。

3.2 長度轉換算法

assign axi_awlen_a = ({5'b0,bist_axi_awlen_d1} + 9'd1) << LEN_SHIFT;
assign axi_awlen_b = axi_awlen_a - 9'b1;
assign axi_awlen = axi_awlen_b[7:0];

轉換步驟:

  1. 將簡化接口的4位長度擴展為9位
  2. 加1得到實際傳輸次數
  3. 根據數據寬度比例左移(LEN_SHIFT)
  4. 減1轉換為AXI4的len格式

3.3 地址對齊處理

parameter AXI_ADDR_SHIFT = (MEM_DQ_WIDTH == 16) ? 1 : 
                           (MEM_DQ_WIDTH == 32) ? 2 : 3;
assign axi_awaddr = {bist_axi_awaddr_d1,{AXI_ADDR_SHIFT{1'b0}}};

根據內存數據寬度自動進行地址對齊,確保地址符合AXI4傳輸要求。

3.4 數據寬度轉換

轉換模塊使用了兩個關鍵的FIFO來處理數據寬度差異:

寫數據FIFO:

  • 輸入:窄數據寬度 (MEM_DQ_WIDTH*8)
  • 輸出:寬數據寬度 (AXI_DATA_WIDTH)
  • 功能:將多個窄數據合并為寬數據

讀數據FIFO:

  • 輸入:寬數據寬度 (AXI_DATA_WIDTH)
  • 輸出:窄數據寬度 (MEM_DQ_WIDTH*8)
  • 功能:將寬數據拆分為多個窄數據

3.5 流控同步機制

always @(posedge clk or negedge rst_n) begin
    if(!rst_n)
        wr_align_done <= 1;
    else if(bist_axi_awready & bist_axi_awvalid)
        wr_align_done <= 0;
    else if(axi_wready & axi_wvalid & (axi_wdata_cnt == axi_awlen))
        wr_align_done <= 1;
end

通過wr_align_done信號協調兩個接口的握手時序:

  • 簡化接口發起傳輸時,禁止新的傳輸請求
  • 標準AXI4傳輸完成后,重新使能簡化接口
  • 確保數據傳輸的完整性和一致性

3.6 信號映射與補全

轉換模塊還負責補全簡化接口缺失的標準AXI4信號:

  • axi_awsize/axi_arsize:根據數據寬度自動設置
  • axi_awburst/axi_arburst:固定設置為INCR模式
  • axi_wlast:通過內部計數器生成
  • axi_bready:固定為高電平
0條評論
0 / 1000
Du_carry
3文章數
0粉絲數
Du_carry
3 文章 | 0 粉絲
原創

標準AXI4與紫光DDR IP Simplified AXI4接口轉換詳解

2025-06-27 02:42:30
15
0

一、接口背景介紹

標準AXI4接口

AXI4(Advanced eXtensible Interface 4)是ARM公司制定的AMBA 4.0規范的一部分,廣泛應用于高性能SoC設計中。標準AXI4協議提供了完整的信號集合,支持復雜的突發傳輸、亂序處理和多ID并發,能夠滿足CPU、GPU等高性能設備的互連需求。

紫光DDR IP的Simplified AXI4接口

紫光同創在其DDR控制器IP中采用了Simplified AXI4接口,這是一種針對內存訪問場景優化的簡化版本。相比標準AXI4,它減少了部分復雜特性,降低了實現復雜度和資源消耗,同時保持了足夠的性能來滿足DDR內存訪問需求。

二、接口信號差異對比

寫通道信號對比

信號名稱 標準AXI4 紫光Simplified AXI4 位寬差異 信號含義
地址信號 awaddr[31:0] bist_axi_awaddr[31:0] 相同 寫地址
傳輸長度 awlen[7:0] bist_axi_awlen[3:0] 8位→4位 突發長度,簡化版最大支持16次傳輸
傳輸ID awid[7:0] bist_axi_awuser_id[3:0] 8位→4位 傳輸標識,簡化版降低路由復雜度
傳輸大小 awsize[2:0] ? 缺失 - 每次傳輸的字節數,簡化版省略
突發類型 awburst[1:0] ? 缺失 - 突發模式,簡化版固定為INCR
用戶信號 標準無 bist_axi_awuser_ap 新增1位 紫光自定義的用戶信號
數據信號 wdata[255:0] bist_axi_wdata[127:0] 256位→128位 寫數據,寬度與DDR接口匹配
字節使能 wstrb[31:0] bist_axi_wstrb[15:0] 32位→16位 字節寫使能,對應數據寬度
最后傳輸 wlast ? 缺失 - 最后一次傳輸指示,簡化版通過計數判斷

讀通道信號對比

信號名稱 標準AXI4 紫光Simplified AXI4 位寬差異 信號含義
地址信號 araddr[31:0] bist_axi_araddr[31:0] 相同 讀地址
傳輸長度 arlen[7:0] bist_axi_arlen[3:0] 8位→4位 讀突發長度
傳輸ID arid[7:0] bist_axi_aruser_id[3:0] 8位→4位 讀傳輸標識
數據返回 rdata[255:0] bist_axi_rdata[127:0] 256位→128位 讀數據
最后數據 rlast ? 缺失 - 最后一次讀數據指示
讀響應 rresp[1:0] 簡化處理 - 讀響應信號

關鍵信號含義解釋

  • awlen/arlen:突發傳輸長度-1,標準AXI4支持1-256次傳輸,簡化版支持1-16次
  • awsize/arsize:每次傳輸的字節大小,2^size字節,簡化版通過數據寬度固定
  • awburst/arburst:突發類型(FIXED/INCR/WRAP),簡化版固定為INCR(遞增)
  • wlast/rlast:指示突發傳輸的最后一拍,簡化版通過內部計數器實現

三、接口轉換機制解析

基于代碼分析,轉換模塊主要通過以下機制實現兩種接口的橋接:

3.1 參數化設計

parameter DATA_WIDTH_MUL = MEM_DQ_WIDTH*8/AXI_DATA_WIDTH;
parameter LEN_SHIFT = (DATA_WIDTH_MUL == 1) ? 0 : 
                      (DATA_WIDTH_MUL == 2) ? 1 : 2;

通過計算數據寬度比例,自動確定長度轉換的移位量。

3.2 長度轉換算法

assign axi_awlen_a = ({5'b0,bist_axi_awlen_d1} + 9'd1) << LEN_SHIFT;
assign axi_awlen_b = axi_awlen_a - 9'b1;
assign axi_awlen = axi_awlen_b[7:0];

轉換步驟:

  1. 將簡化接口的4位長度擴展為9位
  2. 加1得到實際傳輸次數
  3. 根據數據寬度比例左移(LEN_SHIFT)
  4. 減1轉換為AXI4的len格式

3.3 地址對齊處理

parameter AXI_ADDR_SHIFT = (MEM_DQ_WIDTH == 16) ? 1 : 
                           (MEM_DQ_WIDTH == 32) ? 2 : 3;
assign axi_awaddr = {bist_axi_awaddr_d1,{AXI_ADDR_SHIFT{1'b0}}};

根據內存數據寬度自動進行地址對齊,確保地址符合AXI4傳輸要求。

3.4 數據寬度轉換

轉換模塊使用了兩個關鍵的FIFO來處理數據寬度差異:

寫數據FIFO:

  • 輸入:窄數據寬度 (MEM_DQ_WIDTH*8)
  • 輸出:寬數據寬度 (AXI_DATA_WIDTH)
  • 功能:將多個窄數據合并為寬數據

讀數據FIFO:

  • 輸入:寬數據寬度 (AXI_DATA_WIDTH)
  • 輸出:窄數據寬度 (MEM_DQ_WIDTH*8)
  • 功能:將寬數據拆分為多個窄數據

3.5 流控同步機制

always @(posedge clk or negedge rst_n) begin
    if(!rst_n)
        wr_align_done <= 1;
    else if(bist_axi_awready & bist_axi_awvalid)
        wr_align_done <= 0;
    else if(axi_wready & axi_wvalid & (axi_wdata_cnt == axi_awlen))
        wr_align_done <= 1;
end

通過wr_align_done信號協調兩個接口的握手時序:

  • 簡化接口發起傳輸時,禁止新的傳輸請求
  • 標準AXI4傳輸完成后,重新使能簡化接口
  • 確保數據傳輸的完整性和一致性

3.6 信號映射與補全

轉換模塊還負責補全簡化接口缺失的標準AXI4信號:

  • axi_awsize/axi_arsize:根據數據寬度自動設置
  • axi_awburst/axi_arburst:固定設置為INCR模式
  • axi_wlast:通過內部計數器生成
  • axi_bready:固定為高電平
文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0