ARM技术论坛
直播中

陈伟

8年用户 1572经验值
私信 关注
[经验]

分享一个APB slave的verilog实例

APB是AMBA中相对比较简单的接口协议。

采用这种简单的协议,你可以轻松地将自定义外设挂在AMBA总线上。

许多APB外设都是慢速器件,例如UART。一般SoC都是通过它们的寄存器进行访问。

下面是一个APB slave 的verilog实例,大家可以在此基础上,设计自己APB slave接口的自定义模块控制器。



其中,



是系统复位和使能信号




是APB slave的接口信号




是一个自定义模块的寄存器,其中status32是read_only




apb_write和apb_read是为了满足APB协议做的读写控制。apb_read信号产生和apb_write不同,具体原因可以查阅APB协议官方文档




该APB slave模块只是对一些控制和状态寄存器进行读写,是无等待传输,同时不生成传输错误信号。



对不同的寄存器做了地址分配,其中status32寄存器只读

然后我们在Testbench里例化APB slave和一个APB master 模型,对该APB slave模块进行验证。




更多回帖

发帖
×
20
完善资料,
赚取积分