跳转到主要内容

博客

FPGA实践教程(一)用HLS将c程序生成IPcore

本文档重点探讨vivado HLS软件的使用,描述如何将相应的c程序用HLS转换为硬件可以实现的IPcore。

verilog中SRL16E的使用方法与接口说明

FPGA开发过程中是免不了要用到移位寄存器的,传统的移位寄存器是通过寄存器(或者叫触发器)实现的,占用的是FPGA内部的逻辑资源,当要移位的次数过多时,自然会耗费更多资源。但是如果用LUT(look up table)查找表实现的话就很轻松了

System Generator从入门到放弃(九)-利用Vivado HLS block实现Vivado HLS调用C/C++代码

ug948中提供的官方例程为图像的中值滤波,该设计将一副256*256大小的RGB图像,添加噪声后提取出其中的Y通道,使用C++语言完成中值滤波。该设计将在Simulink环境下进行仿真。本次设计的流程是利用Vivado HLS建立C/C++代码,Export RTL–>System Generator–>Vivado。

Vivado使用技巧(25):Block Synthesis技术

本文将介绍Vivado提供的块级综合流程(Block Synthesis Flow),允许设计者将某些全局设置和策略应用于特定的层次结构中,且可以与设计中的其它模块不同。

ZynqNet解析(四)FPGA端程序解析

背景:ZynqNet能在xilinx的FPGA上实现deep compression的网络,FPGA端程序运用传入每层数据运算后存在DRAM上。

目的:读懂ZynqNet的FPGA端的代码。

FPGA端代码经过HLS高层次综合为硬件语言实现在FPGA上。为fpga_top.cpp与fpga_top.hpp

程序包括:
fpga_top
gpool_cache
image_cache
weights_cache
output_cache
processing_element
memory_controller
(数据定义中fpga_top.hpp需要包含了network.hpp与netconfig.hpp)

Vivado中coe与mif的区别与联系

前几天折腾zynq下bram作为rom使用,初始化rom时需要用到.coe文件,但在vivado中“generate output products”后,还会生成.mif文件,下面看一下两个文件的内容。

关于Vivado2017.4的IFFT的IP核仿真总结【转载】

要做无线通信,必定会接触到傅里叶变换,要做傅里叶变换肯定会接触到IFFT变换,它将傅里叶变换的乘法和加法次数极大的缩减,而且在xilinx的IP中有关于IFFT的核,直接调用它可以缩短开发流程。下面开始讲解vivado关于IFFT的IP核运用步骤:

System Generator从入门到放弃(八)-使用多时钟域实现多速率系统设计

多速率的概念是相对于单速率(Single Rate)信号处理而言的。单速率是指整个信号处理流程中只有一种数据速率;多速率是指系统中存在多个数据速率。使用多速率信号处理可以节省存储空间、减少通信数据量、减少运算量、减轻设计难度

ZynqNet解析(三)CPU端程序解析

ZynqNet能在xilinx的FPGA上实现deep compression的网络。目的:读懂ZynqNetCPU端的代码。

Vivado使用技巧(24):HDL/XDC中设置综合属性

Vivado综合工具支持直接在RTL文件或XDC文件中设置综合属性。如果Vivado识别出设置的属性,会创建与之相关的逻辑电路;如果不能识别设置的属性,会将该属性和值存放在生成的网表中。因为某些属性,比如LOC约束适用于布线过程,因此必须保留该属性配置情况

Vivado 调用HLS生成的IP核【转】

在HLS中使用帧间差分法生成了IP核,这里讲述如何在vivado中调用IP core

UltraZed-EG PCIe Carrier Card 开发纪录: Hello Cortex-A53

在这篇文章中,我们将让这块开发板的 Cortex-A53 透过 AXIO_GPIO 模块,点亮板子上的 LED 灯,并且透过 ps_uart0 输出一些讯息。

UltraZed-EG PCIe Carrier Card 开发纪录: Hello Cortex-R5

在这篇文章,我们要讲的则是如何透过 AXI_GPIO 来处理 输入 的控制,并让 Cortex-R5 根据不同的输入,在 ps_uart1 输出不同的讯息,以及控制不同的 LED 亮暗。

关于Vivado License问题的解决

此文章是我在生成IP Core以后,进行网络搭建时出现的License问题的解决方案,在这里跟大家分享一下,希望对大家又所帮助。

ZynqNet解析(二)运行与调试

背景:ZynqNet能在xilinx的FPGA上实现deep compression

目的:运行zynqNet的代码。

源码地址:https://github.com/dgschwend/zynqnet

项目程序架构,针对我们的项目,我们需要看懂相应的HLS程序和ARM端的程序。

ARM端的程序以_FIRMWARE为准;FPGA端程序以HLS为准。

1. _TRAINED_MODEL
这部分为训练好的caffe模型与预训练的权重。

Zedboard学习(八):zedboard移植opencv

首先要说明的是,往zedboard上移植opencv跟我们平时在pc上安装opencv的过程不同。毕竟zedboard是嵌入式平台很多东西都要删减,而且zedboard官方移植的linux不带图形界面,我们要自己在命令行下配置环境

FPGA基础知识(一)UG998相关硬件知识

本文是我在学习FPGA时学到的相关知识与总结,希望可以帮助同行理解和掌握相关的FPGA知识。可以将本文档当作相应FPGA教程文档UG998的辅助文档学习。

Xilinx原版教程文档参见XilinxDocumentation navigator 中对应UG998:Introduction to FPGA Design with Vivado High-Level Synthesis

Vivado SDK添加函数

在viado SDK的程序开发中会出现以下的问题

出现问题的原因可能是

没有添加对应的头文件
<img src="http://xilinx.eetrend.com/files/2019-01/%E5%8D%9A%E5%AE%A2/100017441-58…; alt="">

解决办法:添加对应的头文件 如上图:添加#include”stdlib.h”

ZynqNet解析(一)概览

背景:ZynqNet能在xilinx的FPGA上实现deep compression。

目的:读懂zynqNet的代码和论文。

<strong>一、网络所需的运算与存储</strong>

1.1 运算操作:
<li>macc:multiply-accumulation,</li>
<li>comp:comparison</li>
<li>add: addition/substraction</li>
<li>div:  division</li>
<li>exp:  expontential</li>

System Generator从入门到放弃(七)——不同溢出与量化方式的对比

在介绍Gateway In block时谈到了System Generator中的数据类型,及不同的量化和溢出方式。本文将以两个简单的设计实例,更直观地说明不同的量化和溢出方式有什么区别。