自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(322)
  • 资源 (8)
  • 收藏
  • 关注

原创 基于FPGA的Yolov4 tiny目标检测网络加速器

简介之前实现了基于FPGA的Winograd CNN加速器(VGG16)和基于FPGA的MobileNet v2加速器,但这两个算法在本质上区别不大:一个是VGG16,另一个是轻量级的MobileNet v2,所实现的功能都是图像分类。因此,为了尝试更多的应用,本文在FPGA上实现了一个目标检测网络----Yolov4 tiny。yolo4 tiny的结构是YOLOv4的精简版,属于轻量化模型,参数只有600万相当于原来的十分之一,这类网络不仅能实现对图像的分类任务,还可以找出目标的位置,因此,更加贴近实

2022-02-27 16:47:54 26121 61

原创 CUDA编程---线程束洗牌指令

从Kepler系列的GPU(计算能力为3.0或更高)开始,(shuffle instruction)作为一种机制被加入其中,只要两个线程在相同的线程束中,那么就允许这两个线程直接读取另一个线程的寄存器。。洗牌指令比共享内存有更低的延迟,并且该指令在执行数据交换时不消耗额外的内存。因此,洗牌指令为应用程序快速交换线程束中线程间的数据提供了一个有吸引力的方法。

2024-04-18 22:22:35 905

原创 CUDA编程---全局内存

既可以表明标量也可以表示数组。+只在计算能力2.x的设备上进行缓存。

2024-04-14 09:35:10 839

原创 CUDA执行模型

GPU架构是围绕一个流式多处理器(SM)的可扩展阵列搭建的。可以通过复制这种架构的构建块来实现GPU的硬件并行。CUDA核心共享内存/一级缓存寄存器文件加载/存储单元特殊功能单元线程束调度器GPU中的每一个SM都能支持数百个线程并发执行,每个GPU通常有多个SM,所以在一个GPU上并发执行数千个线程是有可能的。当启动一个内核网格时,它的线程块被分布在了可用的SM上来执行。线程块一旦被调度到一个SM上,其中的线程只会在那个指定的SM上并发执行。

2024-04-09 23:46:58 880

原创 CUDA编程模型

是NVIDIA(英伟达)提出的并行计算架构,结合了CPU和GPU的优点,主要用来处理密集型及并行计算。CPU和GPU是两个独立的处理器,通过单个计算节点中的PCI-Express总线相连,GPU用来提高计算密集型应用程序中并行程序段的执行速度,CPU则负责管理设备端的资源。CUDA编程的独特优势在于开放的架构特性可以使程序员在功能强大的硬件平台上充分挖掘其并行性,既满足了计算密集型程序的需要,又实现了程序的易读性及便捷性。

2024-04-09 23:09:16 983

原创 git合并多次提交

Git是一个分布式版本控制系统,它允许开发人员在不同的分支上进行并行开发,并将这些分支合并到主分支或其他分支中。在开发过程中,我们经常会创建多个commit来记录每次的代码变更。有时候我们希望将这些连续的commit合并为一个更有意义的commit,以提高代码的可读性和维护性。

2024-03-02 22:45:06 555

原创 【数字IC设计】Verilog计算x/255的商和余数

已知x是16位无符号整数,求x除以255的余数和商。尽量降低实现方式的硬件开销(包括面积和时序)

2023-12-23 19:14:12 654

原创 【数字IC设计/FPGA】FIFO与流控机制

简单来说就是控制数据流停止发送。常见的流控机制分为带内流控和带外流控。

2023-10-21 18:35:07 911

原创 Git Cherry Pick的使用

其中,<commit>是要应用的提交的哈希值或分支名。该命令会将指定的提交应用到当前分支上,并创建一个新的提交。

2023-10-16 22:53:57 520

原创 【数字IC设计】VCS门级网表仿真

本文参考自。除了RTL仿真以外,在IC设计过程中还会进行门级网表的仿真。当设计代码功能仿真通过之后,我们便使用Design Compiler工具对其进行逻辑综合,将RTL代码转化为由与、或、非等门电路和触发器组成的电路,称为门级网表(netlist)。门级网表中包含了电路的实际信息,例如逻辑门单元的扇入扇出系数,延迟等等。对门级网表进行仿真可以发现由于引入这些实际信息所暴露出的错误,因此是必要的。本文以一个alu设计为例,演示门级网表仿真的流程。

2023-10-15 18:52:01 1408 1

原创 【数字IC设计】利用Design Compiler评估动态功耗

