
FPGA
文章平均质量分 88
Fpga的学习
CV视界
专注于深度学习、计算机视觉和自然语言处理等多个方向技术分享。
展开
-
FPGA-HDMI-图片Sobel滤波显示实验(ZYBO Z7)
前文已经介绍了如何将静态图片进行二值化或者灰度化显示,本节是在此前实验的基础上,对图像进行soble滤波处理,关于数字图像的滤波算法,可参考博客MATLAB-梯度Roberts算子、拉普拉斯算子、Sobel算子、Prewitt算子对图像进行锐化。该文章主要讲述算法构建,编程实现,时序仿真和板级验证四个环节。原创 2022-10-09 15:20:54 · 1515 阅读 · 0 评论 -
牛客网verilog刷题_VL47 格雷码计数器
🏡 博客首页:安静到无声🚧 系列专栏:Verilog学习🎈 嵌入式学习需要大量的练习提高动手能力,在这里给大家强烈推荐一款嵌入式硬件模拟面试、刷题神器——牛客网([,,)原创 2022-10-03 14:04:52 · 2478 阅读 · 0 评论 -
FPGA-HDMI-静态图片(灰度化)显示实验(ZYBO Z7)
本文章是在FPGA-HDMI-彩条显示实验(ZYBO Z7)的基础上,设计的静态图片显示实验,所用的板子仍然为ZYBO Z7,其目的为后期的图像处理实现奠定基础。主要包括图片准备、coe文件转化、verilog代码编写和下载验证等几个步骤。原创 2022-10-02 12:21:55 · 2616 阅读 · 0 评论 -
基于verilog的CNN搭建缓存图片数据浅析
我们采用FPGA的RAM的进行图片(假设图片为5×5,滤波器的大小为3×3)数据缓存,由于图像的数据是按行展开串行送入,但是在进行卷积计算时,我们至少需要同时有3行的数据参与运算,所以需要定义数组为3的window_in和window_out用于RAM中图片缓存的输入与输出。在编写基于verilog的的卷积神经网络实现时,需要定义一个滑窗,并与对应位置的图像像素值相乘再相加,实现单点的卷积运算,具体的操作如图1所示。这时的仿真结果如图3所示,此时,例化的3个RAM的IP时完全相同的。图1 卷积的实现过程。原创 2022-09-27 21:04:17 · 2138 阅读 · 3 评论 -
Vivado简单双端口RAM 使用,问题探析
在采用vivado的ram的进行图片数据的存取过程中,关于读写的时钟周期不太理解,因此撰写此博客用于记录。代码的实现的功能是将5×5的图片数据存入文件中,然后我们按行依次读取送入data_in中,然后再设定一个深度为5的ram用于缓存数据,通过写地址的方式将数据存入指定位置,之后再通过读地址的方式将数据从ram中读出。原创 2022-09-27 14:25:14 · 4527 阅读 · 0 评论 -
verilog牛客网刷题代码汇总
VL2 异步复位的串联T触发器VL2 异步复位的串联T触发器LV3 奇偶校验LV3 奇偶校验VL4 移位运算与乘法VL4 移位运算与乘法LV5 位拆分与运算LV5 位拆分与运算VL6 多功能数据处理器VL6 多功能数据处理器VL7 求两个数的差值VL7 求两个数的差值VL8 使用generate…for语句简化代码VL8 使用generate…for语句简化代码VL9 使用子模块实现三输入数的大小比较VL9 使用子模块实现三输入数的大小比较VL10 使用函数实现数据大小端转原创 2022-08-10 18:25:28 · 4435 阅读 · 6 评论 -
【FPGA】跨时钟域问题(二)(单bit信号跨时钟域 1. 电平同步器 2. 边沿同步器 3. 脉冲检测器)
触发器的建立时间和保持时间在时钟上升沿左右定义了一个时间窗口,如果触发器数据输入端口上的数据在这个时间窗口内发生变化(或者数据更新),那么就会产生时序违规。存在这个时序违规是因为违反了建立时间要求和保持时间要求,此时触发器内部的一个节点(一个内部节点或者要输出到外部节点)可能会在一个电压范围内浮动,无法稳定在逻辑0或者逻辑1状态。换句话说,如果数据在上述窗口中被采集,触发器中的晶体管不能可靠地设置为逻辑0或者逻辑1对应的电平上。...........................原创 2022-08-09 15:55:21 · 7143 阅读 · 1 评论 -
FPGA基本结构
可编程输入/输出单元简称I/0单元,是芯片与外界电路的接口部分。这部分单元完成不同电气特性下对输入/输出信号的驱动与匹配要求。为了便于管理和适应多种电气标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压决定,个bank只能有一种接口电压,但不同bank的接口电压可以不同。只有相同电气标准的端口才能连接在一起,电压标准相同是接口标准的基本条件。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻,还可以调节信号的时延。目前,原创 2022-06-12 10:14:11 · 1602 阅读 · 0 评论 -
FPGA快速入门
第一句话是:还没学数电的先学数电。然后你可以选择verilog或者VHDL,有C语言基础的,建议选择VHDL。因为verilog太像C了,很容易混淆,最后你会发现,你花了大量时间去区分这两种语言,而不是在学习如何使用它。当然,你思维能转得过来,也可以选verilog,毕竟在国内verilog用得比较多。接下来,首先找本实例抄代码。抄代码的意义在于熟悉语法规则和编译器(这里的编译器是硅编译器又叫综合器,常用的编译器有:Quartus、ISE、Vivado、Design Compiler 、Synopsys的V转载 2022-06-11 14:56:08 · 12543 阅读 · 4 评论 -
跟Xilinx SAE 学HLS系列视频讲座笔记(6)—— 函数优化
本节主要介绍的是《跟Xilinx SAE 学HLS系列视频讲座》第20,21,22节。跟Xilinx SAE 学HLS系列视频讲座笔记(1)跟Xilinx SAE 学HLS系列视频讲座笔记(2)—— 编写高效的C Test Bench跟Xilinx SAE 学HLS系列视频讲座笔记(3)—— 接口综合跟Xilinx SAE 学HLS系列视频讲座笔记(4)—— For循环优化跟Xilinx SAE 学HLS系列视频讲座笔记(5)—— 数组优化1. 函数层面的优化从函数这个角度来说代码风格,主.原创 2020-10-06 09:54:50 · 491 阅读 · 0 评论 -
跟Xilinx SAE 学HLS系列视频讲座笔记(5)—— 数组优化
第一讲 数组分割resource指令可以显式指定使用哪种类型的RAM,并因此指定创建哪些RAM端口(单端口或双端口)。如果未指定资源,则Vivado HLS使用:默认情况下为单端口RAM双端口RAM(如果它缩短了启动间隔或减少了延迟)综合后,通常将数组实现为memory(RAM,ROM或FIFO)顶层功能接口上的阵列被综合为可访问外部存储器的RTL端口。根据优化设置,将设计内部的数组综合到内部Block RAM,LUTRAM,UltraRAM或寄存器。...原创 2020-10-06 00:18:32 · 556 阅读 · 0 评论 -
跟Xilinx SAE 学HLS系列视频讲座笔记(4)——For循环优化
目录第一讲 For循环优化的性能指标第二讲 for循环优化-循环合并第三讲 for循环优化-数据流第四讲 嵌套for循环优化第五讲 for循环优化其他方法本节主要介绍的是《跟Xilinx SAE 学HLS系列视频讲座》第16,17,18,19,20节。跟Xilinx SAE 学HLS系列视频讲座笔记(1)跟Xilinx SAE 学HLS系列视频讲座笔记(2)——编写高效的C Test Bench跟Xilinx SAE 学HLS系列视频讲座笔记(3)——接口综合跟Xilinx SAE 学HLS系列原创 2020-10-05 18:04:55 · 917 阅读 · 0 评论 -
跟Xilinx SAE 学HLS系列视频讲座笔记(3)—— 接口综合
目录第一讲 接口综合的基本介绍第二讲 接口综合—对数组的处理第三讲 接口综合—其他案例演示本节主要介绍的是《跟Xilinx SAE 学HLS系列视频讲座》第10,11,12节。跟Xilinx SAE 学HLS系列视频讲座笔记(1)[跟Xilinx SAE 学HLS系列视频讲座笔记(2)——编写高效的C Test Bench](https://blog.csdn.net/lihuanyu520/article/details/108880641第一讲 接口综合的基本介绍1. Interface原创 2020-10-04 15:02:44 · 1040 阅读 · 0 评论 -
跟Xilinx SAE 学HLS系列视频讲座笔记(2)——编写高效的C Test Bench
test bench或testing workbench是一个(通常是虚拟的)环境,用于验证设计或模型的正确性或合理性。对于Vivado HLS而言,我们需要用c++来描述一个Test batch用来验证这个模型和设计的合理性。使用C Test batch目的是为了验证我们C函数的准确性,此外采用 C Test batch可以提高我们的效率,因为在仿真过程中,C比DHL等硬件描述语言更快,即在综合之前使用C开发和验证算法比在RTL开发更有效。原创 2020-10-03 23:43:22 · 542 阅读 · 1 评论 -
跟Xilinx SAE 学HLS系列视频讲座笔记(1)——基础
第一讲HLS高层次语言开发,高层次语言可以提高生产力,(时序和并行性)时序设计比较困难,并行性实际是vhdl的硬件语言,我们采用c或者c+z主要关心的是算法,对于软件工程师可以提高性能,我们可以通过fpga实现,可以提高性能,改善功能,在c或者c+在这个层面进行开发。我们做好c和c++算法之后,也还需要有一个测试文本(用c或c++)用于验证。符合我们期望的要求。所以hls生成的hdl的代码,不是让我们看懂的,也不是让我们看的(可读行不高)。所以我们主要是对c或者c++进行优化。vivado将c–>原创 2020-09-30 09:40:21 · 1255 阅读 · 0 评论