FPGA實(shí)現(xiàn)AXI4總線的讀寫_如何寫axi4邏輯
一、AXI4 接口描述
通道 | 信號(hào) | 源 | 信號(hào)描述 |
全局信號(hào) | aclk | 主機(jī) | 全局時(shí)鐘 |
aresetn | 主機(jī) | 全局復(fù)位,低有效 | |
寫通道地址與控制信號(hào)通道 | M_AXI_WR_awid[3:0] | 主機(jī) | 寫地址ID,用來標(biāo)志一組寫信號(hào) |
M_AXI_WR_awaddr[31:0] | 主機(jī) | 寫地址,給出一次寫突發(fā)傳輸?shù)膶懙刂?/td> | |
M_AXI_WR_awlen[7:0] | 主機(jī) | 突發(fā)長(zhǎng)度,給出突發(fā)傳輸?shù)拇螖?shù) | |
M_AXI_WR_awsize[2:0] | 主機(jī) | 突發(fā)大小,給出每次突發(fā)傳輸?shù)淖止?jié)數(shù) | |
M_AXI_WR_awburst[1:0] | 主機(jī) | 突發(fā)類型 | |
M_AXI_WR_awlock | 主機(jī) | 總線鎖信號(hào),可提供操作的原子性 | |
M_AXI_WR_awcache[3:0] | 主機(jī) | 內(nèi)存類型,表明一次傳輸是怎樣通過系統(tǒng)的 | |
M_AXI_WR_awprot[2:0] | 主機(jī) | 保護(hù)類型,表明一次傳輸?shù)奶貦?quán)級(jí)及安全等級(jí) | |
M_AXI_WR_awqos[3:0] | 主機(jī) | 質(zhì)量服務(wù)QoS | |
M_AXI_WR_awvalid | 主機(jī) | 有效信號(hào),表明此通道的地址控制信號(hào)有效 | |
M_AXI_WR_awready | 從機(jī) | 表明“從”可以接收地址和對(duì)應(yīng)的控制信號(hào) | |
寫通道數(shù)據(jù)通道 | M_AXI_WR_wdata[63:0] | 主機(jī) | 寫數(shù)據(jù) |
M_AXI_WR_wstrb[7:0] | 主機(jī) | 寫數(shù)據(jù)有效的字節(jié)線,用來表明哪8bits數(shù)據(jù)是有效的 | |
M_AXI_WR_wlast | 主機(jī) | 表明此次傳輸是最后一個(gè)突發(fā)傳輸 | |
M_AXI_WR_wvalid | 主機(jī) | 寫有效,表明此次寫有效 | |
M_AXI_WR_wready | 從機(jī) | 表明從機(jī)可以接收寫數(shù)據(jù) | |
寫通道響應(yīng)通道 | M_AXI_WR_bid[3:0] | 從機(jī) | 寫響應(yīng)ID TAG |
M_AXI_WR_bresp[1:0] | 從機(jī) | 寫響應(yīng),表明寫傳輸?shù)臓顟B(tài) | |
M_AXI_WR_bvalid | 從機(jī) | 寫響應(yīng)有效 | |
M_AXI_WR_bready | 主機(jī) | 表明主機(jī)能夠接收寫響應(yīng) | |
讀通道地址與控制信號(hào)通道 | M_AXI_RD_arid[3:0] | 主機(jī) | 讀地址ID,用來標(biāo)志一組寫信號(hào) |
M_AXI_RD_araddr[31:0] | 主機(jī) | 讀地址,給出一次寫突發(fā)傳輸?shù)淖x地址 | |
M_AXI_RD_arlen[7:0] | 主機(jī) | 突發(fā)長(zhǎng)度,給出突發(fā)傳輸?shù)拇螖?shù) | |
M_AXI_RD_arsize[2:0] | 主機(jī) | 突發(fā)大小,給出每次突發(fā)傳輸?shù)淖止?jié)數(shù) | |
M_AXI_RD_arburst[1:0] | 主機(jī) | 突發(fā)類型 | |
M_AXI_RD_arlock[1:0] | 主機(jī) | 總線鎖信號(hào),可提供操作的原子性 | |
M_AXI_RD_arcache[3:0] | 主機(jī) | 內(nèi)存類型,表明一次傳輸是怎樣通過系統(tǒng)的 | |
M_AXI_RD_arprot[2:0] | 主機(jī) | 保護(hù)類型,表明一次傳輸?shù)奶貦?quán)級(jí)及安全等級(jí) | |
M_AXI_RD_arqos[3:0] | 主機(jī) | 質(zhì)量服務(wù)QOS | |
M_AXI_RD_arvalid | 主機(jī) | 有效信號(hào),表明此通道的地址控制信號(hào)有效 | |
M_AXI_RD_arready | 從機(jī) | 表明“從”可以接收地址和對(duì)應(yīng)的控制信號(hào) | |
讀通道數(shù)據(jù)通道 | M_AXI_RD_rid[3:0] | 從機(jī) | 讀IDtag |
M_AXI_RD_rdata[63:0] | 從機(jī) | 讀數(shù)據(jù) | |
M_AXI_RD_rresp[1:0] | 從機(jī) | 讀響應(yīng),表明讀傳輸?shù)臓顟B(tài) | |
M_AXI_RD_rlast | 從機(jī) | 表明讀突發(fā)的最后一次傳輸 | |
M_AXI_RD_rvalid | 從機(jī) | 表明此通道信號(hào)有效 | |
M_AXI_RD_rready | 主機(jī) | 表明主機(jī)能夠接收讀數(shù)據(jù)和響應(yīng)信息 |
二、地址通道的控制信號(hào)與地址描述
1、地址ID
AWID[3:0]與ARID[3:0]:對(duì)于只有一個(gè)主機(jī)從機(jī)設(shè)備,該值可設(shè)置為任意
2、地址結(jié)構(gòu)
AWADDR[31:0]與ARADDR[31:0]:AXI協(xié)議是基于burst(突發(fā))的,主機(jī)只給出突發(fā)傳輸?shù)牡谝粋€(gè)字節(jié)的地址,從機(jī)必須計(jì)算突發(fā)傳輸后續(xù)的地址。突發(fā)傳輸不能跨4KB邊界(防止突發(fā)跨越兩個(gè)從機(jī)的邊界,也限制了從機(jī)所需支持的地址自增數(shù)
3、突發(fā)長(zhǎng)度
AWLEN[7:0]與ARLEN[7:0]:ARLEN[7:0]決定讀傳輸?shù)耐话l(fā)長(zhǎng)度,AWLEN[7:0]決定寫傳輸?shù)耐话l(fā)長(zhǎng)度。AXI4擴(kuò)展突發(fā)長(zhǎng)度支持INCR突發(fā)類型為1256次傳輸,對(duì)于其他的傳輸類型依然保持116次突發(fā)傳輸(Burst_Length=AxLEN[7:0]+1)
4、突發(fā)大小
ARSIZE[2:0],讀突發(fā)傳輸;AWSIZE[2:0],寫突發(fā)傳輸。
AxSIZE[2:0] | 傳輸字節(jié)大小 |
3'b000 | 1 |
3'b001 | 2 |
3'b010 | 4 |
3'b011 | 8 |
3'b100 | 16 |
3'b101 | 32 |
3'b110 | 64 |
3'b111 | 128 |
5、突發(fā)類型
AWBURST[1:0]與ARBURST[1:0]:
AxBURST[1:0] | 突發(fā)類型 |
2'b00 | FIXED |
2'b01 | INCR |
2'b10 | WRAP |
2'b11 | Reserved |
FIXED:突發(fā)傳輸過程中地址固定,用于FIFO訪問
INCR:增量突發(fā),傳輸過程中,地址遞增。增加量取決AxSIZE的值
WRAP:回環(huán)突發(fā),和增量突發(fā)類似,但會(huì)在特定高地址的邊界處回到低地址處。回環(huán)突發(fā)的長(zhǎng)度只能是2,4,8,16次傳輸,傳輸首地址和每次傳輸?shù)拇笮?duì)齊。最低的地址整個(gè)傳輸?shù)臄?shù)據(jù)大小對(duì)齊。回環(huán)邊界等于(AxSIZE*AxLEN)
三、數(shù)據(jù)通道信號(hào)描述
1、WDATA與RDATA:寫與讀數(shù)據(jù)線信號(hào)
WSTRB:有效字節(jié),WSTRB[n:0]對(duì)應(yīng)于對(duì)應(yīng)的寫字節(jié),WSTRB[n]對(duì)應(yīng)WDATA[8n+7:8n],也就是對(duì)于的數(shù)據(jù)寬度的字節(jié)數(shù)是否有效。WVALID為低時(shí),WSTRB可以為任意值,WVALID為高時(shí),WSTRB為高的字節(jié)線必須指示有效的數(shù)據(jù)。對(duì)于一般應(yīng)用,將WSTRB全部置1即可,保證全部數(shù)據(jù)有效。讀通道無該信號(hào)。
2、WLAST與RLAST
寫與讀最后一個(gè)字節(jié),拉高表示傳輸最后一個(gè)字節(jié),也意味著傳輸結(jié)束
3、burst[1:0]
描述讀寫相應(yīng)結(jié)構(gòu)
burst[1:0] | |
00 | 常規(guī)訪問成功 |
01 | 獨(dú)占訪問成功 |
10 | 從機(jī)錯(cuò)誤 |
11 | 解碼錯(cuò)誤 |
四、突發(fā)寫時(shí)序:
AXI4突發(fā)寫可以分為7個(gè)狀態(tài),寫空閑,寫通道寫地址等待,寫通道寫地址,寫數(shù)據(jù)等待,寫數(shù)據(jù)循環(huán),接受寫應(yīng)答,寫結(jié)束這7種狀態(tài)。之所以劃分為7個(gè)狀態(tài)是為了后續(xù)寫程序的狀態(tài)機(jī)做準(zhǔn)備。
7種狀態(tài)
1、寫空閑:等待觸發(fā)突發(fā)信號(hào)
2、寫通道寫地址等待:準(zhǔn)備好寫地址AWADDR,然后拉高AWVALID。
3、寫通道寫地址:從機(jī)接受到AWVALID,發(fā)出AWREADY。
4、寫數(shù)據(jù)等待:準(zhǔn)備好數(shù)據(jù)WDATA,拉高WVALID。
5、寫數(shù)據(jù)循環(huán):從機(jī)接受WVALID,確認(rèn)數(shù)據(jù)WDATA有效并且接受,發(fā)出WREADY,AXI是突發(fā)傳輸:循環(huán)該操作到接受到WLAST最后一個(gè)數(shù)據(jù)標(biāo)志位。
6、接受寫應(yīng)答:接受到從機(jī)發(fā)出的BVALID,主機(jī)發(fā)出BREADY。
7、寫結(jié)束:拉低未拉低的信號(hào),進(jìn)入寫空閑
五、突發(fā)讀時(shí)序
AXI4突發(fā)讀可以分為6個(gè)狀態(tài),讀空閑,讀通道寫地址等待,讀通道寫地址,讀數(shù)據(jù)等待,讀數(shù)據(jù)循環(huán),讀結(jié)束這6種狀態(tài)。之所以劃分為6個(gè)狀態(tài)是為了后續(xù)寫程序的狀態(tài)機(jī)做準(zhǔn)備。
6種狀態(tài)
1、讀空閑:等待觸發(fā)突發(fā)信號(hào)。
2、讀通道寫地址等待:準(zhǔn)備好寫地址ARADDR,然后拉高ARVALID。
3、讀通道寫地址:從機(jī)接受到ARVALID,發(fā)出ARREADY。
4、讀數(shù)據(jù)等待:從機(jī)準(zhǔn)備好數(shù)據(jù)WDATA,從機(jī)拉高RVALID。
5、讀數(shù)據(jù)循環(huán):主機(jī)接受RVALID,確認(rèn)數(shù)據(jù)RDATA有效并且接受,發(fā)出RREADY給從機(jī),AXI是突發(fā)傳輸:循環(huán)該操作到接受到RLAST最后一個(gè)數(shù)據(jù)標(biāo)志位
6、讀結(jié)束:拉低未拉低的信號(hào),進(jìn)入讀空閑
注:
1、讀數(shù)據(jù)必須總是跟在與其數(shù)據(jù)相關(guān)聯(lián)的地址之后。
2、寫響應(yīng)必須總是跟在與其相關(guān)聯(lián)的寫事務(wù)的最后出現(xiàn)。
六、寫時(shí)序狀態(tài)機(jī)
七、寫時(shí)序代碼
module axi4_write( input clk , input resetn , input enable_write , //寫使能 input [31:0] w_addr , //地址 input [63:0] w_data , //數(shù)據(jù) output reg write_done , //寫完成 output reg write_data , //表示數(shù)據(jù)寫入,突發(fā)模式下可用于切換數(shù)據(jù)的指示信號(hào) //axi4寫通道地址通道 output [3:0] m_axi_awid , //寫地址ID,用來標(biāo)志一組寫信號(hào) output reg[31:0] m_axi_awaddr ,//寫地址,給出一次寫突發(fā)傳輸?shù)膶懙刂? output [7:0] m_axi_awlen , //突發(fā)長(zhǎng)度,給出突發(fā)傳輸?shù)拇螖?shù) output [2:0] m_axi_awsize , //突發(fā)大小,給出每次突發(fā)傳輸?shù)淖止?jié)數(shù) output [1:0] m_axi_awburst , //突發(fā)類型 output m_axi_awlock , //總線鎖信號(hào),可提供操作的原子性 output [3:0] m_axi_awcache , //內(nèi)存類型,表明一次傳輸是怎樣通過系統(tǒng)的 output [2:0] m_axi_awprot , //保護(hù)類型,表明一次傳輸?shù)奶貦?quán)級(jí)及安全等級(jí) output [3:0] m_axi_awqos , //質(zhì)量服務(wù)QoS output reg m_axi_awvalid , //有效信號(hào),表明此通道的地址控制信號(hào)有效 input m_axi_awready , //表明“從”可以接收地址和對(duì)應(yīng)的控制信號(hào) //axi4寫通道數(shù)據(jù)通道 output reg[63:0] m_axi_wdata , //寫數(shù)據(jù) output [7:0] m_axi_wstrb , //寫數(shù)據(jù)有效的字節(jié)線 output reg m_axi_wlast , //表明此次傳輸是最后一個(gè)突發(fā)傳輸 output reg m_axi_wvalid , //寫有效,表明此次寫有效 input m_axi_wready , //表明從機(jī)可以接收寫數(shù)據(jù) //axi4寫通道應(yīng)答通道 input [3:0] m_axi_bid , //寫響應(yīng)ID TAG input [1:0] m_axi_bresp , //寫響應(yīng),表明寫傳輸?shù)臓顟B(tài) input m_axi_bvalid , //寫響應(yīng)有效 output reg m_axi_bready //表明主機(jī)能夠接收寫響應(yīng) ); //*******************參數(shù)***************************** localparam W_IDLEW = 3'b001 ; //空閑等待 localparam W_DRIVEW = 3'b011 ; //準(zhǔn)備、取地址 localparam W_HANDS = 3'b010 ; //握手 localparam W_WSTBR = 3'b110 ; //突發(fā) localparam W_WAIT = 3'b111 ; //等待結(jié)束的信息 localparam W_END = 3'b101 ; //寫數(shù)據(jù)階段 parameter LEN_NUM = 1 ; parameter AWID = 0 ; //*********內(nèi)部信號(hào)****************************** reg [2:0] state , next_state ; reg wready_over ; reg [7:0] len ; assign m_axi_awid = AWID[3:0] ; // [3:0] //寫地址ID,用來標(biāo)志一組寫信號(hào) assign m_axi_awlen = LEN_NUM-1 ; // [7:0] //突發(fā)長(zhǎng)度,給出突發(fā)傳輸?shù)拇螖?shù) assign m_axi_awsize = 3'b011 ; // [2:0] //突發(fā)大小,給出每次突發(fā)傳輸?shù)淖止?jié)數(shù) assign m_axi_awburst = 2'b10 ; // [1:0] //突發(fā)類型 assign m_axi_awlock = 1'b0 ; // //總線鎖信號(hào),可提供操作的原子性 assign m_axi_awcache = 4'b0010 ; // [3:0] //內(nèi)存類型,表明一次傳輸是怎樣通過系統(tǒng)的 assign m_axi_awprot = 3'b000 ; // [2:0] //保護(hù)類型,表明一次傳輸?shù)奶貦?quán)級(jí)及安全等級(jí) assign m_axi_awqos = 4'b0000 ; // [3:0] //質(zhì)量服務(wù)QoS assign m_axi_wstrb = 8'hff ; //狀態(tài)機(jī) always @(*) begin state = next_state ; end always @(posedge clk or negedge resetn) begin if(!resetn) begin wready_over<=0; end else if(state==W_IDLEW || state==W_END ) wready_over<=0; else if(m_axi_wready) wready_over<=1; end always @(posedge clk or negedge resetn) begin if(!resetn) begin next_state <= W_IDLEW ; len <=0 ; end else case(state) W_IDLEW : if(enable_write) next_state <= W_DRIVEW ; else next_state<=W_IDLEW ; W_DRIVEW: if(m_axi_awready) begin next_state <= W_HANDS ; len<=LEN_NUM-1 ; end else next_state<=W_DRIVEW ; W_HANDS : if(wready_over && len==0) next_state <= W_WAIT ; else if(wready_over ) next_state <= W_WSTBR ; else next_state<=W_HANDS ; W_WSTBR : if(len==1) next_state <= W_WAIT ; else begin next_state <= W_WSTBR ; len <=len-1 ; end W_WAIT : next_state<=W_END ; W_END : if(m_axi_bvalid)next_state <= W_IDLEW ; else next_state<=W_END ; default : next_state<=W_IDLEW ; endcase end // 組合邏輯輸出 always @(* ) begin case(state) W_IDLEW : begin m_axi_wlast = 0 ; m_axi_awaddr = 0 ; m_axi_awvalid = 0 ; m_axi_wdata = 0 ; m_axi_wvalid = 0 ; m_axi_bready = 0 ; write_done = 0 ; write_data = 0 ; end W_DRIVEW: begin m_axi_wlast = 0 ; m_axi_awaddr = w_addr ; m_axi_awvalid = 1 ; m_axi_wdata = 0 ; m_axi_wvalid = 0 ; m_axi_bready = 0 ; write_done = 0 ; write_data = 0 ; end W_HANDS : begin m_axi_wlast = 0 ; m_axi_awaddr = 0 ; m_axi_awvalid = 0 ; m_axi_wdata = 0 ; m_axi_wvalid = 0 ; m_axi_bready = 0 ; write_done = 0 ; write_data = 0 ; end W_WSTBR : begin m_axi_wlast = 0 ; m_axi_awaddr = 0 ; m_axi_awvalid = 0 ; m_axi_wdata = w_data ; m_axi_wvalid = 1 ; m_axi_bready = 0 ; write_done = 0 ; write_data = 1 ; end W_WAIT : begin m_axi_wlast = 1 ; m_axi_awaddr = 0 ; m_axi_awvalid = 0 ; m_axi_wdata = w_data ; m_axi_wvalid = 1 ; m_axi_bready = 0 ; write_done = 1 ; write_data = 1 ; end W_END : begin m_axi_wlast = 0 ; m_axi_awaddr = 0 ; m_axi_awvalid = 0 ; m_axi_wdata = 0 ; m_axi_wvalid = 0 ; m_axi_bready = 1 ; write_done = 0 ; write_data = 0 ; end default : begin m_axi_wlast = 0 ; m_axi_awaddr = 0 ; m_axi_awvalid = 0 ; m_axi_wdata = 0 ; m_axi_wvalid = 0 ; m_axi_bready = 0 ; write_done = 0 ; write_data = 0 ; end endcase end endmodule
八、讀時(shí)序狀態(tài)機(jī)
九、讀時(shí)序代碼
module axi4_read( input resetn ,//axi復(fù)位 input clk , //axi時(shí)鐘 input enable_read , output read_data , output read_done , input [31:0] r_addr , output reg [63:0] r_data , //axi讀通道寫地址 output [3:0] m_axi_arid , //讀地址ID,用來標(biāo)志一組寫信號(hào) output reg [31:0] m_axi_araddr , //讀地址,給出一次寫突發(fā)傳輸?shù)淖x地址 output [7:0] m_axi_arlen , //突發(fā)長(zhǎng)度,給出突發(fā)傳輸?shù)拇螖?shù) output [2:0] m_axi_arsize , //突發(fā)大小,給出每次突發(fā)傳輸?shù)淖止?jié)數(shù) output [1:0] m_axi_arburst , //突發(fā)類型 output [1:0] m_axi_arlock , //總線鎖信號(hào),可提供操作的原子性 output [3:0] m_axi_arcache , //內(nèi)存類型,表明一次傳輸是怎樣通過系統(tǒng)的 output [2:0] m_axi_arprot , //保護(hù)類型,表明一次傳輸?shù)奶貦?quán)級(jí)及安全等級(jí) output [3:0] m_axi_arqos , //質(zhì)量服務(wù)QOS output reg m_axi_arvalid , //有效信號(hào),表明此通道的地址控制信號(hào)有效 input m_axi_arready , //表明“從”可以接收地址和對(duì)應(yīng)的控制信號(hào) //axi讀通道讀數(shù)據(jù) input [3:0] m_axi_rid , //讀ID tag input [63:0] m_axi_rdata , //讀數(shù)據(jù) input [1:0] m_axi_rresp , //讀響應(yīng),表明讀傳輸?shù)臓顟B(tài) input m_axi_rlast , //表明讀突發(fā)的最后一次傳輸 input m_axi_rvalid , //表明此通道信號(hào)有效 output reg m_axi_rready //表明主機(jī)能夠接收讀數(shù)據(jù)和響應(yīng)信息 ); // localparam [2:0] R_IDLER = 3'b001 ; localparam [2:0] R_WAIT = 3'b011 ; localparam [2:0] R_BURST = 3'b010 ; localparam [2:0] R_END = 3'b110 ; parameter ARID = 0 ; parameter RD_LEN = 1 ; // reg [2:0] state , next_state ; reg rvalid_over ; // assign m_axi_arid = ARID[3:0] ;//地址id assign m_axi_arlen = RD_LEN-32'd1 ;//突發(fā)長(zhǎng)度 assign m_axi_arsize = 3'b011 ;//表示AXI總線每個(gè)數(shù)據(jù)寬度是8字節(jié),64位 assign m_axi_arburst = 2'b01 ;//地址遞增方式傳輸 assign m_axi_arlock = 1'b0 ; assign m_axi_arcache = 4'b0010 ; assign m_axi_arprot = 3'b000 ; assign m_axi_arqos = 4'b0000 ; assign read_data = m_axi_rvalid ; assign read_done = m_axi_rlast ; //axi讀狀態(tài)機(jī) always @(*) begin state = next_state ; end // always @(posedge clk or negedge resetn) begin if(!resetn) begin rvalid_over <=0 ; end else if(state==R_IDLER) begin rvalid_over <=0 ; end else if(m_axi_rvalid)begin rvalid_over <= 1 ; end end always @(posedge clk or negedge resetn) begin if(!resetn) next_state <= R_IDLER; else case(state) R_IDLER : if(enable_read) next_state <= R_WAIT ;else next_state<=R_IDLER ; R_WAIT : if(m_axi_arready) next_state<=R_BURST ;else next_state<=R_WAIT ; R_BURST : if(m_axi_rlast) next_state<=R_END ;else next_state <= R_BURST ; R_END : if(rvalid_over) next_state<=R_IDLER;else next_state<=R_END ; default : next_state<=R_IDLER ; endcase end // always @(*) begin case(state) R_IDLER : begin m_axi_araddr = 0 ; m_axi_arvalid = 0 ; m_axi_rready = 0 ; r_data = 0 ; end R_WAIT : begin m_axi_araddr = r_addr ; m_axi_arvalid = 1 ; m_axi_rready = 0 ; r_data = 0 ; end R_BURST : begin m_axi_araddr = 0 ; m_axi_arvalid = 0 ; m_axi_rready = 1 ; r_data = m_axi_rdata ; end R_END : begin m_axi_araddr = 0 ; m_axi_arvalid = 0 ; m_axi_rready = 1 ; r_data = 0 ; end default : begin m_axi_araddr = 0 ; m_axi_arvalid = 0 ; m_axi_rready = 0 ; r_data = 0 ; end endcase end endmodule
原文鏈接:
https://tencentcloud.csdn.net/678a0c64edd0904849a660e1.html
-
FPGA
+關(guān)注
關(guān)注
1630文章
21785瀏覽量
605052 -
接口
+關(guān)注
關(guān)注
33文章
8685瀏覽量
151643 -
時(shí)序
+關(guān)注
關(guān)注
5文章
392瀏覽量
37380 -
AXI4總線
+關(guān)注
關(guān)注
0文章
9瀏覽量
1412
原文標(biāo)題:FPGA實(shí)現(xiàn)AXI4總線的讀寫_如何寫axi4邏輯
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論