4 Star 12 Fork 4

RV少年 (RV4Kids) / RVWeekly

 / 详情

面试中经常会遇到的FPGA基本概念,你会几个? 0

已完成
拥有者
创建于  
2021-07-08 22:48

https://mp.weixin.qq.com/s?__biz=Mzg4ODA5NzM1Nw==&mid=2247498170&idx=1&sn=ae7eacf294c2b7bb096f4c5b13b87977

碎碎思 OpenFPGA 6月21日

输入图片说明

1、什么是Setup 和Holdup时间?

答:Setup/hold time 是测试芯片对输入信号和时钟信号之间的时间要求。

建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。输入信号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就是建立时间-Setup time。如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。

保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如果holdtime不够,数据同样不能被打入触发器。

输入图片说明

2、什么是竞争与冒险现象?解决办法?

答:在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。
解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。三加选通信号。用D触发器,格雷码计数器,同步电路等优秀的设计方案可以消除。

输入图片说明

3、如何解决亚稳态?Metastability

答:亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。

解决方法:

  1. 降低系统时钟频率
  2. 用反应更快的Flip-Flop
  3. 引入同步机制,防止亚稳态传播
  4. 改善时钟质量,用边沿变化快速的时钟信号

关键是器件使用比较好的工艺和时钟周期的裕量要大。

输入图片说明

4、说说静态、动态时序模拟的优缺点

静态时序分析是采用穷尽分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误.它不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计,因此静态时序分析已经越来越多地被用到数字集成电路设计的验证中。

动态时序模拟就是通常的仿真,因为不可能产生完备的测试向量,覆盖门级网表中的每一条路径.因此在动态时序分析中,无法暴露一些路径上可能存在的时序问题;

静态时序分析缺点:

  1. 无法识别伪路径
  2. 不适合异步电路
  3. 不能验证功能

输入图片说明

5、用VERILOG写一段代码,实现消除一个glitch。

滤掉小于1个周期glitch的原理图如下:

输入图片说明

verilog代码实现如下:

module digital_filter_(clk_in,rst,host_rst,host_rst_filter);
input  clk_in;
input  rst;
input  host_rst;
output host_rst_filter;
reg host_rst_d1;
reg host_rst_d2;

always@(posedge clk_in or negedge rst)
  begin
    if(~rst)
    begin
        host_rst_d1 <= 1'b1;
        host_rst_d2 <= 1'b1;
       end
    else
      begin
        host_rst_d1 <= host_rst;
        host_rst_d2 <= host_rst_d1;
      end
  end
  
assign host_rst_filter = host_rst_d1 | host_rst_d2;
endmodule

滤掉大于1个周期且小于2个周期glitch的原理图如下:

输入图片说明

verilog代码实现如下:

module digital_filter_(clk_in,rst,host_rst,host_rst_filter);
input  clk_in;
input  rst;
input  host_rst;
output host_rst_filter;
reg host_rst_d1;
reg host_rst_d2;
reg host_rst_d3;

always@(posedge clk_in or negedge rst)
  begin
    if(~rst)
    begin
        host_rst_d1 <= 1'b1;
        host_rst_d2 <= 1'b1;
        host_rst_d3 <= 1'b1;
      end
    else
  begin
        host_rst_d1 <= host_rst;
        host_rst_d2 <= host_rst_d1;
        host_rst_d3 <= host_rst_d2;
       end
  end
  
assign host_rst_filter = host_rst_d1 | host_rst_d2 | host_rst_d3;
endmodule

输入图片说明

6、简述建立时间和保持时间

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

输入图片说明

7、简述触发器和锁存器之间的差别

锁存器对电平信号敏感,在输入脉冲的电平作用下改变状态。
D触发器对时钟边沿敏感,检测到上升沿或下降沿触发瞬间改变状态。

8、计算最小周期

Tco:寄存器时钟输入到数据输出的时间
Tdata:寄存器间的走线延迟
Tsu :建立时间
Tskew:时钟偏斜

最小时钟周期:

Tmin = Tco + Tdata + Tsu - Tskew。最快频率Fmax = 1/Tmin
Tskew = Tclkd – Tclks。

输入图片说明

9、时钟抖动和时钟偏移的概念及产生原因,如何避免?

