双层AMBA总线设计及其在SoC芯片设计中的应用
发布时间:2008/6/3 0:00:00 访问次数:446
摘要:amba总线是目前主流的片上总线。本文给出的双层amba总线设计能极大地提高总线带宽,并使系统架构更为灵活。文章详细介绍了此设计的实现,并从两个方面对两种总线方式进行了比较。
关键词:双层amba总线;总线带宽;soc
引言
一般说来,soc芯片是由片上芯核、用户设计的ip核以及将这两者集成在一起的总线组成的。片上芯核决定了使用何种片上总线以及芯片的体系结构。arm系列嵌入式微处理器凭借其高性能、低功耗的特点占据了市场的主要份额,arm7tdmi因其相对低廉的价格在soc芯片设计中应用比较广泛。同时,arm公司开发的amba(advancedmicroprocessorsbusarchitecture)片上总线架构由于其本身的高性能以及arm核的广泛应用,成为了一种流行的片上总线结构。除了片上芯核和片上总线,各种由用户设计的或者由供应商提供的ip也集成在soc芯片上。图1是基于arm7tdmi、面向消费电子领域的soc芯片的模块结构图。
由图1可知,arm7tdmi需要通过总线访问各个slave;dma工作时也需要通过总线访问外设进行数据交换;而lcd控制器模块为了实现实时显示更是需要不断地通过总线来访问显存读取数据;系统中其他的master在工作时也要占用总线。
特别要引起注意的是lcd控制器模块。彩屏显示需要很大的数据量,以一块320×240、16bpp的tft彩屏为例,其每一帧需要:320×240×16/8=153.6kbyte。这么大的数据量不可能通过片上存储器提供,势必要通过存储器接口从外设取得。由于lcd控制器所需要的数据量很大并且需要实时显示,lcd控制器的工作将会占据大量的片上总线带宽,甚至影响整个系统的正常运行。而在目前的消费电子领域,支持彩屏应用几乎是不可缺少的。
解决此问题可以通过采用优化总线切换算法、增加片内cache、改进总线架构等方法。其中,优化总线切换算法带来的性能改善比较有限,而cache本身设计的复杂性以及其license高昂费用,使之在很多情况下也不合适。因而,采用双总线架构的amba不失为一个较好的选择。
双总线架构amba及其实现
在单层总线情况下,所有的master和slave都挂在ahb总线上。任何一个master如果要访问slave的话,都必须先申请总线,在获得总线所有权后,通过总线互联结构中的mux进行地址、数据和控制信号的交换,而其他的master此时必须等待。
双层amba总线结构
双层amba总线架构则通过使用更为复杂的内部互联结构,能够同时有两组master和slave通过amba进行数据的交互,极大地提高了总线的带宽。而且任一个master也都可以访问任一层上的slave。另外,在采用了双层amba总线以后,对于ahbmaster和ahbslave来说是透明的,不需要任何的修改。
图2是本文设计的双层amba总线的内部结构图。对于这个双层amba总线,设置其能支持16个master和16个slave,并且每层各带8个master和8个slave。
其中的双层amba总线本身由三部分组成:layer1的总线译码器、预仲裁器和多个数据选择器(mux);layer2的总线译码器、预仲裁器和多个数据选择器;整个总线的核心仲裁器(arbiter)。其中,前二者基本是一致的,而核心仲裁器是整个双层总线架构的核心。其原理是:每层的8个master先在本层进行一次译码与仲裁,得到的结果送至核心仲裁器,再由核心仲裁器决定状态的切换以及各个mux如何进行数据流和控制流的选择。
内部部件的设计
结合图2和amba协议,以下介绍这个双层amba总线的各个组成部件。由于第二层的各个部件的设计和功能和第一层相似,因而只介绍第一层。
*layer1的译码器
该译码器采用集中式的地址译码机制,有利于提高外围设备的可移植性。译码器接收到当前占用总线的master所发出的地址信号,生成对应于各个slave的片选信号,送给核心仲裁器。片选信号的生成是通过与各个slave的基址比较得到的。
值得注意的是,由于每个master都可以访问slave0~slave15的任一个,所以译码器要能生成至少16个片选信号。
另外,每一层的译码器都应该要有一个缺省片选信号,对应于缺省slave。这个缺省slave的响应分两种情况:对于idle或busy传输,作出okay回应;对于nonsequential或sequential传输,作出error回应。
*layer1的预仲裁器
仲裁器接收各个master发出的总线请求信号(hbusreq)和所需的总线切换的判断信号,采用一定的总线仲裁算法,确定出可以占据总线的master,并生成mtosmux1的控制信号。与单层的amba不同,其生成的hmaster_layer1、bushgrant_layer1信号送到核心仲裁器,而不是直接送给各个hmaster。另外,接收到的当前slave响应是从核心仲裁器送出来的。
仲裁器可以采用的总线切换算法有两种:固定优先级算法和循环优先级算法。在amba规范中,可以根据实际需要灵活选择总线的切换算法。在这个部件里,采用了固定优先级的算法,即master0优先级最低,而master7优先级最高。
*layer1的多路选择器
在layer1中共有4个mux,分别是mtosmux1、mtosmux2、stommux1和stommux2。其中,mtosmux1接收layer1仲裁器的信号作
关键词:双层amba总线;总线带宽;soc
引言
一般说来,soc芯片是由片上芯核、用户设计的ip核以及将这两者集成在一起的总线组成的。片上芯核决定了使用何种片上总线以及芯片的体系结构。arm系列嵌入式微处理器凭借其高性能、低功耗的特点占据了市场的主要份额,arm7tdmi因其相对低廉的价格在soc芯片设计中应用比较广泛。同时,arm公司开发的amba(advancedmicroprocessorsbusarchitecture)片上总线架构由于其本身的高性能以及arm核的广泛应用,成为了一种流行的片上总线结构。除了片上芯核和片上总线,各种由用户设计的或者由供应商提供的ip也集成在soc芯片上。图1是基于arm7tdmi、面向消费电子领域的soc芯片的模块结构图。
由图1可知,arm7tdmi需要通过总线访问各个slave;dma工作时也需要通过总线访问外设进行数据交换;而lcd控制器模块为了实现实时显示更是需要不断地通过总线来访问显存读取数据;系统中其他的master在工作时也要占用总线。
特别要引起注意的是lcd控制器模块。彩屏显示需要很大的数据量,以一块320×240、16bpp的tft彩屏为例,其每一帧需要:320×240×16/8=153.6kbyte。这么大的数据量不可能通过片上存储器提供,势必要通过存储器接口从外设取得。由于lcd控制器所需要的数据量很大并且需要实时显示,lcd控制器的工作将会占据大量的片上总线带宽,甚至影响整个系统的正常运行。而在目前的消费电子领域,支持彩屏应用几乎是不可缺少的。
解决此问题可以通过采用优化总线切换算法、增加片内cache、改进总线架构等方法。其中,优化总线切换算法带来的性能改善比较有限,而cache本身设计的复杂性以及其license高昂费用,使之在很多情况下也不合适。因而,采用双总线架构的amba不失为一个较好的选择。
双总线架构amba及其实现
在单层总线情况下,所有的master和slave都挂在ahb总线上。任何一个master如果要访问slave的话,都必须先申请总线,在获得总线所有权后,通过总线互联结构中的mux进行地址、数据和控制信号的交换,而其他的master此时必须等待。
双层amba总线结构
双层amba总线架构则通过使用更为复杂的内部互联结构,能够同时有两组master和slave通过amba进行数据的交互,极大地提高了总线的带宽。而且任一个master也都可以访问任一层上的slave。另外,在采用了双层amba总线以后,对于ahbmaster和ahbslave来说是透明的,不需要任何的修改。
图2是本文设计的双层amba总线的内部结构图。对于这个双层amba总线,设置其能支持16个master和16个slave,并且每层各带8个master和8个slave。
其中的双层amba总线本身由三部分组成:layer1的总线译码器、预仲裁器和多个数据选择器(mux);layer2的总线译码器、预仲裁器和多个数据选择器;整个总线的核心仲裁器(arbiter)。其中,前二者基本是一致的,而核心仲裁器是整个双层总线架构的核心。其原理是:每层的8个master先在本层进行一次译码与仲裁,得到的结果送至核心仲裁器,再由核心仲裁器决定状态的切换以及各个mux如何进行数据流和控制流的选择。
内部部件的设计
结合图2和amba协议,以下介绍这个双层amba总线的各个组成部件。由于第二层的各个部件的设计和功能和第一层相似,因而只介绍第一层。
*layer1的译码器
该译码器采用集中式的地址译码机制,有利于提高外围设备的可移植性。译码器接收到当前占用总线的master所发出的地址信号,生成对应于各个slave的片选信号,送给核心仲裁器。片选信号的生成是通过与各个slave的基址比较得到的。
值得注意的是,由于每个master都可以访问slave0~slave15的任一个,所以译码器要能生成至少16个片选信号。
另外,每一层的译码器都应该要有一个缺省片选信号,对应于缺省slave。这个缺省slave的响应分两种情况:对于idle或busy传输,作出okay回应;对于nonsequential或sequential传输,作出error回应。
*layer1的预仲裁器
仲裁器接收各个master发出的总线请求信号(hbusreq)和所需的总线切换的判断信号,采用一定的总线仲裁算法,确定出可以占据总线的master,并生成mtosmux1的控制信号。与单层的amba不同,其生成的hmaster_layer1、bushgrant_layer1信号送到核心仲裁器,而不是直接送给各个hmaster。另外,接收到的当前slave响应是从核心仲裁器送出来的。
仲裁器可以采用的总线切换算法有两种:固定优先级算法和循环优先级算法。在amba规范中,可以根据实际需要灵活选择总线的切换算法。在这个部件里,采用了固定优先级的算法,即master0优先级最低,而master7优先级最高。
*layer1的多路选择器
在layer1中共有4个mux,分别是mtosmux1、mtosmux2、stommux1和stommux2。其中,mtosmux1接收layer1仲裁器的信号作
摘要:amba总线是目前主流的片上总线。本文给出的双层amba总线设计能极大地提高总线带宽,并使系统架构更为灵活。文章详细介绍了此设计的实现,并从两个方面对两种总线方式进行了比较。
关键词:双层amba总线;总线带宽;soc
引言
一般说来,soc芯片是由片上芯核、用户设计的ip核以及将这两者集成在一起的总线组成的。片上芯核决定了使用何种片上总线以及芯片的体系结构。arm系列嵌入式微处理器凭借其高性能、低功耗的特点占据了市场的主要份额,arm7tdmi因其相对低廉的价格在soc芯片设计中应用比较广泛。同时,arm公司开发的amba(advancedmicroprocessorsbusarchitecture)片上总线架构由于其本身的高性能以及arm核的广泛应用,成为了一种流行的片上总线结构。除了片上芯核和片上总线,各种由用户设计的或者由供应商提供的ip也集成在soc芯片上。图1是基于arm7tdmi、面向消费电子领域的soc芯片的模块结构图。
由图1可知,arm7tdmi需要通过总线访问各个slave;dma工作时也需要通过总线访问外设进行数据交换;而lcd控制器模块为了实现实时显示更是需要不断地通过总线来访问显存读取数据;系统中其他的master在工作时也要占用总线。
特别要引起注意的是lcd控制器模块。彩屏显示需要很大的数据量,以一块320×240、16bpp的tft彩屏为例,其每一帧需要:320×240×16/8=153.6kbyte。这么大的数据量不可能通过片上存储器提供,势必要通过存储器接口从外设取得。由于lcd控制器所需要的数据量很大并且需要实时显示,lcd控制器的工作将会占据大量的片上总线带宽,甚至影响整个系统的正常运行。而在目前的消费电子领域,支持彩屏应用几乎是不可缺少的。
解决此问题可以通过采用优化总线切换算法、增加片内cache、改进总线架构等方法。其中,优化总线切换算法带来的性能改善比较有限,而cache本身设计的复杂性以及其license高昂费用,使之在很多情况下也不合适。因而,采用双总线架构的amba不失为一个较好的选择。
双总线架构amba及其实现
在单层总线情况下,所有的master和slave都挂在ahb总线上。任何一个master如果要访问slave的话,都必须先申请总线,在获得总线所有权后,通过总线互联结构中的mux进行地址、数据和控制信号的交换,而其他的master此时必须等待。
双层amba总线结构
双层amba总线架构则通过使用更为复杂的内部互联结构,能够同时有两组master和slave通过amba进行数据的交互,极大地提高了总线的带宽。而且任一个master也都可以访问任一层上的slave。另外,在采用了双层amba总线以后,对于ahbmaster和ahbslave来说是透明的,不需要任何的修改。
图2是本文设计的双层amba总线的内部结构图。对于这个双层amba总线,设置其能支持16个master和16个slave,并且每层各带8个master和8个slave。
其中的双层amba总线本身由三部分组成:layer1的总线译码器、预仲裁器和多个数据选择器(mux);layer2的总线译码器、预仲裁器和多个数据选择器;整个总线的核心仲裁器(arbiter)。其中,前二者基本是一致的,而核心仲裁器是整个双层总线架构的核心。其原理是:每层的8个master先在本层进行一次译码与仲裁,得到的结果送至核心仲裁器,再由核心仲裁器决定状态的切换以及各个mux如何进行数据流和控制流的选择。
内部部件的设计
结合图2和amba协议,以下介绍这个双层amba总线的各个组成部件。由于第二层的各个部件的设计和功能和第一层相似,因而只介绍第一层。
*layer1的译码器
该译码器采用集中式的地址译码机制,有利于提高外围设备的可移植性。译码器接收到当前占用总线的master所发出的地址信号,生成对应于各个slave的片选信号,送给核心仲裁器。片选信号的生成是通过与各个slave的基址比较得到的。
值得注意的是,由于每个master都可以访问slave0~slave15的任一个,所以译码器要能生成至少16个片选信号。
另外,每一层的译码器都应该要有一个缺省片选信号,对应于缺省slave。这个缺省slave的响应分两种情况:对于idle或busy传输,作出okay回应;对于nonsequential或sequential传输,作出error回应。
*layer1的预仲裁器
仲裁器接收各个master发出的总线请求信号(hbusreq)和所需的总线切换的判断信号,采用一定的总线仲裁算法,确定出可以占据总线的master,并生成mtosmux1的控制信号。与单层的amba不同,其生成的hmaster_layer1、bushgrant_layer1信号送到核心仲裁器,而不是直接送给各个hmaster。另外,接收到的当前slave响应是从核心仲裁器送出来的。
仲裁器可以采用的总线切换算法有两种:固定优先级算法和循环优先级算法。在amba规范中,可以根据实际需要灵活选择总线的切换算法。在这个部件里,采用了固定优先级的算法,即master0优先级最低,而master7优先级最高。
*layer1的多路选择器
在layer1中共有4个mux,分别是mtosmux1、mtosmux2、stommux1和stommux2。其中,mtosmux1接收layer1仲裁器的信号作
关键词:双层amba总线;总线带宽;soc
引言
一般说来,soc芯片是由片上芯核、用户设计的ip核以及将这两者集成在一起的总线组成的。片上芯核决定了使用何种片上总线以及芯片的体系结构。arm系列嵌入式微处理器凭借其高性能、低功耗的特点占据了市场的主要份额,arm7tdmi因其相对低廉的价格在soc芯片设计中应用比较广泛。同时,arm公司开发的amba(advancedmicroprocessorsbusarchitecture)片上总线架构由于其本身的高性能以及arm核的广泛应用,成为了一种流行的片上总线结构。除了片上芯核和片上总线,各种由用户设计的或者由供应商提供的ip也集成在soc芯片上。图1是基于arm7tdmi、面向消费电子领域的soc芯片的模块结构图。
由图1可知,arm7tdmi需要通过总线访问各个slave;dma工作时也需要通过总线访问外设进行数据交换;而lcd控制器模块为了实现实时显示更是需要不断地通过总线来访问显存读取数据;系统中其他的master在工作时也要占用总线。
特别要引起注意的是lcd控制器模块。彩屏显示需要很大的数据量,以一块320×240、16bpp的tft彩屏为例,其每一帧需要:320×240×16/8=153.6kbyte。这么大的数据量不可能通过片上存储器提供,势必要通过存储器接口从外设取得。由于lcd控制器所需要的数据量很大并且需要实时显示,lcd控制器的工作将会占据大量的片上总线带宽,甚至影响整个系统的正常运行。而在目前的消费电子领域,支持彩屏应用几乎是不可缺少的。
解决此问题可以通过采用优化总线切换算法、增加片内cache、改进总线架构等方法。其中,优化总线切换算法带来的性能改善比较有限,而cache本身设计的复杂性以及其license高昂费用,使之在很多情况下也不合适。因而,采用双总线架构的amba不失为一个较好的选择。
双总线架构amba及其实现
在单层总线情况下,所有的master和slave都挂在ahb总线上。任何一个master如果要访问slave的话,都必须先申请总线,在获得总线所有权后,通过总线互联结构中的mux进行地址、数据和控制信号的交换,而其他的master此时必须等待。
双层amba总线结构
双层amba总线架构则通过使用更为复杂的内部互联结构,能够同时有两组master和slave通过amba进行数据的交互,极大地提高了总线的带宽。而且任一个master也都可以访问任一层上的slave。另外,在采用了双层amba总线以后,对于ahbmaster和ahbslave来说是透明的,不需要任何的修改。
图2是本文设计的双层amba总线的内部结构图。对于这个双层amba总线,设置其能支持16个master和16个slave,并且每层各带8个master和8个slave。
其中的双层amba总线本身由三部分组成:layer1的总线译码器、预仲裁器和多个数据选择器(mux);layer2的总线译码器、预仲裁器和多个数据选择器;整个总线的核心仲裁器(arbiter)。其中,前二者基本是一致的,而核心仲裁器是整个双层总线架构的核心。其原理是:每层的8个master先在本层进行一次译码与仲裁,得到的结果送至核心仲裁器,再由核心仲裁器决定状态的切换以及各个mux如何进行数据流和控制流的选择。
内部部件的设计
结合图2和amba协议,以下介绍这个双层amba总线的各个组成部件。由于第二层的各个部件的设计和功能和第一层相似,因而只介绍第一层。
*layer1的译码器
该译码器采用集中式的地址译码机制,有利于提高外围设备的可移植性。译码器接收到当前占用总线的master所发出的地址信号,生成对应于各个slave的片选信号,送给核心仲裁器。片选信号的生成是通过与各个slave的基址比较得到的。
值得注意的是,由于每个master都可以访问slave0~slave15的任一个,所以译码器要能生成至少16个片选信号。
另外,每一层的译码器都应该要有一个缺省片选信号,对应于缺省slave。这个缺省slave的响应分两种情况:对于idle或busy传输,作出okay回应;对于nonsequential或sequential传输,作出error回应。
*layer1的预仲裁器
仲裁器接收各个master发出的总线请求信号(hbusreq)和所需的总线切换的判断信号,采用一定的总线仲裁算法,确定出可以占据总线的master,并生成mtosmux1的控制信号。与单层的amba不同,其生成的hmaster_layer1、bushgrant_layer1信号送到核心仲裁器,而不是直接送给各个hmaster。另外,接收到的当前slave响应是从核心仲裁器送出来的。
仲裁器可以采用的总线切换算法有两种:固定优先级算法和循环优先级算法。在amba规范中,可以根据实际需要灵活选择总线的切换算法。在这个部件里,采用了固定优先级的算法,即master0优先级最低,而master7优先级最高。
*layer1的多路选择器
在layer1中共有4个mux,分别是mtosmux1、mtosmux2、stommux1和stommux2。其中,mtosmux1接收layer1仲裁器的信号作