C语言基于NIOSII的软件开发及流水灯设计

一、Quartus II 12.1 (32-Bit)进行硬件设计

1.所需要的系统元器件组成

2.系统电路图

二、Nios II 12.1 Software Build Tools for Eclipse进行软件学号及流水灯设计

1.程序代码

/*
 * "Hello World" example.
 *
 * This example prints ‘Hello from Nios II‘ to the STDOUT stream. It runs on
 * the Nios II ‘standard‘, ‘full_featured‘, ‘fast‘, and ‘low_cost‘ example
 * designs. It runs with or without the MicroC/OS-II RTOS and requires a STDOUT
 * device in your system‘s hardware.
 * The memory footprint of this hosted application is ~69 kbytes by default
 * using the standard reference design.
 *
 * For a reduced footprint version of this template, and an explanation of how
 * to reduce the memory footprint for a given application, see the
 * "small_hello_world" template.
 *
 */

#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "io.h"
#include "unistd.h"
#include "alt_types.h"

typedef unsigned int u16;
typedef unsigned char u8;

#define led_on IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0x00)
#define led_off IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0xff)
#define cs_off IOWR_ALTERA_AVALON_PIO_DATA(DTUBE_CS_RL_BASE,0xff)

u8 csdm[4]={0xf7,0xfb,0xfd,0xfe};
u8 xhdm[4]={0x1e,0x1e,0x14,0x14};

u8 i,j,k,v,h;

void delay(u16 i)
{
	while(i--);
}

void led1()
{
	IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0x00);
	delay(50000);
	for(v=0;v<2;v++)
	{
		k=0;
		for(i=0;i<9;i++)
		{
			j=0x01<<i;
			k=k|j;//保留上一状态
			IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,k);
			delay(1000000); //大约延时1s
		}
	}
}

void led2()
{
	IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0x00);
	delay(50000);
	for(v=0;v<2;v++)
	{
		for(i=0;i<9;i++)
		{
			j=(0x80>>i);
			IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,j);
			delay(1000000);
		}
	}
}

void led3()
{
	IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0xff);
	delay(50000);
	for(v=0;v<2;v++)
	{
		for(i=0;i<9;i++)
		{
			j=0xff<<i;
			IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,j);
			delay(1000000);
		}
		IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0xff);
	}
}

void led4()
{
	IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0xff);
	delay(50000);
	for(v=0;v<2;v++)
	{
		for(i=0;i<9;i++)
		{
			j=0xff>>i;
			IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,j);
			delay(1000000);
		}
		IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0xff);
	}
}

void led50()
{
	IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0xff);
	delay(50000);
	for(v=0;v<2;v++)
	{
		k=0x01;
		j=0xff;
		for(i=0;i<8;i++)
		{
			if(i%2==0)
			{
				h=k^j;
				IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,h);
				k=0x01<<i+2;
				k=k|h;
				delay(1000000);
			}
		}
		j=0x20;
		k=0xff;
		for(i=0;i<8;i++)
		{
			if(i%2!=0)
			{
				h=j^k;
				IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,h);
				k=0x20<<i+2;
				k=h|k;
				delay(1000000);
			}
		}
		IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0xff);
	}
}

void led5()
{
	IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0x00);
	delay(50000);
	for(v=0;v<2;v++)
	{

		h=0x01;
		for(i=0;i<9;i++)
		{
			if(i%2==0)
			{
				k=~h;//保留上一状态
				IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,k);
				j=0x01<<i+2;
				h=h|j;
				delay(1000000); //大约延时1s
			}
		}
		h=0x02;
		for(i=0;i<9;i++)
				{
					if(i%2==0)
					{
						k=~h;//保留上一状态
						IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,k);
						j=0x02<<i+2;
						h=h|j;
						delay(1000000); //大约延时1s
					}
				}
	}
}

