NIOS II前哨计划step by step 1(NIOS

嵌入式操作系统

57人已加入

描述

NIOS II前哨计划step by step 1(NIOS II用户指令)

可编程软核处理器最大的特点是灵活,灵活到我们可以方便的增加指令,这在其他SOC系统中做不到的,增加用户指令可以把我们系统中用软件处理时耗费时间多的关键算法用硬逻辑电路来实现,大大提高系统的效率,更突出的一点是:我们通过下面的逐步操作会认识到,这是一个听起来高深,其实比较容易实现的功能(我们站在EDA工具这个巨人肩上,风光无限啊:),通过这一文档的介绍可以增强我们掌握NIOS II所有的技术手段的信心,这也是我把NIOS II 用户指令放在最前面的用意。

用户指令就是我们让NIOS II软核完成的一个功能,这个功能由电路模块来实现,这个电路模块是用HDL语言描述的。它被连接到NIOS II软核的算术逻辑部件上,下面就是示意图:

NIOSII
NIOSII


万事开头难,那我们就挑个软的捏,来做一条组合逻辑指令吧,下面就是模块示意图:

NIOSII

双击CPU项就进入CPU配置,设置用户指令我们要选最后一个表单(Custom Instructions TAB)。见下图
NIOSII 

在该表单中我们点击IMPORT,来加入我们的HDL模块,见下图:

NIOSII

在IMPORT操作窗口上,点击ADD增加用户指令模块,点击read port list from files显示模块PORT。
最后点击Add to System完成用户指令的添加。

在SOPC BUILDER 中生成系统,并在QUARTUS II中重新编译整个工程,并program编程开发板器件,这样硬件部分就完成了。下面我们就可以在NIOS II IDE中来编程使用我们的指令了。

由于我们在SOPC BUILDER 中增加了用户指令,SOPC BUILDER 生成的PTF文件中包含了相关信息,我们在NIOS II IDE 中增加新软件工程项目编译时,系统根据SOPC BUILDER生成的PTF文件生成了硬件系统描述的system.h。在该头文件中系统已经为用户指令生成了相关的宏,我们以上定制的用户指令在system.h中相关部分如下:
/*
* custom instruction macros
*
*/

#define ALT_CI_TEST_CUSTOM_INSTRUCTION_N 0x00000000
#define ALT_CI_TEST_CUSTOM_INSTRUCTION(A,B) __builtin_custom_inii(ALT_CI_TEST_CUSTOM_INSTRUCTION_N,(A),(B))

注意__builtin_custom_inii是Altera 移植GCC后的built_in Function。

最后,我们创建一个Hello World工程,稍微改动一下:
#include
#include

int main()
{
   int a,b,c;
  
   a=1;
  
   c=ALT_CI_TEST_CUSTOM_INSTRUCTION(a,b);
   printf("c=%d\n",c);
  
   return 0;
}

主要把system.h头文件包含进来。

好了,马上可以进行调试了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分