{"id":293,"date":"2024-07-03T13:34:45","date_gmt":"2024-07-03T04:34:45","guid":{"rendered":"https:\/\/rtlearner.com\/?p=293"},"modified":"2025-11-13T11:14:14","modified_gmt":"2025-11-13T02:14:14","slug":"amba-apb-bus","status":"publish","type":"post","link":"https:\/\/rtlearner.com\/en\/amba-apb-bus\/","title":{"rendered":"AMBA - 1 APB overview"},"content":{"rendered":"<h2 class=\"wp-block-heading\">About AMBA<\/h2>\n\n\n<style>.kb-image293_a2b76e-a5.kb-image-is-ratio-size, .kb-image293_a2b76e-a5 .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_a2b76e-a5.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_a2b76e-a5 .kb-image-is-ratio-size{align-self:unset;}.kb-image293_a2b76e-a5 figure{max-width:650px;}.kb-image293_a2b76e-a5 .image-is-svg, .kb-image293_a2b76e-a5 .image-is-svg img{width:100%;}.kb-image293_a2b76e-a5 .kb-image-has-overlay:after{opacity:0.3;}.kb-image293_a2b76e-a5 img.kb-img, .kb-image293_a2b76e-a5 .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image293_a2b76e-a5.kb-image-is-ratio-size, .kb-image293_a2b76e-a5 .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image293_a2b76e-a5 figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image293_a2b76e-a5\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/bi2ubR\/btsg4hSYl3n\/hVls0gMCrkXUmpNIVibql0\/img.png\" alt=\"AMBA \ubc84\uc2a4 \uc885\ub958\" class=\"kb-img\"\/><figcaption>AMBA bus types<\/figcaption><\/figure><\/div>\n\n\n\n<p>AMBA (Advanced Microcontroller Bus Architecture) is a bus protocol developed by ARM. There are several types, but most commonly use the APB, AHB, and AXI buses. Buses are the conduits through which signals are exchanged between chip modules, but why are they categorized this way? That's because each module has different performance characteristics.<\/p>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id293_310ee1-d6 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kb-table-of-content-nav.kb-table-of-content-id293_310ee1-d6 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id293_310ee1-d6 .kb-table-of-contents-title{font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id293_310ee1-d6 .kb-table-of-content-wrap .kb-table-of-content-list{font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id293_310ee1-d6 .kb-table-of-contents-title{font-size:var(--global-kb-font-size-md, 1.25rem);}.kb-table-of-content-nav.kb-table-of-content-id293_310ee1-d6 .kb-table-of-content-wrap .kb-table-of-content-list{font-size:var(--global-kb-font-size-sm, 0.9rem);}}<\/style>\n\n<style>.kadence-column293_3e94f6-97 > .kt-inside-inner-col{box-shadow:inset 0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kadence-column293_3e94f6-97 > .kt-inside-inner-col,.kadence-column293_3e94f6-97 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column293_3e94f6-97 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column293_3e94f6-97 > .kt-inside-inner-col{flex-direction:column;}.kadence-column293_3e94f6-97 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column293_3e94f6-97 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column293_3e94f6-97{position:relative;}@media all and (max-width: 1024px){.kadence-column293_3e94f6-97 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column293_3e94f6-97 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column293_3e94f6-97\"><div class=\"kt-inside-inner-col\">\n<p><strong>Related articles<\/strong><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/en\/amba-ahb-bus\/\">AMBA - 2 AHB overview<\/a><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/en\/amba-axi-bus\/\">AMBA - 3 AXI overview<\/a><\/p>\n<\/div><\/div>\n\n\n\n<p>For example, if a high-performance CPU and slow-speed DRAM or peripherals are connected to a single bus, the bus will remain busy as data processing slows down. The CPU or other high-performance modules will then have to wait until all bus signals are processed.<\/p>\n\n\n\n<p>So, high-performance modules are connected to high-performance buses, and relatively low-performance modules are connected to low-performance buses to optimize the performance of the entire system.<\/p>\n\n\n\n<p>You can see that high-performance modules are connected to the AHB bus, and low-performance modules, such as UART, are connected to the bus, and the two buses are connected by a bridge. The bus performance is higher in the order of AXI &gt; AHB &gt; APB.<\/p>\n\n\n\n<p>Now, let\u2019s take a look at the buses above one by one.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">APB bus<\/h2>\n\n\n\n<p>As its name suggests, the Advanced Peripheral Bus is a bus for peripherals. It simplifies the interface, resulting in lower cost and lower power consumption.<\/p>\n\n\n<style>.kb-image293_d2633f-ce.kb-image-is-ratio-size, .kb-image293_d2633f-ce .kb-image-is-ratio-size{max-width:514px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_d2633f-ce.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_d2633f-ce .kb-image-is-ratio-size{align-self:unset;}.kb-image293_d2633f-ce figure{max-width:514px;}.kb-image293_d2633f-ce .image-is-svg, .kb-image293_d2633f-ce .image-is-svg img{width:100%;}.kb-image293_d2633f-ce .kb-image-has-overlay:after{opacity:0.3;}.kb-image293_d2633f-ce img.kb-img, .kb-image293_d2633f-ce .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image293_d2633f-ce.kb-image-is-ratio-size, .kb-image293_d2633f-ce .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image293_d2633f-ce figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image293_d2633f-ce\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/lRBFU\/btsg9vqaZYy\/Xog06kkkihEdNxGI0Wnsg1\/img.png\" alt=\"APB Block diagram\" class=\"kb-img\"\/><figcaption>Block diagram<\/figcaption><\/figure><\/div>\n\n\n\n<p>If you look at the block diagram, you will see several signals. Let's look at the specification and analyze them one by one.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Signals<\/h3>\n\n\n<style>.kb-image293_2195fe-7e.kb-image-is-ratio-size, .kb-image293_2195fe-7e .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_2195fe-7e.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_2195fe-7e .kb-image-is-ratio-size{align-self:unset;}.kb-image293_2195fe-7e figure{max-width:650px;}.kb-image293_2195fe-7e .image-is-svg, .kb-image293_2195fe-7e .image-is-svg img{width:100%;}.kb-image293_2195fe-7e .kb-image-has-overlay:after{opacity:0.3;}.kb-image293_2195fe-7e img.kb-img, .kb-image293_2195fe-7e .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image293_2195fe-7e.kb-image-is-ratio-size, .kb-image293_2195fe-7e .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image293_2195fe-7e figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image293_2195fe-7e\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/riD8K\/btsg96xaPs5\/rlqow2tTkiuZDEyMY6LmG1\/img.png\" alt=\"APB Signals\" class=\"kb-img\"\/><figcaption>Signals<\/figcaption><\/figure><\/div>\n\n\n\n<p>For more detailed information on Signals, please refer to the description. Let's understand the protocol by looking at a transfer example.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Basic transfer<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Write transfer with no wait states<\/h4>\n\n\n<style>.kb-image293_01d3f8-47.kb-image-is-ratio-size, .kb-image293_01d3f8-47 .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_01d3f8-47.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_01d3f8-47 .kb-image-is-ratio-size{align-self:unset;}.kb-image293_01d3f8-47 figure{max-width:650px;}.kb-image293_01d3f8-47 .image-is-svg, .kb-image293_01d3f8-47 .image-is-svg img{width:100%;}.kb-image293_01d3f8-47 .kb-image-has-overlay:after{opacity:0.3;}.kb-image293_01d3f8-47 img.kb-img, .kb-image293_01d3f8-47 .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image293_01d3f8-47.kb-image-is-ratio-size, .kb-image293_01d3f8-47 .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image293_01d3f8-47 figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image293_01d3f8-47\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/obq93\/btshijpqjK0\/Wtn4HYrDNwiAy1YmJNzBDK\/img.png\" alt=\"Write transfer wo. wait\" class=\"kb-img\"\/><figcaption>Write transfer wo. wait<\/figcaption><\/figure><\/div>\n\n\n\n<p>This is an example of a write transfer. Basically, data is transferred from the clock position, and I'll explain it section by section.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>T1 - T2<\/strong>&nbsp;: Addr 1 is loaded into PADDR. Transferring to this address is performed, and PWRITE is high, indicating a write transfer. The slave is selected with the PSEL signal, but the master has not yet set PENABLE. Therefore, although the data is loaded, it is not passed to the slave.<\/li>\n\n\n\n<li><strong>T2 - T3<\/strong>&nbsp;: When PENABLE goes high and the slave is ready to receive data, it sends a PREADY high signal. Then, data transfer occurs at clock posedge T3.<\/li>\n<\/ul>\n\n\n\n<p>Here is an example when the Slave is not ready to receive data.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Write transfer&nbsp;with wait states<\/h4>\n\n\n<style>.kb-image293_bf6196-fa.kb-image-is-ratio-size, .kb-image293_bf6196-fa .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_bf6196-fa.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_bf6196-fa .kb-image-is-ratio-size{align-self:unset;}.kb-image293_bf6196-fa figure{max-width:650px;}.kb-image293_bf6196-fa .image-is-svg, .kb-image293_bf6196-fa .image-is-svg img{width:100%;}.kb-image293_bf6196-fa .kb-image-has-overlay:after{opacity:0.3;}.kb-image293_bf6196-fa img.kb-img, .kb-image293_bf6196-fa .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image293_bf6196-fa.kb-image-is-ratio-size, .kb-image293_bf6196-fa .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image293_bf6196-fa figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image293_bf6196-fa\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/nQeux\/btshif1GG2p\/WJxckMLzig6iJKmqOhYHqk\/img.png\" alt=\"Write transfer w. wait\" class=\"kb-img\"\/><figcaption>Write transfer w. wait<\/figcaption><\/figure><\/div>\n\n\n\n<p>From T2 \u2013 T3, PREADY is low, which means the slave is not ready to receive data. So, we can see that other signals are waiting until PREADY becomes high.<\/p>\n\n\n\n<p>Slave was ready at T4 - T5, so transfer occurred at T5.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Read&nbsp;transfer with no wait states<\/h4>\n\n\n<style>.kb-image293_137a5c-15.kb-image-is-ratio-size, .kb-image293_137a5c-15 .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_137a5c-15.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_137a5c-15 .kb-image-is-ratio-size{align-self:unset;}.kb-image293_137a5c-15 figure{max-width:650px;}.kb-image293_137a5c-15 .image-is-svg, .kb-image293_137a5c-15 .image-is-svg img{width:100%;}.kb-image293_137a5c-15 .kb-image-has-overlay:after{opacity:0.3;}.kb-image293_137a5c-15 img.kb-img, .kb-image293_137a5c-15 .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image293_137a5c-15.kb-image-is-ratio-size, .kb-image293_137a5c-15 .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image293_137a5c-15 figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image293_137a5c-15\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/bjUiZg\/btshj4LAWVl\/ZOsRjvfHyhFxKuE9eTb1r1\/img.png\" alt=\"Read transfer wo. wait\" class=\"kb-img\"\/><figcaption>Read transfer wo. wait<\/figcaption><\/figure><\/div>\n\n\n\n<p>Next is a read transfer. The difference from a write transfer is that PWRITE is low and data is exchanged using PRDATA rather than PWDATA. If you understand write transfers, this won't be difficult. Finally, I'll conclude this article with an example involving a wait state.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Read&nbsp;transfer with wait states<\/h4>\n\n\n<style>.kb-image293_57f3e6-ce.kb-image-is-ratio-size, .kb-image293_57f3e6-ce .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_57f3e6-ce.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_57f3e6-ce .kb-image-is-ratio-size{align-self:unset;}.kb-image293_57f3e6-ce figure{max-width:650px;}.kb-image293_57f3e6-ce .image-is-svg, .kb-image293_57f3e6-ce .image-is-svg img{width:100%;}.kb-image293_57f3e6-ce .kb-image-has-overlay:after{opacity:0.3;}.kb-image293_57f3e6-ce img.kb-img, .kb-image293_57f3e6-ce .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image293_57f3e6-ce.kb-image-is-ratio-size, .kb-image293_57f3e6-ce .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image293_57f3e6-ce figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image293_57f3e6-ce\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/vLENn\/btsheDCcEx6\/lWGV5YagFAksSlMl027KgK\/img.png\" alt=\"Read transfer w. wait\" class=\"kb-img\"\/><figcaption>Read transfer w. wait<\/figcaption><\/figure><\/div>\n\n\n\n<p>The wait state occurs when the PREADY signal is low, meaning the slave is not ready to transfer. However, in practice, the PREADY signal is often tied high.<\/p>\n\n\n\n<p>So, you can see that there is no wait state in this bus protocol. (Because it is such a simple bus.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Slave error signal<\/h3>\n\n\n\n<p>If the slave encounters an error during communication for any reason, it signals this via the PSLVERR signal. PSLVERR is meaningful only in the last cycle of a transfer, at which time PSEL, PENABLE, and PREADY must be high.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/y1X3M\/btshlVAZ2Ox\/WEEFYKkBh1EMlmjycyx8D0\/img.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Well, let's finish explaining the protocol by looking at an example timing diagram.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Write transfer with slave error signal<\/h4>\n\n\n<style>.kb-image293_f793c7-a0.kb-image-is-ratio-size, .kb-image293_f793c7-a0 .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_f793c7-a0.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_f793c7-a0 .kb-image-is-ratio-size{align-self:unset;}.kb-image293_f793c7-a0 figure{max-width:650px;}.kb-image293_f793c7-a0 .image-is-svg, .kb-image293_f793c7-a0 .image-is-svg img{width:100%;}.kb-image293_f793c7-a0 .kb-image-has-overlay:after{opacity:0.3;}.kb-image293_f793c7-a0 img.kb-img, .kb-image293_f793c7-a0 .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image293_f793c7-a0.kb-image-is-ratio-size, .kb-image293_f793c7-a0 .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image293_f793c7-a0 figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image293_f793c7-a0\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/bGqzCC\/btshigmskUf\/j3Qti1lAFwFNyKg7Bn6yd1\/img.png\" alt=\"Error on write transfer\" class=\"kb-img\"\/><figcaption>Error on write transfer<\/figcaption><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Read transfer with slave error signal<\/h4>\n\n\n<style>.kb-image293_f08372-c9.kb-image-is-ratio-size, .kb-image293_f08372-c9 .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_f08372-c9.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image293_f08372-c9 .kb-image-is-ratio-size{align-self:unset;}.kb-image293_f08372-c9 figure{max-width:650px;}.kb-image293_f08372-c9 .image-is-svg, .kb-image293_f08372-c9 .image-is-svg img{width:100%;}.kb-image293_f08372-c9 .kb-image-has-overlay:after{opacity:0.3;}.kb-image293_f08372-c9 img.kb-img, .kb-image293_f08372-c9 .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image293_f08372-c9.kb-image-is-ratio-size, .kb-image293_f08372-c9 .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image293_f08372-c9 figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image293_f08372-c9\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/cAeu6K\/btshjvQF432\/AmHifOzUJuaEqik8rPWLZK\/img.png\" alt=\"Error on read transfer\" class=\"kb-img\"\/><figcaption>Error on read transfer<\/figcaption><\/figure><\/div>\n\n\n\n<p>However, in practice, since the PSLVERR signal is also tied low, you can consider the slave response signal to be only PRDATA.<\/p>\n\n\n<style>.kadence-column293_ece70b-80 > .kt-inside-inner-col{box-shadow:inset 0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kadence-column293_ece70b-80 > .kt-inside-inner-col,.kadence-column293_ece70b-80 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column293_ece70b-80 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column293_ece70b-80 > .kt-inside-inner-col{flex-direction:column;}.kadence-column293_ece70b-80 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column293_ece70b-80 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column293_ece70b-80{position:relative;}@media all and (max-width: 1024px){.kadence-column293_ece70b-80 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column293_ece70b-80 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column293_ece70b-80\"><div class=\"kt-inside-inner-col\">\n<p><strong>Related articles<\/strong><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/en\/amba-ahb-bus\/\">AMBA - 2 AHB overview<\/a><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/en\/amba-axi-bus\/\">AMBA - 3 AXI overview<\/a><\/p>\n<\/div><\/div>\n\n\n\n<p>References: <a href=\"https:\/\/developer.arm.com\/documentation\/ihi0024\/latest\/\" target=\"_blank\" rel=\"noopener\">ARM\u00ae AMBA APB Protocol Specification<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>AMBA (Advanced Microcontroller Bus Architecture) is a bus protocol developed by ARM. There are several types, but most of them mainly use APB, AHB, and AXI buses.<\/p>","protected":false},"author":1,"featured_media":294,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[2],"tags":[24,25],"class_list":["post-293","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rtl-engineer","tag-amba","tag-bus"],"_links":{"self":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/comments?post=293"}],"version-history":[{"count":13,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/293\/revisions"}],"predecessor-version":[{"id":926,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/293\/revisions\/926"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/media\/294"}],"wp:attachment":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/media?parent=293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/categories?post=293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/tags?post=293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}<!-- This website is optimized by Airlift. Learn more: https://airlift.net. Template:. Learn more: https://airlift.net. Template: 69b92da9d36f73cd2808d6e8. Config Timestamp: 2026-03-17 10:32:09 UTC, Cached Timestamp: 2026-04-19 09:55:06 UTC -->