Nios学习笔记2——流水灯实验
2016-02-03 22:39
603 查看
回到quartus,我们新建一个Verilog文件,将之前复制的代码粘贴进去,保存文件为led.v。为了后面的编译,需要将nioscpu的Quartus IP File(.qip)加入项目中,点击Assignments->Settings,在File中将nioscpu.qip加入,如下图所示,点击Add,再点击OK。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/410ba48f6539868e7270f4c502fcc3e6.png)
接下来,我们建立锁相环PLL,给Nios提供时钟。
单击Tools->MegaWizard Plug-In Manager,点击Next,如图所示,搜索PLL,选择ALTPLL,在右边的输出文件地址中补上pll,点击Next:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/065ed1ea0e642b7a5e9e17c9f23f48ce.png)
接着page 1设置如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/0ba75af7b8642b29af1dc0f7878192ca.png)
器件速度等级选8,输入时钟设为50M(因为开发板晶振为50M),点击Next,在page 2上把2个钩去掉,如图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/8872a814a86f66dd58c975cfabdb0a2b.png)
接着一直点击Next,直到设置clk c0,如下图所示设置,将c0输出频率设为100M,这是提供给Nios软核的时钟,与我们之前在Nios中设置的100M时钟频率相对应。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/90bb89493334c5ca0301011c4d961d98.png)
接下来我们还需要设置SDRAM的时钟频率,点击Next,如下图所示,
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/c7815bf5f2872c4ae370a87a25e48f57.png)
首先将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等名字呢?这先卖个关子,后面再解释。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/2bdb7b732286f1af969e3dd60fbad556.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/01fc37b51800617e8608d5eb2f3a6216.png)
接下来,我们对管脚进行分配。将随开发板一起的资料打开,找到AX301.tcl文件,将它复制到工程目录下。在quartus中点击Tools->Tcl scripts,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/46cb2eb93a3b72049a4f88b001d5e19e.png)
点击AX301.tcl,在Preview中我们看到,E15脚被设置为RESET,E1脚被设置为CLOCK,在LED对应的引脚中也有4个脚。大家可以去查看电路图看看对应的对不对。举个例子,如下图所示,E1脚对应CLOCK,而CLOCK正是对应于50M的晶振输入的,可见tcl文件中的设置是正确的。我们在Tcl scripts中点击Run,再点击OK,再点击Close。这时我们点击Assignments –> Pin planner,就可以看到管脚分配已经OK。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/1f2d02e5a6ede8dfbffb8b93ad3b663f.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/cbc3e2022ea108f948a0c5ba6338c489.png)
最后对工程进行设置,点击Assignments->Device,在出现的页面中点击Device and Pin Options,在Configuration选项卡中钩选Use configuration device,选择EPCS16,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/55a8ea81c0b8f48b0d75190567e941bd.png)
接着在Unused Pins中选择As input tri-stated,这个主要是防止蜂鸣器响,如下图所示,
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/49f8bb48020786d0a7c2a2607d5448dd.png)
然后在Dual-Purpose Pins中把所有Value都设置为Use as regular I/O,如下图所示,
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/2bd0760369e9217b422f03100602dec1.png)
然后点击OK。最后开始编译,编译完成后退出。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/410ba48f6539868e7270f4c502fcc3e6.png)
接下来,我们建立锁相环PLL,给Nios提供时钟。
单击Tools->MegaWizard Plug-In Manager,点击Next,如图所示,搜索PLL,选择ALTPLL,在右边的输出文件地址中补上pll,点击Next:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/065ed1ea0e642b7a5e9e17c9f23f48ce.png)
接着page 1设置如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/0ba75af7b8642b29af1dc0f7878192ca.png)
器件速度等级选8,输入时钟设为50M(因为开发板晶振为50M),点击Next,在page 2上把2个钩去掉,如图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/8872a814a86f66dd58c975cfabdb0a2b.png)
接着一直点击Next,直到设置clk c0,如下图所示设置,将c0输出频率设为100M,这是提供给Nios软核的时钟,与我们之前在Nios中设置的100M时钟频率相对应。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/90bb89493334c5ca0301011c4d961d98.png)
接下来我们还需要设置SDRAM的时钟频率,点击Next,如下图所示,
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/c7815bf5f2872c4ae370a87a25e48f57.png)
首先将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等名字呢?这先卖个关子,后面再解释。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/2bdb7b732286f1af969e3dd60fbad556.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/01fc37b51800617e8608d5eb2f3a6216.png)
接下来,我们对管脚进行分配。将随开发板一起的资料打开,找到AX301.tcl文件,将它复制到工程目录下。在quartus中点击Tools->Tcl scripts,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/46cb2eb93a3b72049a4f88b001d5e19e.png)
点击AX301.tcl,在Preview中我们看到,E15脚被设置为RESET,E1脚被设置为CLOCK,在LED对应的引脚中也有4个脚。大家可以去查看电路图看看对应的对不对。举个例子,如下图所示,E1脚对应CLOCK,而CLOCK正是对应于50M的晶振输入的,可见tcl文件中的设置是正确的。我们在Tcl scripts中点击Run,再点击OK,再点击Close。这时我们点击Assignments –> Pin planner,就可以看到管脚分配已经OK。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/1f2d02e5a6ede8dfbffb8b93ad3b663f.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/cbc3e2022ea108f948a0c5ba6338c489.png)
最后对工程进行设置,点击Assignments->Device,在出现的页面中点击Device and Pin Options,在Configuration选项卡中钩选Use configuration device,选择EPCS16,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/55a8ea81c0b8f48b0d75190567e941bd.png)
接着在Unused Pins中选择As input tri-stated,这个主要是防止蜂鸣器响,如下图所示,
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/49f8bb48020786d0a7c2a2607d5448dd.png)
然后在Dual-Purpose Pins中把所有Value都设置为Use as regular I/O,如下图所示,
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/31/2bd0760369e9217b422f03100602dec1.png)
然后点击OK。最后开始编译,编译完成后退出。
相关文章推荐
- Nios学习笔记1——流水灯实验
- iOS开发PCH文件、NSLog真机不打印
- iOS引导页-初
- iOS命名规范
- iOS --- [持续更新中] iOS移动开发中的优质资源
- ios 获取当前wifi名称
- iOS开发:处理多点触摸与手势检测
- iOS上视频剪辑片段和添加背景音乐
- iOS中点击顶部statusBar让tableView回到第一行
- iOS开发之字符串显示不同的颜色
- iOS 循环语句的使用
- ios web 跳转
- iOS 9 学习系列:Contacts Framework
- iOS layer 的粒子视图和过度视图详解
- iOS Animation CATransaction事务 详解
- iOS开发之多线程GCD
- iOS:交换Button中图片与文字的左右位置
- How to use cocoa pod in your iOS project
- iOS开发之多线程技术
- iOS ----调用系统摄像捕捉人脸