APB总线外设接口实现

author:jaime_zhang
e-mail:jaime_zhang@foxmail.com
有问题欢迎大家来交流。

一、AMBA2 APB外设框图

在这里插入图片描述
AMBA2中APB的接口信号里没有PREADY信号和PSTRB信号,这些是在AMBA3及以后的协议中更新出来的,时序图在上一期的文章中已经讲解过了,这里不再重复。

二、APB接口代码分析讲解

在这里插入图片描述在这里插入图片描述

这一章主要讲接口的实现,APB接口比较简单,实现起来也相对easy,这种接口在我个人看来主要用来读写寄存器这种对数据吞吐率没那么高的操作。APB接口的实现也就是要将总线信号转化为更直观的信号,将复杂时序转化为更简单的时序,我将这种转换简称为“翻译”。
对于写操作,传输过来的地址和控制信号在第一个时钟周期里,数据在第二个周期完成传输。考虑到APB总线在数据未完成传输前地址不会变化,这里可以简化掉地址的一拍寄存,从而节省寄存器资源,节省面积,相关代码如下。

assign wr_reg_en = PSEL & PENABLE & PWRITE;
assign rd_reg_en = PSEL &  (~PENABLE) & (~PWRITE);
assign wr_reg_strb = PSTRB;
assign rw_reg_addr = PADDR;
assign wr_reg_data = PWDATA;

assign PREADY = rw_reg_ready;
assign PSLVERR = rw_reg_resp;
assign PRDATA = rd_reg_data;

可以看到这里没有时序逻辑,直接通过组合逻辑即可实现,可见该接口的简洁与轻量级,当PSEL拉高,也就是该外设被选中时,PENABLE为高电平且PWRITE信号为高,也就是在写操作第二个周期里,这是接到寄存器端的写使能信号wr_reg_en为高。读操作同理分析。给到寄存器的strb,addr,data信号都是直接连接传进来的对应总线信号即可。
对于APB接口的输出信号:PREADY,PSLVERR,PRDATA,这些直接连接寄存器传来的ready,response,data信号即可,ready往往直接接高电平,也就是always ready的状态,对于寄存器而言数据传输也就只需要一拍,所以直接接高电平。PSLVERR信号往往直接接低电平,因为读写寄存器不会出现什么错误,也可以用来判断地址是否超出,即使出现了错误,主设备一般也很少存在处理错误的操作。PRDATA接寄存器传来的读出数据,这里只是一种实现方式,还可以更严格的按照手册描述的实现,但这样足以满足一般使用要求,同时资源开销接近最少。
有兴趣的可以想想还可以怎么实现,这里就不再讲解第二种实现方式了,给大家留点思考的空间。

本专栏会从比较基础的数字ic及FPGA项目开始讲起,逐渐加大难度,大家有什么建议或者想了解的都欢迎和我交流,感兴趣的可以订阅一下。
下期准备讲解AHB总线协议及实现。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
APB总线是一种低功耗、低成本的总线,用于连接处理器、存储器和外设,提供了一种经济高效的数据传输方式。SPI(Serial Peripheral Interface)是一种同步串行通信协议,用于在微控制器和外设之间传输数据。 基于APB总线的SPI接口是一种将SPI接口APB总线相结合的设计方案,它可以实现SPI接口系统中的高效、可靠传输,同时兼顾了系统的低功耗和低成本的特点。在这种设计中,SPI接口被连接到APB总线上,通过APB总线和处理器进行通信,从而实现数据的传输和控制。 基于APB总线的SPI接口通常包括以下几个组成部分: 1. SPI控制器:负责控制SPI接口的数据传输和控制信号的生成。 2. APB总线接口:用于将SPI控制器连接到APB总线上,实现与处理器的通信。 3. SPI外设接口:用于将SPI控制器连接到SPI外设上,实现外设的通信。 4. 数据缓冲区:用于存储SPI接口传输的数据。 基于APB总线的SPI接口通常具有以下优势: 1. 支持高速数据传输:由于APB总线的高速性能,基于APB总线的SPI接口可以实现高速数据传输。 2. 低功耗:APB总线具有低功耗的特点,基于APB总线的SPI接口也可以实现低功耗的设计。 3. 高可靠性:基于APB总线的SPI接口可以实现数据的可靠传输和控制,从而提高系统的可靠性。 4. 低成本:由于APB总线的低成本特点,基于APB总线的SPI接口可以实现低成本的设计,从而降低系统的成本。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值