笔试

2023-11-09


前言

作为一种可编程逻辑器件,FPGA在过去的二十年中从电子设计的外围器件逐渐演变为数字系统的核心。伴随半导体工艺技术的进步,FPGA器件的设计技术取得了飞跃发展及突破。

近期,FPGA在芯片界的作用不容忽视。无论是呼吸机的核心“大脑”,还是新基建中的5G通信、人工智能和云计算,FPGA都扮演着重要角色。下面是我对FPGA的理解和对一些问题的回答。

本文首发于微信公众号“FPGA学习者”,更多精彩内容敬请关注


1、什么叫FPGA

FPGA(Field Programmable Gate Array,现场可编程逻辑阵列),是一种硬件可重构的体系结构,和嵌入式芯片的最大区别就是可以进行并行运算,内部是基于硬件描述语言编程的逻辑门阵列;

通过硬件编程,可以随时改变它的应用场景,它可以模拟CPU、GPU等硬件的各种并行运算。可以通过与目标硬件的高速接口互联,在系统层面实现加速。

2、什么叫数字IC

FPGA(Field Programmable Gate Array,现场可编程逻辑阵列),是一种硬件可重构的体系结构,和嵌入式芯片的最大区别就是可以进行并行运算,内部是基于硬件描述语言编程的逻辑门阵列;

通过硬件编程,可以随时改变它的应用场景,它可以模拟CPU、GPU等硬件的各种并行运算。可以通过与目标硬件的高速接口互联,在系统层面实现加速。

3、FPGA设计流程

FPGA开发主要有以下步骤:
①系统规划、②设计输入、③行为仿真、④逻辑综合、⑤综合后仿真(可选)、⑥综合后设计分析(时序及资源)、⑦设计实现(包括布局布线及优化)、⑧布线后仿真、⑨板级调试、⑩程序固化。

3.1系统规划

即在项目开始之前,对系统功能定义和模块进行划分,对器件资源、成本、设计复杂度等进行评估,从而制定合理的设计方案与器件选型。

3.2RTL输入

RTL,Register Transfer Level,直译为寄存器转换级(或寄存器传输级),通俗来讲,就是使用硬件描述语言Verilog HDL/VHDL进行硬件编程或者使用原理图输入。

3.3行为仿真/功能仿真

在编译前对用户所设计的电路进行逻辑功能验证,此时是没有任何延迟信息的,仅对初步的功能进行检测。

3.4逻辑综合

综合的含义就是将高级层次的描述转化为低级层次的描述,就目前层次来看,综合优化是指将设计输入编译成基本逻辑单元组成的逻辑连接网表。

3.5综合后仿真(可选)

综合后仿真检查综合结果是否和原设计一致。仿真时,可以估计门延时带来的影响,但是无法估计线延时,因此和布线后的实际情况有一定的差距。

3.6综合后设计分析(时序及资源)

综合之后会告诉我们,目前的系统设计消耗了多少 FPGA的资源,比如,消耗了多少 LUT、RAM等等。

3.7设计实现(包括布局布线及优化)

利用实现工具把逻辑映射到目标器件结构的资源中。布局将逻辑网表中的硬件原语和底层单元合理的配置到芯片内部的固有硬件结构上,需要在速度最优与面积最优之间做出选择;布线在布局的基础上,利用芯片内部的各种连线资源,合理正确的连接各个元件。

3.8布线后仿真

意思与前面的综合后仿真一致,因为此时已经进行了布局布线,所以在时序中包含的延迟信息更真实。能较好地反映芯片的实际工作情况。

3.9板级调试

产生使用的数据文件,下载到 FPGA芯片中,测试实际运行结果。可以使用嵌入式逻辑分析仪进行查看。

3.10程序固化

确保当前的设计已经完全符合要求后,将程序固化到FPGA所连接的FLASH芯片中,这样掉电后数据不丢失。

4、什么是毛刺(glitch)?又如何消除呢?

由于信号在FPGA内部通过不同的逻辑单元以及不同的走线到达逻辑门时产生延时,在多路信号变化的瞬间,组合逻辑电路常常产生小的尖峰,即毛刺信号。

毛刺信号有可能对下一级电路产生误触发,从而导致系统出错;这是由FPGA内部结构特性决定的,该现象在FPGA设计中是不可避免的。
该如何消除毛刺呢?

该如何消除毛刺呢?

1️⃣利用冗余项法,修改函数表达式
若函数表达式中可能会出现A+A’状态,或卡诺图中出现两圆相切的情形,对应的电路就可能会产生险象,因此需要增加冗余项来消除险象。

但该法对于计数器型产生的毛刺是无法消除的。

2️⃣采样法
由于冒险多出现在信号发生电平跳变的时刻,即在输出信号的建立时间内会产生毛刺,而在保持时间内不会出现,因此,在输出信号的保持时间内对其进行采样,就可以消除毛刺信号的影响;

