[X]关闭
0

(基础篇)S05-CH03-User-IP

摘要: 上一章我们介绍了MicroBlaze控制GPIO完成LED流水操作,GPIO是官方自带的IP,那么如果用户想将自己写的HDL文件用于MicroBlaze中,那该如何操作呢?本章就将为大家介绍在VIVADO中如何封装用户IP的方法。

软件版本:VIVADO2017.4

操作系统:WIN10

硬件平台: ARTIX-7 系列开发板

米联客(MSXBO)论坛www.osrc.cn答疑解惑专栏开通,欢迎大家给我提供!!!

3.1概述

      上一章我们介绍了MicroBlaze控制GPIO完成LED流水操作,GPIO是官方自带的IP,那么如果用户想将自己写的HDL文件用于MicroBlaze中,那该如何操作呢?本章就将为大家介绍在VIVADO中如何封装用户IP的方法。

3.2创建IP 

Step1:打开VIVADO软件,新建一个工程。

Step2:单击Add Source,选择Add or Creat design Sources,然后单击Next。


Step3:单击Create File,输入文件名,单击OK。


Step4:单击Finish,完成Verilog文件的创建。


Step5:将以下代码复制入文本编辑区内。

module LED_ML(

input CLK_i,//100MHZ

input RSTn_i,

output reg [3:0]LED_o

);

reg [31:0]C0;

always @(posedge CLK_i)

if(!RSTn_i)

begin

LED_o <= 4'b0001;

C0 <= 32'h0;

end

else

begin

if(C0 == 32'd49_999_999)//1s

begin

C0 <= 32'h0;

if(LED_o == 4'b1000)

LED_o <= 4'b0001;

else LED_o <= LED_o << 1;

end

else begin C0 <= C0 + 1'b1; LED_o <= LED_o; end

end

endmodule

Step6:单击Tools—>Create and package IP,单击Next。


Step7:选择IP的保存路径,单击Next。


Step8:单击Finish。

Step9:在新弹出来的编辑IP工程中,直接选择Review and Package,然后单击Package IP。


3.3硬件工程搭建 

IP封装完成之后,接下来教大家如何调用我们刚才封装好的这个IP。

Step1:再创建一个新的vivado工程。

Step2:将第一章生成的tcl文件复制到当前文件目录中来,并在tcl控制台中输入如下指令(注意tcl文件路径根据自身情况进行调整):

Step3:工程创建完成之后,单击Settings。

Step4: 选择IP设置区中的repository

Step5:单击+号图标,将上一节封装的IP的路径存放进去,单击OK完成修改。

Step6:单击添加IP图标,然后输入刚才创建的IP的名字关键字LED,双击将其添加到工程当中来。

Step7:再添加一个GPIO,双击IP图标,修改配置如下。

Step8:点击Run connection Automation,在弹出来的窗口中注意不勾选GPIO

 


Step12:在弹出来的窗口中,如下图所示,然后单击OK。

Step13:选中top.bd,右单击然后选择Create HDL Wrapper,在弹出来的窗口中直接点击OK。

Step18:单击File-Launch SDK。

3.4软件设计

Step1:单击File-New-Application Project开始创建一个SDK工程。

Step2:在新弹出来的窗口中,输入工程名字GPIO_Test (注意不能有非法字符)。

Step3:单击Next,然后在左侧选择Empty Application(空白工程),最后选择Finish。

Step4:展开GPIO_Test,然后选中src,右单击选择New-Source file。

Step5:命名为Main.c.

Step6:双击main.c,将以下程序拷贝进去:

/***************************** Include Files *********************************/


#include "xparameters.h"

#include "xgpio.h"

#include "sleep.h"


/************************** Constant Definitions *****************************/


/*

 * The following constants map to the XPAR parameters created in the

 * xparameters.h file. They are defined here such that a user can easily

 * change all the needed parameters in one place.

 */

#define GPIO_EXAMPLE_DEVICE_ID  XPAR_GPIO_0_DEVICE_ID



/*

 * The following constant is used to determine which channel of the GPIO is

 * used for the LED if there are 2 channels supported.

 */

#define LED_CHANNEL 1



/*

 * The following are declared globally so they are zeroed and so they are

 * easily accessible from a debugger

 */


XGpio Gpio; /* The Instance of the GPIO Driver */


/*****************************************************************************/

/**

*

* The purpose of this function is to illustrate how to use the GPIO

* driver to turn on and off an LED.

*

* @param None

*

* @return XST_FAILURE to indicate that the GPIO Initialization had

* failed.

*

* @note This function will not return if the test is running.

*

******************************************************************************/

int main(void)

{

int Status;

/* Initialize the GPIO driver */

Status = XGpio_Initialize(&Gpio, GPIO_EXAMPLE_DEVICE_ID);

if (Status != XST_SUCCESS) {

return XST_FAILURE;

}


/* Set the direction for all signals as inputs except the LED output */

XGpio_SetDataDirection(&Gpio, LED_CHANNEL, 0);


/* Loop forever blinking the LED */


XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, 0);

usleep(50000);

XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, 1);


return XST_SUCCESS;

}


Step7:选中SDK工程文件,右单击选择Debug As-Debug configuration。

Step8:在弹出来的新窗口中,双击下图圈出部分,然后勾选箭头所示参数

Step9:单击Apply,然后单击Debug(进行这一步之前,先给开发板上电)。


3.5程序分析 

      本章的程序比较简单,可以看出来是由上一章的程序改动过来,这些函数在上一章已经进行过讲解,因此就不再重复讲解了。本章的核心思想就是用GPIO去控制封装IP的复位,以此达到流水的可控性。所以在程序中一开始让GPIO输出0,让IP进行复位,之后延时一段时间之后,再让GPIO输出高电平,使IP进入工作状态。

3.6本章小结

     本章需要重点掌握的是IP的封装流程和怎么调用封装的IP,这在以后的设计中是一项重要的技能。


路过

雷人

握手

鲜花

鸡蛋

最新评论

本文作者
2019-11-6 13:14
  • 1
    粉丝
  • 2158
    阅读
  • 0
    回复

关注uisrc网络

扫描关注,了解最新资讯

电话:0519-80699907
EMAIL:270682667@qq.com
地址:常州溧阳市天目云谷3号楼北楼
热门评论
排行榜