ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:727.40KB ,
资源ID:9011483      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9011483.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(第1节 用户定制指令.docx)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

第1节 用户定制指令.docx

1、使用Altera Nios II 嵌入式处理器,系统设计者可以通过添加定制指令到Nios II指令集中,来加速处理对时间要求苛刻的软件算法。使用定制指令,用户可以将一个包含多条标准指令的指令序列减少为硬件实现的一条指令。 用户可以在很多的应用中使用这个特性, 例如,优化数字信号处理的软件的内部循环、信息包头的处理和计算密集的应用。Nios II 配置向导提供了图形化的用户界面用来添加多达256的定制指令到Nios II处理器。定制指令逻辑直接连接到Nios II 算术逻辑单元(ALU),如图8-1所示。 本节包括如下的内容:         — Nios II 定制指令的特性。

2、         — 实现定制指令的软硬件要求。         — 定制指令的体系结构类型的定义。 8.1.1 定制指令综述         使用Nios II定制指令,用户可以利用FPGA的灵活性来满足系统性能的需要。定制指令允许用户添加定制功能到Nios II处理器的ALU。         Nios II 定制指令是在处理器的数据路径上与ALU紧邻的定制逻辑模块。定制指令提供给用户通过裁剪Nios II处理器内核来满足特定应用需求的能力。用户具有将软件算法转化成定制的硬件逻辑模块来进行加速处理的能力。因为,很容易改变基于FPGA的Nios II处理器的设计,在设计过程中

3、定制指令提供了简单的方法来测试软硬件的权衡。         图8-2是Nios II定制指令的硬件结构图。Nios II定制指令逻辑的基本操作是从dataa和/或datab端口接收输入,在result端口驱动输出,输出是由用户生成的定制指令逻辑产生的。         Nios II处理器支持不同的定制指令体系结构类型。图8–2 给出了用于不同的体系结构类型的另外的端口。不是所有端口都是需要的,有些端口只有在用于实现特定的定制指令时才存在。图8–2也显示了一个可选的与外部逻辑的接口。该接口允许用户与Nios II处理器数据路径之外的系统资源相接口。         Nios

4、II定制指令软件接口很简单,而且抽象了定制指令的细节。对于每一条定制指令,Nios II IDE在系统头文件system.h中产生一个宏。用户在C或C++ 应用程序中如同一个函数一样调用宏。用户不需要编写汇编程序来访问定制指令。当然,在Nios II 处理器汇编语言程序中也可以调用定制指令。 8.1.2 定制指令体系结构的类型         Nios II支持不同的定制指令体系结构来满足不同应用的要求。体系结构从简单的、单时钟周期组合指令结构到扩展的可变长度的、多时钟周期定制指令体系结构。选择的体系结构决定了硬件接口。表8–1给出了定制指令体系结构的类型、应用和硬件接口。

5、 1. 组合逻辑定制指令体系结构         组合逻辑定制指令体系结构包括一个能在一个时钟周期完成的逻辑模块。图8–3为组合逻辑定制指令体系结构的结构图。 图8–3 组合逻辑定制指令结构图使用了dataa和datab端口作为输入,在result端口驱动输出结果。因为逻辑可以在一个时钟周期内完成,所以不需要控制端口。组合逻辑必需的端口是result端口。dataa和datab端口是可选的。在定制指令需要输入操作数才有这两个端口。如果定制指令只需要一个输入端口,使用dataa。 2. 多时钟周期定制指令体系结构         多时钟周期的定制指令包括一个需要2个或更多时钟

6、周期才能完成操作的逻辑模块。对于多时钟周期定制指令需要控制端口。图8–4显示了多时钟周期定制指令的结构图。 多时钟周期定制指令可以在固定或可变的时钟周期数内完成: · 固定长度:在系统生成时用户指定需要的时钟周期数。 · 可变长度:在握手方案中使用start和done端口来决定定制指令何时完成。 在表8–2中,对于多时钟周期的定制指令clk、clk_en和reset端口是必需的,而start、done、dataa、datab和result端口是可选的。只有定制指令的功能需要它们时才存在。 下面描述多时钟周期定制指令硬件端口的操作细节。图8–5给出了多时钟周期定制

