FQML_AXI_GPIO工程构建调试记录

FQML_AXI_GPIO工程构建调试记录

一、概述

此记录JFMQL15T开发板,实现ps通过axi接口控制pl 的EMIO接口led闪烁,添加EMIO PJTAG用于PS端调试,先创建vivado工程,最终生成bitstream,procise从vivado中导入工程,procise下载bitstream,启动IAR,编译下载调试即可。
proccise工程由vivado中导入。

二、新建vivado工程vivado_axi_emio

芯片类型选择zynq-7000, xc7z015clg485-2
在这里插入图片描述

三、vivado工程构建配置

3.1 添加BD

点击Create Block Design,命名为system
在这里插入图片描述

3.2 添加ZYNQ system IP

在这里插入图片描述

3.3 配置ZYNQ IP

双击zynq 打开配置页面
在这里插入图片描述
失能ddr,此例不用ddr
在这里插入图片描述

3.4 添加并配置AXI GPIO IP

在这里插入图片描述
双击AXI GPIO,选择All Outputs,设置GPIO Width为4(本例中控制四个PL_LED),其他保持不变。
在这里插入图片描述

3.5 引出管脚

点击Run Block Automation
在这里插入图片描述

3.6 自动连线

点击Run connection Automain
在这里插入图片描述
在这里插入图片描述

3.7 Generate Output Products

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

3.8 添加顶层文件,Create HDL Wrapper

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可看到顶层文件中已包含了axi gpio pl_led
在这里插入图片描述

3.9 添加EMIO PJTAG(此过程正常应该在3.5引出管脚之前完成,此处忘记了因此在此添加)

点击Open Block Degin 打开BD配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.10 引出管脚,连线,重新加载生成顶层文件

在这里插入图片描述
选择Make External
在这里插入图片描述
在这里插入图片描述
连线
在这里插入图片描述
重新生成顶层文件流程,参考3.7和3.8
Generate Output Products
在这里插入图片描述
在这里插入图片描述
重新加载顶层文件

在这里插入图片描述
Reload完成后Ctrl+S保存,同时可以看到EMIO PJTAG的引脚包含在了顶层文件中
在这里插入图片描述

3.11 新建管脚约束文件

在这里插入图片描述
在这里插入图片描述
编写引脚约束文件(由于AXI GPIO配置时All Outputs 所以引脚约束文件中为pl_led_tri_o)
set_property IOSTANDARD LVCMOS25 [get_ports {pl_led_tri_o[*]}]
set_property IOSTANDARD LVCMOS33 [get_ports PJTAG_0_tck]
set_property IOSTANDARD LVCMOS33 [get_ports PJTAG_0_tdi]
set_property IOSTANDARD LVCMOS33 [get_ports PJTAG_0_tdo]
set_property IOSTANDARD LVCMOS33 [get_ports PJTAG_0_tms]

set_property PACKAGE_PIN E2 [get_ports {pl_led_tri_o[0]}]
set_property PACKAGE_PIN D6 [get_ports {pl_led_tri_o[1]}]
set_property PACKAGE_PIN F5 [get_ports {pl_led_tri_o[2]}]
set_property PACKAGE_PIN E3 [get_ports {pl_led_tri_o[3]}]
set_property PACKAGE_PIN AB11 [get_ports PJTAG_0_tck]
set_property PACKAGE_PIN V11 [get_ports PJTAG_0_tdi]
set_property PACKAGE_PIN W11 [get_ports PJTAG_0_tdo]
set_property PACKAGE_PIN AA11 [get_ports PJTAG_0_tms]
在这里插入图片描述

3.12 生成bitstream文件

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

3.13 vivado打开sdk创建工程

3.13.1 Export Hardware

vivado 菜单栏中File—> Export—>Export Hardware,选中Include bitstream,点击ok
在这里插入图片描述

3.13.2 启动SDK

vivado 菜单栏中File—> Launch SDK,点击OK
在这里插入图片描述
在这里插入图片描述
创建工程
在这里插入图片描述

在这里插入图片描述
新生成的bsp中的部分驱动文件后续会用到,完成此操作新建SDK工程后(bsp包必须以_bsp结尾,procise只识别此格式)即可关闭vivado和sdk ,用procis导入vivado工程。

四、procise工程构建

4.1 新建procise空白工程

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

4.2 导入vivado工程

PSOC—> FROM VIVADO
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 启动IAR

在这里插入图片描述
在这里插入图片描述
将vivado sdk的程序文件夹放到procise工程下的SDK/system_platform_FM_QL_bsp/pl下
在这里插入图片描述

4.4 IAR中添加vivado sdk生成的bsp驱动文件

