Nios和Qsys互连
已有工程: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 charstr);输出整数:
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互连相关推荐
- (原創) Altera Technology Roadshow 2011 Taipei (SOC) (Quartus II) (Nios II) (Qsys)
Abstract 這是我第一次參加Altera一年一度的Technology Roadshow. Introduction 今年的Altera Technology Roadshow是在台北喜來登大飯 ...
- 基于Quartus Prime的NiosII基础开发流程
基于Quartus Prime的NiosII基础开发流程 2018年11月23日 21:44:13 bt_ 阅读数 2246 更多 分类专栏: FPGA 版权声明:本文为博主原创文章,遵循 CC 4. ...
- SOPC第一课 建立QSYS系统
开发板:小梅哥AC620 软件:quartus 13.1 介绍 软核处理器代表:nios II Xilinx 的 microBlaze核 nios II提供强大的HAL系统库支持 2004年推出nio ...
- 工程师的NIOS II学习笔记(转)
来源:嵌入式在线 作者:山城棒棒儿军 发布时间:2009-09-22 12:29:31 Nios Development Board Reference Manual, Stratix II Edit ...
- nios ii小实验——第一个demo指导书
1.新建工程:打开Quartus II 13.0,点击File->New Project Wizard,点击Next后可以看到如图2所示的对话框,选择工程路径给工程命名(注意:工程名必须和顶层模 ...
- [FPGA][DE0] Qsys 加入 FLASH 記憶體 方法及步驟
如何在DE0中設定Qsys加入4MB Flash設定步驟: 步驟1. 先在Qsys中加入Generic Tri-State Controller.其設定如圖1及圖2所示. 圖1 基本設定 圖2 Mod ...
- Quartus 调试中的Nios 程序
FPGA的程序通常包含硬件和软件两部分.正常情况下调试需要分别进行下载,过程繁琐. 为了将Nios II的软件程序包含到.sof文件中方便调试,可以在SOPC Builder中的RAM初始化为Nios ...
- NIOS软核处理器入门实验
NIOS软核处理器入门实验 脚本方式的优势: •便于工程的复制和搬移, 命令脚本能够较好的解决文件路径的相对关系 •便于参数的集中修改,命令脚本的参数相对集中, 在配置文件的集中区域可以完成所有的设定 ...
- NIOS II 15:AD7606共享SDRAM
1.首先登陆analog官网下载此文件 下载此文档如下 2.解压后一会这个文件复制到我们工程内 3.把之前SDRAM工程复制一份,在ip文件夹内复制第2步里边的AD7606文件夹. 4.打开qsys, ...
最新文章
- 管道、重定向、vim文本编辑器
- 模拟电路技术之基础知识(六)
- python爬虫urllib文档_11.【文本】Urllib(下) - 零基础学习Python爬虫系列
- 开启HDR视觉盛宴:究竟什么视频算得上HDR?
- Solr管理页面 上
- ubuntu设置静态ip
- 基于React的表单开发的分析(上)
- 截取地址栏URL参数
- 【开发者成长】每个人都在编写草率代码
- 正则表达式的介绍与底层分析
- qq群管+引流+娱乐机器人
- xp系统能不能安装mysql_win xp32位系统安装mysql详细步骤
- 【算法】07 AM-MCMC算法C++实现
- Linux下安装hbase
- ffmpeg命令操作 合并视频 取图片帧数 获取音频
- navicat连接mysql2003错误_navicat连接失败出现2003怎么办
- 怎么把PDF转换成图片?这几种转换方法都可以做到
- 【华为机试】【校招】【Java】机器人走迷宫(DFS)
- Rest Stops
- 拉屎的自由,你有吗?
热门文章
- 数据库内外联接查询语句
- 云服务器上通过wget安装JDK
- python文本分类算法_基于Naive Bayes算法的文本分类
- 项目管理 之七 SSH、GPG 密钥生成步骤、部署 Github、Gitee 及使用效果
- file.exists(),file.isFile()和file.isDirectory()的区别
- A Strong Baseline and Batch Normalization Neck for Deep Person Re-identification(论文笔记)(2019CVPR)
- 全志T3开发板——嵌入式入门学习测试教程(4)
- 桌面悬浮窗口(可拖动)
- neogeo模拟器 linux,neogeo模拟器
- Win10 无法加载操作系统,因为无法验证文件或某个xx数字签名 蓝屏错误代码0xc0000428