【读书笔记】高级FPGA设计之高速率结构设计

news2024/9/21 20:40:08

目录

写在前面

1. 概念介绍

2. 高速度结构设计

2.1 高流量

2.2 低延时

2.3 优时序

2.3.1 组合逻辑插寄存器

2.3.2 并行结构

2.3.3 展平逻辑结构

2.3.4 寄存器平衡

2.3.5 重新安排路径

3. 总结


写在前面

本博客为阅读书籍《高级FPGA设计》的部分读书笔记,主要侧重于前几章的内容。

1. 概念介绍

在进行 Verilog 设计中,一般会考虑三个基本参数:速度、面积、功耗

  • 速度:即设计的系统尽可能支持更大的时钟频率。
  • 面积:即设计的系统面积越小,也就是使用的资源越少。
  • 功耗:即设计的系统运行功耗尽可能的低。

在设计中,这三个参量不可能完全顾及到,这时候就需要根据实际的设计需求进行合理的变换,达到一个合理的平衡。比如常见的有:面积换速度,速度换面积等。

2. 高速度结构设计

在高速度的设计中,同样有是三个指标:流量(throughout)、延时(latency)、时序(timing)。

  • 流量:即在单位时间内可处理的数据量,这个数据量用位宽表示。
  • 延时:即数据输入与数据输出之间的时间,数据处理的时间。
  • 时序:即建立时间余量和保持时间余量的,越大表示时序越好。

2.1 高流量

举个例子,在一个设计中,完成一次计算操作需要花费3个时钟周期,当前计算完成后再进行下一次的计算的操作,这样持续进行。这样的设计存在问题就是数据处理过慢,当完全处理一个时间再去处理下一个事件,这样就大大拉长了处理时间。使用流水线设计可以加快处理速度,就像工厂中的流水线一样,完成一件物品的组装需要3个步骤,如果让一个员工完成,需要三个周期,而流水线的操作就可以使用三个员工,每个人完成一个步骤,当第一个员工完成第一个步骤后,给到第二个员工完成第二个步骤,紧接着第三个员工完成最后一步,这样物件就可以持续输入进行组装,速度是之间的三倍。在Verilog流水线设计也是一样,通过使用更多的资源加快数据的处理。

这就是最常见的面积换速度的设计。

2.2 低延时

低延时设计是通过最小化中间处理的延时来尽可能快速地把数据从输入端传递到输出端的设计。通常,低延时设计将要求并行性、去除流水线、缩短逻辑,可能减少设计中的流量或降低最大时钟速度。

这样的设计一方面会减小数据输入到输出的时间,另一方面,也会增加寄存器之间的组合逻辑,进一步会影响时序,在一般的设计中不建议采用这种设计。

2.3 优时序

时序指的是设计的时钟速度。在设计中任何两个时序元件之间的最大延时将决定最大的时钟速度。最高速度或最大频率可以通过最大频率公式计算( 不管时钟到时钟的抖动):

其中Fmax是时钟可允许的最大频率,Tclk-q是从时钟到达直至数据到达Q端的时间,Tlogic是逻辑通过触发器之间的传播延时,Trouting是触发器之间的布线延时,Tsetup建立时间,Tskew是启动触发器和捕捉触发器之间时钟的传播延时。

下面介绍几种优化时序的方法。

2.3.1 组合逻辑插寄存器

当某两个寄存器之间的逻辑过长,比如大位宽的加、乘法,这时由于组合逻辑过长导致时序变得很差,通过在组合逻辑之间插入寄存器可以减小关键路径的组合逻辑延时,达到优化时序的效果。

2.3.2 并行结构

第二个结构的时序改进策略是重新组织关键路径,以致并行地实现逻辑结构。当串联的逻辑计算可以分为并行的逻辑计算时,就应该利用这个技术。

比如以下情况,当大位宽数据进行乘法运算时,如果仅仅使用一个周期去完成计算,可能会导致串联逻辑过长,这时可以将乘数分解成两个数的拼接,然后再进行相乘,相当于将一次串行长运算分解成三次并行短运算,可以进一步优化时序。

2.3.3 展平逻辑结构

在设计中,多重的if-else if-else if...有先后优先级,会导致在较后条件的逻辑延时过长影响时序,可以去除优先级设计,使用if-if-if或者case语句。

2.3.4 寄存器平衡