将vivado sdk的程序文件夹放到procise工程下的SDK/system_platform_FM_QL_bsp/pl下
在这里插入图片描述
vivado SDK bsp下的include 文件夹下的“xil_assert.h”、“xil_types.h”、“xparameters.h”、“xstatus.h”,libsrc\standalone_v6_1\src 目录下的“xil_assert.c”, libsrc\gpio_v4_3\src 下所有的 c 和 h 文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对应添加完成后的效果如下:
在这里插入图片描述

4.5 解决兼容性问题

xparameters.h文件中注释掉#include “xparameters_ps.h”
在这里插入图片描述
xgpio_l.h中注释掉#include “xil_io.h”,添加#include “fmsh_common.h”
在这里插入图片描述
更改读写接口宏定义
#define XGpio_In32(addr) FMSH_ReadReg(addr,0x0)
#define XGpio_Out32(addr,data) FMSH_WriteReg(addr,0x0,data)

在这里插入图片描述

4.6 编写主程序

#include <stdio.h>
#include “platform.h”
#include “fmsh_common.h”
#include “xgpio.h”
#include “fmsh_ps_parameters.h”

int FGpioOutputExample(void);

int main()
{
//init_platform();
FMSH_WriteReg(FPS_SLCR_BASEADDR, 0x008, 0xDF0D767BU);
FMSH_WriteReg(FPS_SLCR_BASEADDR, 0x838, 0xf);
FMSH_WriteReg(FPS_SLCR_BASEADDR, 0x004, 0xDF0D767BU);
//printf(“1\r\n”);
while (1)
{
FGpioOutputExample();
}
//cleanup_platform();
return 0;
}

int FGpioOutputExample(void)
{
XGpio led_out;
u32 led_channel = 1;
int status;
u32 maxloop = 3;
u32 led_bit;
u32 led_width = 4;
u32 i;
status = XGpio_Initialize(&led_out, 0);
if(status != XST_SUCCESS)
{
return XST_FAILURE;
}
//set all output
XGpio_SetDataDirection(&led_out, led_channel, 0x0);
//set GPIO outputs to high
XGpio_DiscreteWrite(&led_out, led_channel, 0x0F);
for(i = 0; i < maxloop; i++)
{
for(led_bit = 0; led_bit < led_width; led_bit++)
{
XGpio_DiscreteWrite(&led_out, led_channel, ~(1<<led_bit));
delay_ms(200);
}
}
return 0;
}

4.7 编译下载调试

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/273957.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习 | 基本循环神经网络

1、序列建模 1.1、序列数据 序列数据 —— 时间 不同时间上收集到的数据&#xff0c;描述现象随时间变化的情况。 序列数据 —— 文本 由一串有序的文本组成的序列&#xff0c;需要进行分词。 序列数据 —— 图像 有序图像组成的序列&#xff0c;后一帧图像可能会受前一帧的影响…

GA/T1400公安视图库在视频监控系统中对接及方案

公安视频图像信息应用系统系列标准&#xff0c;标号为GA/T 1400&#xff0c;现行版本为2017年版&#xff0c;由公安部发布。现较广泛地使用于平安城市安防监控系统、智慧城市安防监控系统、雪亮工程安防监控系统之中。 公安视频图像信息应用系统系列标准&#xff0c;共分为4个部…

java美容管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web美容管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

电路设计(8)——计时器的multism仿真

1.功能设计 这是一个计时电路&#xff0c;在秒脉冲的驱动下&#xff0c;计时器开始累加&#xff0c;6个数码管分别显示计时的 时&#xff1a;分&#xff1a;秒。 仿真图如下所示&#xff1a; 左边的运放构成了振荡电路&#xff0c;可以产生脉冲波。这个脉冲波给计时电路提供基准…

金蝶云星空 多处反序列化RCE漏洞复现

0x01 产品简介 金蝶云星空是一款云端企业资源管理(ERP)软件,为企业提供财务管理、供应链管理以及业务流程管理等一体化解决方案。金蝶云星空聚焦多组织,多利润中心的大中型企业,以 “开放、标准、社交”三大特性为数字经济时代的企业提供开放的 ERP 云平台。服务涵盖:财…

关于“Python”的核心知识点整理大全44

目录 ​编辑 15.3.4 模拟多次随机漫步 rw_visual.py 注意 15.3.5 设置随机漫步图的样式 15.3.6 给点着色 rw_visual.py 15.3.7 重新绘制起点和终点 rw_visual.py 15.3.8 隐藏坐标轴 rw_visual.py 15.3.9 增加点数 rw_visual.py 15.3.10 调整尺寸以适合屏幕 rw_vi…

【Linux】生产者消费者模型(阻塞队列与环形队列)和POSIX信号量

文章目录 一、生产者消费者模型二、基于BlockingQueue的生产者消费者模型1.BlockQueue.hpp2.Task.hpp3.main.cc 三、POSIX信号量四、基于环形队列的生产消费模型1.RingQueue.hpp2.Task.hpp3.main.cc 一、生产者消费者模型 我们这里举一个例子&#xff0c;来解释生产者消费者模…