switching power中,clock_network在未开启门控时钟时为0,开启后为9.4489e-3,而register和combinational在未开启门控时钟时为7.0319e-04和2.7926e-03,开启后为4.8827e-04和3.3902e-04。这符合我们的预期,因为en为1的概率越高,counter计数器翻转次数越多,从而动态功耗越大。由于是动态功耗,因此其值与信号翻转的次数相关,因此,我们改变en信号为高的概率(后,可以得到saif文件。可以看到,此时动态功耗为。

2023-10-14 22:41:00 528

原创 【数字IC设计】DC自动添加门控时钟

数字电路的工作动态功耗主要是由于带来的,为了降低芯片内部功耗,的方案应用而生。作为低功耗设计的一种方法,门控时钟是指。在下图中,展示了加入门控时钟前后电路的变化,由图可知,采取门控时钟技术后,。因此,插入门控时钟并不总是能带来面积上的收益,需要综合数据位宽来考虑。这里的决定因素就是D的,若D的位宽很小,那么可能插入的CG面积比原来的MUX大很多,而且节省的功耗又很少,得不偿失。只有当D的位宽超过了一定的bit数后,插入CG的收益才会比较大。关于这个临界值,不同的工艺可能不同,但是。

2023-10-14 10:59:03 809

原创 【数字IC/FPGA】基于握手的数据广播

本文介绍了一种基于握手协议的数据广播方式。事实上,该场景可以简化为模块的一对多握手,并且下游的各个模块可以独立的完成握手(与之相对的是下游模块一起完成握手,相比之下,下游各个模块可以独立完成握手显然更加普适、灵活)。

2023-09-23 11:11:37 290

原创 Verdi实现信号的平移

在Verilog/System verilog中,可以实现延迟指定时间的功能,而在使用verdi查看信号波形并进行分析时,同样也可以实现类似的功能。:这种信号平移是有其应用场景的,例如,在某些仿真模型中,为了模拟实际的信号延迟,信号的实际跳变沿往往和时钟的上升沿不是完全对齐的,而是存在一定时间的错开,这样,在将该信号与clk相与时,就会出现毛刺,从而干扰后续的分析)下面,以时钟信号clk为例,展示verdi对信号进行的实现方法。

2023-09-16 10:45:31 1316

原创 【数字IC/FPGA】Verilog中的force和release

可以看到,第200-400ns,加法器实际的输入a和b被固定为33和66,其值不再与testbench中的a, b绑定。另外,图中的紫色三角形分别表示该信号被force和release的时刻,被force强制指定的值,在显示的时候,前面会有一个^符号,例如上图中的^如上所示,正常情况下,u_adder模块的a和b端口由testbench中的a和b信号驱动,然而,在时间为200ns处,u_adder模块的输入u_adder.a和u_adder.b被强制固定为33和66,如下代码所示。在Verilog中,将。

2023-09-09 14:49:44 1897

原创 【数字IC/FPGA】Verilog中的递归调用

在Verilog2001中,模块的是可能的,引用下面的一段话(出自上面的参考文章)下面,我们将以和两个例子为例,说明模块递归调用在设计电路时的用法。

2023-09-09 11:44:09 627

原创 Xilinx AXI VIP使用教程

Xilinx提供了用于验证AXI相关设计的AXI VIP(AXI Verification IP),它可以对自己设计的AXI接口模块进行全方位的验证(如使用VIP的Master、Passthrough、Slave三种模式对自己写的AXI接口进行仿真验证),提前规避和发现一些不满足AXI总线规范的设计问题。本文以Master AXI VIP为例,介绍其使用方法。

2023-08-20 10:57:27 741

原创 约束综合中的逻辑互斥时钟(Logically Exclusive Clocks)

逻辑互斥时钟是指设计中活跃(activate)但不彼此影响的时钟。常见的情况是,两个时钟作为一个多路选择器的输入,并根据sel信号决定哪一个时钟被激活。一个处理逻辑互斥时钟的重要指导思想就是逻辑互斥时钟不应该在mux以外的地方发生交互。如上图所示,设计中共有两个时钟,分别是CLKA和CLKB,两个时钟是多路选择的,某一时刻,只有一个时钟对电路起作用。一种约束的方法是使用约束,即假定SEL恒为0或者1,然后进行时序分析。flop-1发起时钟flop-2捕获时钟CLKACLKACLKBCLKA。

2023-08-13 19:12:37 697

原创 【数字IC设计】VCS仿真DesignWare IP

DesignWare是SoC/ASIC设计者最钟爱的设计IP库和验证IP库。它包括一个独立于工艺的、经验证的、可综合的虚拟微架构的元件集合,包括逻辑、算术、存储和专用元件系列,超过140个模块。DesignWare和 Design Compiler的结合可以极大地改进综合的结果,并缩短设计周期。

2023-07-30 15:17:00 2933

原创 fwft fifo和standard fifo