常用的采样方法有 2 种:

一种使用一定宽度的高电平脉冲与输出相与,从而避开了毛刺信号,取得输出信号的电平值。这种方法必须保证采样信号在合适的时间产生,并且只适用于对输出信号时序和脉冲宽度要求不严的情况。

另一种更常见的方法叫锁存法,利用D触发器的输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号。由于在时钟的上升沿时刻,输出端Q=D,当输入的信号有毛刺时,只要不发生在时钟的上升沿时刻,输出就不会有毛刺。这种方法类似于将异步电路转化为同步电路,实现简单,但同样会涉及到时序问题。

3️⃣吸收法
由于产生的毛刺实际上是高频窄脉冲,在输出端接上小电容进行滤波,就可以滤除毛刺。但输出波形的边沿性变差,在对波形要求较严格时,应再加入整形电路,该方法不宜在中间级使用。

4️⃣延迟法(感觉不太靠谱的样子)
因为毛刺最终是由于延迟造成的,所以可以找出产生延迟的支路。对于相对延迟小的支路,加上毛刺宽度的延迟可以消除毛刺。但有时随着负载增加,毛刺会继续出现,而且,当温度变化,所加的电压变化或要增加逻辑门时,所加的延迟是不同的,必须重新设计延迟线,因而这种方法也是有局限性的。而且采用延迟线的方法产生延迟会由于环境温度的变化而使系统可靠性变差。

5️⃣硬件描述语言法
这种方法是从硬件描述语言入手,找出毛刺产生的根本原因,改变语言设计,产生满足要求的功能模块,来代替原来的逻辑功能块。比如计数器中可以使用格雷码计数代替二进制码,因为格雷码每次变化时只有一位发生改变,不会与其他位的变化产生毛刺信号。

5.D触发器

D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。

因此,D触发器在数字系统和计算机中有着广泛的应用。触发器具有两个稳定状态,即"0"和"1",在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。

触发方式有电平触发和边沿触发两种,D触发器的次态取决于触发前D端的状态,即Q(n+1)=D。因此,它具有置0、置1两种功能。

D触发器的应用很广,可用做数字信号的寄存,移位寄存,分频和波形发生器等等。

代码实现:

module d_flip_flop(
  input clk,
  input d,
  output reg q
);
  always@(posedge clk)begin
    q <= d;    //上升沿有效的时候,把d捕获到q
  end
endmodule

总结

以上就是今天要讲的内容,本文仅仅简单回答了FPGA相关的五个问题,更多知识可以关注本账号的“每天学习一点FPGA知识点”系列分享。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

