SOPC中自定义外设和自定义指令性能分析.pdf

SOPC中自定义外设和自定义指令性能分析.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SOPC中自定义外设和自定义指令性能分析

SOPC 中自定义外设和自定义指令性能分析 引言 NiosII 是一个嵌入式软核处理器,除了可以根据需要任意添加已经提供的各种外设以 外,用户还可以通过定制自定义外设和自定义指令的方式来满足各种应用需求。定制用户外 设和用户指令是使用 NiosII 嵌入式软核处理器的重要特征。定制的用户外设能够以“硬件加 速器” 的形式实现各种各样用户要求的功能;同时定制的用户指令,可以把一个复杂的标准 指令序列简化为一条用硬件实现的单个指令,以增强对实时软件算法的处理能力。近来,随 着国内 SOPC 开发的逐步深入,这两者的性能开始成为一个关注的焦点。本文通过 CRC32 对 SOPC 系统中的自定义外设和自定义指令的实现以及对性能差异所作的详细分析,给广大 SOPC 开发人员提供参考。 1 CRC 自定义外设的实现 1.1 SOPC 系统中自定义外设的组成和结构 自定义外设作为 NiosII 软核处理器超强灵活性的体现,其开发遵循一定的规律。一个用户 自定义外设必须进行硬件设计,也就是说,必须用硬件描述语言来描述出硬件的逻辑组成。 一般来说,一个自定义外设主要由下列部分组成: ① 描述自定义外设逻辑的硬件描述文件部分(主要是 HDL 程序)。 ② 软件文件,一个用来定义外设寄存器的 C 语言头文件,以及让程序员控制这个元件 的软件驱动程序。 ③ 元件的描述文件(class.ptf )。该文件定义了元件的架构,提供了 SOPC。 Builder 将该元件集成到一个系统的各种信息。该文件由元件编辑器根据用户提供的硬 件和软件文件以及在图形用户界面中设置的各个选项和参数自动生成。图 1 给出了带 Avalon 从端口的自定义外设组成框图。 从图中可以看出,一个典型的自定义外设主要由下列功能模块组成: ① 任务逻辑。任务逻辑实现外设的基本功能,是必不可少的组成部分。 ② 寄存器文件。寄存器文件部分提供任务逻辑和外界交换信息的桥梁。有了寄存器文 件,用户就可以通过 Avalon 接口采用“基地址+地址偏移量” 的方法来访问外设内部的各个寄 存器。 ③ Avalon 接口。Avalon 接口为寄存器文件提供了一个标准的 Avalon 前端。该模块使 用 Avalon 规定的信号来访问寄存器文件,并且支持任务逻辑的传输类型。 1.2 CRC32 自定义外设的实现 CRC32 校验可以由软件或硬件来实现。现多采用超大规模集成电路芯片以硬件方式实 现。例如: 其硬件实现原理如图 2 所示。 编码运算过程如下: 开关关闭,k 位数据移入寄存器,同时送到外部。当 k 位信息全部送到外部时,除法运 算也正好进行完毕,寄存器中的 r 位数据就构成了余项的系数序列,即形成了校验码。然后 切断除法反馈电路,将移位寄存器的每一位逐次输出到信道中。这些校验码与原来的数据位 一起构成了完整的码字。 采用 HDL 语言来描述出 CRC32 的硬件实现,命名为crc.v 。在 SOPC Builder 元件编辑 器中加入该元件,其中自定义外设的接口信号和 Avalon 信号类型的一一对应关系如表 1 所 列。 当把自定义外设加入到 SOPC 系统中时,系统自动生成一个 system.h 文件。在 system.h 中 生成的 CRC 自定义外设的相关信息如下: #defineCRC_NAME /dev/crc #defineCRC_TYPE avalon_crc #defineCRC_BASE 0 根据 system.h 中的信息,可以建立名称为altera_avalon_crc_regs.h 的寄存器头文件。在 这个 C 头文件中,用清晰的宏符号描述出设备的寄存器集合,并且给出其访问方法。 #ifnde f __ALTERA_AVALON_CRC_REGS_H__ #define __ALTERA_AVALON_CRC_REGS_H__ #include #defineCRC_INIT_REG0 #defineCRC_WRITE_REG4 #defineCRC_READ_REG016 #defineCRC_READ_REG120 #defineCRC_READ_REG224

文档评论(0)

almm118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档