广州致远电子有限公司 Tel:(020)22644399 22644249 Fax:38601859 http://www.embedtools.com
1
SOPC软件编程基础实验
――――视频教程解说词
说明:本文档转载自本公司“SmartSOPC 教学实验开发平台”附带的实验书《Nios II
SOPC 嵌入式系统实验教程》,其中第 4.1 的内容。为了适应视频的特殊性部分内容略有更
改。
本节的视频属于 SOPC 软件编程基础实验,本节所有的实验都是以 SmartSOPC
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
核
为硬件来新建 C++工程的,新建工程的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
与以上视频的在 Quartus II 中建立工程的方法
一样,不同之处在于 Nios II 工作区路径指定对话框中设置的路径为用户将
SmartSOPC_standard_1c6 放置的路径。例如将 SmartSOPC_standard_1c6 拷贝到 D:
SOPC\Example 下便可将路径设置到此路径。
在向导中指定应用软件的硬件系统时,要指定为 Nios II _1c6,因为本实验是基于 Nios
II_1c6 的硬件系统。
PIO输出实验 1—流水灯控制
实验目的
熟悉 NiosII PIO 设备的访问方法。
实验设备
硬件:PC 机 一台
SmartSOPC 教学实验开发平台 一套
SmartSOPC_standard_1c6/1c12 NiosII 系统
软件:NiosII IDE 5.0
实验内容
使用 PIO 口控制 8 个 LED 进行流水灯显示。
实验模板位于:配套光盘\SmartSOPC\SmartSOPC_Software_Template\led_flow。
实验预习要求
预习《NiosII SOPC 嵌入式系统基础教程》第 4 章 4.1 节的内容,熟悉 PIO 外设的访问
和控制。
实验步骤
(1) 启动 NiosII IDE 并新建一个空白 C\C++工程,然后命名为 led_flow。
(2) 参考提供的参考程序在 led_flow 工程文件夹中新建应用程序文件 led_flow.c。
(3) 在 System Library 设置页中,把程序和数据区都指定为 sdram。
(4) 编译整个工程,查找语法错误。
(5) 将实验箱主板上 JP6 中有关 LED 的跳线全部短接。
(6) 下载硬件配置文件(SmartSOPC_standard_1c6)到 FPGA。
(7) Debug 或全速运行整个程序,看输出是否正确。
实验参考程序
PIO 输出控制实验的例程见程序
清单
安全隐患排查清单下载最新工程量清单计量规则下载程序清单下载家私清单下载送货清单下载
4.1。
程序清单 4.1 流水灯实验
/********************************************************************
广州致远电子有限公司 Tel:(020)22644399 22644249 Fax:38601859 http://www.embedtools.com
2
* 文 件 名:led_flow.c
* 功 能:LED显示控制。
* 通过 PIO直接控制 8个 LED产生流水灯效果
* 说 明:
********************************************************************/
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
/******************************************************************
* 与硬件相关的宏定义,用户根据实际情况修改
******************************************************************/
// LED_PIO_BASE是用户添加并命名的外设基地址,在 SYSTEM中定义,用户需要根据不同的命名来修改
此处
#ifndef LED_PIO_BASE //这是 LED_PIO核的基地址
#define LED_PIO_BASE 0xffffffff //user's definition here
#endif
#if LED_PIO_BASE == 0xffffffff
#error "No definition of LED_PIO core.\n"
#endif
/* 流水灯花样,低电平点亮,注意调用时候用了取反操作 */
const alt_u32 LED_TBL[] = {
0x00, 0xFF, // 全部熄灭后,再全部点亮
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 依次逐个点亮
0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加
0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减
0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 两个靠拢后分开
0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 // 从两边叠加后递减
};
/********************************************************************
* 名 称:main()
* 功 能:控制 LED流水显示。
********************************************************************/
int main (void)
{
alt_u8 i;
alt_u32 j;
while (1)
{
for (i=0; i<42; i++)
{ /* 流水灯花样显示 */
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, ~LED_TBL[i]);
j = 0;
while (j<100000) //延时
j++;
}
}
return 0;
}
下面,我们按照以上的实验步骤进行演示操作。
首先,打开Nios II IDE软件,并将工作路径指定到SmartSOPC_standard_1c6的工程文
件。此文件夹在第二章的准备工作中,我们已经将其从光盘拷贝到了我们的硬盘中。
然后,点击浏览选择其所在路径,点击OK按钮,再点击右上角的workbench图标进入IDE
的工作界面。
接下来,我们新建一个C++工程,选择【File】>>【New】>>【C/C++Application】,
在弹出的新建工程向导中,我们为其选择目标硬件。在此使用我们为大家提供的标准硬件系
广州致远电子有限公司 Tel:(020)22644399 22644249 Fax:38601859 http://www.embedtools.com
3
统。点击浏览按钮,找到放置硬件系统的文件夹并双击其中的nios II_1c6.ptf文件。在左
侧的工程模板中选择我们为大家提供的本实验的模板Led_flow。然后单击finish。
C++工程创建完成先设置C++工程的属性。在左侧Led_flow_0文件夹上单击鼠标右键,选
择最后一项。在此对话框中,本实验只需保持默认的选项即可,然后点击OK返回。进行编译
C++工程的工作。右键点击左侧模板中的led_flow_0文件夹。选择Build Project对工程进行
编译。
在编译的这段时间里我们可以做一些其他的工作,我们将FPGA的配置文件下载到FPGA
中,点击在后台运行的按钮,再选择【Tools】>>【 Programmer】来打开编程器窗口。然后
在File栏下双击找到SmartSOPC_standard_1c6文件夹下的.sof文件。选中Program下的复选
框,确认进行编程操作。然后点击Srart开始下载。下载完成后,关闭编程窗口。返回到IDE
界面后,C++工程已经编译完成,现在已经可以运行程序了。右键单击led_flow_0文件夹,
选择Rus as->NiosII Hardward。软件经过一系列操作后,便可在实验箱上看到运行结果。