基于vivado(语言Verilog)的FPGA学习(4)——FPGA选择题总结(针对华为逻辑岗实习笔试)

基于vivado(语言Verilog)的FPGA学习(4)——FPGA选择题总结

文章目录

  • 基于vivado(语言Verilog)的FPGA学习(4)——FPGA选择题总结
    • 1. 消除险象
    • 2. 建立时间和保持时间
    • 3.ISE
    • 4.DMA
    • 5.仿真器
    • 6.标识符
    • 7.可综合电路的语句
    • 8.缺省值
    • 9.系统设计优化
    • 10.带宽计算


1. 消除险象

办法一:修改逻辑表达式避免以上情况【需要逻辑分析能力】

办法二:采样时序逻辑,仅在时钟边沿采样【推荐,事实上也最常用】

办法三:在芯片外部并联电容消除窄脉冲【物理方法】

办法四:由于电容会降低速度,所以在高速电路中,可以利用选通的方式消除险象

2. 建立时间和保持时间

建立时间Tsu:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的时间。
保持时间Th:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的时间。
在这里插入图片描述
在这里插入图片描述
上图是第一张图的考虑延时的时序图,
CLK经过第一个触发器到第二个触发器的延时T_delay1=(第一个时钟延时时间Tlaunch+触发器内部延时Tck2q+第一个触发器到第二个触发器经过的组合逻辑电路的延时Tdp)
CLK直接到达第二个触发器的延时 T_delay2,图中的Tcapture
则时钟周期为T_CLK时,
建立时间=T_delay2+T_CLK-T_delay1
保持时间=T_delay1-T_delay2

在一个FPGA项目中,既有建立时间异常(setup violation),也有保持时间异常(hold violation),应该如何修改设计以使其正常工作?

  1. 对于建立时间异常:
    办法一:T_CLK时钟周期:增加T_CLK,也就是降频:
    这一点比较容易理解,就是增加“脉冲宽度”,增大T_CLK

办法二:T_dp组合逻辑延时(减小T_dp):优化组合逻辑延时,具体包括:
a. 增加一个中间触发器来切割Timing Path,分割组合逻辑延时(流水线结构)
b. 对于有较大负载的节点可以考虑插Buffer、逻辑复制的方法来优化扇出,减少关键路径上的负载(插Buffer,逻辑复制)
c. 小Cell换成大Cell,更换更大驱动的Cell,增强驱动能力
d. 更换SVT/LVT(速度快于HVT的电压阈值的单元库)的Cell

办法三:增大T_delay2,但是相应的会减小保持时间

办法四:缩短触发器内部延时Tck2q:
换成更快的时序逻辑单元,花钱!

  1. 对于保持时间异常:保持时间=T_delay1-T_delay2
    办法一: 增加T_dp组合逻辑延时,(组合逻辑深度的增加会增加芯片的面积、布线资源、功耗,可能产生在慢速工艺库条件下建立时间违例)

办法二: 减小T_delay2,但是相应的会增大建立时间

可以看出,保持时间和建立时间有一些矛盾

3.ISE

ISE的全称为Integrated Software Environment,即“集成软件环境”,是Xilinx公司的硬件设计工具。一般用的都是vivado,看了一下ISE的仿真、综合和实现,感觉和vivado很相似。

4.DMA

DMA(Direct Memory Access,直接存储器访问)是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU对于其他的工作来说就无法使用。
(1) PS通过AXI-lite向AXI DMA发送指令,

(2) AXI DMA通过HP通路和DDR交换数据,

(3) PL通过AXI-S读写DMA的数据。
PS和PL数据交互网站

5.仿真器

根据执行仿真的不同方法,Verilog仿真器可以分为以下3种类型:
(1) 解释型的仿真器。
解释型仿真器读入Verilog代码,在计算机的内存中生成数据结构,然后解释性地运行仿真,每次运行仿真时,进行一次编译,编译通常很快就可以完成。Cadence公司的Verilog-XL仿真器就是一种解释型的仿真器。
(2) 编译型的仿真器。
编译型的仿真器读入Verilog代码,然后把它转换为相应的C代码(或其他编程语言的代码)。接下来,用标准C编译器将该C代码编译成二进制可执行代码。执行这个二进制代码,就可以执行仿真器。编译型的仿真器的编译时间通常比较长,但其执行速度一般来说比解释型的仿真器快。Synopsys公司的VCS仿真器就是一种编译型的仿真器。
(3) 本地编译型的仿真器。
本地编译型的仿真器读入Verilog代码,然后把它直接转换成能在指定的机器平台上运行的二进制代码,机器的平台不同,编译的优化和调整过程也不同。这就是说,能在Sun工作站上运行的本地编译仿真器,不能在HP工作站上运行,反之亦然。Cadence公司的Verilog-NC仿真器就是这种本地编译型的仿真器。