void led6()
{
	IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0x00);
	delay(50000);
	for(v=0;v<2;v++)
	{

		j=0x40;
		for(i=0;i<9;i++)
		{
			if(i%2==0)
			{
				k=~j;
				IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,k);
				j=0x40>>i+2;
				delay(1000000); //大约延时1s
			}
		}
		j=0x80;
		for(i=0;i<9;i++)
				{
					if(i%2==0)
					{
						k=~j;
						IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,k);
						j=0x80>>i+2;
						delay(1000000); //大约延时1s
					}
				}
	}
}

void led7()
{
	IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0x00);
	delay(50000);
	for(v=0;v<2;v++)
	{
		for(i=0;i<8;i++)
		{
			if(i%2!=0)
			{
				j=0x80>>i;
				IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,j);
				delay(1000000);
				k=j<<1;
				IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,k);
				delay(1000000);
			}
		}
	}
}

void led8()
{
	IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0x00);
	delay(50000);
	for(v=0;v<2;v++)
	{
		for(i=0;i<8;i++)
		{
			if(i%2!=0)
			{
				j=0x01<<i;
				IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,j);
				delay(1000000);
				k=j>>1;
				IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,k);
				delay(1000000);
			}
		}
	}
}

void xhxs()
{
	for(i=0;i<4;i++)
	{

		IOWR_ALTERA_AVALON_PIO_DATA(DTUBE_CS_RL_BASE,csdm[i]);
	    IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,xhdm[i]);
	    delay(100);
	}
	return 0;
}

int main()
{
	led_off;
	  while(1)
	  {
		if(IORD_ALTERA_AVALON_PIO_DATA(SWITCH0_BASE)==0)
		{
			xhxs();
		}
		if(IORD_ALTERA_AVALON_PIO_DATA(SWITCH1_BASE)==0)
		{
			cs_off;
			led1();
			led2();
			led3();
			led4();
			led5();
			led6();
			led7();
			led8();
		}
	  }

	  return 0;
}

2.实验现象

原文地址:https://www.cnblogs.com/wlei5206/p/11991940.html

时间: 2024-08-02 05:55:25

C语言基于NIOSII的软件开发及流水灯设计的相关文章

基于模型的软件开发——互动出版网

这篇是计算机类的优质预售推荐>>>><基于模型的软件开发> 译者序 这是一本关于一种特定的软件设计方法实践的书.MBD(Model-Based Software Development,基于模型的软件开发)方法基本上是一种OO(Object-Oriented,面向对象)方法.其基本观点是:通过静态结构和动态结构的开发,生成面向对象的分析模型,然后通过工具的转换,进而转换为应用程序框架. 本书第一部分着眼于面向对象方法诞生的历史背景,使我们能够了解传统方法存在的问题,也就

基于git的软件开发中并行工程管理以及版本控制系统概要

并行工程师什么,这里就不再解释(不懂请百度),实际上,在软件开发过程中,涉及到多人合作的以项目小组形式完成开发的软件(这里指广义上)或多或少都使用了并行工程的概念,在正式的项目开发中,项目小组成员总是分工合作每人完成一部分,然后再合并起来,而且,在实际应用中,尽管使用的是瀑布模型完成开发,但总是所有项目小组成员同时开始完成自己的部分,这,其实已经是并行工程了,我们可以自豪的宣布:我们在开发过程中使用了并行 工程这种高大上的玩意来提高开发速度,所以,老板你得给我们涨工资! 很简单吧,看起来好简单的

12 信息2班 《基于Android的软件开发》课程成绩

作业 作业01:为 TextView 添加监听器和后退按钮. (参考教材第02章)作业02:完善GeoQuiz应用,堵住漏洞. (参考教材第05章)作业03:日期格式化. (参考教材第08章)作业04:更多对话框. (参考教材第12章)作业05:在 HelloMoon 应用中播放视频. (参考教材第13章)作业06:用于列表的空视图. (参考教材第16章)作业07:使用外部存储. (参考教材第17章) 作业成绩 作业 1 作业 2 作业 3 作业 4 作业 5 作业 6 作业 7 备注 李秋萍

