APB Slave Design
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的更多相关文章
- APB总线
APB(Advance Peripheral Bus)是AMBA总线的一部分,从1998年第一版至今共有3个版本. AMBA 2 APB Specfication:定义最基本的信号interface, ...
- DMA-330(一)
DMA Controller的interface: DMA Controller提供这些feature: 1)instruction set,对DMA transfer进行program 2)AXI ...
- STM
STM(System Trace macrocell) STM是coresight system中的一个trace source,可以提供high-bandwidth的trace data. STM优 ...
- 痞子衡嵌入式:Ethos-U55,ARM首款面向Cortex-M的microNPU
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Ethos-U55. ARM 前几天刚发布了 Cortex-M 家族最新一款内核 - Cortex-M55 以及首款面向 Cor ...
- AHB总线和APB总线
AHB主要用于高性能模块(如CPU.DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:单个时钟边沿操作:非三态的实现方式:支持突发传输:支持分段传输:支持多个主控制器:可配置 ...
- AHB/APB简介
AHB AHB总线互联结构图 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用.在基于IP复用的 ...
- AMBA总线协议AHB、APB、AXI对比分析【转】
转自:https://blog.csdn.net/ivy_reny/article/details/56274412 一.AMBA概述 AMBA (Advanced Microcontrolle ...
- [转]AMBA、AHB、APB、ASB总线简介
[转]http://www.cnblogs.com/zhaozhong1989/articles/3092140.html 1.前言 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC ...
- Qsys 设计流程---Qsys System Design Tutorial
Qsys 设计流程 ---Qsys System Design Tutorial 1.Avalon-MM Pipeline Bridge Avalon-MM Pipeline Bridge在slave ...
- 简易APB4 slave实践
一个简易的(不完整的)APB4 slave的可以没有PREADY和PSLVERR,这两个信号都被赋予常数,以及没有PPROT. 两种不同类型的寄存器: 图: 普通寄存器电路图 图: 带读写控制寄存器电 ...
随机推荐
- NetSuite 开发日记 —— 非空判断
使用N/util模块进行非空判断,N/util模块说明:https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_45 ...
- ElasticSearch之Nodes info API
查看当前集群中各节点的信息,执行如下命令: curl -X GET "https://localhost:9200/_nodes?pretty" --cacert $ES_HOME ...
- IOS关闭锁屏状态下左滑相机
IOS 锁屏状态下,左滑就会打开相机,还不能关闭.这种功能说真的,没有啥用,还很麻烦.看了一圈教程,写的也是没写全.自己再写一个,以后换手机还用得上. 注:此方法会导致微信的扫一扫不可用 1.找到&q ...
- electron入门之通知Notification(二)
electron入门到入土,从渲染线程中创建新窗口.2022-03-21入门版本17.1.2 electron重要概念,只有一个主线程,其他都是渲染进程或者叫子线程,他们不能直接相互操作,可以通过ip ...
- 普通用户登录切换到root用户
使用su命令: 在终端中输入以下命令并按Enter键: su - 输入root用户的密码,然后按Enter键. 如果密码正确,你将会切换为root用户,并且可以执行root用户的操作. 使用sudo命 ...
- 从4个特点为你解密华为云媒体网络底座AND
本文分享自华为云社区<解密华为云媒体网络底座ADN>,作者: Satan.D . 互联网的痛点与解决思路 互联网自1968年起源依赖,已经发展了半个多世纪.互联网仅从中文字面意思,可以简单 ...
- Rust布道者张汉东倾授,入门Rust初学者都要攻破哪些难点?
摘要:Rust语言学习曲线过于陡峭?初学者看懂这张思维导图,快速入门. Rust语言这两年的热度大家有目共睹,作为一个有着突破性变革意义的语言,其光鲜背后也有诸多质疑,对于想要在系统编程语言上更上一层 ...
- 解析Stream foreach源码
摘要:串行流比较简单,对于parallelStream,站在它背后的是ForkJoin框架. 本文分享自华为云社区<深入理解Stream之foreach源码解析>,作者:李哥技术 . 前言 ...
- MPU:鸿蒙轻内核的任务栈的溢出检察官
摘要:MPU(Memory Protection Unit,内存保护单元)把内存映射为一系列内存区域,定义这些内存区域的维洲,大小,访问权限和内存熟悉信息. 本文分享自华为云社区<鸿蒙轻内核M核 ...
- 近数据处理(NDP)——GaussDB(for MySQL)性能提升的秘密
摘要:云堆栈的深度集成是释放云数据库力量的关键,华为云在实现这一目标方面处于领先地位,正如GaussDB(for MySQL)所证明的那样. 本文分享自华为云社区<近数据处理(NDP),为Gau ...