MicroBlaze小试02-GPIO点灯(详细,适合初学者)

创作时间:2021-07-08

开发环境:vivado2019.1
电脑环境:Windows 10
开发板: KC705(xilinx xc7k325tfgg900i)


做事情之前,先确定一下我们的目标。
目标是:
使用microblaze控制gpio,点击按键,点亮LED灯。

目录:
step1:创建block design ,配置,约束
step2:生成bit,导出硬件,加载SDK
step3:软件唱戏
step4:软核代码搞起来
step5:生成下载文件
step6:测试

正文:
step1:创建block design ,配置,约束
这些就不说了,比较简单,总体框图详见下图:

GPIO的配置如下:
按键
在这里插入图片描述
指示灯
在这里插入图片描述

先create HDL wrapper,然后在顶层文件中,看看管脚说明,再进行约束,这样很简单快捷。
在这里插入图片描述
顶层文件(部分内容):

module design_1_wrapper
   (led_4bits_tri_o,
    reset,
    sw2_tri_i,
    sys_diff_clock_clk_n,
    sys_diff_clock_clk_p);
  output [3:0]led_4bits_tri_o;
  input reset;
  input [0:0]sw2_tri_i;
  input sys_diff_clock_clk_n;
  input sys_diff_clock_clk_p;
  //等等。。。。

约束文件为:

#vivado管脚约束XDC文件
#**********************************
#clk
set_property PACKAGE_PIN AD12 [get_ports {sys_diff_clock_clk_p}]
set_property IOSTANDARD DIFF_SSTL15 [get_ports {sys_diff_clock_clk_p}]
#reset(SW3常低,高电平复位)    
set_property PACKAGE_PIN AG5 [get_ports reset] 
set_property IOSTANDARD LVCMOS15 [get_ports reset]
#sw2_tri_i
set_property PACKAGE_PIN AA12 [get_ports sw2_tri_i] 
set_property IOSTANDARD LVCMOS15 [get_ports sw2_tri_i]
#led_4bits 
set_property PACKAGE_PIN AB8 [get_ports {led_4bits_tri_o[0]}]
set_property IOSTANDARD LVCMOS15 [get_ports {led_4bits_tri_o[0]}]
set_property PACKAGE_PIN AA8 [get_ports {led_4bits_tri_o[1]}]
set_property IOSTANDARD LVCMOS15 [get_ports {led_4bits_tri_o[1]}]
set_property PACKAGE_PIN AC9 [get_ports {led_4bits_tri_o[2]}]
set_property IOSTANDARD LVCMOS15 [get_ports {led_4bits_tri_o[2]}]
set_property PACKAGE_PIN AB9 [get_ports {led_4bits_tri_o[3]}]
set_property IOSTANDARD LVCMOS15 [get_ports {led_4bits_tri_o[3]}]
#other其他约束
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]

step2:生成bit,导出硬件,加载SDK
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

step3:软件唱戏

好了,硬件台子搭建完了,开始软件唱戏了。
常规操作走起来,先建立工程。
在这里插入图片描述
在这里插入图片描述
step4:软核代码搞起来

在这里插入图片描述
建立完成后,在这里写代码。
在这里插入图片描述
编写完代码,如下:
在这里插入图片描述

/*
 * core_gpio.c
 *
 *  Created on: 2021年xx月xx日
 *      Author: smart wind
 */

#include  "xparameters.h"
#include  "xbasic_types.h"
#include  "xgpio.h"

XGpio  input;//Switch2_1bits
XGpio  output;//led_4bits

int main(void)
{
 Xuint32 data;
 XGpio_Initialize(&input, XPAR_AXI_GPIO_1_DEVICE_ID);//sw2
 XGpio_Initialize(&output,XPAR_AXI_GPIO_0_DEVICE_ID);//led

 while(1)
 {
 data=XGpio_DiscreteRead(&input,1);
  // data=data+1;
 if(data==1)
	 XGpio_DiscreteWrite(&output,1,15);//15=4'b1111
 else
	 XGpio_DiscreteWrite(&output,1,0);//0=4'b0000
 }

 return 0;
}

step5:生成下载文件
下载elf—>run as
在这里插入图片描述

step6:测试
板子测试结果如下:

按下按键,4个指示灯全亮,松开按键,4个指示灯全灭。

在这里插入图片描述
在这里插入图片描述

结果满足预期。


THE END~


一点小笔记:

1)什么是BSP?

BSP(Board Support Package),板级支持包,也称为硬件抽象层HAL或者中间层。它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。BSP是相对于操作系统而言的,不同的操作系统有不同定义形式的BSP,要求BSP所实现的功能也有所不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daymat

红外图像核心算法,高质量解析

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值