FPGA/IC面试常见问题汇总

2023-10-30

参考:数字IC设计工程师笔试面试经典100题_OnePlusZero的博客-CSDN博客_数字ic设计面试题

目录

参考:数字IC设计工程师笔试面试经典100题_OnePlusZero的博客-CSDN博客_数字ic设计面试题

1、同步复位和异步复位的优缺点

2、什么是竞争和冒险,如何消除?

3、什么是同步电路,什么是异步电路?

4、什么是亚稳态,产生的原因,如何消除?

5、时序约束的概念和基本策略?

6、FPGA和CPLD的区别?

7、什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?

8、FPGA芯片内有哪两种存储器资源?

1、同步复位和异步复位的优缺点

        在同步电路中,输入数据需要与时钟满足setup time和hold time才能进行数据的正常传输,防止亚稳态。同样的道理,对于一个异步复位寄存器来说,同样异步复位信号同样需要和时钟满足recovery time(恢复时间)和removal time (去除时间)才能有效进行复位操作和复位释放操作,防止输出亚稳态。

        同步复位优点:能确保电路是100%同步的;同步复位可以综合处更小的触发器;可以保证复位只发生在有效时钟边沿,过滤掉复位信号毛刺;内部逻辑产生的复位信号,采用同步复位可以有效过滤掉毛刺。

                      缺点:当复位信号宽度小于时钟周期时,可能需要一个脉冲展宽器,使得复位信号在时钟边沿能被正确采样;当复位信号有外部逻辑组合产生,那么复位信号可能容易受外部信号控制;在采用门控时钟的设计中,复位信号有效是时钟可能处于关闭状态,复位无效;

    always @ (posedge clk) begin
        if (!rst_n)
            xxxx;
    end

        异步复位优点:很多EDA工具带有异步复位的库文件,能保证数据路径上是干净的,减小延迟;复位信号独立于时钟,只要复位信号发起,电路立即复位;综合工具能很好的识别出复位信号;

                      缺点:对毛刺敏感;若复位刚好在时钟边沿撤销,很容易使寄存器的输出产生亚稳态。

always @ (posedge clk or negedge rst_n) 
    begin
        if (!rst_n)
            xxxx;
        else if (xx) 
            begin
                xxxx;
            end
    end

异步复位同步释放

        就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。假设复位信号低电平有效rst_n,当复位信号无效时,也就是复位信号拉高时,即为复位信号的释放。由于异步复位信号与时钟无必然联系,两者都是独立的,所以复位信号的释放将有一定的概率导致电路出现亚稳态。

        所谓异步复位同步释放,就是在rst_n信号为低时,立刻进行复位,而rst_n信号由低到高释放时,为了防止亚稳态的出现,将rst_n信号用DFF向后延一周期,达到与时钟clk边沿同步的目的。

        电路目的:防止复位信号撤除时产生亚稳态事件。

        异步复位:显而易见,reset_n异步复位后,rst_n将拉低,即实现异步复位。

        同步释放:这个是关键,看如何实现同步释放,即当复位信号reset_n撤除时,由于双缓冲电路(双寄存器)的作用,rst_n复位信号不会随着reset_n的撤除而撤除。

 

解释上图:

  • 当异步复位(rst_i)无效,即为高电平时,同步后的复位信号 rst_o 也为高电平;
  • 当异步复位有效时,同步后的复位信号立刻为低电平( 0),即实现了“异步复位”;
  • 信号释放时,会在时钟上升沿来临时,才可以恢复为 高电平(1),实现“同步释放”;
//Synchronized Asynchronous Reset
//异步复位、同步释放:只适用于没有PLL的系统复位信号的设置
module asyn_reset(
	clk	    ,
	rst_n	,	
	rst_s2
);
 
input clk	;
input rst_n	;
 
output reg rst_s2;
 
reg rst_s1;
 
always @ (posedge clk or negedge rst_n) begin
	if (!rst_n) begin
		rst_s1 <= 1'b0;
		rst_s2 <= 1'b0;
	end
	else begin
	   rst_s1 <= 1'b1	;
	   rst_s2 <= rst_s1	;
	end
end
endmodule

2、什么是竞争和冒险,如何消除?

        信号由于经由不同路径传输达到某一汇合点的时间有先有后的现象,就称之为竞争,由于竞争现象所引起的电路输出发生瞬间错误的现象,就称之为冒险。设计中最简单的避免方法是尽量使用时序逻辑同步输入和输出。

       消除毛刺的方法:1、对信号进行采样(在合适的位置采样,将有毛刺的信号剔除)。2、使用边沿触发寄存器寄存信号,相当于将信号同步为同步信号(由于毛刺持续的时间比较短,所以一般很难满足边沿触发器的setup/hold时间)。3、用两级触发器的或运算来消除持续不到一个周期的毛刺信号。4、采用格雷码编码(只变化一个位信号)。5、增加卡诺图冗余项。

