- 1、本文档共175页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
系统设计算法与架构
AHB译码器Decoder用来对每次传输的地址进行译码, 以生成选择信号(HSELx信号)。 该信号送到Slave中。 AHB总线中可以有多个Master和Slave, 但同一时间只能有一个Master有效。 Arbiter选择哪个Master占用总线, Decoder选择哪个Slave的数据送到Master中, 如图2.26 所示。 图 2.26 多Master示例 表2.4给出了AHB信号的列表。 续表 注: 信号的后缀加上“x”表示该信号可能来自多个模块, 例如HBUSREQx可能是HBUSREQarm, 也可能是 HBUSREQdma。 在AHB总线中, 传输的数据宽度由HSIZE信号来定义要传输的数据的位数, 如表 2.5 所示。 下面介绍AHB总线的操作。 AHB的操作过程大致按如下顺序: 首先, Master发出请求。 该请求送到Arbiter中。 Arbiter决定是否由该Master获得总线的控制权。 Master的请求被允许后, 会给出地址及控制信号。 这些信号指明了数据传输的地址、 方向、 数据宽度及是否是突发(burst)模式。 地址和控制信号占用一个时钟周期。 接下来开始进行数据传输。 数据传输包括读和写两种模式。 读和写是相对于Master来讲的。 写操作将Master的数据写到Slave, 而读操作将Slave的数据读到Master。 数据传输 占据一个或多个时钟周期。 在传输过程中以及传输结束时, Slave需要给出响应信号, 告诉Master传输是否出错及传输是否能立即结束等。 标志信号为HRESP。 图2.27给出了一个简单的数据传输的示例。 图 2.27 数据传输示例 由图可知, 第一个周期为地址周期, 在该周期内, Master给出地址信号及控制信号; 第二个周期为数据周期, 在该周期内, Slave对地址信号和控制信号进行采样, 然后根据要求进行数据传输。 在AHB总线中, 当进行多个数据传输时, 为了加快数据传输的速度, 常采用流水线的操作方式, 如图2.28所示。 图 2.28 多个数据传输 以往, 系统设计多用C/C++语言进行建模。 采用C/C++进行系统设计的流程如图2.29所示。 2.3 基于SystemC的IC系统设计 图 2.29 采用C/C++的设计流程 在这种设计流程中, 当系统级模型完成后, 需要设计者依据C/C++程序的功能给出Verilog/VHDL的RTL描述。 由于C/C++语言是在很高抽象层次上的描述, 不支持时间、 并发、 硬件等数据类型, 因此设计者需要重新用Verilog/VHDL进行RTL设计。 这一过程很耗时, 且非常容易发生错误。 采用SystemC语言, 在行为模型完成后, 系统设计者可以逐步细化模型, 直至给出SystemC的RTL实现。 采用SystemC的RTL实现可通过综合工具生成网表, 该流程如图2.30所示。 图 2.30 基于SystemC的设计流程 这种流程避免了C/C++设计流程的缺点, 提高了效率。 SystemC建立在C++的基础上, 它利用类库扩展了C++对硬件的支持能力(而不是通过修改C++的语法)。 简单地说, 为了支持硬件描述, SystemC主要进行了如下扩展(如图2.31所示): 图 2.31 SystemC中的扩展 · 采用SC-MODULE模块类来描述模块。 · 利用进程来描述系统的并发行为。 SystemC 2.0中定义了SC-METHOD、 SC-THREAD和SC-SLAVE三种进程。 · 引入了信号。 · 引入了丰富的数据类型集, 如位矢量、 任意精度整数和定点数等。 此外, 还可以采用C++语言中的数据类型。 · 引入了时钟, 以表示时间的概念。 · 通过信道、 接口和事件实现模块和进程间的通信。 · 提供了多种通信语义, 允许在不同抽象层次上描述协议的接口。 在系统建模方面, SystemC有何优势呢?在SystemC中, 提供了事务级建模(Transaction L evel Modeling, TLM)的能力。 利用TLM, 设计者可以在很高的抽象级别对复杂系统进行描述, 可以忽略掉实现的细节; 利用TLM, 设计者可以在设计早期对设计进行评估, 比较多种实现方法的优劣; 此外, TLM还可以大大加快系统级仿真的速度。 2.3.1 基于SystemC的设计流程 SystemC语言是一种“系统级”语言, 建立在C++的基础上, 可以同时对硬件和软件进行建模(它将并发、 定时事件、
文档评论(0)