第4个方法称为寄存器平衡。概念上讲,这个方法是平等地重新分布寄存器之间的逻辑,减少任何两个寄存器之间最坏条件的延时。这个技术应该随时利用在关键路径和相邻路径之间逻辑高度不平衡时。因为时钟速度只由最坏条件路径来决定,可以做小的改变而成功地重新平衡关键逻辑。

如下情况,对三个位宽为8的数据进行相加操作。

使用这种设计方法得到的综合图,在两个寄存器中间存在三个数的激发逻辑链,这样会影响此条路径的延时,进而影响时序。

使用寄存器平衡的设计方法,对三个数进行依次两两相加。

使用这种设计方法得到的综合图,可以看到任意两个寄存器之间最多只有两个数的相加,相对于第一种方法减小了逻辑延时。

2.3.5 重新安排路径

第5个方法是在数据流中重新安排路径使关键路径最小化。当多个路径与关键路径组合时应该利用这个技术,组合路径可以重新安排以致关键路径可以移动到更接近目的寄存器。利用这个策略,将只涉及任何给定的一组寄存器之间的逻辑路径。考虑以下的模块:

得到的综合图,可以看到关键路径在C和out之间,有一个比较器和两个门串联组成,放在mux之前。

重新安排路径

得到的综合图

重新组织代码,已经从与比较器串联的关键路径移去一个门,如下图所示。因此要特别注意,实际的函数是如何编码的,这对时序性能有直接的影响。

3. 总结

  1. 高流量结构是每秒可以被设计处理的位数最大化的结构。
  2. 拆开一个迭代环路会增加流量
  3. 为拆开一个迭代环路的代价是成比例地增加面积。
  4. 低时滞结构是从模块输入端到输出端延时最小化的结构。
  5. 可以通过移去流水线寄存器来减少时滞。
  6. 移去流水线寄存器的损失是增加寄存器之间的组合延时。
  7. 时序定义为设计的时钟速度。当设计中任何2个时序元件之间的最大延时比最小时钟周期更小时,设计满足时序要求。
  8. 把关键路径分成两个更小延时的路径,添加寄存器层次改进时序。
  9. 把一个逻辑功能分成大量可以并行估值的更小的功能,减少路径延时为子结构的最长延时。
  10. 去除不需要的特权编码,展平逻辑结构,减少路径延时。
  11. 从关键路径移动组合逻辑到相邻路径,寄存器平衡改善时序。
  12. 可以重新安排与关键路径组合的路径来改善时序,方法是关键路径的--些逻辑放置到接近目的寄存器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

XXL-JOB核心源码解读及时间轮原理剖析

你好,今天我想和你分享一下XXL-JOB的核心实现。如果你是XXL-JOB的用户,那么你肯定思考过它的实现原理;如果你还未接触过这个产品,那么可以通过本文了解一下。 XXL-JOB的架构图(2.0版本)如下: 它…

易基因|ChIP-seq等实验揭示CHD6转录激活前列腺癌通路的关键功能 | 肿瘤耐药研究

易基因|ChIP-seq等实验揭示CHD6转录激活前列腺癌通路的关键功能 | 肿瘤耐药研究 大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 2022年11月21日,北京大学基础医学院赵东宇研究员、美国休斯敦卫理公会研究所Min…

详解 Redis 中 big keys 发现和解决

