原创 【原创】SOPC自定义元件的添加及运行

2008-12-8 21:22 10257 11 25 分类: FPGA/CPLD

Nios II 嵌入式系统驱动设计(二)


       在SOPC中自定义元件的端口设置解析 中讲述了自定义元件的端口设置,在本文中将详细讲述如何将自定义元件嵌入SOPC Builder中,以及将该元件加入SOPC系统,并通过运行软件测试该元件性能。






新建一个文件夹ip,将Ckecksum Hardware Accelerator的源文件checksum_accelerator.vchecksum_transform.vlatency_aware_read_master.vslave.v复制到该文件夹下。


打开SOPC Builder,单击左上角的Create new component…,弹出如下对话框:


点击看大图


Introduction页面是对component editor的简单介绍。


l         HDL Files<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


点击看大图


单击Add…,选择刚才新建的ip文件夹,将该文件夹下的所有.v文件选中加入,component editor并会进行分析,主要是对端口的分析,将顶层文件的Top复选框打上勾。如果文件有改变可以点击Reanalyze HDL Files重新分析。


       除了导入HDL文件外,component editor还提供另一种方法可以将端口exportSOPC系统之外,直接在Signals页面手动加入信号或在Templates中加入已经定义好的端口信号,用户再自己修改。导入HDL文件后,Templates下拉菜单为灰色,无法加入。


l         Signals


点击看大图


这里的信号是component editor分析了HDL文件后自动从文件中提取的端口信号,用户需要设置interfaceSignal TypeWidthDirection以使用户端口信号与Avalon总线信号相对应,如果用户端口信号的命名方式参考 SOPC中自定义元件的端口设置解析 中的要求,则component editor自动识别出相对应的信号设置。


l         interfaces


点击看大图


Interfaces的类型在SOPC中自定义元件的端口设置解析 中有说明,主要有Masterslaveclock input10种,在每种类型下面可以设置该类型interface的属性参数,如时序,流水线传输,interface的同步clock等。如果显示了除定义以外的interface,则点击Remove interfaces With No Signals删除。


l         Component Wizard


点击看大图


Component Wizard中可以设置元件所属类型名称,元件显示名称,版本号等信息,点击Preview the GUI…可以预览,如果在顶层HDL文件中定义了一些Parameters,可以这里加入以便让用户在实例化时可以设置这些参数。


       全部设置完后,点击Finish…ip文件夹下产生checksum_accelerator_hw.tcl文件,该文件并是Component editor根据用户设置生成的文件,该文件提供给SOPC Builder所有需要的信息。


       除了硬件文件外,为了能用软件执行给元件,需要添加软件驱动程序。在ip文件夹下新建HAL文件和inc文件,ip文件结构如下:


ed1fa66a-fb53-4440-b44f-ff6e244ee529.jpg


其中HAL文件夹下的inc文件夹下包含checksum_accelerator_routines.h为软件API的头文件,HAL文件夹下的src文件夹下包含checksum_accelerator_routines.c为软件API的源文件,以及component.mk,该文件在编译时提供驱动程序源文件信息。在ip文件夹下的inc文件提供元件的寄存器映射(register map)文件,该文件提供软件读写元件寄存器的地址。


       所有的工作完成后,将ip文件复制到QuaetusII工程目录下,打开该工程的SOPC Builder,此时在左边栏出现刚才新增的元件。


f37d9159-e6cd-49e1-ba72-b300e440bb55.jpg


为了测试新增元件的功能,建立带有该元件的SOPC系统:


点击看大图


同时建立以该硬件为基础的软件工程,将文件test_checksum.c的内容复制到应用工程的源文件中,编译,下载,运行后,console窗口出现如下结果:


点击看大图


软件首先产生64KB的随机数,然后分别用软件cheksum和硬件checksum,输出两次checksum的结果,可以看到硬件checksum比软件checksum快了65倍,硬件加速起到了很大的作用,因此在关键算法上可以采用硬件实现,以提高速度。