排除上面两种情况,若此时rd_en信号有效,为了在下一个周期将下一个数据送到fifo的读端口,需要直接读取rd_addr+1处的数据。,即rd_en信号有效且fifo非空时,数据会在下一个周期出现在fifo的读数据端口。而后者,即fwft fifo的。然而,这种组合逻辑输出的方式对时序并不友好,因此,本文给出了更加时序友好的fwft fifo实现方式。,也就是说,rd_en信号有效的当拍,数据就会出现在读端口上。实现fwft模式同步fifo的一个简单方法就是将。fifo共有两种,分别是。

2023-07-29 21:26:50 1544

原创 Verdi分析有限状态机

该图给出了状态机的整体信息,包括输入、输出信号,时钟信号的名称及其极性,复位条件以及状态信号、初始状态和状态表。按住shift,选中S1, S11和S110三个状态,然后点击Tools–>Partial FSM。最后,点击FSM,选中State Animation,然后点击Analysis Report…为了简单起见,我们以一个序列检测器为例,介绍nState的使用过程。栏则给出了每一个状态在仿真中出现的次数。此时,会显示所勾选的三项的相关信息,如下图所示。用于有限状态机(FSM)。方框中的状态机,得到。

2023-07-15 14:30:00 1302

原创 VCS和Verdi联合仿真的Makefile脚本编写

命令生成filelist.f,该文件记录了所有参与仿真的RTL文件的路径,在上面的makefile脚本中,我们可以通过。makefile脚本编写如上图所示。则用于调用verdi工具显示波形,最后,命令用于对过程中所产生的文件进行清楚。是必要的,否则会报错,具体可参见文章。make verdi并添加波形。命令用于编译RTL代码,

2023-07-13 13:45:00 972

原创 onnxruntime推理

这里以pytorch平台和mobilenet v2网络为例,给出模型的训练过程。

2023-06-21 13:45:00 684

原创 握手信号的打拍

在数字电路的设计中,对关键路径的处理方法之一就是,然而,对握手信号插入寄存器则需要进行特殊的处理,否则可能导致数据传输的错乱,严重影响电路的功能。如图所示,为了阐述对握手信号打拍的处理方式,我们给出了下图所示的简化模型,其中,上游的握手信号包括和,而下游的握手信号则包括和,其数据流向如图中箭头所示。

2023-06-17 21:22:54 1496

原创 基于FPGA的VGG16卷积神经网络加速器

VGG在2014年由牛津大学Visual GeometryGroup提出,获得该年lmageNet竞赛中Localization Task(定位任务)第一名和 Classification Task (分类任务)第二名。与AlexNet相比,VGG使用了3个3x3卷积核来代替7x7卷积核,使用了2个3x3卷积核来代替5x5卷积核,从而在保证具有相同感知野的条件下,提升了网络的深度,在一定程度上提升了神经网络的效果。

2023-05-12 10:21:25 4068 1

原创 频域抽取FFT(DIF-FFT)的C语言实现

此处以基2频域抽取FFT为例,讲述频域抽取FFT的原理。假设FFT的长度为N2m,我们将序列xXkn0∑N/2−1​xnWNnk​nN/2∑N−1​xnWNnk​nnN/2Xkn0∑N/2−1​xnWNnk​n0∑N/2−1​xnN/2WNknN/2​由于WNknN/2​WNkn​⋅WNN/2​−WNnk​Xk。

2023-04-23 13:28:15 1384

原创 Latex参考文献引用

使用\bibitem格式。该方法不能将参考文献直接放在.bib文件中引用,而是将\bibitem{}命令(花括号里写正式的引文)写在论文的.tex文件中。

2023-03-02 10:15:59 3639

原创 UVM仿真环境搭建

本实验使用环境为:Win10平台下的Modelsim SE-64 2019.2。

2023-02-25 20:30:30 2833 1

原创 【visio使用技巧】图片导出pdf时去掉多余空白

在visio导出pdf格式的图片时,往往会存在多余的白边,本文讲述如何去掉这些多余的空白

2023-02-12 21:55:19 7838 1

原创 【数字IC/FPGA】百度昆仑芯手撕代码--累加器

已知一个加法器IP,其功能是计算两个数的和,但这个和延迟两个周期才会输出。现在有一串连续的数据输入,每个周期都不间断,试问最少需要例化几个上述的加法器IP,才可以实现累加的功能。

2023-02-11 13:45:00 1421 1

原创 【数字IC/FPGA】小数分频

由于Verilog只能在时钟的上升沿或者下降沿改变电路的状态,因此精确的小数分频是无法通过Verilog实现的,我们只能实现的小数分频,即某段时间内,该时钟的周期平均为TT为小数)。我们以8.6分频为例,来阐述小数分频的实现方法。T8.6对应于MN(即M8N6),另一方面,T也可以表示为TMabb​将M通分至分母ab,则TMaM1bab这里我们发现组成小数分频使用了a个M分频和b个M1分频的整数分频电路。上述方法被称作”