7、指令的时序图。 · 在第一个时钟周期,当ALU发出定制指令,处理器置start端口为高电平——有效,这时dataa和datab 端口具有有效的值,而且在定制指令执行的期间一直保持有效。 · 固定或可变长度的定制指令端口操作:          固定长度:处理器置start有效,等待一个指定的时钟周期数,然后读result。对于n个周期的操作,定制指令逻辑模块必须在start端口有效之后的第n-1时钟上升沿提供有效的数据。        可变长度:处理器一直等到done端口有效,done端口为高电平有效。处理器在done有效之后的时钟沿读result端口。定制指令模块必须done

8、端口为有效的同一个时钟周期向result端口上提供数据。 · Nios II系统时钟提供给定制指令模块的clk端口,Nios II系统主reset提供给高电平有效的reset端口。reset端口只有当整个Nios II系统复位才有效。 · 定制指令模块必须将高电平有效的clk_en端口处理成传统的时钟使能信号,当clk_en无效时,忽略clk。 · 定制指令模块的端口中不是表0-2中的定制指令的端口都是和外部逻辑的接口。 · 用户可以进一步优化多时钟周期指令,可以是通过实现扩展的内部寄存器文件定制指令,或者是创建有外部接口的定制指令。 3. 扩展定制指令体系结构  

9、       扩展定制指令体系结构允许一个定制指令实现几个不同的操作,扩展的定制指令使用N域来指定逻辑模块执行哪个操作。指令的N域的字宽度可达8比特,使得一个定制指令可以实现多达256不同的操作。         图8-6是扩展定制指令的结构图,可以实现位交换、比特交换和半字交换的操作。图8-6 的定制指令对从dataa 端口接收到的数据进行交换操作,它使用2比特宽度的n端口来选择多路复用器的输出,决定提供给result端口哪个输出。n端口的输入直接来自定制指令的N域字。这个例子中的逻辑是非常简单的,用户可以基于N域来实现任何用户想要的功能选择。         扩展定制指令可以是

10、组合指令和多时钟周期指令,要实现扩展指令只要添加一个n端口到用户的定制指令逻辑。n端口的宽度由定制指令逻辑能够执行的操作数目决定。扩展的定制指令占用多个定制指令索引。例如,图8-6中的定制指令占用4个索引,因为n是2个比特的宽度。 因此, 当该指令在Nios II系统中实现之后, Nios II系统还剩下256 - 4 = 252 可用的索引。         n端口的行为同dataa端口类似。当在时钟的上升沿,start为有效时,处理器提供给n端口信号,n端口在定制指令执行的期间保持稳定不变。所有其它的定制指令端口操作保持不变。 4. 内部寄存器文件定制指令体系结构       

11、  Nios II处理器允许定制指令逻辑访问其内部寄存器文件,这提供给用户指定定制指令从Nios II 处理器寄存器文件或是从定制指令本身的寄存器文件读操作数的灵活性。而且,定制指令可以写结果到定制指令的本地寄存器文件而不是Nios II处理器寄存器文件。内部寄存器访问定制指令使用readra、 readrb和writerc来决定I/O访问发生在Nios II处理器文件还是内部寄存器文件。并且,端口a、b和c指定从哪个内部寄存器读数据以及写数据到哪个寄存器。例如,如果readra为有效(即,从内部寄存器读),a提供了内部寄存器文件的索引。 更多的Nios 定制指令实现的信息参考Nios II

