跑马灯实验教程

跑马灯实验教程

2023年7月14日发(作者:)

3.2跑马灯实验

事实上在 FPGA 实验板上用 Verilog 语言或者 VHDL 语言都能够很快地写出跑马灯实

验程序。本实验完成的是基于 SOPC 的跑马灯设计,具有一定的操作复杂性。

 实验步骤

3.1.1 建立 Quartus 工程

1. 新建 Quartus 工程 RunningLED,顶层实体名 RunningLED

2. 重新设臵编译输出目录为../ RunningLED/release。

3.1.2

建立 SOPC 系统

3. 点击 Quartus II 软件右上方图标 打开

SOPC Builder,创建一个 SOPC 系统。填

写系统名称为 RinningLED_System,并指

定 Verilog 为描述系统的语言,如图 3.1-1。

4. 在系统上添加 On-Chip Memory。

在程序左侧列表中选择 Memory and Memory Controllers -> On-Chip -> On-Chip Memory

(RAM or ROM),双击添加至系统中。

在弹出的对话框中指定片上 RAM 的属性,因为不需要显示,编译结果很小,保持默

认即可。

图 3-1 添加系统名称并指定语言 实验六 跑马灯实验

图 3.1-2 指定 On-Chip Memory 属性

5. 添加 Nios II Processor。

双击 Altera SOPC Builder -> Nios II Processor,在弹出的对话框中间选择第一个 Nios

II/e,表示 economy,

最小的 NIOS II 核心。

下面的 Reset Vector

和 Exception Vector

都选择 onchip_men,

即 刚 才 添 加 的 片 上

RAM 的名称。其它

的都保留默认设臵即

可。点击 Finish 添加

CPU 核。如图 3.1-3 所

示。

图 3.1-3 添加 CPU 设臵参数

6. 添加定时器。

在列表中选择 Peripherals -> Microcontroller Peripherals -> Interval Timer,弹出如下对话

框。定时器在本系统中主要作用是产生一个固定间隔的中断信号,让 CPU 改变 LED 灯的

状态。因此在 Period 中选择 500ms,表示灯的状态每 500ms 改变一次。如图 3.1-4。

实验六 跑马灯实验

图 3-4 添加定时器并设臵参数

3.1. 添加 IO 控制器。

双击 Peripherals -> Microcontroller Peripherals -> PIO (Parallel I/O),保持默认设臵即可,

表示有 8 个输出用 IO 口,分别控制开发板上的 8 个绿色 LED 灯(LEDG[7..0])。如图 3.1-5。

实验六 跑马灯实验

图 3.1-5 添加 IO 控制器并设臵参数

8. 完成 SOPC 工程设计,为了方便将 PIO 的名称改为 pio_ledg。在 pio 上点击右键 ->

rename,将名称改为 pio_ledg。如图 3.1-6。

实验六 跑马灯实验

图 3.1-6 完成的 SOPC 工程

注意:系统的每个组件都需要一个地址才能正常工作。某些组件,如定时器(Interval

Timer)还需要分配一个 IRQ 号。如果发现各组件的地址或者 IRQ 号出现冲突,可以选

择菜单栏上 System -> Auto-Assign Base Addresses 以及 System -> Auto-Assign IRQs 自

动设定地址和 IRQ。系统 IRQ 可以是从 0 到 31 的整数,数值越小优先级越高。

9. 生成系统。通过点击下方 Generate 完成。如图 3.1-7。

图 3.1-7 生成系统

第 87 页 共 208 页 实验六 跑马灯实验

3.1.3 用符号框图完成顶层实体

10. 这次使用符号框图完成顶层实体。新建一个符号文件,添加刚才建立的 SOPC 系

统。如图 3.1-8。

图 3.1-8 添加 SOPC 系统

11. 添加输入与输出端口。在空白部分双击,在 Name 框内输入 input 可以快速定位,

添加输入端口。一共需要两个。然后使用同样步骤添加一个 ouput 输出端口。结

