查看: 5043|回复: 7

【软件篇】FPGA--从0学习NIOS(NIOS II 流水灯 )

[复制链接]
  • TA的每日心情

    2013-8-6 23:08
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-1-26 21:03:40 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 ywhfdl 于 2013-1-26 21:37 编辑

    笔者前言:
    学FPGA,最重要的还是数字逻辑,但是NIOS 作为一个系统,实现了FPGA 的C 语言变成化,哈哈!!也只得学习一下!不过大家还是主要吧精力放在逻辑设计上吧,
    这里NIOS 入门献给正在学FPGA 的童鞋和攻城师们,大家一起分享!

    第一个NIOS工程,流水灯!我使用的9.0本版的。

    1、建立一个流水灯工程,如下图:

    Next选择器件,再Finish。我的开发板上是Cyclone II系列EP2C8,大家按自己的实际选择器件。
    2、打开SOPC Builder,配置NIOS硬件,如下图:

    CPU配置经济型的就OK了
    添加on-chip menory  ROM 改名为progam,RAM改名为data
    再添加PIO,4位OUTPUT改名为led,但这样Quartus II RUN时会产生错误,如下图:

    在错误上面点击右键help,上面提示:
    Project too complex: hierarchy path is too long
    CAUSE:The depth of the design hierarchy is too deep for the Quartus II software to process. This could also be due to an undetected recursion.
    ACTION:Reduce the depth of the hierarchies. If necessary, modify the design so that it does not contain any recursive logic.
    recursive logic迭代逻辑太多,为什么呢?其实很简单,因为PIO改名为led和工程名led一样,Quartus II无法辨别。所以以后大家注意这一点,工程名一定不要和SOPC PIO的名字相同。
    这里我们就改名为led_pio,再进入CPU中,选择Reset Vector和Exception Vection分别为progam和data,如下图:

    然后是地址分配和终端分配,先点击Auto-Assign Base Address,再点击Auto-Assign IRQs,如下图:

    最后Generate,等一会儿……

    3、在Quartus II中建立原理图文件BDF,双击原理图的空白处,选择project里面我们建立SOPC例化图标:

    点击OK,放置SOPC在BDF中,选中SOPC点击右键选择,会自动生成引脚,在更改你想要命名的引脚名即可。
    这里我们命名为clk,reset和led[3..0] 。
    4、锁定引脚,和FPGA的IO对应,建立TCL脚本文件,按自己FPGA开发板的实际情况,我的开发板TCl为
    set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED"
    #未用的IO设为输入三态
    set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF
    set_location_assignment PIN_23 -to clk                                
    set_location_assignment PIN_56 -to reset   
    set_location_assignment PIN_6 -to led\[0\]
    set_location_assignment PIN_5 -to led\[1\]
    set_location_assignment PIN_3 -to led\[2\]
    set_location_assignment PIN_4 -to led\[3\]
    保存TCl文件后,选择Tools/Tcl Scriples

    点击RUN,最后Start compilation

    5、下载到FPGA中,点击progammer

    到这里我们的硬件设计就OK了
    6、打开NIOS II IDE软件,新建一个NIOS II C/C++ Application

    Select Project Template: Blank Project
    Name : led
    SOPC Builder System PTF File选择我们建立的SOPC文件
    NEXT,Finish……
    7、在led上点击右键,NEW一个C语言文件


    Source File输入C语言文件名,一定要加".c" ,Finish……
    在NIOS 文件led上点击右键,选择System Library Properties

    Program memory选择progam后OK!
    8、下面我们在led.c里面写软件
    #include "system.h"
    #include "altera_avalon_pio_regs.h"
    void delay(void)
    {
        unsigned int i;
        i=100000;
        while(i>0)
        {
            i--;
        }
    }
    int alt_main(void)
    {
        unsigned char led_data;
        unsigned int  led_code;
       
        while(1)
        {
            for(led_data=0;led_data<4;led_data++)
            {
                led_code=0x01<<led_data;
                IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,~led_code);
                delay();
            }
        }
        return 0;
    }
    在NIOS工程led上面点击右键选择Build Project,稍等片刻……
    同样在NIOS工程led点击右键Run AS--NIOS II Hardware,流水灯跑起来了……
    回复

    使用道具 举报

  • TA的每日心情

    2013-8-6 23:08
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-1-26 21:09:51 | 显示全部楼层
    自己坐沙发!!哈哈
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-12-20 15:08
  • 签到天数: 510 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-1-27 22:01:10 | 显示全部楼层
    话说我是一个玩FPGA只会玩点nios的怎么办?完全大材小用了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2013-8-6 23:08
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-1-27 23:55:22 | 显示全部楼层
    实际应用中,大多都是逻辑语法的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2013-2-1 13:58
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-1-28 17:25:31 | 显示全部楼层
    楼主FPGA高手,学习
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-9-24 17:07
  • 签到天数: 159 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-2-5 20:53:42 | 显示全部楼层
    NIOS主要是不开源,这样SOPC就没有多大价值了,还不如搞主频更高的soc.有很多的开源软核可以使用,这个也是我比较钟爱的方向。

    soft-cpu-cores.pdf

    243.04 KB, 下载次数: 1

    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2013-8-6 23:08
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-3-4 22:45:00 | 显示全部楼层
    各有优缺点的,其实学FPGA ,大都是写逻辑代码,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-6-4 13:58
  • 签到天数: 188 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-3-6 10:31:51 | 显示全部楼层
    lz  给力...............
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-22 09:11 , Processed in 0.174622 second(s), 29 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.