3、什么是同步电路,什么是异步电路?

        同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。

        在电路中同一个时钟源的时钟分频出来的不同频率的时钟作用于两部分电路,这两部分电路也是同步的。反之,不同时钟源的电路就是异步电路。

        同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x有无变化,状态表中的每个状态都是稳定的。

        异步时序逻辑电路的特点:电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路状态的改变由外部输入的变化直接引起。

4、什么是亚稳态,产生的原因,如何消除?

        亚稳态:是指触发器无法在规定时间内达到一定的状态,此时则会出现亚稳态现象。

        原因:由于触发器的Tsu和Th不满足,当触发器进入亚稳态,使得无法预测该单元的输出,这种不稳定是会沿信号通道的各个触发器级联传播。消除方法:两级或者多级寄存器同步。但是理论上不能完全消除,可以降低。

        建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。

        保持时间:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。

5、时序约束的概念和基本策略?

        时序约束主要包括周期约束,偏移约束,静态时序路径约束三种。通过附加时序约束可以综合布线工具调整映射和布局布线,使设计达到时序要求。

        附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,对分组附加周期约束,然后对FPGA/CPLD输入输出PAD附加偏移约束、对全组合逻辑的PAD TO PAD路径附加约束。附加专门约束时,首先约束分组之间的路径,然后约束快、慢速例外路径和多周期路径,以及其他特殊路径。

6、FPGA和CPLD的区别?

7、什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?

        线与逻辑是两个或多个输出信号相连可以实现与的功能。在硬件上,要用OC门来实现(漏极或者集电极开路),为了防止因灌电流过大而烧坏OC门,应在OC门输出端接一上拉电阻(线或则是下拉电阻)。
        漏极开路(OD),集电极开路(OC)

8、FPGA芯片内有哪两种存储器资源?

        FPGA芯片内有两种存储器资源:一种叫BLOCK RAM,另一种是由LUT配置成的内部存储器(也就是分布式RAM)。BLOCK RAM由一定数量固定大小的存储块构成的,使用BLOCK RAM资源不占用额外的逻辑资源,并且速度快。但是使用的时候消耗的BLOCK RAM资源是其块大小的整数倍。

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

FPGA/IC面试常见问题汇总 的相关文章

  • 基于Smack3.0.4+ Openfire3.10.2开发之Android 客户端之二

    我们在之前依次介绍openfire部署以及smack常用API的使用 这一节中我们着力介绍如何基于asmack开发一个Android的客户端 本篇的重点在实践 讲解和原理环节 大家可以参考前面我所发布的OpenFire和Smack的相关文章
  • FLOPS的计算

    参考 https blog csdn net qq 42309265 article details 123098538 概念 FLOPS 浮点运算数 是floating point operations per second的缩写 意指每