笔试 的相关文章

  • FPGA设计篇之流水线思想

    FPGA设计篇之流水线思想 一 写在前面 二 正文开始 2 1举个栗子 2 2 1情况一 组合逻辑 2 1 2情况二 流水线设计 2 1 4 小总结 2 2举第二个栗子 写在最后 一 写在前面 流水线 大家好 我是富土康三号流水线的张全蛋
  • PRBS笔记

    1 概述 PRBS 伪随机二进制序列 也称为伪随机码 通常被用来测试高速信号的信号质量 伪随机 也说明了该码流并不是真正的随机 而是具有特性属性 码流由 多项式 决定 具有重复周期 PRBS具有多种阶数 如PRBS7 PRBS15 PRBS
  • 平头哥(T-Head )开源RISCV处理器OpenC906 RTL仿真

    在过去的几年里 阿里集团平头哥陆续推出了几款RISCV处理器 有些处理器已经在产业界得到了应用 比如在某志的D1处理器中 就嵌入了平头哥的玄铁C906内核为 芯 RISCV虽然是一个开放标准 并且网络上也不乏一些开源核的RTL实现 但是商用
  • Vivido添加pynq-Z2开发板

    一 下载pynq z2开发板文件 下载地址 https www tulembedded com FPGA ProductsPYNQ Z2 html 二 将下载的文件解压到vivado安装的位置 如果boards目录下面没有boards fi
  • modelsim 关联 notepad++

    modelsim 控制窗口敲入 1 proc external editor filename linenumber exec I notepad notepad exe filename 2 set PrefSource altEdito
  • Verilog中forever、repeat、while、for四类循环语句(含Verilog实例)

    当搭建FPGA逻辑时 使用循环语句可以使语句更加简洁易懂 Verilog中存在四类循环语句 如标题 几种循环语句的具体介绍和用法如下 1 forever 连续的执行语句 语法格式 forever
  • Verilog实例-AMBA(AHB)协议

    目录 一 简介 1 1 AHB 1 2 signal list 1 3 Bus interconnection 总线互联 1 4 Overview of AMBA AHB operation 1 4 1 Basic transfer 1 4
  • MOS管的知识,看这一篇就可以了

    转载 21ic电子网 2020 11 15 18 19 以下文章来源于记得诚电子设计 作者记得诚 记得诚电子设计 分享电子硬件知识 永远相信美好的事情即将发生 今天的文章简单总结一下MOS管 如下是本文目录 场效应管分类 场效应管分为结型
  • 跨时钟域处理方法(一)——打拍

    一 说明 处理跨时钟域的数据可以分为单bit数据和多bit数据 而打拍的方法主要常见于处理单bit数据的跨时钟域问题 打拍的本质是通过添加寄存器 对输入的数据进行延拍 其主要目标是消除亚稳态的影响 常见的是打2拍 也就是添加2级寄存器 二
  • 握手2倍速率进,一倍速率出[verilog]

    module two to one parameter WORD LEN 33 input clk input arst input 2 WORD LEN 1 0 i din input i din valid output o din r
  • Verilog之assign

    Verilog中的关键词assign主要用于如下两个地方 数据流建模 用于数据流建模的显示连续赋值语句语法格式如下
  • IC数字后端

    在 innovus 里面 有时候我们需要控制 tie cell 的 fanout 和 net length 来避免 tie cell 可能出现 max transition 或者 max fanout 的违例 一般来说 只要 fanout
  • TestBench编写_激励产生

    TestBench编写 激励产生 TestBench编写 激励产生 基本背景 读取函数介绍 a fopen函数使用 b fread函数使用 c fclose函数使用 实际使用 TestBench编写 激励产生 基本背景 最近遇到项目中需要对
  • xilinx xdma PCIe中断bug

    xilinx xdma PCIe中断存在bug bug1 此中断虽然是msi或者msx中断 但是不中断cpu bug2 此中断不是边沿中断 而是电平中断 在驱动层需要不断地轮训查询中断事件 bug3 此中断持续时间必须长 而且在收到中断应答
  • 【FPGA】面试问题及答案整理合集

    面试问题及答案整理合集 1 硬件描述语言和软件编程语言的区别 2 FPGA选型问题 3 建立时间和保持时间问题 3 亚稳态问题 4 竞争和冒险问题 5 乒乓操作问题 6 同步和异步逻辑电路 7 同步复位和异步复位 8 MOORE 与 MEE
  • 基于FPGA的AHT10传感器温湿度读取

    文章目录 一 系统框架 二 i2c接口 三 i2c控制模块 状态机设计 状态转移图 START INIT CHECK INIT IDLE TRIGGER WAIT READ 代码 四 数据处理模块 串口 代码 五 仿真 testbench设
  • 【FPGA多周期时序约束详解】- 解读FPGA多周期时序约束的全过程

    FPGA多周期时序约束详解 解读FPGA多周期时序约束的全过程 FPGA作为数字电路设计的常见工具 其设计中必然会遇到时序约束的问题 而多周期时序约束更是FPGA设计中不可避免的难点之一 本文将详细介绍FPGA多周期时序约束的全过程 并结合
  • 串口通信知识点总结

    串口是串行接口 serial port 的简称 也称为串行通信接口或COM接口 串口通信是指采用串行通信协议 serial communication 在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式 串口按电气标准及协议来划分
  • 无线网络管理系统与无线路由器的区别

    第5章 波形发生器软件设计 本章我们将介绍系统的软件设计 系统中控制软件占有很重要的地位 它不仅要产生波形数据 控制波形的发生 还要控制显示电路和键盘电路 因此系统软件的好坏直接决定着系统的功能和稳定 5 1软件的总体结构 在本系统中 由于
  • [Verilog] Verilog 基本格式和语法

    主页 元存储博客 全文 3000 字 文章目录 1 声明格式 1 1 模块声明 1 2 输入输出声明 1 3 内部信号声明 1 4 内部逻辑声明