时钟抖动jitter:指时钟信号的跳变沿不确定,故是时钟频率上的不一致。
时钟偏移Skew:指全局时钟产生的各个子时钟信号到达不同触发器的时间点不同,是时钟相位的不一致。
jitter主要受外界干扰引起,通过各种抗干扰手段可以避免。而skew由数字电路内部各路径布局布线长度和负载不同导致,利用全局时钟网络可尽量将其消除。

输入图片说明

10、同步复位和异步复位的区别

同步复位是复位信号随时钟边沿触发有效。异步复位是复位信号有效和时钟无关。

如异步复位:

输入图片说明

同步复位:

输入图片说明

同步逻辑和异步逻辑的区别

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

同步电路和异步电路区别

同步电路有统一的时钟源,经过PLL分频后的时钟驱动的模块,因为是一个统一的时钟源驱动,所以还是同步电路。异步电路没有统一的时钟源。

同步复位和异步复位的优缺点:

同步复位优点

  1. 有利于仿真器的仿真
  2. 可以使所设计的系统100%成为同步电路,这有利于时序分析,而且综合出来的Fmax一般较高
  3. 因为它只有走有效的时钟沿到来时才有效,所有滤除了高于时钟周期频率的毛刺

缺点

  1. 复位信号必须大于时钟周期,才能使其真正被系统识别并完成复位任务。同时还要考虑诸如时钟偏斜、组合逻辑路径延迟等因素。

  2. 由于大部分的逻辑器件库中的DFF都只有异步复位端口,所以采用同步复位的情况下,综合器就会在寄存器的数据输入端口插入组合逻辑,这样会耗费更多的逻辑资源。

异步复位的优点

  1. 大部分的逻辑器件库中的DFF都只有异步复位端口,因此采用异步复位更省资源
  2. 设计相对简单
  3. 异步复位信号识别方便,可以很方便的使用FPGA的全局复位端口GSR

缺点

  1. 在异步复位释放的时候容易出问题,具体来说就是:假如复位释放时正好在时钟有效沿附近,就很容易出现亚稳态
  2. 复位信号容易受毛刺影响

输入图片说明

11、什么是线与逻辑?在硬件电路上有什么要求?

线与逻辑是指两根线直接相连能够实现与的功能。在硬件上需要OC门,如果不采用OC门会会导致门电路管电流过大而烧坏逻辑门。用OC门实现线与,应在输出端口加一个上拉电阻。

输入图片说明

12、什么是竞争冒险?如何判断?怎么样消除?

在组合逻辑电路中,同一信号经过不同的路径到达某一汇合点的时间有先有后,这种现象称为竞争。
由于竞争而使电路发生瞬时错误的现象称为冒险。

消除方法

  1. 输出端加滤波电容。在输出端和地直接接一个几十皮法的电容可以吸收掉尖峰干扰脉冲。
  2. 加选通脉冲
  3. 修改逻辑设计
  4. 利用格雷码每次只有一位跳变,消除了竞争冒险产生的条件。

举例

下面这个电路,使用了两个逻辑门,一个非门和一个与门,本来在理想情况下F的输出应该是一直稳定的0输出,但是实际上每个门电路从输入到输出是一定会有时间延迟的,这个时间通常叫做电路的开关延迟。而且制作工艺、门的种类甚至制造时微小的工艺偏差,都会引起这个开关延迟时间的变化。

输入图片说明

输入图片说明

F = A & ~A

有竞争不一定产生冒险,如红线处。有冒险一定存在竞争。

输入图片说明

13、异步FIFO深度计算

FIFO用于缓冲块数据流,一般用在写快读慢时,

FIFO深度 / (写入速率 - 读出速率) = FIFO被填满时间 应大于 数据包传送时间= 数据量 / 写入速率

例:A/D采样率50MHz,dsp读A/D读的速率40MHz,要不丢失地将10万个采样数据送入DSP,在A/D在和DSP之间至少加多大容量(深度)的FIFO才行?

100,000 / 50MHz = 1/ 500 s = 2ms
(50MHz - 40MHz) * 1/500 = 20k既是FIFO深度。

