FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)

时间:2024-04-02 08:37:47

从创建工程开始写吧。FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)点击Create Project创建一个工程。文件名啥的就不说了,直接选择板子型号FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
选择的板子是ZYBO,如果没有找到板子的话,则需要到vivado的安装mulxia替换下面的文件,使之包括该型号的板子FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
下面开始正式工程的配置。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
点击Create Block Design创建一个IP,然后出现下面的界面
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
点击图中的加号,然后出现Search搜索框,双击MicroBlaze添加一个软核。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
点击蓝色的 Run Block Automation,然后在弹出来的选择框中可以把Local Memory设置的大一点比如(64KB),其他的配置使用默认即可。然后会自动加入很多的必要的模块:
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
此时我们要加入时钟模块,还有两个GPIO模块,一个用来控制LED,一个用来控制按键。首先加入时钟模块:
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
直接手动将System Clock向右拖动即可,然后添加两个GPIO控制模块
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
首先添加按键的GPIO,双击进入之后选择btns 4bits
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后添加LED的GPIO,设置为leds 4bits,并将三态输出设置为0,表示为输出状态。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
还有要注意的一点就是刚才我们添加的时钟模块,要将复位方式设置成低电平使能(Active Low):
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后我们需要设置一个复位按键,在这里我们选择板子上的SW0作为复位开关。右键空白处选择Create Port:
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
出现SW0,然后将复位端连接过来:
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
现在我们点击 Run Block Automation。在弹出的框中全部选择:FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)然后点击下图的按键进行Validate Design验证是否正确。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后生成HDL Wrapper。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后进行Run Synthesis,这个过程有点慢。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
执行完成我们还要对刚才设置的复位键SW0进行端口绑定,查看原理图可以看到对应的引脚是G15。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
点击open Synthesized Design,对端口进行绑定。FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
设置为下图的配置,电压设置成LVCMOS33。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
保存一下,创建一个新的约束文件。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后我们再进行Run Synthesis。完成之后生成bit流,点击generate bitstream。继续等待。。。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
完成之后我们导出hardware。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
比较关键的一步,进行hardware manager,确保板子已经连接好,如果缺少这一步的话在SDK中编程时会显示找不到PS。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
open target->auto connect。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
Program device。最后launch SDK。

下面转入SDK编程。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
在SDK中可以看到我们添加的模块都已经生效。然后我们创建一个工程。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
点finish即可。在工程中***_bsp中的include包含了很多头文件,可以在xparameters.h中看到我们添加的两个GPIO控制模块的地址分配情况,在xgpio.h中有着我们使用到的一些库函数。
在src中创建c文件。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
代码如下:
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后烧到板子上。右击工程名称,然后run as->launch hardware。需要注意的一点是我们的开发板设置的sw0为复位键,并且是低电平复位,所以程序要正常运行需要将开关推上去设置为高电平程序才可运行。

从创建工程开始写吧。FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)点击Create Project创建一个工程。文件名啥的就不说了,直接选择板子型号FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
选择的板子是ZYBO,如果没有找到板子的话,则需要到vivado的安装mulxia替换下面的文件,使之包括该型号的板子FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
下面开始正式工程的配置。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
点击Create Block Design创建一个IP,然后出现下面的界面
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
点击图中的加号,然后出现Search搜索框,双击MicroBlaze添加一个软核。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
点击蓝色的 Run Block Automation,然后在弹出来的选择框中可以把Local Memory设置的大一点比如(64KB),其他的配置使用默认即可。然后会自动加入很多的必要的模块:
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
此时我们要加入时钟模块,还有两个GPIO模块,一个用来控制LED,一个用来控制按键。首先加入时钟模块:
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
直接手动将System Clock向右拖动即可,然后添加两个GPIO控制模块
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
首先添加按键的GPIO,双击进入之后选择btns 4bits
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后添加LED的GPIO,设置为leds 4bits,并将三态输出设置为0,表示为输出状态。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
还有要注意的一点就是刚才我们添加的时钟模块,要将复位方式设置成低电平使能(Active Low):
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后我们需要设置一个复位按键,在这里我们选择板子上的SW0作为复位开关。右键空白处选择Create Port:
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
出现SW0,然后将复位端连接过来:
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
现在我们点击 Run Block Automation。在弹出的框中全部选择:FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)然后点击下图的按键进行Validate Design验证是否正确。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后生成HDL Wrapper。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后进行Run Synthesis,这个过程有点慢。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
执行完成我们还要对刚才设置的复位键SW0进行端口绑定,查看原理图可以看到对应的引脚是G15。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
点击open Synthesized Design,对端口进行绑定。FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
设置为下图的配置,电压设置成LVCMOS33。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
保存一下,创建一个新的约束文件。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后我们再进行Run Synthesis。完成之后生成bit流,点击generate bitstream。继续等待。。。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
完成之后我们导出hardware。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
比较关键的一步,进行hardware manager,确保板子已经连接好,如果缺少这一步的话在SDK中编程时会显示找不到PS。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
open target->auto connect。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
Program device。最后launch SDK。

下面转入SDK编程。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
在SDK中可以看到我们添加的模块都已经生效。然后我们创建一个工程。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
点finish即可。在工程中***_bsp中的include包含了很多头文件,可以在xparameters.h中看到我们添加的两个GPIO控制模块的地址分配情况,在xgpio.h中有着我们使用到的一些库函数。
在src中创建c文件。
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
代码如下:
FPGA ZYBO vivado使用MicroBlaze软核控制GPIO(按键加LED)
然后烧到板子上。右击工程名称,然后run as->launch hardware。需要注意的一点是我们的开发板设置的sw0为复位键,并且是低电平复位,所以程序要正常运行需要将开关推上去设置为高电平程序才可运行。