在使用 Redis 时,可能会出现请求响应慢、网络卡顿、数据丢失的情况。排查问题的时候,发现是 big keys 的问题。 什么是 big keys 在 Redis 中,一个字符串类型最大可以达到 512MB,其他非字符串类型的集合类型(list、set、hash、z…

网络常见面试题

1.简述OSI七层模型主要功能 OSI---开放(协议公有)系统互联参考模型 解决数据传输不兼容性 IS0---国际标准化组织---定义->OSI 7层(基本功): 应用层:人机交互的接口,接收应用程序的数据…

【AI】Python 实现粒子群算法

粒子群算法 1. 题目介绍 粒子群算法,其全称为粒子群优化算法 (Particle Swarm Optimization, PSO) 。它是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的搜索算法。粒子群算法属于启发式算法也叫智能优化算法,其基本思想在于通过群体中个体之间的…

零入门容器云网络-6:基于veth pair、namespace以及路由技术,实现跨主机命名空间之间的通信测试案例

已发表的技术专栏(订阅即可观看所有专栏) 0  grpc-go、protobuf、multus-cni 技术专栏 总入口 1  grpc-go 源码剖析与实战  文章目录 2  Protobuf介绍与实战 图文专栏  文章目录 3  multus-cni   文章目录(k8s多网络实现方案) 4  gr…

ROS系列:第六章 机器人建模

文章目录六、机器人系统仿真1.概述仿真优势:仿真缺陷:2. URDF集成Rviz基本流程1.创建功能包,导入依赖2.编写 URDF 文件3.在 launch 文件中集成 URDF 与 Rviz4.在 Rviz 中显示机器人模型5.优化 rviz 启动3. URDF语法详解3.1 URDF语法详解01_robotrobot1.属性2.子标签…

Promethus实操部署ARM架构 麒麟系统

由于有个地市局的等保测评要求安装监控软件,实操安装普罗米修斯和Zabbix,原本想安装Zabbix在本地安装非常顺利,但是服务器是华为鹏鲲的、ARM架构,Zabbix的有些东西找不到ARM的,所以两个都尝试了下。本篇讲解下Promethu…

协同过滤推荐算法

协同过滤:利用集体智慧,借鉴相关人群的观点进行推荐。 过去兴趣相似的用户在未来的兴趣也会相似;相似的用户会产生相似的历史行为数据。 根据历史行为,产生相似用户,分析出推荐结果。 用一句大白话说,其实也…

Android请求应用权限

文章目录前言参考一、请求应用权限基本原则二、请求权限的流程(官网摘抄)三、请求权限编码1.允许系统管理权限请求代码2.自行管理权限请求代码总结前言 学习Android为什么需要动态申请危险权限 学会Android应用危险权限申请的方式 参考 Android官方文档…

8 种 Python 定时任务的解决方案

在日常工作中,我们常常会用到需要周期性执行的任务,一种方式是采用 Linux 系统自带的 crond 结合命令行实现,另外一种方式是直接使用Python。 最近我整理了一下 Python 定时任务的实现方式,内容较长,建议收藏后学习&a…

uni-app云开发(我直接访问后端)

uniCloud 是 DCloud 联合阿里云、腾讯云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。 熟悉的js的程序员,轻松搞定前后台整体业务。实现了前端完成前后端工作的可能 用法: 第一步新建uniCloud项目 点击文件 ——>新建—…

Hue编译安装使用

简介 由于大数据框架很多,为了解决某个问题,一般来说会用到多个框架,但是每个框架又都有自己的web UI监控界面,对应着不同的端口号。比如HDFS(9870)、YARN(8088)、MapReduce(19888)等。这个时候有一个统一的web UI界面去管理各个大…

高斯混合模型下的变分推断

大概从下面几个部分学习: 1.EM算法 人人都懂EM算法 - 知乎 (zhihu.com) 18分钟理解EM算法 - 知乎 (zhihu.com) 变分贝叶斯深度学习综述 - 知乎 (zhihu.com) 【未看完】 EM算法存在的意义是什么? - 知乎 (zhihu.com)【八种境界】 EM 算法具备收敛性…

java计算机毕业设计ssm体育赛事管理系统App2qrcr(附源码、数据库)

java计算机毕业设计ssm体育赛事管理系统App2qrcr(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#x…

[附源码]Python计算机毕业设计Django酒店物联网平台系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

小目标检测文章阅读

无人机上目标检测的特点: 1、图像特点 在多数情况下,无人机的拍摄视野很大,包含丰富的视觉内容,虽然它提供了更全面的场景信息。 缺点: 1)但是待检测的目标对象通常在图像中占比较小,且没有足…

法国巴黎索邦大学博士后—实验物理学

【国外博士后招聘-法国博士后】法国巴黎索邦大学博士后—实验物理学 索邦大学(法文:Sorbonne Universit;英文:Sorbonne University)简称“索邦”(Sorbonne),是一所位于法国巴黎拉丁区…

多线程环境下的单例模式

✨✨hello,愿意点进来的小伙伴们,你们好呐! 🐻🐻系列专栏:【JavaEE初阶】 🐲🐲本篇内容:基于多线程的单例模式 🐯🐯作者简介:一名现大二的三非编程…

Linux虚拟化网络之路由配置

一、Linux路由配置 如果要在不同网段直接通讯,需要添加路由,Linux添加路由命令如下: route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] add : 添加一条路由规则;del : 删除一条路由规则;-net …