6.标识符

标识符( identifier)用于定义模块名、端口名、信号名等。

Verilog HDL 中的标识符( identifier)可以是任意一组字母、数字、 $符号和_(下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写的。

HDL知识点,WAIT语句有4种格式:WAIT,WAIT ON,WAIT UNTIL,WAIT FOR

7.可综合电路的语句

时间变量time和实数变量real不能被综合
并行块fork···join不可综合,并行块的语义在电路中不能被转化。

8.缺省值

寄存器未做赋值操作的话,其值是未知,在Verilog中用x表示;
线网类型可以理解为导线,其值是高阻,在Verilog中用z表示。

9.系统设计优化

分为资源优化(面积优化)和速度优化
在这里插入图片描述

10.带宽计算

参考的题目是:
在这里插入图片描述
理论带宽 = 内存核心频率 × 内存总线位数 × 倍增系数 / 位字转换 = (1066/8) * 32 * 8 / 8
应用端带宽=应用端时钟 × 数据位宽 / 位字转换 = 200 * 128 / 8 = 3200 MB/s

DDR/DDR2/DDR3的区别:

  1. DDR采用时钟脉冲上升、下降沿各传一次数据,1个时钟信号可以传输2倍于SDRAM的数据,所以又称为双倍速率SDRAM。它的倍增系数就是2。
  2. DDR2仍然采用时钟脉冲上升、下降支各传一次数据的技术(不是传2次),但是一次预读4bit数据,是DDR一次预读2bit的2倍,因此,它的倍增系数是2X2=4。
  3. DDR3作为DDR2的升级版,最重要的改变是一次预读8bit,是DDR2的2倍,DDR的4倍,所以,它的倍增系数是2X2X2=8。

内存的频率指标

  1.  核心频率:即为内存Cell阵列(Memory Cell Array)的工作频率,它是内存的真实运行频率;
    
  2.  时钟频率:即I/O Buffer(输入/输出缓存)的传输频率;
    
  3.  有效数据:传输频率则是指数据传送的频率。
    

DDR3-1066蕴含的信息
DDR3代表内存一次从存储单元取8bit数据。
1066指有效数据传输频率,除以8才是核心频率。

DDR在FPGA中如何运用?主要调用了MIG IP核
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】-- 权限和Shell运行原理

目录 Shell的运行原理 用户切换 su - / su sudo 权限 chmod chown chgrp 八进制方法修改文件属性 目录权限 粘滞位 umask 自定义默认权限 Shell的运行原理 广义上,Linux发行版 Linux内核 外壳程序 Linux 从广义上来理解它是一个操作系统 而从狭义上…

关于Map类的使用小结

目录 1. 常用Map类和区别 2. HashMap工作原理 2.1 Put()执行过程 2.2 扩容机制 3. ConcurrentHashMap 3.1 工作原理 3.2 JDK7分段锁的优缺点 1. 常用Map类和区别 Map类包含:HashMap、HashTable、LinkedHashMap、TreeMap。 1) 从功能上区分。 HashMap&…

多线程进阶学习11------CountDownLatch、CyclicBarrier、Semaphore详解

CountDownLatch ①. CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞 ②. 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞) ③. 计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行 public static void m…

SpringBoot学习笔记上

文章目录1 SpringBoot1.1 SpringBoot介绍1.2 SpringBoot创建的三种方式1.3SpringBootApplication注解1.4 SpringBoot的配置文件1.5多环境配置1.6 使用jsp1.7 ComnandLineRunner 接口 , ApplcationRunner接口2 Web组件2.1 拦截器2.2 Servlet2.3 过滤器Filter2.4 字符…

gpt3官网中文版-人工智能软件chat gpt安装

GPT-3(Generative Pre-trained Transformer 3)是一种自然语言处理模型,由OpenAI研发而成。它是GPT系列模型的第三代,也是目前最大、最强大的自然语言处理模型之一,集成了1750亿个参数,具有广泛的使用场景&a…

Flutter Row 实例 —— 新手礼包

大家好,我是 17。 本文在 3.31 日全站综合热榜第一。 新手礼包一共 3 篇文章,每篇都是描述尽量详细,实例讲解,包会! Flutter Row 实例 —— 新手礼包Flutter TextField UI 实例 —— 新手礼包Flutter TextField 交…

靠近用户侧和数据,算网融合实现极致协同

游弋自如的生产力,在边缘。IMMENSE、36氪|作者 1846年1月,纽约。 一行长短不一的电码顺着通讯线路飞往130公里开外的费城,这是华尔街的巨头们首次使用电报传输讯息,更具有金钱意味的是,电力通讯的成功&am…

【蓝桥杯集训·周赛】AcWing 第96场周赛

文章目录第一题 AcWing 4876. 完美数一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第二题 AcWing 4877. 最大价值一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第三题 AcWing 4878. 维护数组一、题目1、原…