12、Processor Reference Handbook中 Instruction Set Reference章节。图8-7显示了一个简单的乘加定制指令逻辑。         当readrb为无效时,定制指令逻辑对dataa和datab相乘,然后将结果存在accumulate(累加)寄存器 。Nios II处理器可以将结果读出。通过将readrb置为有效,处理器可以将累加器中的值读出来,作为乘法器的输入。表8–3列出了内部寄存器文件定制指令的端口。只用当定制指令的功能需要时,才使用这些可选的端口。 readra、readrb、writerc和a、b和c端口的行为同dataa类似

13、当start端口有效,处理器在时钟的上升沿提供readra、readrb、writerc、a、b和c。所有的端口在定制指令执行的过程保持不变。为了确定如何处理寄存器文件I/O,定制指令逻辑读高电平有效的readra、readrb和 writerc端口。定制指令逻辑使用a、b和c端口作为寄存器文件索引。当readra或者readrb无效时,定制指令逻辑忽略相应的a或b端口。当writerc为无效时,处理器忽略result端口上的值。其它的定制指令端口的操作是相同的。 5. 外部接口定制指令体系结构         图8-8显示Nios II定制指令允许用户添加一个同处理器数据路径之外的

14、逻辑进行通信的接口。在系统生成时,任何的不被看作为定制指令端口的接口会出现在SOPC Builder顶层模块中,外部逻辑可以对其访问。因为定制指令逻辑能够访问处理器外部的存储器,这样就可以扩展定制指令逻辑的功能。         图8-8显示的是一个具有外部存储器接口的多时钟周期定制指令。         定制指令逻辑可以执行不同的任务,例如,存储中间结果,或者读存储器来控制定制指 令操作。可选的外部接口也提供了一个数据流入和流出处理器的专用的接口。例如,定制指 令逻辑能够直接将处理器寄存器文件的数据传递给外部的FIFO存储器缓冲,而不是通过处理器数据总线。 8.1.3 软件接

15、口         Nios II定制指令的软件接口从应用代码抽象了逻辑的实现细节,在编译过程中,Nios IIIDE生成允许应用代码访问定制指令的宏。这一节介绍定制指令软件接口的细节,包括如下的内容: · 定制指令例子。 · 内嵌函数和用户定义的宏。 1. 定制指令例子 例8-1显示了system.h头文件中的一部分,定义了位交换定制指令的宏。这个例子使用一个32位的输入,只执行一个功能。 例8-1,位交换宏定义 #define ALT_CI_BSWAP_N 0x00 #define ALT_CI_BSWAP(A) __builtin_custom_ini(AL

16、T_CI_BSWAP_N,(A)) ALT_CI_BSWAP_N被定义为0x0,作为定制指令的索引。ALT_CI_BSWAP(A)宏被映射到一个只需要一个参数的gcc内嵌函数。 例8-2演示的是在应用代码中使用位交换定制指令。 例8-2,位交换指令的使用 1. #include "system.h" 2. 3. 4. int main (void) 5. { 6. int a = 0x12345678; 7. int a_swap = 0; 8. 9. a_swap = ALT_CI_BSWAP(a); 10. return 0; 11.

17、} 在例8–2中,system.h 文件被包含,其中有宏的定义。该例声明了两个整数,a和a_swap。 a作为输入传递给位交换定制指令,结果赋给a_swap。例8–2可以体现大部分应用使用定制指令的方法。 Nios II IDE在宏的定义中只使用了C的整数类型。有时,应用需要使用整数之外的其它输入类型,因此,需要传递期望的整数之外的类型返回值。 用户能够为Nios II 定制指令定义定制的宏,允许其它的32位的输入类型同定制指令接口。 2. 内嵌函数和用户定义的宏         Nios II处理器使用gcc内嵌函数来映射定制指令。通过使用内嵌函数,软件可以使用非整数类型

18、的定制指令。共有52个唯一定义的内嵌函数来提供支持类型的不同组合。内嵌函数名具有下面的格式: __builtin_custom_n 表8-4为定制指令支持的32位的参数和返回值的类型,和在内嵌函数中使用的缩写。 例8–3 内嵌函数 void __builtin_custom_nf (int n, float dataa); float __builtin_custom_fnp (int n, void * dataa); 在例8–3中,_builtin_custom_nf函数需要一个整形(int)和一个浮点

