APB Slave Design











module apb_slave
#(
REG1_ADDR = 8'h00,
REG2_ADDR = 8'h04,
REG3_ADDR = 8'h08
)
(
// input signals
input pclk,
input presetn,
input psel,
input penable,
input pwrite,
input [31:0] pwdata,
input [31:0] paddr,
output reg [31:0] prdata, ); // 读写信号
wire apb_write;
wire apb_read; // 定义三个寄存器
reg [31:0] reg1;
reg [31:0] reg2;
reg [31:0] reg3; reg [31:0] dummy_reg; // 产生读写信号
assign apb_write = pwrite && psel && penable;
assign apb_read = (!pwrite) && psel && penable; // 写操作
always @ (posedge pclk or negedge presetn) begin
if(!presetn)
begin
reg1 <= 32'b0;
reg2 <= 32'b0;
reg3 <= 32'b0;
end
else if(ahb_write)
begin
case (paddr[7:0])
REG1_ADDR:reg1 <= pwdata;
REG2_ADDR:reg2 <= pwdata;
REG3_ADDR:reg3 <= pwdata;
default:dummy_reg <= pwdata;
endcase
end
end always @ (posedge pclk or negedge presetn) begin
if(ahb_read)
begin
case (paddr[7:0])
REG1_ADDR:prdata <= reg1;
REG2_ADDR:prdata <= reg2;
REG3_ADDR:prdata <= reg3;
default:prdata <= dummy_reg;
endcase
end
end endmodule









总结

  • 硬件思维和软件思维需要区分,Verilog是并行执行的
  • 多个master,其中一个被grant,其他的master发送的信号仍然存在,所以需要mux通过hmaster进行选择master

APB Slave Design的更多相关文章

  1. APB总线

    APB(Advance Peripheral Bus)是AMBA总线的一部分,从1998年第一版至今共有3个版本. AMBA 2 APB Specfication:定义最基本的信号interface, ...

  2. DMA-330(一)

    DMA Controller的interface: DMA Controller提供这些feature: 1)instruction set,对DMA transfer进行program 2)AXI ...

  3. STM

    STM(System Trace macrocell) STM是coresight system中的一个trace source,可以提供high-bandwidth的trace data. STM优 ...

  4. 痞子衡嵌入式:Ethos-U55,ARM首款面向Cortex-M的microNPU

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Ethos-U55. ARM 前几天刚发布了 Cortex-M 家族最新一款内核 - Cortex-M55 以及首款面向 Cor ...

  5. AHB总线和APB总线

    AHB主要用于高性能模块(如CPU.DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:单个时钟边沿操作:非三态的实现方式:支持突发传输:支持分段传输:支持多个主控制器:可配置 ...

  6. AHB/APB简介

    AHB AHB总线互联结构图 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用.在基于IP复用的 ...

  7. AMBA总线协议AHB、APB、AXI对比分析【转】

    转自:https://blog.csdn.net/ivy_reny/article/details/56274412 一.AMBA概述    AMBA (Advanced Microcontrolle ...

  8. [转]AMBA、AHB、APB、ASB总线简介

    [转]http://www.cnblogs.com/zhaozhong1989/articles/3092140.html 1.前言 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC ...

  9. Qsys 设计流程---Qsys System Design Tutorial

    Qsys 设计流程 ---Qsys System Design Tutorial 1.Avalon-MM Pipeline Bridge Avalon-MM Pipeline Bridge在slave ...

  10. 简易APB4 slave实践

    一个简易的(不完整的)APB4 slave的可以没有PREADY和PSLVERR,这两个信号都被赋予常数,以及没有PPROT. 两种不同类型的寄存器: 图: 普通寄存器电路图 图: 带读写控制寄存器电 ...

随机推荐

  1. ElasticSearch 命令执行漏洞

    漏洞编号:CVE-2014-3120 漏洞详情 CVE编号 CVE-2014-3120 漏洞级别 中危6.8 标题 Elasticsearch默认配置允许动态脚本执行漏洞 披露时间 2014/07/2 ...

  2. ASR项目实战-任务队列在文件转写特性中的应用

    转写时长超出60秒的语音文件,业界的竞品通常会使用创建异步转写任务的方式来提供支持. 一个简单.直接的实现方案,即: 网关服务接收到来自客户的转写请求时,将任务信息持久化至任务队列中. 由算法服务的实 ...

  3. Ubuntu安装Maridb 10.5版本

    以20.04版本为例 Ubutun20.04自带源默认安装的mariadb版本为10.3不符合安装zabbix6.0的要求 打开MariaDB的官方网站:https://mariadb.org/mar ...

  4. Azure Data Factory(十一)Data Flow 的使用解析

    一,引言 上一篇文字,我们初步对 Data Flow 有个简单的了解,也就是说可以使用 Data Flow 完成一些复杂的逻辑,如,数据计算,数据筛选,数据清洗,数据整合等操作,那我们今天就结合 Da ...

  5. throws和try、catch有什么区别?throws如何使用?

    在Java中,异常处理是非常重要的一部分.当程序出现异常时,我们需要对其进行处理以确保程序的正确性和可靠性.Java提供了两种异常处理机制:throws和try.catch. 区别 throws和tr ...

  6. 2天完成17TB数据量迁移,华为云数据库是如何做的?

    摘要:童年时候,我们会对着墙上挂着的中国地图,来认识一处处山川河流和城市人文.如今,数字化时代下,传统的地图已经不能满足人们的需求,如何获取各种丰富的地理内容和实时动态信息成为现代人普遍的地理信息诉求 ...

  7. 训练千亿参数模型的法宝,昇腾CANN异构计算架构来了~

    摘要:盘古的训练以「昇腾AI处理器」为基座,同时借助了「CANN 异构计算架构」,让硬件算力得以充分释放,大大缩短了训练时间! 2021年4月,"华为云盘古大模型"一炮走红AI人工 ...

  8. 13个VSCode使用技巧,开启高效的开发模式

    摘要:VsCode是一款开源的编辑器,拥有强大的功能,.由于拥有各种各样的插件,这就使得VsCode可以做到的事情更多了.在使用的过程中,也是有很多技巧的,掌握一些技巧对于后期写代码也会轻松很多. 本 ...

  9. WebKit三件套(3):WebKit之Port篇

    了解其有关Port方面的设计,从而了解究竟如何能移植WebKit到自己的应用中. WebKitPort方面的内容是可以很广的,例如可将不同的图形库.网络库与WebCore集成,提供不同的Port接口供 ...

  10. Linux环境使用Apache部署静态html页面

    Linux环境使用Apache部署静态html页面 安装httpd yum -y install httpd 启动Apache并验证 systemctl start httpd service htt ...