数据库的系统概述1

1.1 信息&#xff0c;数据&#xff0c;数据处理与数据管理 数据&#xff1a; 数据是描述事务的符号记录 信息&#xff1a; 信息是一种已经被加工为特定形式的数据&#xff0c;这种数据对接受者来说 是有意义的 数据管理&#xff1a; 利用计算机对收集的数据进行整理&#xff0…

redis cluster判断key属于那个分片。

一、判断阿里云 redis cluster&#xff0c;的key属于那个分片。 阿里云特有的命令info key 可以查看key属于那个slot&#xff0c;那个分片 命令行查看&#xff1a; xxxx:6379> info key xxxx_compressed_xxx slot:4941 node_index:9 xxxx:6379> cluster keyslot xxxx_…

详解结构体(包含结构体内存对齐,柔性数组,位段)【尊嘟很详细】

​ 结构体 结构体是一些值的集合&#xff0c;这些值称为成员变量&#xff0c;结构的成员可以是标量、数组、指针,甚至是其他结构体。 成员名可以与程序中其它变量同名&#xff0c;互不干扰。 结构体的定义 &#xff08;struct结构名{}&#xff09; struct books {int a;c…

最小覆盖子串(Java详解)

目录 一、题目描述 二、题解 一、题目描述 给定两个字符串 s 和 t 。返回 s 中包含 t 的所有字符的最短子字符串。如果 s 中不存在符合条件的子字符串&#xff0c;则返回空字符串 "" 。 如果 s 中存在多个符合条件的子字符串&#xff0c;返回任意一个。 注意&…

【IO】IO模型与零拷贝

前言&#xff1a; 正在运行的程序其实就是系统中的一个进程&#xff0c;操作系统会为每一个进程分配内存空间&#xff0c;而内存空间分为两部分&#xff0c;一部分是用户空间&#xff0c;这是用户进程访问的内存区域&#xff1b;另一部分是内核空间&#xff0c;是操作系统内核访…

详解Keras3.0 Layer API: LSTM layer

LSTM layer 用于实现长短时记忆网络&#xff0c;它的主要作用是对序列数据进行建模和预测。 遗忘门&#xff08;Forget Gate&#xff09;&#xff1a;根据当前输入和上一个时间步的隐藏状态&#xff0c;计算遗忘门的值。遗忘门的作用是控制哪些信息应该被遗忘&#xff0c;哪些…

vue2、vue3状态管理之vuex、pinia

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、状态管理之vuex1.1 State调用&#xff1a;1.2 Mutation在vuex中定义&#xff1a;在组件中使用&#xff1a; 1.3 Action在vuex中定义&#xff1a;将上面的减…

Vue 自定义ip地址输入组件

实现效果&#xff1a; 组件代码 <template><div class"ip-input flex flex-space-between flex-center-cz"><input type"text" v-model"value1" maxlength"3" ref"ip1" :placeholder"placeholder"…

VMware之FTP的简介以及搭建使用计算机端口的介绍

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、FTP介绍 1、什么是FTP&#xff1a; 2、FTP适用于以下情况和应用场景&#xff1a; 3、winServer2012搭…

Verilog置换处理脚本

文章目录 一、介绍二、脚本 一、介绍 在Verilog中的置换处理&#xff0c;为将一个数据的数据位按照某种规则进行重新排列。 以DES算法的初始置换为例 初始置换将64比特的明文&#xff0c;按照初始置换表进行置换&#xff0c;得到一个乱序的64bit明文组。 初始置换表如下&…

加速计算,为何会成为 AI 时代的计算力“新宠”

随着科技的发展&#xff0c;处理大量数据和进行复杂计算的需求越来越高&#xff0c;人工智能、大数据和物联网等领域更是如此&#xff0c;传统的计算方式已经无法满足这些需求。因此&#xff0c;加速计算作为一种现代计算方式&#xff0c;成了必要的手段。加速计算具有前所未有…

为什么设计制造行业需要数据加密?

设计制造行业是一个涉及多种技术、工艺、材料和产品的广泛领域&#xff0c;它对经济和社会的发展有着重要的影响。然而&#xff0c;随着数字化、智能化和网络化的发展&#xff0c;设计制造行业也面临着越来越多的数据安全风险&#xff0c;如数据泄露、数据篡改、数据窃取等。这…

Qt Creator可视化交互界面exe快速入门4

上一期介绍了信号与槽&#xff0c;本期介绍加法计算器 我们来新建一个项目 然后拖动设置按钮 还需要个输出框 这里拖动Line Edit 我这里只是简单演示一下&#xff0c;做个低配版计算器&#xff0c;再加个加号和一个等于号就结束了。 然后回到代码编辑部分&#xff0c;我们需要…