随机推荐

  • C51子函数

    子函数 将完成某一种功能的程序代码单独抽取出来形成一个模块 在其它函数中可以随时调用此模块 以达到代码的复用和优化程序结构的目的 void Function unsigned char x 返回值 函数名 形参 函数体
  • 爬虫的异常处理办法

    爬虫是一种自动化程序 用于从互联网上收集数据 然而 由于互联网的不确定性和复杂性 爬虫程序可能会遇到各种异常情况 这些异常情况可能会导致爬虫程序停止工作或者收集到错误的数据 因此 异常处理是爬虫程序开发中非常重要的一部分 本文将介绍爬虫程序
  • mysql视图总结

    1 概述 视图是指计算机数据库中的视图 是一个虚拟表 其内容由查询定义 同真实的表一样 视图包含一系列带有名称的列和行数据 但是 视图并不在数据库中以存储的数据值集形式存在 行和列数据来自由定义视图的查询所引用的表 并且在引用视图时动态生成
  • au人声处理_如何消去人声保留伴奏?

    因为有做混剪视频 经常需要把声音和背景音乐分离 所以我尝试过很多的办法 下面分享2种我觉得分离效果还行的方法 PS 先声明 目前技术只能优化声音 音乐分离 还不能完成剥离 所以人声和音乐分离后 音质肯定会有些许的损失 01 Au中置声道提取
  • 一个小时内学习SQLite数据库

    1 介绍 SQLite 是一个开源的嵌入式关系数据库 实现自包容 零配置 支持事务的SQL数据库引擎 其特点是高度便携 使用方便 结构紧凑 高效 可靠 与其他数据库管理系统不同 SQLite 的安装和运行非常简单 在大多数情况下 只要确保S
  • 使用Typora编辑markdown上传CSDN时图片大小调整麻烦问题

    文章目录 一 问题来源 二 解决方案 一 创建工程项目 二 代码 一 问题来源 我日常写博客时 首先使用 typora 编辑 markdown 文件 然后在 CSDN 的 markdown 编辑器中导入 md 文件 但是使用 typora
  • 攻防世界web题总结A

    题1 思路 题目说右键用不了 因为打开右键可以查看网页的代码 所以我们要想办法打开网页大源代码 复制链接在浏览器上打开 因为右键用不了 我们可以按一下快捷键 1 可以直接按 F12 不过有些电脑不可以 需要按 Fn F12 2 直接按 Ct
  • 初识java——熟悉java代码格式

    CD145 整数的二进制数表达中有多少个1 求一个整数 在内存当中存储时 二进制1的个数 方法一 一个整型的数字共32个比特位 每个比特位如何判断是否为1 只需让这一位和1进行按位与即可 import java util Scanner p
  • TARS-PHP:PHP构建高性能RPC框架

    内容来源 2018 年 5 月 19 日 阅文集团高级开发工程师梁晨在 PHPCon China 2018 技术峰会 进行 TARS PHP PHP构建高性能RPC框架 演讲分享 IT 大咖说 微信id itdakashuo 作为独家视频合
  • activiti-Cancel activity属性(cancelActivity)作用

    流程设计工具 activiti explorer activiti版本 5 22 在使用边界计时器事件时 事件有一个参数 Cancel activity 作用上图 如下 Cancel activity选中 在事件中设置5秒计时 当开始流程后
  • Error: Failed to download resource "python"

    最近在mac 部署flutter开发环境遇到一些IOS开发工具安装的问题 为解决问题到处寻找答案 浪费了大量时间 故在此记录一下避免再次入坑 执行flutter doctor检测环境 开始安装缺失工具 taodeMacBook Pro ta
  • osgEarth的Rex引擎原理分析(二十四)TileNode节点下的场景树分析

    目标 十八 中的问题54 osgEarth Drivers RexTerrainEngine TileNode是rex引擎下的一个重要节点 这个节点还不是真正在Earth中看到的瓦片 其内部还有场景树 具体包括一个SurfaceNode和四
  • stm32学习笔记——外部中断

    stm32的每个IO口都可以作为外部中断输入 stm32的中断控制器支持19个外部中断 事件请求 线0 15 对应外部IO口的输入中断 线16 连接到PVD输出 线17 连接到RTC闹钟事件 线18 连接到USB唤醒事件 每个外部中断线都可
  • Android中的Cursor到底是什么?如何理解Cursor的方法都在做什么事情?

    一 Cursor到底是什么 网上很多博客都介绍了Cursor 介绍了各种概念 各种原理 可是有的小伙伴可能还是很懵逼 这特码的到底都是什么 刚开始接触Cursor的时候也是一脸懵逼 看到人家说这个方法是在干什么干什么 可以脑子里没有一个生动
  • 双循环链表

    线性存储 数组和链表都是一维结构 以线性结构存储数据 数组 数组和计算机内存结构保持一致 现有的编程语言提供了语言层面对数组的支持 数组支持随机访问 可以按照索引高效读取和存储 一般来说 数组在初始化时 已固定大小 当数组存储已满 需要再存
  • js正则详情

    一 原子 可以分微可见原子和不可见原子 1 可见原子 标点 等等 英文字母数字a z A Z 0 9 汉字 韩文 日文 阿拉伯文等 等数理化符号 其他可见字符 2 不可见原子 换行符 n 回车 r 制表符 t 空格 其他不可见符号 二 元字
  • stm32 里的0xFFFFFFul

    表示常量类型的方法 就是放后面的 定义变量放前面 u 表示 unsigned 无符号 l 表示 long 长整型 如果不加UL的话那就是默认的int型 UL后缀 也是一种强制转换方式 SysTick LOAD RELOAD Pos 代表 0
  • QT 创建使用动态库

    一 创建并编译库 创建项目 选择Library下的C Library 2 选择shared library 3 此时创建的项目的 pro文件如下 QT gui TEMPLATE lib DEFINES Data LIBRARY DEFINE
  • 功率放大器

    曾经有一个珍贵的学习机会摆在我面前我没有珍惜 知道失去以后才追悔莫及 上天不可能再给我一次机会 所以我只能一遍吐槽自己脑残一遍含泪复习了 天下没有后悔药可吃 只有亡羊补牢为时不晚吧 Z 第一 首先搞明白什么是功率放大器 说明放大的是功率而不
  • FPGA/IC面试常见问题汇总

    参考 数字IC设计工程师笔试面试经典100题 OnePlusZero的博客 CSDN博客 数字ic设计面试题 目录 参考 数字IC设计工程师笔试面试经典100题 OnePlusZero的博客 CSDN博客 数字ic设计面试题 1 同步复位和