
fpga
文章平均质量分 79
leon_zeng0
从事激光领域软件开发,三维内雕软件,3d 打印机软件, 运动控制器,通讯,c, c++, verilog,fpga
技术移民加拿大,往返于多伦多和中国之间
喜欢旅游,游泳,徒步,自驾游,独轮平衡车,滑冰,单板滑雪
展开
-
查看zynq 的 id 或者DNA
每个zynq fpga 芯片都有一个唯一的id ,怎么查看呢?本文介绍 Vivado 里面查看。通过jtag 连接你的zynq板子,在 vivado 里面打开Flow->Program and Debug ->hareware Manager就出现硬件管理界面,连接,自动连接 ,就可以看到你的硬件右键点击你的硬件,我这里是 xc7z010(1), 选择 hardware device Properties就进入属性界面,在这里Register->EFUSE->.原创 2021-11-25 12:18:41 · 4178 阅读 · 0 评论 -
zynq 7000 的HDMI 显示SD卡内图片文件
本文是zynq 7000 的HDMI 显示实验一文的继续,在上文中显示的内容包含在代码中,而本文直接显示SD卡里的BMP图片文件。你必须先完成了zynq 7000 的HDMI 显示实验,才能本实验。代码下载:链接:https://pan.baidu.com/s/11-RLOYtl1AyxcQ_XGbw2YQ提取码:zvnchdmiSDsrc.zip 是本文代码 17k, 其他是上文的内容硬件设计本实验的硬件设计基本与zynq 7000 的HDMI 显示实验相同,所以不必重...原创 2021-01-30 03:34:41 · 1390 阅读 · 2 评论 -
zynq 7000 的HDMI 显示实验
用了很多年的zynq 7000,一直就没做hdmi 显示实验。前几天终于做了这个实验,也就做一个总结。我的实验是在微相的z7r-lite下根据他们的教程完成的。平台是windows 10 , Vivado 2018.3。如果硬件设计不一样,主要是替换rgb2dvi 模块和gpio 中断部分。工程资料下载,链接:https://pan.baidu.com/s/11-RLOYtl1AyxcQ_XGbw2YQ提取码:zvnc这个下载里里三个文件,一个hdmi_out 全工程67M,下了这个就..原创 2021-01-29 12:45:58 · 11677 阅读 · 4 评论 -
PCA9685 多舵机控制器的编程
本文介绍通过写入寄存器的方法实现对PCA9685 的控制。PCA9685 模块制作机器人,舵机就是让它动起来的关键器件。而又由于通常设计中为了不影响处理器供电或者主控功率不够,都会另外制作一块板子用作舵机驱动,也叫舵机控制板。PCA9685是一款用于产生16路PWM信号的LED控制芯片, 采用I2C总线与主控芯片进行通信。PCA9685具有可以产生16路PWM脉冲、控制独立精准、编程简单灵活等特点, 以其为基础实现的舵机控制能够有限减少硬件和软件设计的复杂度, 具有高可靠性PCA9685的用途.原创 2021-01-08 15:06:25 · 16034 阅读 · 0 评论 -
zynq 7000 的 iic 外设编程
本文主要介绍zynq 7000下的i2c ps 外设编程。实验是在vivado 2018.3 上完成的。本实验的前提条件是你已经做过了zynq 7000的helloworld sdk 实验。一般开发板的厂家都提供了的,一些设置与所用硬件有关,也可参考我的博客petalinux 2018.2 下的helloworld 实验I2C总线简介I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。I2C总线上分成主机和从机两种设备。.原创 2021-01-08 03:47:07 · 6176 阅读 · 15 评论 -
AXI4 Lite 协议分析
本文是上篇文章《自定义IP实验》的扩展,在Zynq 7000 的ip设计应用中,为了实现PS-PL 互动,我们需要选择 AXI 4 协议, 而Axi4 Lite 是其中简化版本,耗用资源比较少,也比较好理解。大多数情况,我们选择它。为了设计好自定义ip 包,我们需要熟悉和掌握 Axi 4 Lite。首先使用ILA 采集读写的波形图,另存工程,然后添加ila。我简单介绍其操作过程,如原创 2017-12-08 05:39:51 · 14532 阅读 · 0 评论 -
ZYNQ 双核运行并交互,一个linux,一个裸核
zynq 7000 一般有2个cpu (arm A9),我们一般都用一个cpu0,本实验让2个cpu 都运行起来,cpu0 运行操作系统petalinux 2018.2, cpu1: 裸机流水灯。同时通过共享内存的方式,实现2个核之间的交互。原创 2020-07-15 12:17:01 · 10231 阅读 · 7 评论 -
petalinux(zynq) 设备树学习
正在学习A Tutorial on the Device Tree (Zynq) -- Part IZynq设备树教程(一)A Tutorial on the Device Tree (Zynq) -- Part IIA Tutorial on the Device Tree (Zynq) -- Part IIIA Tutorial on the Device Tree (Zynq) -- Part IVA Tutorial on the Device Tree (Zynq) --原创 2020-07-13 20:02:16 · 4168 阅读 · 0 评论 -
ZYNQ 7000 AMP模式双裸核运行 双方共享内存交互
本文是zynq 7000 AMP模式 双裸核CPU同时运行的继续。本文主要是上文的基础上增加通过共享内存的方式,演示2个裸核的交互。共享内存前先看看内存地址分布,这个图取自 ug585 4.1 节 address map 的表4-1本文定义OCM 为共享内存,地址为0xffff_0000。在2个文件的头部都这样定义共享内存#include "xil_mmu.h"#define COM_VAL (*(volatile unsigned int*)(0xffff0000))#d...原创 2020-07-01 10:14:55 · 4845 阅读 · 0 评论 -
zynq 7000 AMP模式 双裸核CPU同时运行
本实验通过学习https://blog.youkuaiyun.com/long_fly/article/details/79335025而来。从软件的角度来看,多核处理器的运行模式有三种:AMP(非对称多进程):多个核心相对独立的运行不同的任务,每个核心可能运行不同的操作系统或裸机程序,但是有一个主要核心,用来控制整个系统以及其它从核心SMP(对称多进程):一个操作系统同等的管理各个内核,例如PC机BMP(受约束多进程):与SMP类似,但开发者可以指定将某个任务仅在某个指定内核上执行默认情况下,ZYNQ..原创 2020-06-28 13:13:56 · 5782 阅读 · 0 评论 -
VMware中调整虚拟机窗口,铺满全屏幕
我用VVMware 很多年了,当然不是天天用。但是我的虚拟机总是部分屏幕,要吗只是全屏,我在windows 10下的任务都看不到。昨天我突然网上找一找,还真找到了,特记录如下。学习链接是:VMware中调整虚拟机窗口,铺满全屏幕 安装vmwaretools 点击:查看 —— 自动调整大小 —— 自动适应客户机 我的实际操作只是2。...原创 2020-06-26 10:18:50 · 8592 阅读 · 0 评论 -
Zynq的启动过程及加密
ZYNQ7000器件是ARM和FPGA合在一起的单芯片解决方案,又是以ARM为中心的解决方案,FPGA只是作为ARM的一个可编程的外设部分;系统首先启动的是ARM处理器,FPGA是在ARM处理器的控制下进行选择加载;本文首先对ZYNQ7000器件的启动过程做些了解和分析,然后着重分析应用中怎样对设计进行加密保护,因为在现代系统设计中越来越注重对设计的保护,这是为了防止产品在投放市场后出现有人抄袭我们的设计;在设计保护方面ZYNQ7000器件已经提供了一套解决方案,我们需要研究并加以应用到产品中去。本文的原创 2020-06-18 14:35:00 · 4976 阅读 · 3 评论 -
zynq 程序固化和启动
我们前面的例程都是在 SDK 开发环境中用 JTAG 直接下载程序运行,如果开发板断电,程序就会丢失,如何让程序能够在开发板断电后再上电能重新启劢,这就需要用刡应用程序的固化。 ZYNQ7000 SOC 芯片可以从 FLASH 启劢,也可以从 SD 卡里启劢, 本文给大家介绍程序的 FLASH 或者 SD 卡启动的方法。 前面我们也介绍过, Zynq7000 SOC 芯片上电后,运行的是 ARM 系统(PS)。然后再通过 ARM 系统软件部分加载 FPGA 的比特流文件.bit 至 FPGA(PL原创 2020-06-14 13:46:27 · 8758 阅读 · 3 评论 -
PL读写DDR3 实现PS和PL间的数据交互 时序波形图
本文是PL读写DDR3 实现PS和PL间的数据交互以及PL读写DDR3 实现PS和PL间的数据交互 代码分析的继续虽然在代码分析一文中分析了代码,但还是时序波形图比较直观,我这是用Vivado的集成逻辑分析仪ILA 在有sdk 下的应用入门介绍的方法采集的。波形如下:上面波形图的信号名依次是:system_i/AzIP_AXI_Master_0_M00_AXI_AWADDRsystem_i/AzIP_AXI_Master_0_M00_AXI_AWVALIDsystem_i...原创 2020-05-16 07:19:59 · 2177 阅读 · 0 评论 -
PL读写DDR3 实现PS和PL间的数据交互 查表程序的验证程序
本文是PL读写DDR3 实现PS和PL间的数据交互 查表程序的续集,ip的源代码见上文。本文只是提供一种简单验证方法。直接用axi_gpio这个系统提供的ip进行验证,而原文需要自己加建立一个ip来验证。建立工程等一般流程这里不介绍了。在建立的原理图里添加cpu,然后添加上文介绍自建的ip searchTable, 添加2个axi_gpio。原理图如下:这里2个gpio ...原创 2020-03-28 04:50:20 · 859 阅读 · 0 评论 -
PL读写DDR3 实现PS和PL间的数据交互 查表程序
1: 添加端口 //input original input wire [15 : 0] IN_ADDR, //out results output wire [15 : 0] OUT_DATA, //output cycle for search output wire [7 : 0] OUT_TIM,读地址段: //Read Addresses ...原创 2020-03-18 14:02:08 · 1666 阅读 · 2 评论 -
petalinux 保留一段专用内存给你的驱动程序
在实际应用中,需要保留一段专用内存,给驱动程序或者应用程序,比如给PL 访问的一段内存,用于查表,等等。本文介绍如何在petalinlux 里实现保留一段内存。在这里我引用原文有3种方式预留内存:普通的,DMA,CMA。我的应用中打算使用普通的,32位方式。但这里3种方式都介绍。来自参与的问题:https://forums.xilinx.com/t5/Embedded-Linux/Zynq...原创 2020-02-26 03:57:29 · 3373 阅读 · 0 评论 -
Vivado的集成逻辑分析仪ILA 在有sdk 下的应用入门
我在前面有2篇Vivado 下的集成逻辑分析仪ILA:Vivado下的集成逻辑分析仪ILA 入门Vivado下集成逻辑分析仪ILA入门续但没有介绍有sdk 的情况下怎么用,当时也没用过,前几天我觉得有这需要,就找了一篇文章学习,然后做了这个实验。参考文章是:https://www.realdigital.org/doc/c4d57104000339a55b764e5e5f21e28...原创 2020-02-17 13:27:36 · 3395 阅读 · 0 评论 -
PL读写DDR3 实现PS和PL间的数据交互 代码分析
本文是PL读写DDR3 实现PS和PL间的数据交互的继续,深入分析其代码。首先分析基本要求,或者需求分析,然后代码分析,这个代码是上文中利用vivado 2018.2 自动生成的,也许做了一点修改比如注释。然后对代码分段分析,我想使用这些代码,所以必须分析弄懂。还在继续学习中,如果有什么问题,大家一起讨论,若有更明白说法的地方请赐教。需求分析要想PL访问板上的DDR3存储器,必须...原创 2020-02-13 13:05:02 · 5342 阅读 · 19 评论 -
linux 命令学习笔记
学习linux很久了,有些命令过些时间就忘了,找也找不到。没办法,把他记在这里,方便你我。同时有新的体会,再附加到这里。首先介绍学习命令的几个网站初窥Linux 之 我最常用的20条命令Linux常用命令学习前者介绍的命令有:cd ,ls ,grep, find, cp, mv, rm, ps, kill, killall, file, tar, cat, chgrp, chow...原创 2020-02-06 08:54:53 · 502 阅读 · 1 评论 -
petalinux 的rootfs文件系统放在SD 分区上
在前面2文即:petalinux 2018.2 在ubuntu 16 下的工程制作并启动实验以及petalinux 2018.2 在QSPI启动中,介绍了制作petalinux 启动的过程。但上面2文的rootfs 都是在RAM中,在文件系统中做的修改,在系统关闭后都不能保存。本文介绍的方法就是解决不能保存的问题,我们把rootfs文件系统放在SD分区中,可以保存文件以及我们对系统做的修...原创 2020-01-30 04:40:51 · 9699 阅读 · 15 评论 -
Vivado 中如何使用 AXI DMA, PL 访问 DDR
起始工程是原来的helloworld 工程,若有不清楚,那就先实验了helloworld,再来开始这个实验。http://www.fpgadeveloper.com/2014/08/using-the-axi-dma-in-vivado.html是主要参考资料,详细原理请参考原文。原文实验是Vivado 2014, 我的验证测试是在 Vivado 2018.2.实验内容是用 AXI ...原创 2019-07-29 00:49:47 · 8532 阅读 · 2 评论 -
PL读写DDR3 实现PS和PL间的数据交互
本文构建一个AXI4-Lite Master IP来实现PL读写DDR3。最后用sdk 程序验证pl 读写过程中写入的数据。本文参考https://www.eefocus.com/antaur/blog/17-08/423773_0818c.html学习而来,但我添加了数据验证部分。我的另篇博文是:zynq 7000 自定义IP 实验https://blog.youkuaiyun.com/leon...原创 2019-08-05 00:39:55 · 11962 阅读 · 0 评论 -
Linux驱动开发常用调试工具 devmem之代码分析
本文先列出代码,然后分析,最后是使用情况介绍,命令控制led 点亮的方法。在Linux开发中着实用的调试工具并不是很多。devmem的方式是提供给驱动开发人员,在应用层能够读写内存地址,外设地址。也有类似叫 devmem2的,功能类似。在我用的petalinux 2018.2 中,其名字是devmem。这个代码是开源的,linux 的一部分。 我这里的原始代码来自 : https://gi...原创 2018-10-17 02:19:47 · 3342 阅读 · 1 评论 -
zynq 7000下读写qspi 及flash 唯一id
本文主要演示zynq 7000下对Qspi 的读写操作,以及读取8字节唯一ID, 可以用于简单加密。我在使用altera 的时候,写了一篇读写flash 及其ID的文章。在我转入zynq 7000的时候,自然也要有读写QSPI FLASH, 以及读取其ID。本文分为四部分:硬件设计,软件设计,测试验证,期待本文的前提条件是读者会helloworld 实验,也就是会zynq 7000的SDK开发过程...原创 2017-10-25 12:09:54 · 14590 阅读 · 11 评论 -
petalinux 添加系统启动时应用程序自动执行
在我们做petalinux 作为嵌入式系统时,希望系统启动时能执行我们指定的应用程序。本文根据ug1144 说明如何做这个。首先找到 ug1144 的7章Customizing the Rootfs,然后是其下的Application Auto Run at Startup,以下步骤就来自这里。1:首先你应该安装好了你的应用程序,可以看我另一博文。2:转到你的工程文件夹, 然后执行...原创 2019-07-11 17:54:28 · 4168 阅读 · 0 评论 -
petalinux 添加编译好的应用程序
petalinux (我的是 2018.2) 如何添加编译好的应用程序呢?ug1144 做了介绍,内容在 ch7:Customizing the Rootfs下的Including Prebuilt Applications。我制作petalinux 2018.2 是在ubuntu16上的,下面是我添加编译好了的应用的步骤。1:确保你的应用程序是针对你的硬件平台,可以先在平台上运行测...原创 2019-07-11 08:54:55 · 5460 阅读 · 7 评论 -
zynq 的定时器中断实验
本文通过定时器中断实验,介绍zynq 的中断和定时器的基本使用方法。本文是在helloworld 实验的基础上完成的,所以必须先完成了helloworld 的实验。这个可以学习本博客的helloworld 实验,或者开发板提供的helloworld 实验。1:中断和定时器介绍:中断对于保证任务的实时性非常必要, 在 ZYNQ 里集成了中断控制器 GIC(Generic Interrupt Cont...原创 2018-04-01 00:43:44 · 3699 阅读 · 0 评论 -
Vivado HLS 入门实验
当我们安装好Vivado 的时候,也同时装好了Vivado HLS.。 这是个什么东西?我就有一种想一探究的感觉。网上一查,Vivado High-Level Synthesis。学习了一段时间的Zynq 7000, 找了一个HLS的教程,就开始了如下入门实验,体验高级语言综合设计IP。Vivado HLS是Xilinx 推出的高层次综合工具,采用C/C++语言进行FPGA设计。HLS提供了一些样...原创 2017-11-21 12:10:45 · 21436 阅读 · 13 评论 -
Zynq 7000 自定义ip 的仿真
本文是《zynq 7000 自定义ip实验》一文的继续,也是《AXI4 协议分析》一文的基础上写出来的,如果没看这2文,可以根据你的需要去看看。设计axi4 ip 是个复杂的工作,在正式测试前做仿真测试可以排除很多bug,保证产品开发高效高质量。下载链接总失效, 把testbench.v直接放这里了。本文主要介绍仿真程序的设计。在ip设计工程的Simulation sources中,添加或新...原创 2017-12-10 13:11:55 · 2595 阅读 · 3 评论 -
zynq 7000 自定义IP 实验
本文通过一个简单例子介绍zynq 7000中自定义ip 的设计过程。 此例子就是控制4个led 。 在ps-pl 试验中,一般用的就是Vivado 自带的GPIO ip。 所以如果你熟悉了PS端和PL端协同设计流水灯试验,对于本例子就只需关注自定义ip 的设计了。如果你还不熟悉这种协同设计,那你就得先学习好了,再来看本文试验。本文就是用自定义的ip 替代自带的gpio ip来控制流水灯。其主要...原创 2017-11-30 15:16:30 · 7147 阅读 · 9 评论 -
Vivado下的仿真入门
Vivado 仿真入门原创 2017-11-04 10:33:55 · 104148 阅读 · 35 评论 -
Zynq 7000裸机的lwip 样例程序echo server 实验
zynq 7000 裸机跑lwip 的echo server原创 2017-10-12 00:15:14 · 24957 阅读 · 36 评论 -
Zynq 7000的hello world 实验
开发当然要从最简单的学起,从串口打印"Hello World"是开发ZYNQ的嵌入式系统的入门设计。初学者必项经过本实验锻炼才能理解和体验ZYNQ的软硬件开发过程。我们将在AX7010/AX7020开发板上创建一个简单的ZYNQ嵌入式系统。然后我们将会使用SDK创建一个简单的软件应用程序,幵下载到ZYNQ的ARM处理器中,实现串口的字符打印。1 Vivado工程创建1.1 在Viv原创 2017-10-15 20:05:52 · 8211 阅读 · 6 评论 -
Vivado下集成逻辑分析仪ILA入门续
在 Vivado下集成逻辑分析仪ILA入门 一文中带着读者走了一遍集成逻辑分析仪ILA的使用过程。当时通过Set up Debug添加需要监控的点,间接添加了ILA, 本文介绍另外一种方法,直接添加逻辑分析仪ILA 的 IP。 这其实是我最开始看到和学习的方法,但没有做成。写完上篇文章后,反过来再看一遍,做成了实验。这个方法是 Miz702 Zynq开发教程里的学习到的。ug908-里原创 2017-11-09 04:09:59 · 14399 阅读 · 4 评论 -
Vivado下的集成逻辑分析仪ILA 入门
刚刚开始学习Zynq 7000的时候,看到别人问ILA的问题时,说是集成逻辑分析仪,我觉得这是一个好东西,我一定要学会它。我是买了黑金的AX7010, 后来换成AC7010,开始学习Zynq 7000的,当然他的平台是Vivado 2015.4 。我一步步按照黑金的教程学习,基本掌握了Zynq 7000的开发过程,但教程只是简单提到了仿真和逻辑分析仪。所以我不断寻找Vivado 下如何仿真以及原创 2017-11-07 11:02:07 · 22139 阅读 · 5 评论 -
我在altera15下的第一个基于qsys的 nios2程序运行成功了
http://bbs.eeworld.com.cn/thread-496145-1-1.html这是我去年发表的一个文章,上面是链接.通过几天的努力,我在altera15下的第一个基于qsys的 nios2程序运行成功了!以前我在altera11 做过nios2 程序,有基于sopc的,也有基于qsys的。我觉得11 下 qsys 的nios2 不稳定,没办法只好改用基于sop原创 2017-07-03 15:56:32 · 2407 阅读 · 0 评论 -
zynq 7000 的流水灯实验
流水灯实验是FPGA 的入门实验。最简单并且得到实在的体验,我们就从这里开始zynq 7000的体验吧。本实验包括3部分:创建工程,添加和建立文件,比特流产生和编程。 1:创建工程:打开Vivado,在如下界面里选择建立工程,Create Project。由于不同的vivado的版本,可能界面不一,但都是找到Create Project。出现create project 界...原创 2018-08-31 03:14:39 · 2956 阅读 · 0 评论 -
zynq 7000 SDK下的流水灯实验
zynq 7000 的流水灯实验是最简单的纯PL 的实验, helloworld 是SDK下的最简单实验,但不包括任何PL。本文是这2者综合下的最简单实验, PS 和 PL 都有的情况下最简单实验。其结果与流水灯实验一样,但是通过SDK的方式来实现。本实验的前提是做过上面2个实验。否则看不懂的话,请参考我的上面2文,操作细节在这里可能没有描述那么清楚。1:创建工程,取名led_sdk,...原创 2018-09-02 14:50:26 · 6613 阅读 · 0 评论 -
petalinux 2018.2 添加u盘
我安装好petalinux 后,发现不能识别usb 盘。我花了好些时间寻找答案。下面是我在xilinx 论坛上提问的2个链接。我是提问中得到别人的帮助,然后得到答案的,所以给出这2个链接。https://forums.xilinx.com/t5/嵌入式软件开发/petalinux-中怎么加入u盘/td-p/902100https://forums.xilinx.com/t5/Embed...原创 2019-06-17 13:48:02 · 2632 阅读 · 3 评论