- 博客(60)
- 收藏
- 关注
原创 DONT_TOUCH约束
对设计中的信号施加DONT_TOUCH约束,可以避免这些信号在综合编译过程中被优化掉。例如,有些信号节点在综合或布局布线编译过程中可能会被优化掉,但是我们希望在后期调试过程中能够监控到这些信号,此时就可以使用DONT_TOUCH约束达到保留这些信号的目的。又如,有时在设计中会对一些高扇出的信号进行手动的逻辑复制,也可以使用DONT_TOUCH约束避免它们被优化掉。实例:下面有一个简单的例子,看看DONT_TOUCH约束如何使用。原始代码如下,目前只有一个寄存器vga_valid,它对应了adv7123.
2020-09-18 14:36:47
7363
1
原创 CLOCK_DEDICATED_ROUTE约束应用
Vivado工具在编译时通常会自动识别设计中的时钟网络,并将其分配到专用的时钟布局布线资源中。通过对某些时钟网络设置CLOCK_DEDICATED_ROUTE值为FALSE,可以将被识别为时钟网络并按照时钟网络进行布局布线的时钟信号安排到通用的布线资源中。比如,某些时钟信号由于设计疏忽或其它原因,没有被安排到FPGA器件的时钟专用引脚上,在编译的时候就会报错,此时就可以使用CLOCK_DEDICATED_ROUTE约束来忽略这个错误。实例1:忽略关于时钟布线的编译ERROR我们有一个设计,输入到FPG.
2020-09-15 13:42:37
14937
原创 跨时钟域为什么要双寄存器同步
随着设计规模的不断攀升,各种接口外设琳琅满目,时钟“满天飞”就不可避免(注意这里的“满天飞”不是滥用,意指时钟频率多、时钟扇出多)。而一个设计中,不同时钟频率之间你来我往更是在所难免。那么,这就出现了题目中的跨时钟域的同步问题?怎么办?十年不变的老难题。为了获取稳定可靠的异步时钟域送来的信号,一种经典的处理方式就是双寄存器同步处理(double synchronizer)。那为啥要双寄存器呢,一个不就够了吗?先来看看,这张老得掉牙,经典得不能再经典的示意图。Aclk和bclk是两个不同的时钟域,bclk.
2020-08-20 11:42:47
3116
原创 Vivado工程源码大瘦身
特权同学原创,转载请保留署名Vivado的工程文件包含了源码、IP、设置和各种编译的中间文件,动辄上百MB甚至上GB,非常占硬盘。可以通过以下步骤对编译过的工程进行瘦身,只预留必要的设置、IP和源码,减少硬盘空间占用。1.打开Vivado工程,在Tcl Console中输入reset_project命令(Type a Tcl command here处输入reset_project后回车),删除所有工程编译的中间文件。可以减少30%~70%左右的size,原有工程的“垃圾文件”越多,瘦身得越明显。.
2020-08-17 09:06:36
3120
2
原创 特权同学2020视频教程《Verilog边码边学(FPGA工具与语法篇)》
特权同学2020视频教程《Verilog边码边学(FPGA工具与语法篇)》B站视频合集:链接: https://www.bilibili.com/video/BV1Ve411x75W?from=search&seid=71364886936769315.无论是数字IC设计,还是FPGA开发,Verilog都是最基本、最重要的必备技能。而任何一门编程语言的掌握,都不是啃啃语法书,动动脑门儿这么简单的,更何况Verilog这么一门基于硬件的独特语言。由于它最终所实现的数字电路,具备着硬件与生俱来
2020-07-02 08:18:58
1629
原创 Win8,Win10系统安装USB Blaster 驱动程序软件时遇到一个问题
Win8,Win10系统安装USB Blaster 驱动时如果弹出如下的对话框提示:这是系统强制认证硬件数字签名的问题,我们需要关掉这项功能。方法如下:(要记下来再执行,需要关机)方法1:开始菜单打开运行命令,或者快捷键win+R 打开运行命令运行输入:“shutdown.exe /r /o /f /t 00”点击“确定”按钮,等待几秒钟进入“选择一个选项”,选择“疑难解答”...
2020-04-22 18:02:41
1368
原创 特权同学 Verilog边码边学 Lesson01 Vivado下载与安装
特权同学 Verilog边码边学 Lesson01 Vivado下载与安装 特权同学 Verilog边码边学 Lesson01 Vivado下载与安装“工欲善其事,必先利其器”,Verilog的学习亦是如此,Vivado、Modelsim和Notepad++就是我们的“利器”...
2020-04-21 09:03:45
838
原创 玩转Zynq连载51——[ex70] RGB2YUV、图像增强、YUV2RGB IP仿真实例
特权同学玩转Zynq连载51——[ex70] RGB2YUV、图像增强、YUV2RGB IP仿真实例1 图像增强IP简介Xilinx的Vivado中集成的图像增强(Image Enhancement)IP可以有效降低图像噪声并增强图像边缘。该IP使用了2D滤波方式,可以在达到更好的图像噪声抑制同时,保留并增强图像边缘。如图所示,对于一个比较经典的图像前端处理,图像增强常常也是一个必不可少的...
2020-03-04 08:28:27
1029
原创 玩转Zynq连载50——[ex69] FIR滤波器IP仿真实例
特权同学玩转Zynq连载50——[ex69] FIR滤波器IP仿真实例1 FIR滤波器简介FIR(Finite Impulse Response)滤波器,即有限脉冲响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有...
2020-03-03 09:07:46
1257
原创 玩转Zynq连载49——[ex68] MT9V034摄像头的图像FFT滤波处理
特权同学玩转Zynq连载49——[ex68] MT9V034摄像头的图像FFT滤波处理1 关于傅里叶变换关于傅里叶变换,这么一个神奇的变换,其基本原理和应用在教科书、网络上漫天飞舞,这里就不赘述了,以免有凑字数的嫌疑。前面的例子我们已经使用Matlab和Vivado的FFT IP核进行了初步的验证,掌握的FFT/IFFT IP核的脾气,那么接下来我们要玩点真的了,基于我们Zstar板采集到的...
2020-03-02 09:33:22
1023
1
原创 玩转Zynq连载48——[ex67] Vivado FFT和IFFT IP核应用实例
特权同学玩转Zynq连载48——[ex67] Vivado FFT和IFFT IP核应用实例1 关于傅里叶变换关于傅里叶变换,这么一个神奇的变换,其基本原理和应用在教科书、网络上漫天飞舞,这里就不赘述了,以免有凑字数的嫌疑。下面我们就Matlab和FPGA两个工具双管齐下,比对Vivado的FFT IP核生成的数据。2 Matlab产生测试数据,绘制cos时域和频域波形使用project...
2020-02-28 11:11:52
2662
2
原创 玩转Zynq连载47——[ex66] MT9V034摄像头的图像直方图均衡处理
特权同学玩转Zynq连载47——[ex66] MT9V034摄像头的图像直方图均衡处理1 系统概述如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频...
2020-02-28 10:48:22
409
原创 玩转Zynq连载47——[ex66] MT9V034摄像头的图像直方图均衡处理
特权同学玩转Zynq连载47——[ex66] MT9V034摄像头的图像直方图均衡处理1 系统概述如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频...
2020-02-27 10:19:16
470
原创 玩转Zynq连载46——[ex65] MT9V034摄像头的图像拉普拉斯边缘提取
特权同学玩转Zynq连载46——[ex65] MT9V034摄像头的图像拉普拉斯边缘提取1 系统概述如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频数...
2020-02-26 12:30:25
306
原创 玩转Zynq连载45——[ex64] MT9V034摄像头的图像拉普拉斯锐化处理
特权同学玩转Zynq连载45——[ex64] MT9V034摄像头的图像拉普拉斯锐化处理1 系统概述如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频数...
2020-02-25 09:35:01
383
原创 玩转Zynq连载44——[ex63] MT9V034摄像头的图像平滑处理
特权同学玩转Zynq连载44——[ex63] MT9V034摄像头的图像平滑处理1 系统概述如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频数据流,F...
2020-02-24 09:31:34
670
原创 玩转Zynq连载43——[ex62] OV5640摄像头的图像拉普拉斯边缘提取
特权同学玩转Zynq连载43——[ex62] OV5640摄像头的图像拉普拉斯边缘提取1 系统概述如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频数据...
2020-02-23 08:44:26
549
1
原创 玩转Zynq连载42——[ex61] OV5640摄像头的图像拉普拉斯锐化处理
特权同学玩转Zynq连载42——[ex61] OV5640摄像头的图像拉普拉斯锐化处理1 系统概述如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频数据...
2020-02-22 09:10:15
757
原创 玩转Zynq连载41——[ex60] OV5640摄像头的图像平滑处理
特权同学玩转Zynq连载41——[ex60] OV5640摄像头的图像平滑处理1 系统概述如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频数据流,FP...
2020-02-22 09:01:42
443
原创 玩转Zynq连载41——[ex60] OV5640摄像头的图像平滑处理
特权同学玩转Zynq连载41——[ex60] OV5640摄像头的图像平滑处理1 系统概述如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频数据流,FP...
2020-02-21 09:49:41
541
原创 玩转Zynq连载40——[ex59] 基于Zynq的双目视觉图像采集显示实例
特权同学玩转Zynq连载40——[ex59] 基于Zynq的双目视觉图像采集显示实例1 CMOS摄像头应用背景与驱动原理CMOS摄像头(CMOS Sensor)是一种采用CMOS图像传感器的摄像头。摄像头主要有两类,CMOS和CCD。CMOS一般应用在普通数码设备中,CCD一般应用在高档数码设备中,它们都是光学成像,但CCD比CMOS单位成像的效果要好。CCD镜头比CMOS的颜色还原更好,并...
2020-02-20 10:40:17
1903
2
原创 玩转Zynq连载39——[ex58] 基于Zynq的XADC采集控制实例
特权同学玩转Zynq连载39——[ex58] 基于Zynq的XADC采集控制实例1 功能概述Xilinx FPGA器件特有的XADC(Xilinx Analog-to-Digital Converter)模块创新性的将模拟信号处理混合到FPGA器件中,便于对板级模拟信号采集、处理以及对板级温度、电源电压的监控。XADC功能如图所示,内部有专门的温度传感器和供电传感器,用于监控FPGA器件本...
2020-02-19 09:31:29
2237
2
原创 玩转Zynq连载38——[ex57] Zynq AXI HP总线带宽测试
特权同学玩转Zynq连载38——[ex57] Zynq AXI HP总线带宽测试1 概述用于PL与DDR3交互的AXI HP总线,它的性能到底如何?吞吐量是否能满足我们的应用?必须4个通道同时使用?还是只使用1个通道?时钟频率的高低对AXI HP总线的带宽有什么影响?这些问题想必是每一个初次使用AXI HP总线的开发者希望评估到的。那么,本实例就搭了一个很基本的架构出来,使用100MHz的A...
2020-02-18 11:03:05
4501
2
原创 玩转Zynq连载37——[ex56] 基于Zynq的AXI HP总线读写实例
特权同学玩转Zynq连载37——[ex56] 基于Zynq的AXI HP总线读写实例1 概述AXI HP总线是Zynq芯片非常重要的一个功能,它可以实现Cortex A9与PL之间大吞吐量的数据通信。可以说,Zynq芯片最大的卖点恐怕就是这条总线。对不起,不是1条,是4条这样的AXI HP总线。PL作为AXI HP主机,可以通过这4条总线实现对内存(DDR3)的读写访问,这4条总线加总的极限...
2020-01-23 10:42:54
5207
2
原创 玩转Zynq连载36——[ex55] 基于VIO在线板级调试的AXI GP总线读写实例
特权同学玩转Zynq连载36——[ex55] 基于VIO在线板级调试的AXI GP总线读写实例1 概述本实例(zstar_ex55)在zstar_ex54的基础上,增加Virtual IO(VIO)实现在线板级调试的功能,意图让大家学会VIO这种基于FPGA的简单实用的在线板级调试手段。2 PL代码中VIO的配置和例化PL工程中,需要将作为开关量控制或状态显示的信号连接到VIO IP核的...
2020-01-22 08:28:11
2346
原创 玩转Zynq连载35——基于Vivado的Virtual IO在线板级调试
特权同学玩转Zynq连载35——基于Vivado的Virtual IO在线板级调试1 概述基于Vivado的板级调试介绍,可以参考文档《玩转Zynq-基础篇:基于Vivado的在线板级调试概述.pdf》。这里我们以zstar_ex55工程为例,对FPGA的Virtual IO(简称VIO)使用进行介绍和实战操练。2 探测阶段识别出VIO的待探测信号如图所示,对于VIO而言,reg_rdt...
2020-01-20 08:33:33
691
原创 玩转Zynq连载34——[ex54] 基于Zynq的AXI GP总线的从机接口设计
特权同学玩转Zynq连载34——[ex54] 基于Zynq的AXI GP总线的从机接口设计1 概述Zynq将ARM和FPGA整合到了一个芯片上,它的过人之处不仅是功耗、面积、成本的优化,更多的是将二者之间原本极为受限的数据交互方式转移到芯片内部完成,4条AXI GP通道(2个从机、2个主机)和4条AXI HP通道(均为从机)能够大大提升系统数据交互带宽,使得软硬协同设计变得更为灵活。AXI ...
2020-01-19 11:38:16
2099
原创 玩转Zynq连载33——基于Vivado的在线逻辑分析仪板级调试
特权同学玩转Zynq连载33——基于Vivado的在线逻辑分析仪板级调试1 概述基于Vivado的板级调试介绍,可以参考文档《玩转Zynq-基础篇:基于Vivado的在线板级调试概述.pdf》。这里我们以zstar_ex54工程为例,对FPGA的在线逻辑分析仪使用进行介绍和实战操练。2 标记探测信号在axi_gp_top.v模块中,可以看到AXI GP总线的很多信号前面都有(mark_d...
2020-01-17 11:19:11
2204
原创 玩转Zynq连载32——SDK在线运行裸跑程序
特权同学玩转Zynq连载32——SDK在线运行裸跑程序1 SDK在线运行裸跑程序以zstar_ex50为例,演示如何将裸跑程序在Zstar板上在线运行起来。点击SDK的菜单Run --> Run Configurations。在弹出的Run Configurations界面中,自动进入Xilinx C/C++ application (System Debugger) -->...
2020-01-16 09:38:48
1160
原创 玩转Zynq连载31——[ex53] 基于Zynq PS的EMIO控制
特权同学玩转Zynq连载31——[ex53] 基于Zynq PS的EMIO控制1 Zynq的GPIO概述参考文档《玩转Zynq-基础篇:Zynq PS的GPIO外设.pdf》。关于EMIO和MIO,这里多啰嗦两句。简单的理解,MIO是PS系统原生的,和PL没啥关系;但是EMIO是PS借PL的引脚用,所以它们就有千丝万缕的关系,PL的工程里面势必要做点什么。MIO在PS系统里面分配好对应的信...
2020-01-15 09:04:33
840
原创 玩转Zynq连载30——[ex52]基于Zynq PS的GPIO控制
特权同学玩转Zynq连载30——[ex52]基于Zynq PS的GPIO控制Zynq的GPIO概述参考文档《玩转Zynq-基础篇:Zynq PS的GPIO外设.pdf》。1 GPIO的PS系统配置打开ZYNQ7 Processing System的配置页面Peripheral I/O Pins,可以看到右侧若勾选GPIO MIO选项,在对应的MIO号若点击变绿,则表示该MIO号将被用于G...
2020-01-13 09:40:09
478
1
原创 玩转Zynq连载29——[ex51] 制作裸跑程序的启动文件BOOT.bin
特权同学玩转Zynq连载29——[ex51] 制作裸跑程序的启动文件BOOT.bin1 概述对于Zynq的裸跑程序加载,比linux的SD卡启动文件制作要简单得多。只需要在FAT32格式化后的SD卡中放置一个BOOT.bin文件即可。如图所示,BOOT.bin中需要包含2~3个文件,对Zynq部分外设初始化并搬运下一阶段代码和配置PL的fsbl.elf文件、PL的配置比特流文件(.bit)...
2020-01-09 10:03:19
1035
1
原创 玩转Zynq连载28——[ex50] 第一个Zynq系统工程“Hello Zynq”
特权同学玩转Zynq连载28——[ex50] 第一个Zynq系统工程“Hello Zynq”1 概述如图所示,Zynq系统的PS部分有丰富的外设接口,常见的USB、UART、SPI、I2C、SDIO、CAN、GPIO、以太网,一应俱全,能够满足大多数的嵌入式应用需求。这么强大的外设系统,是不是有些迫不及待了,不着急,万丈高楼平地起,我们要从最简单的流程跑起,带大家先从工具层面玩转Zynq,再...
2020-01-08 09:23:17
646
原创 玩转Zynq连载27——导出PS硬件配置和新建SDK工程
特权同学玩转Zynq连载27——导出PS硬件配置和新建SDK工程1 概述配置好PS的PL工程,在完成编译后,需要将PS的硬件配置导出,作为SDK的BSP(Board Support Package),然后SDK上可以新建软件工程,编写应用程序,实现Zynq上Cortex A9的开发。本节以zstar_ex50工程为例,演示如何将PL工程的PS硬件配置导出、在SDK新建一个最简单的HelloW...
2020-01-07 09:50:25
887
1
原创 玩转Zynq连载26——Vivado中PL的功能仿真
特权同学玩转Zynq连载26——Vivado中PL的功能仿真1 仿真验证概述仿真测试是FPGA设计流程中必不可少的步骤。尤其在FPGA规模和设计复杂性不断提高的今天,画个简单的原理图或写几行代码直接就可以上板调试的轻松活儿已经一去不复返。一个正规的设计需要花费在验证上的工作量往往可能会占到整个开发流程的70%左右。验证我们通常分为仿真验证和板级验证,在设计初步完成功能甚至即将上板调试前,通过...
2020-01-06 09:54:22
707
原创 玩转Zynq连载25——[ex04] 基于Zynq PL的自定义IP核集成
特权同学玩转Zynq连载25——[ex04] 基于Zynq PL的自定义IP核集成1 概述本实例将zstar_ex03工程中led_controller.v模块作为一个用户自定义IP核,添加到Vivado的IP Catalog中,然后和标准IP核一样,在Vivado工程中配置添加这个IP核。2 用户自定义IP核的创建于封装参考文档《玩转Zynq-工具篇:用户自定义IP核的创建与封装.pd...
2020-01-03 09:58:13
369
原创 玩转Zynq连载24——用户自定义IP核的移植
特权同学玩转Zynq连载24——用户自定义IP核的移植1概述这里我们以led_controller_ip工程所创建的用户自定义LED闪烁IP核为例,来演示如何进行用户自定义IP核的移植。2 拷贝IP文件在project\zstar_ex04文件夹下创建一个新的工程文件夹zstar_ex04,用于存放本实例的应用工程,创建新工程,然后将刚刚制作的IP核所在工程文件夹下(…\project...
2020-01-02 09:46:50
382
原创 玩转Zynq连载23——用户自定义IP核的创建与封装
特权同学玩转Zynq连载23——用户自定义IP核的创建与封装1概述本节以zstar_ex04文件夹下的led_controller_ip工程为例,演示如何创建一个简单的LED闪烁控制模块的IP核。创建一个用户自定义IP核,只需要以下3个步骤即可。2 创建IP核首先我们在文件夹…/project/zstar_ex04/led_controller_ip文件夹下创建一个新的工程,增加一个...
2019-12-31 10:12:47
774
原创 玩转Zynq连载22——[ex03] 基于Zynq PL的PLL配置实例
特权同学玩转Zynq连载22——[ex03] 基于Zynq PL的PLL配置实例1 概述本实例通过PLL产生的不同频率的时钟,分别驱动3个LED指示灯闪烁一样的频率。本实例的重点其实不是LED,而是IP核的应用,当然,仅以PLL IP核为例。2 模块化设计参考文档《玩转Zynq-基础篇:基于FPGA的模块化设计.pdf》。3 PLL IP核添加配置3.1Vivado标准IP核概述我...
2019-12-30 10:30:42
1410
1
原创 玩转Zynq连载21——Vivado中IP核的移植
特权同学玩转Zynq连载21——Vivado中IP核的移植1概述Vivado标准IP核的移植可谓简单至极。简单3步,拷贝IP文件夹到当前工程目录下;在Vivado的IP Sources中,将整个IP文件夹添加进来;在应用工程中例化IP和模块即可。下面以zstar_ex04工程的PLL IP核为例讲解以上3个步骤。2 PLL IP核移植实例如图所示,拷贝需要移植的IP核整个文件夹到目标...
2019-12-27 09:55:27
3564
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人