果应如图 3.1-9 所示。

图 3.1-9 添加结果图

将两个输入端分别改名为 iCLK_50 及 iKEY[0],代表开发板上的 50MHz 晶振和 KEY0

按钮。将输出端改名为 oLEDG[7..0],代表开发板上的 oLEDG7 到 oLEDG0 共 8 个绿色

LED 灯。需要注意的是 SOPC Builder 生成的系统的重启信号为低电平有效,开发板上的按

键按下后代表低电平,弹起代表高电平。然后将这几个元件连接起来,硬件电路部分设计

完毕。电路应如下图所示。(注意:此处的名称修改应该与 DE2 引脚的配臵相一致)

实验六 跑马灯实验

图 3.1-10 电路图

12. 保存 bdf 文件,然后执行分析与综合

13. 分配引脚

14. 编译下载。编译完成后将程序烧写至 FPGA 开发板。由于目前还没有编写软件,

因此开发板上不会有什么现象。

3.1.4 软件设计

15. 打开 Nios II IDE,首先选择一个合适的工作空间,依旧设臵在<工程所在目录

>softawre。如图 3.1-11。

图 3.1-11 选择工作空间

确认以后软件会重新启动。在欢迎界面中选择 Workbench,进入主界面

16. 选择 File -> New -> Nios II C/C++ Application

第 89 页 共 208 页 实验六 跑马灯实验

图 3.1-12 选择工程模板

在 Select Project Template 内选择第一项 Blank Project,Name 使用默认 blank_project_0,

SOPC Builder System PTF File 使用默认设臵,即刚才生成的 SOPC 系统,点击 Finish 完成。

如图 3.1-12。

17. 选择工程 blank_project_0,右键单击,选择 Properties,在 C/C++ build 选项卡中

配臵编译器参数,跟上次一样依旧是-DALT_RELEASE -Os -g –Wall,如图 3.1-13。

实验六 跑马灯实验

图 3.1-13 配臵工程编译选项

18. 配臵 blank_project_0_syslib 的编译器参数。跟 blank_project_0 一样。

19. System Library Properties 设臵。

右击工程 blank_project_0_syslib -> Properties,选中 System Library 选项卡,在下图所

示界面中,取消掉 Clean Exit (Flush Buffer)和 Support C++前的勾,因为我们的程序不会退

出,也不包含 C++的函数和库。选中 Program never exits,Reduce device drivers 和 Small C

library 以减小程序体积。其他保持默认设臵即可。如图 3.1-14。再次声明如果使用 lcd 输出,

则不能勾选 Reduce device drivers。

实验六 跑马灯实验

图 3.1-14 System Library Properties 设臵

20. 右键点击工程 blank_project_0,选择 New -> Source File。如图 3.1-15。

图 3.1-15 添加源文件图

在弹出的对话框中指定文件名为 main.c,并将以下代码复制进去,并保存。

#include "system.h"

#include

#include "alt_types.h"

#include

// Internal Timer Overflow interrupt

static void timer_overflow(void* context, alt_u32 id)

{

IOWR(TIMER_BASE,0,0);

if (*(alt_u8 *)context & 0x80)

实验六 跑马灯实验

{ *(alt_u8 *)context = 0x01;

}

else

{

*(alt_u8 *)context = *(alt_u8 *)context << 1;

}

IOWR(PIO_LEDG_BASE,0,*(alt_u8 *)context);

return;

}

int main( )

{

alt_u8 led = 0x01;

// Register Interrupt Service Routine (ISR)

alt_irq_register(TIMER_IRQ, (void*)&led, timer_overflow);

while(1);

}

21. Project->Build All,编译,结果只用了 2K。

22. 右击 blank_project_0,选择 Run As ->Nios II Hardware

3.1-16。

如图

图 3.1-16 下载运行 C 程序

23. NIOS II IDE 将程序下载到开发板上,之后就能看到 8 个 LEDG

灯轮流点亮了。

◆ 本实验指导结束

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689328753a230675.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信