返回

FPGA学习-12-PIO

发布时间:2023-10-28 20:56:19 170


系统:win10
软件编辑和程序下载平台:Quartus II
仿真平台:modelsim
FPGA:EP4CE6

PIO (parallel input/output)

通用IO端口,控制LED灯,获取按键高低电平变化,控制显示设备等

FPGA学习-12-PIO_自启动


当使用IO时,就是在配置IO相关的寄存器

IO io寄存器描述

FPGA学习-12-PIO_自启动_02

实验任务:

在Qsys系统中加入PIO IP核,完成4个按键控制LED亮灭实验,并实现上电自启动的功能

实验硬件

4个LED 四个key
一个epcs(flash)

头文件

altera_avalon_pio_regs.h
该文件定义了核心寄存器,以及宏定义硬件驱动,总之就是最底层文件

打开之前配置好的最基本的qsys,添加PIO IP核 ;

配置按键IO

FPGA学习-12-PIO_#include_03


FPGA学习-12-PIO_寄存器_04

配置LED_IO

FPGA学习-12-PIO_#include_05

配置上电自启动的epcs

这是一个flash,能够掉电保存程序,不需要进行配置

FPGA学习-12-PIO_寄存器_06


FPGA学习-12-PIO_#include_07

生成qsys并拷贝程序

system_qsys u0 (
.clk_clk (), // clk.clk
.reset_reset_n (), // reset.reset_n
.key_export (), // key.export
.led_export (), // led.export
.epcs_dclk (), // epcs.dclk
.epcs_sce (), // .sce
.epcs_sdo (), // .sdo
.epcs_data0 () // .data0
);

配置引脚

实验软件开发:

1 工作路径保存到\key_led\qsys\software

2 新建application and BSP
3 工程名:key_led
4 工程保存路径:\1_key_led\qsys\software\key_led (这里注意:路径不会自己生成,需要手动选择,并且将后面的key_led要自己手写,不然出错)
5 bsp文件右击,BSP editor 选择common中reduced和small_c, 以及setting中 去掉plus和clean,最后点击Generate

6 重新编译一下BSP底层驱动 Nios II->generate BSP

#include 
#include
#include "altera_avalon_pio_regs.h"


//altera_avalon_pio_regs.h
int main()
{
int led=0, key=0;
printf("hello world!\n");

while(1){

//读KEY
key = IORD_ALTERA_AVALON_PIO_DATA(PIO_KEY_BASE);


led = ~key; //安位取反

//写led
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);
}
return 0;
}

下载运行成功

接下来解决固化问题

FPGA学习-12-PIO_寄存器_08


FPGA学习-12-PIO_自启动_09


添加sof文件(底层硬件),

添加elf文件(应用层软件)

然后下载到FPGA中

FPGA学习-12-PIO_#include_10

成功


特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
1_win10安装python-tensorflow问题解决 2023-10-28 17:52:10