APB3是一個(gè)低功耗低成本接口。所有信號(hào)在時(shí)鐘上升沿傳輸,每次傳輸需要兩個(gè)時(shí)鐘周期。
1、Interface
信號(hào) | 控制端 | 描述 |
PSEL | M | 選通。APB master會(huì)將此信號(hào)生成給每個(gè)slave。它指示已選擇的slave,并且需要進(jìn)行數(shù)據(jù)傳輸。每個(gè)slave都有一個(gè)PSEL信號(hào)。 |
PADDR | M | 地址總線,最大位寬32位 |
PENABLE | M | 使能。當(dāng)它為高時(shí),表示讀寫過程有效 |
PWRITE | M | 讀寫控制。為高時(shí)表示寫操作,為低時(shí)表示讀操作 |
PWDATA | M | 寫數(shù)據(jù)。master通過PWDATA將數(shù)據(jù)寫到slave,該總線最大寬度為32位 |
PRDATA | S | 讀數(shù)據(jù)。master通過PRDATA將數(shù)據(jù)從slave讀取回來,該總線最大寬度為32位 |
PREADY | S | 在PSEL和PENABLE為高時(shí),總線會(huì)查看PREADY是否為高,如果為高則數(shù)據(jù)有效,如果為低則等待其變高。 |
APB寫過程
沒有等待狀態(tài)。
(1)T0到T1階段是空閑狀態(tài),
(2)T1到T2是setup階段,此階段會(huì)準(zhǔn)備好PADDR,PWRITE(為1),PWDATA。
(3)T2到T3是Access階段,此階段PENABLE會(huì)拉高,并且地址、數(shù)據(jù)和控制信號(hào)仍然保持有效。
(4)T3到T4階段PENABLE再次拉低;選擇信號(hào)PSELx也會(huì)拉低,除非緊跟同一外設(shè)下一次的傳輸。
有等待狀態(tài)
在ACESS階段,當(dāng)PENABLE為高時(shí),可以通過PREADY拉低來延長(zhǎng)ACESS階段。這時(shí)要保持PADDR,PWRITE,PSEL,PENABLE,PWDATA信號(hào)保持不變。
當(dāng)PENABLE為低時(shí),PREADY可以高也可以低。所以如果外設(shè)是固定兩個(gè)操作周期時(shí),PREADY可以固定為高。
另外推薦地址和寫信號(hào)只在下一個(gè)訪問周期才發(fā)生變化,這樣可以節(jié)省功耗 。
APB讀過程
讀操作
在SETUP階段讀過程與寫過程是一樣的,只是寫過程PWRITE為高,讀過程PWRITE為低。
同樣在ACCESS階段,也可以通過拉低PREADY信號(hào)延長(zhǎng)ACESS階段,但是要保證PADDR,PWRITE,PSEL和PENALBE為固定狀態(tài)。
通過RISCV 操作APB3也比較簡(jiǎn)單,如下:
slave是指APB的基地址,addr是指APB的偏移地址,也就是PADDR.
void apb3_write(u32 slave, u32 addr, u32 data ) { write_u32(data,slave+addr); } voidabp3_read(u32slave,u32addr) { returnread_u32(slave+addr); }
在邏輯上處理也比較簡(jiǎn)單,易靈思提供了簡(jiǎn)單的APB3參考。
//以下為易靈思提供的APB3的參考 module apb3_slave_memory #( // user parameter starts here // parameter ADDR_WIDTH = 16, parameter DATA_WIDTH = 32, parameter NUM_REG = 4 ) ( // user logic starts here input clk, input resetn, input [ADDR_WIDTH-1:0] PADDR, input PSEL, input PENABLE, output PREADY, input PWRITE, input [DATA_WIDTH-1:0] PWDATA, output [DATA_WIDTH-1:0] PRDATA, outputPSLVERROR ); ///////////////////////////////////////////////////////////////// localparam [1:0] IDLE = 2'b00, SETUP = 2'b01, ACCESS = 2'b10; reg [1:0] busState, busNext; reg slaveReady; wire actWrite, actRead; ////////////////////////////////////////////////////////////////// always@(posedge clk or negedge resetn) begin if(!resetn) busState <= IDLE; else busState <= busNext; end always@(*) begin busNext = busState; case(busState) IDLE: begin if(PSEL && !PENABLE) busNext = SETUP; else busNext = IDLE; end SETUP: begin if(PSEL && PENABLE) busNext = ACCESS; else busNext = IDLE; end ACCESS: begin if(PREADY) busNext = IDLE; else busNext = ACCESS; end default: begin busNext = IDLE; end endcase end assign actWrite = PWRITE && (busState == ACCESS); assign actRead = !PWRITE && (busState == ACCESS); assign PSLVERROR = 1'b0; assign PREADY = slaveReady & & (busState !== IDLE); always@ (posedge clk) begin slaveReady <= actWrite | actRead; end simple_dual_port_ram #( .DATA_WIDTH(32), .ADDR_WIDTH(16), .OUTPUT_REG(0), .RAM_INIT_FILE("") ) dut ( .wdata (PWDATA ), .waddr (PADDR ), .wclk (clk ), .we (actWrite ), .raddr (PADDR ), .rclk (clk ), .re (actRead ), .rdata (PRDATA ) ); endmodule
審核編輯:劉清
-
控制信號(hào)
+關(guān)注
關(guān)注
0文章
169瀏覽量
12045 -
PSEL
+關(guān)注
關(guān)注
0文章
2瀏覽量
2021 -
RISC-V
+關(guān)注
關(guān)注
45文章
2331瀏覽量
46687
原文標(biāo)題:APB3接口應(yīng)用
文章出處:【微信號(hào):gh_ea2445df5d2a,微信公眾號(hào):FPGA及視頻處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何用XSCT通過APB接口來讀GT的寄存器
![如何用XSCT通過<b class='flag-5'>APB</b><b class='flag-5'>接口</b>來讀GT的寄存器](https://file1.elecfans.com/web2/M00/B4/FF/wKgZomVygHGAYYsXAAMHglQEZhA875.jpg)
PGA308讀寫過程中的28ms延時(shí)復(fù)位1-wire接口是硬件實(shí)現(xiàn)的還是需要編程實(shí)現(xiàn)?
ram的結(jié)構(gòu)和讀寫過程
ram的結(jié)構(gòu)和讀寫過程
ram的結(jié)構(gòu)和讀寫過程
EEPROM I2C協(xié)議的特點(diǎn)與基本讀寫過程
使用SPI對(duì)SD卡進(jìn)行讀寫過程中常見的問題有哪些?如何解決?
APB接口協(xié)議的讀寫傳輸及工作流程簡(jiǎn)析
PSEL = 0時(shí)APB3從機(jī)響應(yīng)如何解決此問題
SmartFusion系列CoreAPB3應(yīng)用指南(英)
藍(lán)羚牌APB15-3-A APB20-4-A APB25-5
![藍(lán)羚牌<b class='flag-5'>APB15-3</b>-A <b class='flag-5'>APB</b>20-4-A <b class='flag-5'>APB</b>25-5](https://file1.elecfans.com//web2/M00/A4/9A/wKgZomUMNO-AKo1aAADWmjQDqIQ464.jpg)
藍(lán)羚牌APB15-3-B APB20-4-B APB25-5
![藍(lán)羚牌<b class='flag-5'>APB15-3</b>-B <b class='flag-5'>APB</b>20-4-B <b class='flag-5'>APB</b>25-5](https://file1.elecfans.com//web2/M00/A4/9A/wKgZomUMNO-ANdbjAADWB4bsO2M103.jpg)
以太網(wǎng)工業(yè)級(jí)雙通道讀寫器讀寫頭CK-FR102AN-E00開發(fā)手冊(cè)之讀寫過程與操作流程
![以太網(wǎng)工業(yè)級(jí)雙通道<b class='flag-5'>讀寫</b>器<b class='flag-5'>讀寫</b>頭CK-FR102AN-E00開發(fā)手冊(cè)之<b class='flag-5'>讀寫過程</b>與操作流程](https://file.elecfans.com/web1/M00/DE/AF/pIYBAGAaq6yAJctmAADku1uLpyQ932.png)
關(guān)于ram的結(jié)構(gòu)和讀寫過程
![關(guān)于ram的結(jié)構(gòu)和<b class='flag-5'>讀寫過程</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論