路由策略实验

运行OSPF协议 [R1]ospf 1 router-id 1.1.1.1 [R1-ospf-1]area 0 [R1-ospf-1-area-0.0.0.0]network 192.168.12.1 0.0.0.0 [R1-ospf-1-area-0.0.0.0]network 192.168.13.1 0.0.0.0 [R2]ospf 1 router-id 2.2.2.2 [R2-ospf-1]area 0 [R2-ospf-1-area-0.0.0.0]network 192.168.…

抖音seo矩阵系统源码搭建技术+二开开源代码定制部署

抖音已经成为了当今最为流行的短视频平台之一,拥有着庞大的用户群体和海量的视频资源。对于一些商家或者运营者来说,如何从这些视频资源中挖掘出有效的信息,进而提升自己的品牌、产品或者内容的曝光度,就成为了一个非常重要的问题…

一次通过.frm和.ibd恢复mysql数据表的过程

1、导出.frm和.ibd文件 2、安装Mysql的Utilities 3、执行命令(实际恢复的表) mysqlfrm --diagnostic ./stat_vehicle_mileage.frm4、复制Sql,添加ROW_FORMATCOMPACT(需要检测生成的Sql语句是否可用) CREATE TABLE …

Android开发-Android常用组件-ProgressBar进度条

4.8 ProgressBar进度条 常用属性 android:max 进度条的最大值 android:progress 进度条已完成进度值 android:progressDrawable 设置轨道对应的Drawable对象 android:indeterminate 如果设置成true,则进度条不精确显示进度 android:indeterminateDrawable …

YOLO算法改进指南【算法解读篇】:2.如何训练自己的数据集

我们接着上一篇文章配置完YOLOv5需要的环境后,今天我们试着用YOLOv5训练自己的数据。(在开始本教程前,记得先跑一遍入门篇,确保环境是正常的) 有图有真相,先看看我的运行结果 【YOLOv5 源码地址】 🚀 我的环境: 语言环境:Python3.8编译器:PyCharm深度学习环境: to…

2021蓝桥杯真题格点(填空题) C语言/C++

问题描述 如果一个点(x,y) 的两维坐标都是整数, 即 x∈Z 且 y∈Z, 则称这个点为 一个格点。 如果一个点 (x,y) 的两维坐标都是正数, 即 x>0 且 y>0, 则称这个点在 第一象限。 请问在第一象限的格点中, 有多少个点(x,y) 的两维坐标乘积不超过 2021 , 即x⋅y≤2021 。 掟…

c#之反射详解

总目录 文章目录总目录一、反射是什么?1、C#编译运行过程2、反射与元数据3、反射的优缺点二、反射的使用1、反射相关的类和命名空间1、System.Type类的应用2、System.Activator类的应用3、System.Reflection.Assembly类的应用4、System.Reflection.Module类的应用5、…

SpringBoot 整合RabbitMq 自定义消息监听容器来实现消息批量处理

SpringBoot 整合RabbitMq 自定义消息监听容器来实现消息批量处理前言添加依赖配置文件编写监听器创建SimpleRabbitListenerContainerFactory发送消息前言 RabbitMQ是一种常用的消息队列,Spring Boot对其进行了深度的整合,可以快速地实现消息的发送和接收…

PCB模块化设计16——RS232,RS485接口模块PCB布局布线设计规范

目录PCB模块化设计16——RS232,RS485接口模块PCB布局布线设计规范RS232接口模块1、接口概述2、接口电路 原理图的EMC设计3、连接器设计4、线缆设计5、RS-232常规管脚定义:6、RS-232知识要点RS485接口模块1、原理图设计方案1、RS485接口6KV防雷电路设计方…

c语言程序笔记(1)

C语言笔记&#xff08;1&#xff09;——B站翁恺视频 程序框架 #include <stdio.h> int main() {//printf("hello world!\n");return 0; }1、变量与常量。 例子1&#xff1a; #include <stdio.h> int main() {printf("1234%d",1234);return …

图解LeetCode——合并两个有序链表

如果你喜欢这篇文章的话&#xff0c;请给作者点赞关注哟&#xff0c;你的支持是我不断前进的动力&#xff01; 目录 题目描述&#xff1a; 解法&#xff1a; 完整代码&#xff1a; 结果 题目链接&#xff1a;力扣 题目描述&#xff1a; 将两个升序链表合并为一个新的 升序…

2017世界互联网领先成果来了 光量子计算机

演讲者&#xff1a;陆朝阳中国科学技术大学教授 发布了世界上首台超越早期经典计算机的光量子计算机 陆朝阳&#xff1a;很高兴向大家报告中国科学院在量子计算这个领域取得的基础性的研究成果。 我们知道50多年以来摩尔定律一直见证着计算机的更新换代&#xff0c;之前每过18个…