DE2-115基于NIOSII软核的流水灯实验

一、实验设备

硬件:PC 机、DE2-115 FPGA 实验开发平台;
软件:Quartus-II、Platform Designer、Nios II SBT

二、基于NIOS-II软核流水灯实现(硬件设计)

1、 新建工程

选择目标芯片:cycloneIVE系列的EP4CE11529C7

2、 Qsys系统设计

1.启动 Platform Designer 在这里插入图片描述2.点击 File-save,在文件名中填写为kernel在这里插入图片描述
3.双击 clk_0 元件,对 Clock 进行时钟设置
在这里插入图片描述
4.添加 CPU 和外围器件。从 PD 的元件池中选择以下元件加入到当前设计的系统中:Nios II 32-bit CPU、jtag uart、片上存储器、PIO、system ID
添加 Nios II 32-bit CPU
在“component library”标签栏中找到“Nios II Processor”后点击 Add(在查找窗口输入nios 即可)。
在这里插入图片描述

在 Nios Core 栏中选择 Nios II/f 选项,其他保持默认选项
在这里插入图片描述
将 nios2_qsys_0 重命名为 cpu,右键,点击”Rename”即可重新命名
在这里插入图片描述

将 cpu 的 clk 和 reste_n 分别与系统时钟 clk_0 的 clk 和 clk_reset 相连(右键器件—> connection),也可以通过点击节点连接
在这里插入图片描述
添加 jtag uart 接口

jtag uart 接口是 Nios II 嵌入式处理器新添加的接口元件,通过内嵌在 Intel FPGA 内部的 JTAG 电路,可以实现在 PC 主机与 Qsys 系统之间进行串行字符流通信。
从下图左侧”Component Library”标签栏中的查找窗口输入 jtag 找到”JTAG UART”,然后点击 Add。
在这里插入图片描述
在 JTAG UART-jtag-uart_0 的设置向导中保持默认选项,点击 Finish

将 jtag-uart_0 重命名为 jtag-uart

进行 clk、reset 以及 master-slave 喝中断 irq的 连线
在这里插入图片描述
添加片上存储器 On-Chip Memory(RAM)核
从下图左侧”Component Library”标签栏中的查找窗口输入 On Chip 找到”On-Chip
Memory(RAM or ROM)”后点击 Add
在这里插入图片描述
在”Size”栏中的”Total memory size”窗口中输入 40960(即片上内存的大小为 40KB),
其余选项保持默认,点击 Finish
在这里插入图片描述
将 onchip_memory2_0 改名为 onchip_ram

进行时钟、数据端口、指令端口的连接,连接后如下图所示
在这里插入图片描述
添加 PIO 接口
从下图左侧”Component Library”标签栏中的查找窗口输入 pio 找到”PIO”后点击Add
在这里插入图片描述
确定以下选项:Width 为 8bits,Direction 选择 output,其余选项保持默认,点击Finish
在这里插入图片描述
将pio_0 改名为 pio_led。并在在 Export 栏处双击,把输出口引出来,并命名为 out_led。

进行时钟、数据端口、指令端口的连接:
在这里插入图片描述
添加片 System ID Peripheral 核
从下图左侧”Component Library”标签栏中的查找窗口输入 sys 找到” System ID Peripheral”后点击 Add
在这里插入图片描述
保持默认选项,单击 Finish

将 sysid_qsys_0 改名为 sysid,进行时钟、数据端口的连接:
在这里插入图片描述

3、 后续设计

(1)基地址分配:点击 PD 主界面菜单栏中的”System”下的”Assign Base Addresses”。
在这里插入图片描述
(2)分配中断号:在”IRQ”标签栏下点选”Avalon_jtag_slave”和 IRQ 的连接点就会为”jtag_uart”核添加一个值为 0 的中断号。
在这里插入图片描述
(3)指定 NIos II 的复位和异常地址:从”System Contents”标签栏
双击建立好的 cpu 进入 Nios II Processor 的配置界面,配置 Reset Vector 和 Exception Vector 为””onchip_ram.s1”,点击 Finish
在这里插入图片描述
(4)点击 Qsys 主界面菜单栏中的”System”下的”Create Global Reset Network”。完成后会自动连接所有复位端口
在这里插入图片描述
最终连接图
在这里插入图片描述
(5)生成 Qsys 系统:点选”Generation HDL”标签栏中 Generate 按钮生成 Qsys 系统。
在这里插入图片描述
如果提示是否保存.qsys 文件,请选择保存,点击 Close 后关闭窗口后,再关闭 Platform Designer 主界面。
(6)在原理图(BDF)文件中添加 PD 生成的系统符号,在空白处双击将已生成的 kernel 加入 top_level.bdf 中。
在这里插入图片描述
(6)加入 Quartus II IP File 文件,为了以后编译成功,请务必将对应的 Quartus II IP File (.qip) 加入项目中。步骤如下:
点击 Assignments-Settings,添加 kernel.qip 文件,如下图所示:

在这里插入图片描述
选中该文件后,点击 OK 按钮加入 kernel.qip 文件
在这里插入图片描述

4、 进行逻辑连接和生成管脚

