Altera DE2-70学习笔记5-LCD显示实验
来源:互联网 发布:python ctype 编辑:程序博客网 时间:2024/05/29 17:19
开发环境:Quartus II 9.1 & Nios II 9.1
说明:主要参考实验指导书,添加了实验过程遇到的问题和解决方法。
1. 建立Quartus 工程
使用工程向导New Project Wizard 建立一个新工程,工程名和顶层实体名都为:HelloWorld 。设置输出文件保存路径为./release
2. 建立SOPC 系统
(1) 点击Quartus 工具栏上的图标或者点击File->New->SOPC Build System 来新建一个SOPC系统。
将会看到一个clk_0 的实体,可以修改它的名字,这里用名称的是clk 。
(2) 添加On-Chip Memory
在搜索栏中天输入On-chip Memory,可以筛选出该项,也可以直接在Memories and Meroy Controllers中选择出来
双击On-Chip Memory(RAMor ROM)即可添加。将会出现如下页面,修改其中的内存大小(30KB)和文件名称,并点击Finish完成。
(3) 添加Nios Processor
同样的搜索方法找到NiosProcessor,双击出现如下界面,选择economy表示最小核心,下面的Reset Vector和Exception Vector都选择onchip_mem(设置的片上RAM名称)。其他保持默认,点击Finish 完成。
(4) 添加JTAG Uart
如下图,保持默认设置,点击Finish。
(5) 添加LCD
如下图,保持默认设置,点击Finish。
(6) 完成SOPC设计,生成软核处理器系统,点击Generater完成。
生成完成以后,出现以下字样: 表示成功,然后就可以退出SOPC设计了。
3. 用verilog 编写顶层实体
新建一个verilog文件,代码保存为HelloWorld.v(与顶层实体名称一致)
(1)输入以下代码:
moduleHelloWorld(
iCLK_50,
iKEY,
oLCD_ON,
oLCD_BLON,
oLCD_RW,
oLCD_EN,
oLCD_RS,
LCD_D
);
input iCLK_50;
input[0:0] iKEY;
inout[7:0] LCD_D;
output oLCD_ON;
output oLCD_BLON;
output oLCD_RW;
output oLCD_EN;
output oLCD_RS;
assign oLCD_ON = 1'b1;
assign oLCD_BLON = 1'b1;
// SOPC System Instance
HelloWorld_System Sys(
.clk(iCLK_50),
.reset_n(iKEY[0]),
.LCD_E_from_the_lcd(oLCD_EN),
.LCD_RS_from_the_lcd(oLCD_RS),
.LCD_RW_from_the_lcd(oLCD_RW),
.LCD_data_to_and_from_the_lcd(LCD_D)
);
endmodule
(2)分析与综合,点击Processing->Start->StartAnalysis & Synthesis,出现了warning可以暂时不理会
(3)引脚分配
导入DE2-70自带的引脚定义,可以帮助引脚分配(Assignments->Import Assignments),也可以根据原理图自行分配
然后点击Assignments->Pins
可以观察引脚分配情况,在All Pins list中可以删除没有使用到得引脚。
(4)设置没有使用的引脚属性<特别重要>
特别需要注意的是,要养成好的习惯,没有使用的引脚把它们都设置成三态输入。
点击Assignments->Device->Deviceand Pin options->unused pin->Reserve all unuseed pin(All inputtri-stated)
如果不这样设置,在本实验中,通过Nios下载程序的时候会失败,因为时钟引脚被默认接入地拉低了,详细可以参看编译日志。
Nios错误如下:
Using cable"USB-Blaster [USB-0]", device 1, instance 0x00
Pausing target processor: not responding.
Resetting and trying again: FAILED
Leaving target processor paused
4.编译
点击Processing->StartCompilation
5.下载
点击Tools->Programmer
6.Nios 软件设计
(1)新建一个Nios工程,可以选择固定的workplace,也可以将workplace设置在HelloWorld的子目录下。
点击File->New->NiosApplication and BSP from Template,在SOPC Informationfile name 一项中添加HelloWorld目录下的HelloWorld_System.sopcinfo文件,模板选择HelloWorld。工程名称随意,然后 点击Finish生成应用程序和BSP。
生成工程完成以后,需要修改lcd为字符I/O设备。在工程hello_world_0上点击右键->Nios II->BSP Editor->Common,将其中的JTAG改为LCD设备,其中的enable_reduced_device_drivers不能勾选上,否则没有lcd输出:
去掉Setting中的enable clean exit和enable c plus plus,不需要退出程序也没有C++代码和库的支持。
配置完成以后,点击Generate重新生成BSP。
(2)点击Project->BuildAll,将会出现如下错误,由于程序是下载到片内RAM中的,所以生成的程序过大,超过了30KB,所以需要优化编译,缩小程序体积。
在hello_world_0和hello_world_0_bsp工程上右键点击->Properties->NiosII application Properties,修改优化等级为size
重新编译后问题解决。
(3) 运行Nios
在hello_world_0上右键点击->Run as->Nios II Hardware
将会弹出如下界面,如果在界面上显示状态为错误,提示没有找到设备,可能是断开了连接,重新通过Quartus下载.sof文件,然后再点击如下的Refresh Connection就会重新发现设备,接着点击Apply后直接Run就OK了。
程序下载完成后,console中提示:
实际效果如下:
5. 添加定时器
可以在SOPC中继续添加定时器timer,然后重复上述步骤。
然后再Nios中,右键点击hello_world_0->Nios II->BSP Editor->Common,在sys_clk_timer中选择timer作为系统时钟。
重新下载程序,将会在开发板上看到滚动的"Hellofrom Nios"
- Altera DE2-70学习笔记5-LCD显示实验
- Altera DE2-70学习笔记3-LED控制实验
- Altera DE2-70学习笔记1-38译码器
- Altera DE2-70学习笔记2-十进制计数器
- ALTERA DE2 之 verilog HDL 学习笔记04 -altera DE2 上 SRAM的读写
- ALTERA DE2 之 verilog HDL 学习笔记02 - 数码管
- ALTERA DE2 之 verilog HDL 学习笔记01 程序的并行
- ALTERA DE2 之 verilog HDL 学习笔记03 FPGA的PWM输出
- ALTERA DE2 之 verilog HDL 学习笔记05-FPGA UART RS232
- Quick guide for porting uClinux to ALTERA DE2-70
- Quick guide for porting linux to ALTERA DE2-70
- 学习LCD显示的笔记
- ARM学习笔记--LCD显示
- Altera CPLD学习笔记
- altera小实验——LCD1602显示
- [学习笔记] TINY441的LCD显示
- stm32学习笔记(十一)LCD显示
- Altera DE2 Board Resources for Students
- LINUX学习笔记(设备模型)
- 全排列算法(java实现)
- 开发人员指南 Googlemap API教程
- 怎么还不一样呢
- ASP.NET MVC3 快速入门-第九节 实现编辑、删除与明细信息视图
- Altera DE2-70学习笔记5-LCD显示实验
- Spring学习总结6(AOP-基于注解)
- 做好天地图还需再“过五关”
- 成功解决data too long for column 'name'
- chmod命令用法
- poj 2013 Symmetric Order 规律
- 一个与命名空间有关的奇怪错误!
- QT学习过程中遇到的问题集锦(不断更新)
- Tomcat相关知识点