文章评论14条评论)

登录后参与讨论

用户431019 2012-12-28 18:00

很不错的文章 只是您这样做只是将自定义的器件添加到工程下 如何将其添加到sopc中的library下呢??

用户191970 2011-5-1 09:01

lz,我是初学者,能否提供较为详细的定义API的方法?是通过头文件来定义的吗?我感觉是啊

用户540930 2009-5-18 22:17

看QuartusII Handbook,里面也有写的

用户226170 2009-5-18 16:31

博主,你好,我正在学习,.h和.c文件是自己编写的?

用户222665 2009-5-6 23:03

我正在学

用户1332143 2009-3-4 15:02

看我文章中.c和.h文件的路径设置,使用时和以前一样啊

用户187867 2009-3-4 14:48

那在调用.h和.c时 怎么用呢 和以前一样吗 为什么我的不大能用呢

用户1332143 2009-2-27 21:13

请问博主,在6.0版本中,.h和.c的一些文件都可以在SW file选项卡中添加进去,进行编译。在8.0版本时(就像博主用的一样)没有SW file选项卡,怎么添加这些.H和.C文件?就像您说的那样直接添加到HAL文件夹中就可以了吗?不用进行编译? 答:8.0中不用直接添加,只要在相应路径中放置好就行

用户1332143 2009-2-27 21:09

问博主一个问题:你帖子中的Ckecksum Hardware Accelerator的源文件checksum_accelerator.v,checksum_transform.v,latency_aware_read_master.v,slave.v是从哪里来的啊? 答:这个在Altera的官方网站有下载

用户1153071 2009-2-24 00:02

请问博主,在6.0版本中,.h和.c的一些文件都可以在SW file选项卡中添加进去,进行编译。在8.0版本时(就像博主用的一样)没有SW file选项卡,怎么添加这些.H和.C文件?就像您说的那样直接添加到HAL文件夹中就可以了吗?不用进行编译?
相关推荐阅读
用户1332143 2009-08-16 21:47
时序电路亚稳态分析
这篇文章是我对电子设计中,亚稳态问题的一种分析和总结。文章通过对数字电路中器件的工作机制的介绍,引出亚稳态问题的发生机制。并通过对亚稳态问题发生机制的探讨,用以得到一种能够清楚地,有的放矢地解决亚稳态...
用户1332143 2009-08-16 10:52
【推荐】ADF4350配置软件下载
p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">  随着现代半导体工艺的不断发展, 几十纳米级的CMOS工艺给数字电路带来了很大的恩惠, 但对模拟...
用户1332143 2009-08-14 12:47
【原创】基于NiosII及FT245BM的USB接口设计
以前做的一个项目,FPGA接收AD采集数据后,通过串口发送回PC机,由于串口传输速率较低,对于实时性要求较高的场合不太适用,因此站长选用FT245BM芯片来实现USB接口传输,本文主要讲解FT245B...
用户1332143 2009-08-13 14:56
【原创】MAXII:UFM中晶振的使用
MAXII系列CPLD中带有UFM模块,本文主要讲解UFM中晶振的使用,具体内容请点击下面链接MAXII:UFM中晶振的使用...
用户1332143 2009-03-01 21:53
【原创】如何使用FPGA进行信号调制
       最近要做一个通信收发系统项目,以前对收发器的射频前段关注的比较多,而对基带部分的信号处理一直没有仔细研究。因此,正好借这个项目,熟悉整个基带部分的信号处理流程。       基带部分主要...
用户1332143 2009-02-27 21:56
寒假回来——FPGA市场评论
寒假在家里电脑不能上网,好久没来更新自己的博客了,首先感谢大家对我博客的支持。回来后马上开始了一个863项目,一直没有时间来写博客,今天总算有时间,上来看看。回来这段时间关注了下FPGA的相关新闻,发...
EE直播间
更多
我要评论
14
11
关闭 站长推荐上一条 /3 下一条