zoukankan      html  css  js  c++  java
  • NIOS ii 流水灯

        为了做项目的前期验证工作,实验室购买了某开发板,下面是基于该板子的实现过程。作为笔记记录,供入门者参考。

    1:创建一个Quartus II的工程

        

        next选择器件,然后finish。我的器件是cyclone IV 系列 EP4CE15F18。

    2:打开SOPC Builder,配置NIOS ii硬件。

    Quartus II 11同时包含了SOPC Builder和Qsys,SOPC Builder是Qsys的低版本,已经被高版本的Quartus II 移除。

    添加NIOS II 的CPU,System ID,On-Chip RAM 和 On-Chip ROM (RAM和ROM大小默认即可),位宽为4的输出类型的PIO和timer(timer period 设置为1ms)。然后重新分配地址和中断号,设置CPU的复位和异常向量位置。如下图:

    然后保存,编译系统。

    3:编辑原理图文件。如下图所示:

    4:管脚锁定和程序下载。

    使用Tcl脚本文件进行管脚分配:

    #------------------GLOBAL--------------------#
    set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED"
    set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF

    #复位引脚
    set_location_assignment PIN_M1 -to RESET

    #时钟引脚
    set_location_assignment PIN_R9 -to CLOCK

    #LED对应的引脚
    set_location_assignment PIN_J1 -to LED[0]
    set_location_assignment PIN_J2 -to LED[1]
    set_location_assignment PIN_K1 -to LED[2]
    set_location_assignment PIN_K2 -to LED[3]

    最后对整个NIOS工程进行编译。然后下载sof文件到FPGA中。

    5:创建NIOS II IDE工程(Quartus ii 11版本以上默认安装 NIOS EDS)

    finish之后NIOS II EDS生成了led_bsp(IDE下生成led_syslib工程)。

    点击NIOS II菜单下边的Edit BSP,对BSP进行编辑,主要是设置代码段的分配选项。

    并且将System Clock Timer设置为:timer_ms

    添加流水灯的C程序,led.c如下:

    /*-----------------------------------------------------------------------
     * Include 
     *---------------------------------------------------------------------*/
    #include <unistd.h>
    
    #define _LED
    
    /*-----------------------------------------------------------------------------
     *  Peripheral registers structures  
     *-----------------------------------------------------------------------------*/
    typedef struct
    {
        unsigned long int DATA;
        unsigned long int DIRECTION;
        unsigned long int INTERRUPT_MASK;
        unsigned long int EDGE_CAPTURE;
        
    }PIO_STR;
    
    /*-----------------------------------------------------------------------------
     *  Peripheral declaration
     *-----------------------------------------------------------------------------*/
    #ifdef _LED
    #define LED          ((PIO_STR *) LED_BASE)      
    #endif /*_LED*/
    
    /* 
     * ===  FUNCTION  ========================================================
     *         Name:  main
     *  Description:  
     * =======================================================================
     */
    int main(void)
    {
        int i; 
        
        while(1){
            for(i=0;i<4;i++){
                LED->DATA = 1 << i;
                usleep(100000);
            }
        }
    
        return 0;
    }

    6:编译下载

    在Project菜单栏,点击Build All,编译程序……

    然后在led工程右键,run as Nios II hardware

    可以看到流水灯在板子上跑起来了

  • 相关阅读:
    wordpress 常用 数据库脚本
    Centos6.3安装locate
    WordPress路径相关函数总结
    关于电子杂志翻页的资源
    CentOS下MongoDB的升级
    WordPress数据库研究
    HOWTO:如何通过ServiceAddService修改已经存在的服务启动参数
    FAQ:Component的属性是否可以运行时修改?
    INFO:AdminStudio Debug
    HOWTO:如何修改InstallShield的运行环境
  • 原文地址:https://www.cnblogs.com/fangying7/p/3361960.html
Copyright © 2011-2022 走看看