2023-02-06 23:09:01 1863

原创 Cache的PLRU替换策略及RTL实现

LRU(Least Recently Used)替换策略是cache的经典替换策略之一,然而,LRU替换策略的硬件开销较大。因此,一些现代处理器,例如Intel 486和PowerPC,它们使用的cache替换策略是PLRU(pseudo-LRU)。PLRU是LRU的一种近似方法,本文介绍PLRU中的tree-PLRU(tree-based pseudo-LRU)。

2023-02-01 22:16:42 2856

原创 Verilog实现超前进位加法器

超前进位加法器

2023-02-01 12:03:38 2034

原创 visio画网格(包括平行四边形)

visio画网格示例。

2022-12-21 19:15:07 5138 2

原创 【数字IC设计】Design Compiler入门

本博客演示DC综合的流程,适合小白入门。

2022-12-12 20:08:16 2985

原创 vivado tcl开发流程

本文以简单的led灯为例,阐述基于tcl的Vivado开发流程。

2022-12-12 16:13:20 1838 2

原创 锁存器和触发器

大多数数字系统中,除了需要具有逻辑运算和算术运算功能的组合逻辑电路外,还需要具有存储功能的电路。组合电路与存储电路结合构成时序逻辑电路,简称。本文将讨论实现存储功能的两种逻辑单元电路∶和,着重讨论其工作原理与电路结构,以及所实现的不同逻辑功能。

2022-12-11 16:25:35 1446

原创 System Verilog断言

断言通常被称为序列监视器或者序列检验器,是对设计应当如何执行特定行为的描述,是一种嵌入设计检查。如果检查的属性(property)不是我们期望的表现,那么在我们期望事件序列的故障上会产生警告或者错误提示。断言用来检查模拟序列行为或者激励生成的正确性,断言作为功能验证的一种重要手段,可以脱离测试用例而覆盖测试点,所以断言覆盖率可以是功能覆盖率的一部分,完善的断言能为全面的功能覆盖率尺度打下良好的基础。断言两个重要的时间点:采样时刻和匹配时刻,断言在 preponed 域采样,在observed 域执行检查

2022-12-06 10:38:21 2499 1

原创 AXI VDMA回环测试

vdma回环测试该硬件系统的数据流向为:DDR–>AXI VDMA–>AXI DATA FIFO–>AXI VDMA–>DDR即将一幅图像由一段地址空间搬运至另一段地址空间。其中,AXI VDMA配置如下:地址位宽32,缓存3帧,读写通道的配置如上图所示。写通道Fsync Options选择s2mm tuser,读通道选择None,即保持默认。AXI4-Stream DATA FIFO配置如下:此外,为了更直观地感受整个数据传输过程,我们还在硬件系统中加入了ILA,以实时抓

2022-12-05 20:04:02 2351 4

原创 xilinx hls实现sobel检测

hls实现sobel边缘检测

2022-12-05 13:02:42 1054

基于HLS的全流水FFT代码

1. 支持4,8,16点FFT运算 2. 采用蝶形运算单元,以全流水的方式运行 3. 基于Xilinx HLS语言开发

2023-02-09

纯c++实现对bmp图片的sobel边缘检测

纯c++实现对bmp图片的sobel边缘检测

2022-12-02

FIR滤波器的Verilog实现

FIR滤波器的Verilog实现

2022-07-13

基于FPGA的HLS CNN加速器

一个HLS设计的卷积神经网络加速器,并在zynq7020开发板上部署成功。数据集采用的是MNIST手写体,加速的网络为一个拥有4层卷积,2层池化和1层全连接层的自定义小网络,适合初学者学习。

2022-03-26

Win7 上安装 synopsys 工具

用于安装FPGA开发的Synplify,其综合速度优于vivado和quartus自带的综合器,可以大大加速FPGA开发速度

2021-02-05

pingpang_block_mm.rar

基于system verilog的矩阵乘法代码 ,进行了分块计算,并且对块矩阵的载入和写回进行了乒乓操作,大大掩盖了数据传输时间,且代码中的乒乓操作写法具有通用性,可供借鉴。

2020-11-18

动态分支预测MIPS.rar

用verilog实现的五级流水线CPU,通过旁路技术解决了数据冒险,通过BTB动态分支预测来解决控制冒险

2020-09-13

tt.py,一个轻量级卷积神经网络,基于numpy

本程序基于numpy,自己动手实现了一个简单的卷积神经网络,共两个卷积层,两个池化层以及两个全连接层,并达到了97%的准确率

2020-03-17

i2c_eeprom.rar

在fpga平台上用verilog通过iic总线实现对eeprom的读写

2019-11-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除