(1)逻辑连接。开发板晶振为 50M,与系统默认一致,因此,这里我们不需要修改。
(2)在 kernel 模块内点击鼠标右键选取 Generate Pin for Symbol Ports 生成管脚。如下图所示:
在这里插入图片描述
(3)将管脚”inclk0”改名为 clock,管脚”reset_reset_n”改名为 reset_n,管脚 out_led_export[7…0]改为 out_led[7…0]。
在这里插入图片描述
(4)芯片引脚设置

菜单里选择 Assignments-device,然后如下图所示点击 Device pin options
在这里插入图片描述
进行 unused pin 设置,可能会收到外部信号的干扰,将未用引脚设置为 As input tri-stated
在这里插入图片描述
特殊引脚设置,设置为常规引脚
在这里插入图片描述
回到 Quartus II 主界面后编译项目。如下图所示,编译成功在这里插入图片描述
分配物理引脚
在这里插入图片描述
完成后关闭 Pin Planner,回到 Quartus Prime 主界面后再次编译项目。至此完成项目的硬件设计。

三、基于NIOS-II软核流水灯实现(软件设计)

下面使用 Nios II Software Build Tools for Eclipse 来完成当前项目的软件开发。

按照下图所示点击 Nios II Software Build Tools for Eclipse 打开 Nios II SBT for Eclipse
在这里插入图片描述
选择默认路径即可,建立新的软件应用
在这里插入图片描述
点击后出现下图,在”SOPC Information File name”窗口中选择 kernel.sopcinfo文件,以便将生成硬件配置信息和软件应用关联,CPU 栏会自动选择”CPU”。在”Project name”输入”hello_world”,Project template”选择 Hello_World。点击 Finish。
在这里插入图片描述
在这里插入图片描述
系统会自动生成一个打印“hello_world”的软件工程,在 hello_world.c 中我们可以看
到相应代码,如下图:
在这里插入图片描述
可将其修改为流水灯程序,在FPGA板子中观察LED灯进行验证
流水灯控制程序代码如下:

#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
const alt_u8
led_data[8]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};
int main (void)
{
 int count=0;
 alt_u8 led;
 volatile int i;
 while (1)
 { if (count==7)
 {count=0;}
 else
 {count++;}
 led=led_data[count];
 IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);
 i = 0;
 while (i<500000)
 i++;
 }
 return 0;
}

选择 Build Project,如下图所示:
在这里插入图片描述

四、实验结果

配置 FPGA
如下图所示,启动 Quartus Prime Programmer
在这里插入图片描述
如下图所示,添加下载文件。然后点击 Start 开始下载,下载成过后关闭,回到 Eclipse 主机界面。(手中暂无板子,所以显示无硬件)
在这里插入图片描述
添加文件并烧录
在这里插入图片描述
运行、调试程序
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
结果如下

在这里插入图片描述

《餐馆点餐管理系统——基于Java和MySQL的课程设计解析》 在信息技术日益发达的今天,餐饮行业的数字化管理已经成为一种趋势。本次课程设计的主题是“餐馆点餐管理系统”,它结合了编程语言Java和数据库管理系统MySQL,旨在帮助初学者理解如何构建一个实际的、具有基本功能的餐饮管理件。下面,我们将深入探讨这个系统的实现细节及其所涉及的关键知识点。 我们要关注的是数据库设计。在“res_db.sql”文件中,我们可以看到数据库的结构,可能包括菜品表、订单表、顾客信息表等。在MySQL中,我们需要创建这些表格并定义相应的字段,如菜品ID、名称、价格、库存等。此外,还要设置主键、外键来保证数据的一致性和完整性。例如,菜品ID作为主键,确保每个菜品的唯一性;订单表中的顾客ID和菜品ID则作为外键,与顾客信息表和菜品表关联,形成数据间的联系。 接下来,我们来看Java部分。在这个系统中,Java主要负责前端界面的展示和后端逻辑的处理。使用Java Swing或JavaFX库可以创建用户友好的图形用户界面(GUI),让顾客能够方便地浏览菜单、下单。同时,Java还负责与MySQL数据库进行交互,通过JDBC(Java Database Connectivity)API实现数据的增删查改操作。在程序中,我们需要编写SQL语句,比如INSERT用于添加新的菜品信息,SELECT用于查询所有菜品,UPDATE用于更新菜品的价格,DELETE用于删除不再提供的菜品。 在系统设计中,我们还需要考虑一些关键功能的实现。例如,“新增菜品和价格”的功能,需要用户输入菜品信息,然后通过Java程序将这些信息存储到数据库中。在显示所有菜品的功能上,程序需要从数据库获取所有菜品数据,然后在界面上动态生成列表或者表格展示。同时,为了提高用户体验,可能还需要实现搜索和排序功能,允许用户根据菜品名称或价格进行筛选。 另外,安全性也是系统设计的重要一环。在连接数据库时,要避免SQL注入攻击,可以通过预编译的PreparedStatement对象来执行SQL命令。对于用户输入的数据,需要进行验证和过滤,防止非法字符和异常值。 这个“餐馆点餐管理系统”项目涵盖了Java编程、数据库设计与管理、用户界面设计等多个方面,是一个很好的学习实践平台。通过这个项目,初学者不仅可以提升编程技能,还能对数据库管理和件工程有更深入的理解。在实际开发过程中,还会遇到调试、测试、优化等挑战,这些都是成长为专业开发者不可或缺的经验积累
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值