19、型(float)作为输入,不返回结果;相反,_builtin_custom_fnp函数需要一个指针作为输入,返回一个浮点数。 例8–4显示了应用中使用的用户定义的定制指令的宏。 例8–4 定制指令宏的使用 1. /* define void udef_macro1(float data); */ 2. #define UDEF_MACRO1_N 0x00 3. #define UDEF_MACRO1(A) __builtin_custom_nf(UDEF_MACRO1_N, (A)); 4. /* define float udef_macro2(void *data)

20、 */ 5. #define UDEF_MACRO2_N 0x01 6. #define UDEF_MACRO2(B) __builtin_custom_fnp(UDEF_MACRO2_N, (B)); 7. 8. int main (void) 9. { 10. float a = 1.789; 11. float b = 0.0; 12. float *pt_a = &a; 13. 14. UDEF_MACRO1(a); 15. b = UDEF_MACRO2((void *)pt_a); 16. return 0; 17. } 在

21、第2到第6行,声明了用户定义的宏,并映射到相应的内嵌函数。宏UDEF_MACRO1需要一个浮点型的输入,不返回任何值。宏UDEF_MACRO2需要一个指针作为输入,返回一个浮点型的值。第14和15行显示这两个用户定义的宏的使用。 8.1.4 实现 Nios II 定制指令         本节介绍使用SOPC Builder元件编辑器实现Nios II定制指令的过程。元件编辑器使用户能够创建新的SOPC Builder元件,包括Nios II定制指令。有关SOPC Builder元件编辑器的更多信息,参阅Quartus II Handbook Volume 4:SOPC Builder

22、 Component Editor章节。 1. 在 SOPC Builder中实现定制指令的硬件实现Nios II定制指令需要下面的步骤: · 打开Nios II CPU的定制指令设置窗口。 · 添加定制指令的设计文件。 · 配置定制指令的端口。 · 设置元件组的名字。 · 生成SOPC Builder 系统,在Quartus II软件中进行编译。 (一)打开Nios II CPU的定制指令设置窗口 1. 打开SOPC Builder系统 2. 在Altera SOPC Builder System Contents中选择Nios II处理器。 3. 在

23、Module菜单中点击Edit….,Nios II配置向导窗口出现。 4. 点击Custom Instructions页,出现如图8-9的窗口。 5. 在8-9的窗口中点击Import…,出现如图8-10的窗口。 (二)添加顶层设计文件 1. 在图8-10窗口中,点击Add; 2. 切换到相应的目录,选择硬件设计的文件,设计文件可以是HDL文件、EDIF文件或BDF 文件,本例使用的是BDF文件,是实现CRC编码的逻辑,如图8-11所示,点击打开。 3. 设计文件会出现在图8-12所示的窗口中,软件会自动识别处顶层模块,本例显示的是crc。 4. 在图8

24、12中点击read port-list from files,将定制指令端口列出来,如图8-13。 (三)发布定制指令 1. 在图 8-13中点击 Next,进入图 8-14 的 Publish页面。 2. 在 Component Name 栏中输入 crc,在 group 栏中输入 custom instruction。 、 3. 点击窗口底部的 Add to library,将定制指令逻辑添加到定制指令库中,如图 8-15 所示。 图8-15 加入到定制指令库中的定制指令 (四)将定制指令加入系统 1. 在图 8-15 的窗口中,选中 crc 定制指令,然后点击 Add,即将其加入到系统中,如图 8-16。也可以在图 8-14 中,点击 Add to System,进行添加。 2. 在图 8-16的窗口中点击 Finish,完成定制指令的添加。 (五) 生成系统 1. 生成 SOPC Builder系统。 2. 在 Quartus II 软件中对整个工程进行编译。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服