跳转到主要内容

技术

基于FPGA硬件的网络设计

一般基于FPGA的网络加速设计都会强调模型被压缩了多少以及FPGA上可以跑得多快,却很少集中于去改善精度。

Python 中 -m 的典型用法、原理解析与发展演变

本文想要聊聊比较特殊的“-m”选项:关于它的典型用法、原理解析与发展演变的过程。

详解普通时序系统数据传输过程

所谓普通时序系统(共同时钟系统)就是指驱动端和接收端的同步时钟信号都是由一个系统时钟发生器提供。

Xilinx RAM IP核的使用

RAM和ROM也是类似的,由于这也是常用的IP核,所有完全有必要在这里记录一下,以后用到了实际后,再补充到实际工程中。随机存储器(RAM),它可以随时从任一指定地址读出数据,也可以随时把数据写入任何指定的存储单元,且读写的速度与存储单元在存储芯片的位置无关。

如何写出时序收敛的代码

硬件描述语言(verilog,systemVerilog,VHDL等)不同于软件语言(C,C++等)的一点就是,代码对应于硬件实现,不同的代码风格影响硬件的实现效果。好的代码风格能让硬件“跑得更快”,而一个坏的代码风格则给后续时序收敛造成很大负担。

FPGA供电分析

FPGA是一种多电源需求的芯片,主要有3种电源需求:VCCINT,VCCA,VCCD_PLL......

FPGA 时钟分频

时钟信号的处理是FPGA的特色之一,因此分频器也是FPGA设计中使用频率非常高的基本设计之一。一般在FPGA中都有集成的锁相环可以实现各种时钟的分频和倍频设计,但是通过语言设计进行时钟分频是最基本的训练,在对时钟要求不高的设计时也能节省锁相环资源。

【驱动初发】一个简单到不能再简单的块设备驱动

像IIC、LED、KEY等都属于字符设备,这些设备的驱动是所有驱动类型中最为简单的。块设备是另外一种不同于字符设备的类型,这两类设备在linux的驱动结构中有很大差异。总体来说,块设备驱动比字符设备驱动复杂的多,在IO操作上也表现出很大的不同。

FPGA中亚稳态——让你无处可逃

在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。

【驱动初发】如何在zynq上做个按键驱动

随着深度学习和5G的应用,对FPGA的功能要求越来越多。因此近几年FPGA大厂纷纷将自己的器件集成了更多的内核,比如赛灵思的zynq系列就集成了arm,GPU,PCIE,射频处理模块等等,用于满足各种各样的需求。

Python 依赖库管理哪家强?pip、pipreqs、pigar、pip-tools、pipdeptree 任君挑选

在 Python 的项目中,如何管理所用的全部依赖库呢?最主流的做法是维护一份“requirements.txt”,记录下依赖库的名字及其版本号。那么,如何来生成这份文件呢?

zynq中一个中断程序分析

本文通过分析一个中断例程来了解zynq中断执行过程

verilog的时钟分频与时钟使能

时钟使能电路是同步设计的基本电路。在很多设计中,虽然内部不同模块的处理速度不同,但由于这些时钟是同源的,可以将它们转化为单一时钟处理。

解决跨时钟域问题的三大方法

在本篇文章中,主要介绍3种跨时钟域处理的方法,这3种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了单bit和多bit数据的跨时钟域处理,学会这3招之后,对于FPGA相关的跨时钟域数据处理便可以手到擒来。

【网络压缩六】深度压缩

这篇论文来自作者韩松,是一篇经典的网络压缩论文,获得了ICLR2016最佳论文。它主要结合了剪枝,量化和霍夫曼编码的方法,将卷积神经网络的权重大大的压缩了,而且用于FPGA的部署。

【网络压缩五】降维分解

在上一篇介绍了如何将高维度卷积核拆分成低维度小卷积核,从而降低计算量的方法。本篇介绍的也是采用了降维的思想来加速网络推理,但是数学上采用了不同的方法。而且这篇文章提出的方法可以加速深度网络,其在vgg-16上进行了实验,获得了4倍的加速效果,而在imageNet分类中top-5错误率仅有0.3%升高。

由浅入深:Python 中如何实现自动导入缺失的库?

在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No module named 'xxx'或者ModuleNotFoundError: No module named 'xxx'。

VerilogHDL可综合设计的注意事项

组合逻辑可以得到两种常用的RTL 级描述方式。第一种是always 模块的触发事件为电平敏感信号列表;第二种就是用assign 关键字描述的数据流赋值语句。

为什么range不是迭代器?range到底是什么类型?

迭代器是 23 种设计模式中最常用的一种(之一),在 Python 中随处可见它的身影,我们经常用到它,但是却不一定意识到它的存在。在关于迭代器的系列文章中,我至少提到了 23 种生成迭代器的方法。有些方法是专门用于生成迭代器的,还有一些方法则是为了解决别的问题而“暗中”使用到迭代器。

【重磅干货】手把手教你动态编辑Xilinx FPGA内LUT内容

FPGA是实现高性能计算与网络的重要工具,得益于其高度的并行性与用户可编程的特性,FPGA得到了越来越广泛的应用。FPGA由CLB、BRAM、DSP48E1、可编程布线资源、可编程IO资源等部分组成,其中,CLB是实现逻辑功能的基础