APB(Advanced Peripheral Bus)是AMBA总线体系的一部分。相较于AMBA总线体系中的其他总线,APB总线具有低功耗,低复杂度的特征。APB总线主要应用于对性能要求不太高的低带宽外设接口。 本文所讲述的是AMBA4中的APB协议。其信号如下: 其中,PCLK和PRESETn分别为时钟信号和复位信号,PADDR为地址(至多32位),PPROT为保护类型,PSELx为选中信号,当它为1时,表明选中该从设备,因此每个从设备都会有一个对应的PSELx信号,PENABLE为使能信号,下面会详细阐述,PWRITE表示本次传输的方向,1表示写,0表示读,PWDATA为要写的数据,至多32bit,PSTRB为字节选中信号,第i位为1,表示第i*8到第i*8+7位是有效的,PRDATA为读出的数据,同样至多32位,PSLVERR为传输失败指示信号,为1且PENABLE、PSELx、PREADY均为高时,表明传输错误,否则表示传输正确。 下图是PPROT信号各个位的含义
无等待的写传输,如下图所示,写传输分为两个阶段:Setup Phase和Access Phase,第一个周期,PADDR给出要写的地址、PWRITE为1表示写传输,同时PSELx拉高选中设备,PWDATA给出要写的数据,此时PENABLE为0,这个阶段叫做Setup Phase。第二个周期,上述信号保持不变,主机和从机分别拉高PENABLE和PREADY,写入数据完成,下一个周期,PSELx、PENABLE以及PREADY均拉低。(若紧接着下一次传输,则PSELx无需拉低)
有等待的写传输,如下图所示,第一个阶段和上面相同,第二阶段,PENABLE拉高,直到检测到从机的PREADY信号也为高时,Access阶段才完成。而在等待PREADY信号为高期间,PADDR,PWRITE,PSELx,PWDATA,PSTRB,PPROT信号均应该保持不变。 从有等待写传输和无等待写传输的时序中,我们可以看出,Access Phase只有在PSEL、PENABLE和PREADY信号同时为高时,才会发生,否则需要等待。
与无等待的写传输唯一不同的地方,就是在下图中,PWRITE信号是0,表示读数据。
下图为APB总线协议的状态机,需要注意的是,当ACCESS完成后,如果还有一次传输,则直接跳转到SETUP阶段,否则跳回IDLE阶段。
slave
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/03/29 21:22:43
// Design Name:
// Module Name: apb_slave
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module apb_slave(
input logic PCLK,
input logic PRESETn,
input logic [31:0] PADDR,
input logic [2:0] PPROT,
input logic PSELx,
input logic PENABLE,
input logic PWRITE,
input logic [31:0] PWDATA,
input logic [3:0] PSTRB,
output logic PREADY,
output logic [31:0] PRDATA,
output logic PSLVERR
);
localparam N = 32;
logic [31:0] REG [0:N-1];
logic [31:0] ADDR;
logic [3:0] STRB;
logic WRITE;
//ADDR锁存
always_ff@(posedge PCLK)
if(PSELx&&~PENABLE)
ADDR
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?