随机推荐

  • sentinelsat包介绍

    这次主要介绍sentinelsat包 包括查询条件和相关的API等 主要记录自己学习过程 首先我们需要知道欧空局ESA的数据 因为考虑数据存储等问题 会将sentinel数据从在线存档中删除 对于长期存档的数据 会出现offline情况 在
  • 编程常用英语词汇

    按字母索引 A 开头 B 开头 C 开头 D 开头 E 开头 F 开头 G 开头 H 开头 I 开头 J 开头 K 开头 L 开头 M 开头 N 开头 O 开头 P 开头 Q 开头 R 开头 S 开头 T 开头 U 开头 V 开头 W 开头
  • PHP preg_replace() 正则替换所有符合条件的字符串

    PHP preg replace 正则替换 与Javascript 正则替换不同 PHP preg replace 默认就是替换所有符号匹配条件的元素 需要我们用程序处理的数据并不总是预先以数据库思维设计的 或者说是无法用数据库的结构去存储
  • Flutter 修改默认生成的 minSdkVersion

    Flutter 修改默认生成的 minSdkVersion 问题 flutter pub get 会自动生成 android 目录 但是如果要修改 build gradle 文件里面的内容 需要每次都要手动改一下 很麻烦 解决办法 修改 f
  • 大数据毕设项目 opencv 图像识别 指纹识别 - python

    文章目录 0 前言 1 课题背景 2 效果展示 3 具体实现 3 1 图像对比过滤 3 2 图像二值化 3 3 图像侵蚀细化 3 4 图像增强 3 5 特征点检测 4 OpenCV 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升
  • 【动手学习pytorch笔记】33.Attention实现

    Attention实现 import math import torch from torch import nn from d2l import torch as d2l 带掩码的softmax 有些query是不应该看到后面的key的
  • glslViewer 介绍 (001)

    GitHub patriciogonzalezvivo glslViewer Console based GLSL Sandbox for 2D 3D shaders 起个头先 把官网的windows安装过程 step by step 化
  • unity实现mmd功能(跳舞)

    将pmx模型转化为fbx模型 将fbx模型导入 在对应的Inspector面板上的四个勾选打勾并Apply应用一下 在接下来弹出的界面中将vmd动画拖入到对应的Object栏中并点击生成相应动画的模型 vmd动画的制作 新建一个动画状态机控
  • 1.Windows环境配置

    1 做逆向Linux系统比Windows系统问题少的原因 Windows版本种类过多 Windows使用的编码不一样 2 电脑系统版本 原版Windows10即可 运行winver可查看系统版本 推荐版本 Windows10 专业版 20H
  • Hibernate-validator数据验证

    前言 数据效验工作在开发工作中 是非常重要的 保证数据的正确性 可靠性 安全性 不仅在前端进行效验 还要在后台继续进行效验 前端做验证只是为了用户体验 比如控制按钮的显示隐藏 单页应用的路由跳转等等 后端才是最终的保障 总之 一切用户的输入
  • opencv4.6 报错 error: ‘cv::xfeatures2d::SIFT’ has not been declared

    opencv4 6报错error cv xfeatures2d SIFT has not been declared SIFT 已经由 xfeatures2d 移至 主仓库 cv xfeatures2d SIFT create 改为 cv
  • 如何用一行 Python 代码实现并行

    前言 Python 在程序并行化方面多少有些声名狼藉 撇开技术上的问题 例如线程的实现和 GIL 我觉得错误的教学指导才是主要问 题 常见的经典 Python 多线程 多进程教程多显得偏 重 而且往往隔靴搔痒 没有深入探讨日常工作中最有用的
  • widows家庭版没有Hyper-v的解决方式

    首先这个是我在安装docker的时候遇到的问题 下面记录一下 复制下面代码到一个文本文件中去 然后修改后缀名为cmd然后运行即可 pushd dp0 dir b SystemRoot servicing Packages Hyper V m
  • jQuery.extend 函数详解

    转载自 http www cnblogs com RascallySnake archive 2010 05 07 1729563 html jQuery extend 函数详解 jQuery 的 extend 扩展方法 jQuery 的扩
  • 【构建ML驱动的应用程序】第 1 章 :从产品目标到 ML 框架

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 光耦电路

    光电耦合器 opticalcoupler 英文缩写为OC 亦称光电隔离器或光耦合器 简称光耦 它是以光为媒介来传输电信号的器件 通常把发光器 红外线发光二极管LED 与受光器 光敏半导体管 封装在同一管壳内 当输入端加电信号时发光二极管发出
  • python 实现 soap 请求

    1 什么是soap SOAP Simple Object Access Protocol 是一种基于XML的通信协议 用于在网络上交换结构化的和可扩展的信息 它被广泛用于分布式系统中的应用程序之间的通信 SOAP通过HTTP 或其他传输协议
  • AI绘画爆火背后:扩散模型(Diffusion Model)原理综述

    来源 知乎 大仲马 地址 https zhuanlan zhihu com p 562389931 本综述 Diffusion Models A Comprehensive Survey of Methods and Application
  • Linux下TCP通信时如果一方拔掉网线会怎么样?

    本文95 参考下面的链接 拔掉网线后 原本的 TCP 连接还存在吗 TCP协议 长连接和短连接 如果没有数据传输 不能被TCP感知到 TCP连接状态依旧保持 如果有数据传输 重传次数超过一定值 Linux下默认15 或超过一定的 超时时间则
  • 笔试

    文章目录 前言 1 什么叫FPGA 2 什么叫数字IC 3 FPGA设计流程 3 1系统规划 3 2RTL输入 3 3行为仿真 功能仿真 3 4逻辑综合 3 5综合后仿真 可选 3 6综合后设计分析 时序及资源 3 7设计实现 包括布局布线