输入图片说明

  1. 画出用D触发器实现2倍分频的逻辑电路
  2. 系统最高速度计算(最快时钟频率)和流水线设计思想:
  3. FPGA设计工程师努力的方向:
  4. 异步信号同步处理
  5. FPGA中可以综合实现为RAM/ROM/CAM的三种资源及其注意事项?
  6. HDL语言的层次概念?
  7. IC设计前端到后端的流程和EDA工具?
  8. MOORE 与 MEELEY状态机的特征?
  9. 说说静态. 动态时序模拟的优缺点?
  10. FPGA内部结构及资源:
  11. 名词解释,写出下列缩写的中文(或者英文)含义:
    FPGA :Field Programmable Gate Array 现场可编程门阵列
    VHDL:( Very-High-Speed Integrated Circuit Hardware Description Language) 甚高速集成电路硬件描述语言
    HDL :Hardware Description Language硬件描述语言
    EDA:Electronic Design Automation 电子设计自动化
    CPLD:Complex Programmable Logic Device 复杂可编程逻辑器件
    PLD :Programmable Logic Device 可编程逻辑器件
    GAL:generic array logic 通用阵列逻辑
    LAB:Logic Array Block 逻辑阵列块
    CLB :Configurable Logic Block 可配置逻辑模块
    EAB: Embedded Array Block 嵌入式阵列块
    SOPC: System-on-a-Programmable-Chip可编程片上系统
    LUT :Look-Up Table 查找表
    JTAG: Joint Test Action Group 联合测试行为组织
    IP: Intellectual Property 知识产权
    ASIC :Application Specific Integrated Circuits 专用集成电路
    ISP :In System Programmable 在系统可编程
    ICR :In Circuit Re-config 在电路可重构
    RTL: Register Transfer Level 寄存器传输级
  12. FPGA内部LUT实现组合逻辑的原理:
  13. 低功耗技术:
  14. MOS管基本概念及画图:
  15. FPGA详细设计流程(面试提问)
  16. 时序约束相关有哪几种时序路径:
  17. 创建时序约束的关键步骤:
  18. SRAM和DRAM的区别
  19. CMOS和TTL电路区别是什么?
  20. JTAG接口信号及功能
  21. 上拉电阻用途:
  22. 有四种复用方式,频分多路复用,写出另外三种
  23. 基尔霍夫定理的内容
  24. 三段式状态机
  25. 什么是状态图?
  26. 用你熟悉的设计方式设计一个可预置初值的 7 进制循环计数器 ,15 进制的呢?
  27. 你所知道的可编程逻辑器件有哪些?
  28. SRAM,FALSH MEMORY,DRAM , SSRAM及 SDRAM的区别 ?
  29. 有源滤波器和无源滤波器的区别
  30. 什么是同步逻辑和异步逻辑?
  31. 同步复位和异步复位的区别
  32. FPGA芯片内有哪两种储存器资源?
  33. 什么是竞争与冒险现象?怎样判断?怎样消 除?

输入图片说明

喜欢此内容的人还喜欢:

  • 介绍一些新手入门FPGA的优秀网站
  • FPGA 的重构
  • 谈谈Xilinx FPGA设计的实现过程

评论 (3)

袁德俊 创建了任务
袁德俊 关联仓库设置为RV4Kids/RVWeekly
袁德俊 修改了描述
袁德俊 修改了描述
袁德俊 修改了描述
袁德俊 修改了描述
袁德俊 修改了描述
袁德俊 修改了描述
袁德俊 修改了描述
展开全部操作日志

追寻ARM的起源-Acorn电脑简史及FPGA实现

https://mp.weixin.qq.com/s?__biz=Mzg4ODA5NzM1Nw==&mid=2247497470&idx=1&sn=56c8df7680c23b491e62746551d04eda

为了一睹这个Acron PC真容,利用大佬们的工作,移植到了《gamegirl》(“最强”硬核游戏机-基于FPGA硬解游掌机样机展示(GameGirl))上,项目地址如下:
https://github.com/suisuisi/oldcpu/tree/main/Acron%20Archimedes
阅读原文也可到达,包含了仿真等。

演示视频如下:
https://www.bilibili.com/video/BV1jw411f7QD

袁德俊 任务状态待办的 修改为进行中
袁德俊 任务状态进行中 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
5631341 yuandj 1624973227
1
https://gitee.com/RV4Kids/RVWeekly.git
git@gitee.com:RV4Kids/RVWeekly.git
RV4Kids
RVWeekly
RVWeekly

搜索帮助