Nios学习笔记2——流水灯实验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nios学习笔记2——流水灯实验相关的知识,希望对你有一定的参考价值。

回到quartus,我们新建一个Verilog文件,将之前复制的代码粘贴进去,保存文件为led.v。为了后面的编译,需要将nioscpu的Quartus IP File(.qip)加入项目中,点击Assignments->Settings,在File中将nioscpu.qip加入,如下图所示,点击Add,再点击OK。

技术分享

接下来,我们建立锁相环PLL,给Nios提供时钟。

单击Tools->MegaWizard Plug-In Manager,点击Next,如图所示,搜索PLL,选择ALTPLL,在右边的输出文件地址中补上pll,点击Next:
技术分享

接着page 1设置如下:

技术分享

器件速度等级选8,输入时钟设为50M(因为开发板晶振为50M),点击Next,在page 2上把2个钩去掉,如图所示:

技术分享

接着一直点击Next,直到设置clk c0,如下图所示设置,将c0输出频率设为100M,这是提供给Nios软核的时钟,与我们之前在Nios中设置的100M时钟频率相对应。

技术分享

接下来我们还需要设置SDRAM的时钟频率,点击Next,如下图所示,

技术分享

首先将Use this clock勾选,然后将Enter output clock parameters设置为2,这样实际频率就是100MHz。由于电路板及芯片的信号延迟等原因,我们需要对时钟相移进行调节,以达到 SDRAM 的时钟与软核之间的协调。我们将 Clock phase shift 设置为-73(具体原因请参考Nios那些事儿)。

设置好以后,点击Finish,出现Quartus Ⅱ IP Files的对话框,点击Yes,PLL构建就完成了。接着在led.v文件中对pll进行实例化,并补全整个工程,结果如下图所示,可能有人要问:为什么要用CLOCK,LED和RESET等名字呢?这先卖个关子,后面再解释。

技术分享

技术分享

接下来,我们对管脚进行分配。将随开发板一起的资料打开,找到AX301.tcl文件,将它复制到工程目录下。在quartus中点击Tools->Tcl scripts,如下图所示:

技术分享

点击AX301.tcl,在Preview中我们看到,E15脚被设置为RESET,E1脚被设置为CLOCK,在LED对应的引脚中也有4个脚。大家可以去查看电路图看看对应的对不对。举个例子,如下图所示,E1脚对应CLOCK,而CLOCK正是对应于50M的晶振输入的,可见tcl文件中的设置是正确的。我们在Tcl scripts中点击Run,再点击OK,再点击Close。这时我们点击Assignments –> Pin planner,就可以看到管脚分配已经OK。

技术分享

技术分享

最后对工程进行设置,点击Assignments->Device,在出现的页面中点击Device and Pin Options,在Configuration选项卡中钩选Use configuration device,选择EPCS16,如下图所示:

技术分享

接着在Unused Pins中选择As input tri-stated,这个主要是防止蜂鸣器响,如下图所示,

技术分享

然后在Dual-Purpose Pins中把所有Value都设置为Use as regular I/O,如下图所示,

技术分享

然后点击OK。最后开始编译,编译完成后退出。

以上是关于Nios学习笔记2——流水灯实验的主要内容,如果未能解决你的问题,请参考以下文章

51单片机学习笔记5 流水灯实现及蜂鸣器控制

小梅哥SOPC学习笔记切换NIOS II CPU的主内存后软件中需要注意的几点设置

FPGA的NIOS-II开发入门

小梅哥SOPC学习笔记sof与NIOS II的elf固件合并jic得到文件

51单片机学习笔记2 -- 单灯控制及流水灯

51单片机学习笔记2 -- 单灯控制及流水灯