PWM实验 - 基于AVALON的IP定制

硬件开发环境:黑金开发板Cyclone IV,

软件开发环境:Quartus 11.0 + Nios II 11.0

背景介绍:之所以想写本实验,在于<Nios那些事>做该实验的开发环境是Quartus 9.0 + Nios II 9.0的,对于我这种初学者来说,很是郁闷。改了那么多之后,算是调通了,于是想记录下本次实验。

由于本人语言能力有限,所以不打算重新写本次实验,只是按<Nios那些事>的顺序改动些。

一、简介

个人附注:1)关于如何分配信号线,如何编配外设与AVALON总线的接口信号线。强烈建议有余力的情况下阅读参考文档<Avalon Interface Specifications>

      如果不想阅读英文的,可以看中文书藉<NiosII嵌入式软件 SOPC设计原理及应用>中的第三章也有很详细的介绍(PS本人也会过几天总结一个关于那章的读书笔记)

二、DHL模块设计

个人附注:1)主要是Verilog的代码编写。

三、硬件设计

个人附注:1)主要内容是SOPC Builder下如何添加IP核。

     2)修改如下

步骤一:进入SOPC Builder后,选择“File”->"New Component..",进入添加IP核模块界面。如图1所示:

    

步 骤二:单击"Next",进入“HDL Files”选项卡,然后单击“Add ..”选择要添加IP核的HDL文件。(不能有中文路径什么的就不用我说了吧),经过一个不长的等待后就会发现如图所示的界面                                      

 

在 这里,如果编译成功的话,会有上图“2”标注的信息提示,但是与此同时会有“3”处的3个error。在教程里并没有提及,很有可能是版本的问 题,版主使用的是8.0版本,所以没有这等提示。于是乎查各种资料,终于明白了个大概,是说reset信号线必须有一个时钟信号相结合,也大概是说 reset信号应该是个时钟类型的型号。那在哪改呢,别急,先点出“Close”。

步骤三:点击“Next”,继续到了“Signals”信号选项卡,可以看到如图所示,错误依旧在。可以发现与教程很不一样,尤其是“reset”和“clock”信号线。

具体每项什么意思,教程上解释的很清楚了

Interface是Avalon接口类型 ,它包括Avalon-MM、Avalon-ST、Avalon Memory Mapped Tristate Interface等等

Signal Type指的是各个Avalon接口类型下癿信号类型。

比 较一下,可以发现,主要不同在于Interface类型不一样,教程里的都是“clock_reset”,而事实的是一个 “clock“、一个”reset“,所以说很有可能是11.0版本的已经区分clock和reset信号了。这也就是会产生我们错误的原因,我也试图去 统一,发现不行,于是,先按教程里的将PWM_out信号线改成如图所示。见下图。改完之后发现ERROR少了一个

步 骤四:继续“Next”,来到Interface选项卡处,可以看到又与教程不一样,这里要注意,要消除上述两个错误就在这。单 击“reset”信号中的“Associated Clock”下拉箭头。我们将默认的“none”改换成"clock"。改完之后,error立马消失,至于原因,可以参考 “Documentation”选项卡,(对SOPC软件的人性化赞一个)。

接下来也就是要拉到下图所示位置停止,将红圈处改选为NATIVE,这个地方就是地址对齐的选项,我们选择为静态地址对齐。其他地方都默认,无需要改动。

步骤五....步骤N都与教程一样,无需任何地方变动。

四、软件设计

个人附注:1)主要内容是Nios II IDE 11.0的设置,没有遇到什么错误。

就这样,本次实验算是按步就班的完成了。

总结:1)至于上面修改的原因有点似懂但不能用理论阐述为什么,目前正在看些资料,会在<NiosII嵌入式软件 SOPC设计原理及应用>有所涉及,等看完了写个总结贴吧。

    2)这里有个问题不是太懂,在上述步骤四中,教程里说“其它默认就行”,“这里面有很多选项,其中Timing部分需要说明 一下,PWM的Avalon Slave端口不Avalon Slave端口时钟信号同步,读/写时的建立径保持时间为0,因为读、写寄存器仅需要一个时钟周期,所以读/写时为0等待且不需要读延时。” 可是我在它 的默认下看到的是如下图,这不是有读等待的么?不解,不过我想这些在<NiosII嵌入式软件 SOPC设计原理及应用>都有解释,所以打算接下来花段整 的时候好好研读下“AVALON”总线部分的解释。

   3) 还有本人在实验的时候,外部编译综合时出现错误,具体记不太清了,好象是说在PWM.BDF文件中和PWM.V文件中有 两个相同的实体。其实这就是说,PWM文件我已经定义了个PWM的entity,而在我打开Quartus II软件建立工程时,为了方便,就把实体体命名成了pwm,所以就重定义了,更恶的是不能重命名,我只好重新建立工程来完成了,可参看下图。看来我还得写 个关于建立的各个文件的阐述了要不然总会犯这种错误。

时不我待啊,感觉时间好少要学的好多的说啊,加油,明天继续学,打鸡血。

posted @ 2012-09-05 19:54  dudu1990  阅读(319)  评论(0编辑  收藏  举报