已有工程:Model(在此基础上进行)

FPGA型号:Cyclone IV E - EP4CE40F23C8

其结构:GPIO_PA、GPIO_PB、GPIO_PC、GPIO_PD:左边四排插座。点击Pin Planner查看管脚

左上角的按钮:复位。

复位键右边:USB Blaster

FPGA电源:12V 屏幕电源:5V

敲入代码:实现按下按钮时,对应的LED灯亮。

开机后点击Programmer 选择Hardware里的USB Blaster 然后烧录start

Nios部分:

点击Tools 里的Nios ll Software Build Tools for Eclipse

workspace选择Model里的software

helloagain:放.c .h 主要文件夹 写代码的地方 hello_world.c里写

定义放在define.h里面,然后在其他调用地方#include "define.h"即可

helloagain_bsp:system.h系统相关的文件夹

  • 按键key.c:
if(keyirq==0x1 && keyvalue==0x5)         //SW1  判断sw1是否按下,按下执行下面的过程{}else  if(keyirq==0x1 && keyvalue==0x6)       //SW2{}else  if(keyirq==0x2)          //Clockwise旋钮的顺时针和逆时针,不推荐按下旋钮{}else  if(keyirq==0x4)           //Anti-Clockwise{}
printf("keyirq = 0x%x, keyvalue = 0x%x\n", keyirq, keyvalue);//显示按键的值
  • 触控屏

    //触摸按键if(local_x >= 10 && local_x <= 105 && local_y >= 10 && local_y <= 70){//x坐标在(10,105)  y坐标在(10,70)时,触发}else if(local_x >= 10 && local_x <= 105 && local_y >= 70 && local_y <= 130){}else if(local_x >= 10 && local_x <= 105 && local_y >= 130 && local_y <= 190){}
    
  • lcd 显示动画用 看lcd.h

    清屏:

    void lcdRectClear(u16 xs, u16 ys, u16 xe, u16 ye, u16 color);//区域填白色

    划线:

    void lcdDrawVerLine(u16 x, u16 ys, u16 ye, u16 color);水平 竖直线
    void lcdDrawHorLine(u16 y, u16 xs, u16 xe, u16 color);
    void lcdDrawLine(u16 xs, u16 ys, u16 xe, u16 ye, u16 color);斜线

    字符串:

    void lcdDispStringSmall(u16 xs, u16 ys, u16 fore, u16 back, const charstr);
    void lcdDispStringBig(u16 xs, u16 ys, u16 fore, u16 back, const char
    str);

    输出整数:

    void lcdDispDecSmall(u16 xs, u16 ys, u16 fore, u16 back, int dec);
    void lcdDispDecBig(u16 xs, u16 ys, u16 fore, u16 back, int dec);

    lcdDispDecBig(100,100,BLACK,WHITE,2018302120011);//输出

    输出浮点数:

    void lcdDispFloatSmall(u16 xs, u16 ys, u16 fore, u16 back, float flo);
    void lcdDispFloatBig(u16 xs, u16 ys, u16 fore, u16 back, float flo,int weishu);

    画网格:

    void lcdDrawGrid(u16 xs, u16 ys, u8 row, u8 col, u8 width, u16 color);

    参数:x,y:恒纵坐标 xs,ys:起始坐标 xe,ye:结束坐标

    颜色:color:

    enum COLOR {BLACK = 0x0000,NAVY = 0x000F,DGREEN = 0x03E0,DCYAN = 0x03EF,MAROOON = 0x7800,PURPEL = 0x780F,OLIVE = 0x7BE0,LGRAY = 0xC618,DGRAY = 0x7BEF,BLUE = 0x001F,GREEN = 0x07E0,CYAN = 0x07FF,RED = 0xF800,MAGENTA = 0xF81F,YELLOW = 0xFFE0,WHITE = 0xFFFF,BACKGROUND = 0xFFFF,
    };
    

    分辨率:水平分辨率:HDP 800; 垂直分辨率:VDP 480

    在main()的while(1)里编程:

    int main() {printf("Hello lemon\n");if (deviceInit() < 0) {printf("device initial failed\n");return -1;}//project_init();lcdRectClear(0,0,HDP,VDP,WHITE);while (1){lcdDispDecBig(100,100,BLACK,WHITE,20201120);}return 0;
    }
    

    运行:点击Run 下面的Run Confiqurations ——Target Connection 遇到问题选上复选框

然后点Refresh Connections 更新后点击Run

效果:可以在触摸屏上显示“20201120”

Qsys部分:

  • 连接硬件和Nios
  • 搜索pio 点击PIO (Parallel I/O):

  • 设置选项:Bidir双向 InOut输入输出 Input输入 Output输出(Nios向FPGA其他硬件输出信号)

Output Port Reset Value:默认输出的值 选择Output 数据宽度选4 设置好后点击finish

  • 然后修改名字和接口名字:

  • 按照上面模块连线:

  • 为它们分配地址:

  • 分配好后保存,然后点击Generate

里面内容不用改 或者保持与下列内容一致:

生成结束即可关闭:

点击finish关闭

  • 添加文件:(回到quartus)

选择Files

这里可以添加文件。

这里已经默认添加了,点击

查看是否添加pio

上述内容说明已添加。

  • 实例化接口:

实例化后有mios2_inst.v (工程目录下)

  • 复制实例化,并用它替换工程代码下的默认的 nios2 nios2_inst

  • 新的pio的参数改变为自己定义的变量

  • 然后 删除

的最后一行,防止出错。然后编译,然后烧录。

  • Nios和Qsys互联

再次打开Nios,同步地址过程:右键helloagain_bsp:

此时,system.h里面已经添加了new_pio:

  • 现在可以在main()里编程:
int main() {printf("Hello lemon\n");if (deviceInit() < 0) {printf("device initial failed\n");return -1;}//project_init();lcdRectClear(0,0,HDP,VDP,WHITE);while (1){IOWR(NEWPIO_0_BASE,0,10)//(基地址,偏移,值),基地址从system.h里面找lcdDispDecBig(100,100,BLACK,WHITE,20201120);}return 0;
}

这里可能会出错:IOWR()找不到,相应解决:

  • 新建文件夹:

SOPC Information File name文件选择:


作为种子生成。然后填写名字:

然后把helloagain里的.c .h文件复制到新的文件“xxx”:

此时查找不到“system.h”,解决:右键xxx,选择Build All,如下:
把新建的工程编译。

  • 接下来就可以Run:注意改文件名。

Run后就可以看到效果:

IOWR(NEWPIO_0_BASE,0,10);//(基地址,偏移,值),基地址从system.h里面找
//值“10”对应的是1010,LED灯是低电平使能,所以是第二和第四个灯点亮。

Nios和Qsys互连相关推荐

  1. (原創) Altera Technology Roadshow 2011 Taipei (SOC) (Quartus II) (Nios II) (Qsys)

    Abstract 這是我第一次參加Altera一年一度的Technology Roadshow. Introduction 今年的Altera Technology Roadshow是在台北喜來登大飯 ...

  2. 基于Quartus Prime的NiosII基础开发流程

    基于Quartus Prime的NiosII基础开发流程 2018年11月23日 21:44:13 bt_ 阅读数 2246 更多 分类专栏: FPGA 版权声明:本文为博主原创文章,遵循 CC 4. ...

  3. SOPC第一课 建立QSYS系统

    开发板:小梅哥AC620 软件:quartus 13.1 介绍 软核处理器代表:nios II Xilinx 的 microBlaze核 nios II提供强大的HAL系统库支持 2004年推出nio ...

  4. 工程师的NIOS II学习笔记(转)

    来源:嵌入式在线 作者:山城棒棒儿军 发布时间:2009-09-22 12:29:31 Nios Development Board Reference Manual, Stratix II Edit ...

  5. nios ii小实验——第一个demo指导书

    1.新建工程:打开Quartus II 13.0,点击File->New Project Wizard,点击Next后可以看到如图2所示的对话框,选择工程路径给工程命名(注意:工程名必须和顶层模 ...

  6. [FPGA][DE0] Qsys 加入 FLASH 記憶體 方法及步驟

    如何在DE0中設定Qsys加入4MB Flash設定步驟: 步驟1. 先在Qsys中加入Generic Tri-State Controller.其設定如圖1及圖2所示. 圖1 基本設定 圖2 Mod ...

  7. Quartus 调试中的Nios 程序

    FPGA的程序通常包含硬件和软件两部分.正常情况下调试需要分别进行下载,过程繁琐. 为了将Nios II的软件程序包含到.sof文件中方便调试,可以在SOPC Builder中的RAM初始化为Nios ...

  8. NIOS软核处理器入门实验

    NIOS软核处理器入门实验 脚本方式的优势: •便于工程的复制和搬移, 命令脚本能够较好的解决文件路径的相对关系 •便于参数的集中修改,命令脚本的参数相对集中, 在配置文件的集中区域可以完成所有的设定 ...

  9. NIOS II 15:AD7606共享SDRAM

    1.首先登陆analog官网下载此文件 下载此文档如下 2.解压后一会这个文件复制到我们工程内 3.把之前SDRAM工程复制一份,在ip文件夹内复制第2步里边的AD7606文件夹. 4.打开qsys, ...

最新文章

  1. 自然语言处理深度学习篇-BiLSTM文本挖掘实践 命名实体识别
  2. 《Oracle SQL疑难解析》——1.6 批量地从一个表中复制数据到另一个表
  3. 【Socket网络编程】2.sockaddr 和 sockaddr_in
  4. Tools下的mdscongiguer 文件中 43行 oracle 配置 发现需要连接库 -lclntsh libclntsh.so 库是个什么东西呢?...
  5. RtlAdjustPrivilege 一行代码提升进程权限
  6. ctf图片隐写之修改图片高度
  7. arduino i2c 如何写16位寄存器_arduino入门
  8. 基于Vue+Vue-Router+Vuex+Element-ui+axios,高仿小米商城,实现的电商项目
  9. table加载动态数据(亲测)
  10. Cobra命令行框架及使用
  11. 【Python】读取 txt 文件
  12. [转]linux signal
  13. 数据库的点数据根据行政区shp来进行行政区处理,python定时器实现
  14. Exchange Server DAG群集状态部分在线
  15. 真好玩python教孩子学编程_Python真好玩:教孩子学编程
  16. 为什么html中图片显示不出来,网页图片显示不出来该怎么办?
  17. 推荐10个超级实用的电脑软件 (可以快速提高工作效率)
  18. Itextpdf添加页眉页脚页码
  19. 03 野火imxull开发板添加 正点原子lcd 支持
  20. 如何解决CC2640用IAR下载固件出现Fatal error: Failed to load the CPU core driver Session aborted的问题

热门文章

  1. docker设置开启机自启动
  2. deepin升级到20.2,开机显示deepin LOGO之后屏幕黑屏解决办法
  3. ddos流量攻击有多少G_攻击流量超过300G,遭遇DDoS时我们能做些什么?
  4. Java 中Date类getTime()的方法
  5. javaS的tring和androidS的tring区别是什么?
  6. 【奔腾的骏马---Html+CSS实现(附源代码)】
  7. 中文汉字数字转罗马数字方法
  8. 如何用海思HI3516DV300/3518EV200推流H.264
  9. Java反射机制实现与原理
  10. OSI七层模型 (详细讲解,看这一篇就够了)