基于OpenGL三维软件开发

实验原理: OpenGL在MFC下编程原理---- Windows操作系统对OpenGL的支持 在Windows下用GDI作图必须通过设备上下文(DeviceContext简写DC)调用相应的函数:用OpenGL作图也是类似,OpenGL函数是通过"渲染上下文"(RenderingContext简写RC)完成三维图形的绘制.Windows下的窗口和设备上下文支持"位图格式"(PIXELFORMAT)属性, 和RC有着位图结构上的一致.只要在创建RC时与一个DC建立联

在云计算推动下的软件开发

什么是云计算 对云计算的定义有多种说法.对于到底什么是云计算,至少可以找到100种解释.现阶段广为接受的是美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问, 进入可配置的计算资源共享池(资源包括互联网,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互.本文将着重讨论云计算与传统软件开发的联系与相互关系. 云计算(cloud computing)是一种基于Internet

【Qt编程】基于Qt的词典开发系列&lt;二&gt;--本地词典的设计

我设计的词典不仅可以实现在线查单词,而且一个重大特色就是具有丰富的本地词典库:我默认加入了八个类型的词典,如下所示: 由于是本人是通信专业,因此加入了华为通信词典.电子工程词典,又由于我喜爱编程,也加入了c语言基本函数词典.下面介绍如何设计本地词典: 词典类型的选择 当然是txt格式的最好了,因为我们可以用程序直接进行读取.可是网上词典一般都是用mdx格式.ld2格式的,我无法用Qt来直接读取.最终,经过不断摸索,网上查找,发现我们可以将mdx格式的词典通过软件转化为txt格式的! mdx词典的

这群超酷的开发者,是如何轻松搞定软件开发?

前些日子我看到两则有关线上Office的新闻,一是空客的十三万员工将全部迁移到谷歌的在线文档套件G Suite:二是腾讯发布在线文档产品,可以与微软Excel和Word互转.在网页里就能写文档.做电子表格,对于20年前熟练地玩耍着Office 97的我来说这是极难以想像的.时至今日,不单是Office,连同图像处理.3D模型设计都可以在一张网页内轻松完成. 这些创新的背后是无数位软件开发人员智慧的结晶,如果说Software is eating the world, 那么developers a

百家基于ACIS的软件ZWCAD.ZW3D.v2016.Beta3.Win32_64 2DVD

世界上已有数百家基于ACIS的软件ZWCAD.ZW3D.v2016.Beta3.Win32_64 2DVD     增加了三维功能和VBA支持的增强版本.中望CAD专业版除了具备中望CAD 2008版(标准版)的全部功能外,增加了支持三维实体的显示.编辑和建模及渲染,同时提供VBA的开发接口支持,客户可以方便的使用VB开发工具进行二次开发.中望CAD专业版是国内第一套以强大的二维设计为基础.同时融合基本三维设计功能的CAD解决方案,主要面对建筑.机械.家具和制造领域内以二维绘图为主,同时也用到部

敏捷软件开发与传统软件开发的对比

敏捷软件开发与传统软件开发的对比 最早了解敏捷开发是通过大二的一次博雅课堂,一位在百度工作的北航学长跟我们分享了他近年来从事敏捷开发的经历.印象最深的一句话是一个延迟3个月交付100%功能的软件和一个按时交付75%核心功能的软件,敏捷软件开发者更愿意选择后者.本学期的软件工程基础课又向我们讲授了传统软件开发,经过课上和课后的学习,对于敏捷软件开发和传统软件开发有了浅显的认识和理解.由于课上学习的重点是传统软件开发,所以课下对敏捷软件开发进行了更多的涉猎,本文以敏捷软件开发为主体,来分析其与传统软