RISC-V MCU中文社区

【分享】 基于hbirdv2的APB总线添加外设(二)

发表于 全国大学生集成电路创新创业大赛 2021-06-27 10:20:05
1
3444
4

队伍编号:CICC1893

队伍名称:夏芯


前文介绍了APB总线,以及基于APB总线添加外设的可能性。本篇分享基于hbirdv2的APB总线添加外设的具体过程。

1. APB slave硬件设计

APB slave的设计首先需要按照APB总线的要求设计APB总线接口。其次,需要根据外设的需要来设计对应外设的寄存器,如定义一些只读、读写寄存器等。寄存器后级的具体算法需根据自己算法需求进行设计。下面展示一些最基本的寄存器读写设计。



寄存器的读操作:


寄存器的写操作:


值得注意的是,相邻寄存器的地址这里分配的间隔为4,因为寄存器中数据的存取是以字节(Byte)为单位,1Byte = 8bit; 而这里因为采用32bit的数据线,故需要4个地址进行存放。


2. 添加icb2apb模块

根据之前的说明,demo SoC中APB协议的外设需再转换至ICB总线,因此在e203_subsys_perips中再添加一个icb2apb模块:


并且例化自己设计的APB slave:



3. 地址空间分配

添加完APB slave后,需对其分配一个地址空间,再这里我们给它分配为0x1004_2000 - 0x1004_2fff


4. 扩展ICB总线接口

demo SoC中ICB总线预留了16个iICB的接口,其中o15未使用,这边我们直接接上icb2apb模块就可以了。


至此,基于APB总线添加外设的硬件实现基本完成。后续将介绍其软件实现。









喜欢4
用户评论 (1)
初醒

初醒 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板