当前位置:网站首页>FPGA学习笔记——知识点总结
FPGA学习笔记——知识点总结
2022-08-04 05:11:00 【一只特立独行的猪 ️】
FPGA学习笔记——知识点总结
1.由SoC到SOPC、SoC FPGA ,异同优缺点
由SoC到SOPC、SoC FPGA ,异同优缺点的介绍及常见应用场景
2.亚稳态消除
3.静态、动态时序模型的区别


4.MOS电路/门电路/组合逻辑电路
(1)CMOS/TTL/ECL电路比较

(2)TTL和CMOS逻辑之间可以互联吗?

从上面我们可以看出,当使用CMOS驱动TTL时,CMOS输出的高低电平均被TTL的输入识别成高低电平,所以CMOS可以驱动TTL电平,但是当TTL驱动CMOS时,当TTL输出高电平时有可能识别成未知状态,所以TTL不能驱动CMOS。
(3)硬件电路如何实现线与功能


(4)CMOS门电路为什么不能线与

直接线与的话会产生从电源到地的通路,然后烧CMOS管
(5)什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?
线与逻辑是两个输出信号相连可以实现与的功能,在硬件上,要用 oc 门来实现,由于不 用 oc 门可能使灌电流过大,而烧坏逻辑门。同时在输出端口应加一个上拉电阻.oc 门就是集 电极开路门.od 门是漏极开路门.
(6)常用逻辑电平?TTL 与 COMS 电平可以直接互连吗?
常用逻辑电平:TTL、CMOS、LVTTL、LVCMOS、ECL(Emitter Coupled Logic)、PECL (Pseudo/Positive Emitter Coupled Logic)、LVDS(Low Voltage Differential Signaling)、 GTL(Gunning Transceiver Logic)、BTL(Backplane Transceiver Logic)、ETL(enhanced transceiver logic)、GTLP(Gunning Transceiver Logic Plus);RS232、RS422、RS485 (12V,5V,3.3V); 也有一种答案是:常用逻辑电平:12V,5V,3。3V。 TTL 和 CMOS 不可以直接互连,由于 TTL 是在 0.3-3。6V 之间,而 CMOS 则是有在 12V 的有在 5V 的。CMOS 输出接到 TTL 是可以直接互连.TTL 接到 CMOS 需要在输出端口加 一上拉电阻接到 5V 或者 12V
5.简述if-else语句和case语句的区别
If…else语句特点:具有优先级。If不满足时,才执行else语句。Case语句特点:没有优先级。
一般类别少的用if…else,类别多用case
If…else语句基本上可以处理所有的复杂判定条件,但是在实际电路中占用更多的资源。所以如果可以用case语句的话尽量用case语句。
6.逻辑设计中竞争与冒险概念,如何消除?
竞争:在组合逻辑电路中,信号经过多条路径到达输出端,每条路径经过的逻辑门不同存在时差,在信号变化的瞬间存在先后顺序。这种现象叫竞争。
冒险:由于竞争而引起电路输出信号中出现了非预期信号,产生瞬间错误的现象称为冒险。表现为输出端出现了原设计中没有的窄脉冲,即毛刺。
解决办法:
① 是修改逻辑表达式避免以上情况,
② 是采用时序逻辑,仅在时钟边沿采样,
③ 是在芯片外部并联电容消除窄脉冲。
7.简述在FPGA中跨时钟域的处理方法?
答:一般解决跨时钟域有以下几种方法:
(1)多级寄存,一般针对单bit 控制信号跨越两个异步时钟域传输,可以采用多级寄存器。
(2)异步FIFO/RAM缓存,一般用于跨时钟域传输数据,写端和读端分别对应两个时钟域,由空/满信号按制煮读写过程,实现数据的跨域传输。
(3)数据编码,例如采用格雷码。
对于多位的异步信号如何进行同步?
对一位的异步信号可以使用“一位同步器进行同步”,
而多位的异步信号,可以采用如下方法:
- 1:可以采用保持寄存器加握手信号的方法(多数据,控制,地址);
- 2: 特殊的具体应用电路结构,根据应用的不同而不同;
- 3:异步 FIFO。(最常用的缓存单元是DPRAM)
8.状态机
状态机描述方法:一段式、两段式、三段式
(1)一段式
一段式状态机:所有的状态变化以及输出变化都写在一个always块中。在该always块中既描述状态的同步转移,又描述状态的输入条件和输出。
(2)两段式
两段式状态机:用两个always块来描述状态机。其中一个模块采用同步时序逻辑描述状态转移,另一个模块采用组合逻辑判断状态转移条件。它需要两个状态——现态和次态,然后通过现态和次态的转换来实现时序逻辑。输出采用组合逻辑。
(3)三段式
有三个always块,一个采用同步时序的方式描述状态转移,一个采用组合逻辑的方式判断状态转移条件、描述状态转移规律,第三个always使用同步时序的方式描述每个状态的输出。
–
(4)比较

三段式状态机的好处:工
1、将组合逻辑和时序逻辑分开,利于综合器分析优化;
2、既可以用state_c作为条件也可以用state_n作为条件;注意:用**state_ c用为条件会比stae_n作为条件晚一个时钟周期;
3、对于复杂状态机,三段式状态机更利于功能维护。
(5)关于主从状态机
主状态机中的一些状态需要执行相似的子任务,若将这类子任务嵌入到主状态机的不同状态中,会导致状态机的状态数较多,不利于阅读、维护。处理这些子任务的最好的方法是使用主从状态机,在主状态机的某个状态下,可以启动从状态机执行任务,完成后再回到主状态循环中。主状态机提供开始信号,触发子状态机执行任务,从状态机完成任务后返回一个“已完成”信号,类似于软件中的子程序调用。
使得设计模块化、时序清晰,易于维护。
(6)Moore状态机和Mealy状态机。
根据状态机的输出是否与输入条件相关来区分Moore状态机和Mealy状态机。
Moore状态机:输出仅仅与当前状态有关;
Mealy状态机:输出不仅取决于当前状态,还和输入有关;
—9
8.格雷码·与·二进制转换


10.异步复位
(1)异步复位同步释放
所谓异步复位同步释放,就是在rst_n信号为低时,立刻进行复位,即复位信号与时钟相互独立;而rst_n信号由低到高释放时,为了防止亚稳态的出现,将rst_n信号用DFF向后延一周期,外部复位信号不会在出现释放时与clk信号竞争,整个系统将与全局时钟clk信号同步
简单理解:第2级DFF释放信号与时钟clk边沿同步,所以释放信号在clk上升沿后需经过Tco(Tsu+Th)才能到达下一级DFF的复位端口,所以可以满足下一级DFF的recovery time和removal time,从而不会出现亚稳态
recovery time指的是在有效时钟沿来临之前,异步控制信号必须保持稳定的时间,类似setup slack time
removal time指的是在有效时钟沿来临之后,异步控制信号必须保持稳定的时间,类似hold slack time。
(2)异步复位,同步释放的优点
避免复位信号释放的时候造成亚稳态问题
只要复位信号一有效,电路就处于复位状态,与时钟沿无关
有效捕捉复位,即使是短脉冲复位也不会丢失
有明确的复位撤销行为。复位的撤离是同步信号,因此有良好的的撤离时序和足够的恢复时间
11.串行通讯
(1)通信方式:
串行通信的通信方式:同步通信和异步通信
- 同步通信:带时钟同步信号的数据传输;发送方和接收方在同一时钟的控制下,同步传输数据。
- 异步通信:不带时钟同步信号的数据传输;发送方与接收方使用各自的时钟控制数据的发送和接收过程。

(2)传输方向:
串行通信的传输方向:
- 单工:数据只能沿一个方向传输;
- 半双工:数据传输可以沿两个方向,但需要分时进行;
- 全双工:数据可以同时进行双向传输。

(3)常见的串行通信接口:

12.阻塞赋值与非阻塞赋值的不同?使用阻塞赋值和非阻塞赋值一般有着什么原则?
答:阻塞赋值操作符用等号(即=)表示。“阻塞”是指在进程语句(initial 和always)中,当前的赋值语句阻断了其后的语句,也就是说后面的语句必须等到当的赋值语句执行完毕才能执行。而且阻塞赋值可以看成是一步完成的,即:计算等号右边的值并同时赋给左边变量。
非阻塞赋值操作符用小等于号(即(<=)表示。“非阻塞”是指在进程语句(initial和 always)中,当前的赋值语句不会阻断其后的语句。
非阻塞语句可以认为是分为两个步骤进行的:
a.计算等号右边的表达式的值。(我的理解是:在进入进程后,所有的非阻塞语句的右端表达式同时计算,赋值动作只发生在顺序执行到当前非阻塞语句那一刻)
b.在本条赋值语句结束时,将等号右边的值赋给等号左边的变里。
c在设计电路时,always 时序逻辑块中多用非阻塞赋值,always 组合逻辑块中多用阻塞赋值;在仿真电路时,initial 块中一般多用阻塞赋值。
(1)时序电路建模时,用非阻塞赋值。
(2)锁存器电路建模时,用非阻塞赋值。
(3)用always块建立组合逻辑模型时,用阻塞赋值。
(4)在同一个always 块中建立时序和组合逻辑电路时,用非阻塞赋值。
(5)在同一个always块中不要既用非阻塞赋值又用阻塞赋值。
(6)不要在一个以上的always块中为同一个变量赋值。
(7)在赋值时不要使用#0延时。
13.如何提高系统运行速度

14…什么叫功能仿真?什么叫时序仿真?两者有什么区别?
功能仿真又称前仿真,是在不考虑器件延时的理想情况下的一种项目验证方法,通过功能仿真来验证一个项目的逻辑功能是否正确。 时序仿真又称模拟仿真或后仿真,是在考虑设计项目具体适配器件的各种延时的情况下的一种项目验证方法。时序仿真不仅测试逻辑功能,还测试目标器件最差情况下的时间关系。 注:功能仿真无延时(验证逻辑是否正确 时用),时序仿真有延时(仿真出实实在在的芯片工作波形,实际芯片是有延时的。
15.function和task的区别
function和task的区别
Task和function分别用来定义任务和函数,利用任务和函数可以把一个很大的程序模块分解为许多较小的任务和函数便于理解和调试,即增强了代码的可读性和可维护性。
Function和task说明语句的不同点:
(1)函数只能和主模块共用同一个仿真时间单位,而任务可以自己定义自己的仿真时间单位。
(2)函数不能启动任务,但是任务可以能启动其他任务和函数。
(3)函数至少要有一个输入变量,而任务可以没有或者有多个任何类型的变量。
(4)函数返回一个值,而任务则不返回值。
(5) 任务可以有任意多个输入、输入输出inout、输出变量;在任务中可以使用延迟、事件和时序控制结构,在任务中可以调用其他的任务和函数。
(6) 可重入任务使用关键字automatic进行定义,它的每一次调用都对不同的地址空间进行操作。因此在被多次并发调用时,它仍然可以获得正确的结果。
(7) 函数只能有一个返回值,并且至少要有一个输入变量;在函数中不能使用延迟、事件和时序控制结构,但可以调用其他函数,不能调用任务。
(8) 当声明函数时,Verilog仿真器都会隐含地声明一个同名的寄存器变量,函数返回值通过这个寄存器传递回调用处。
(9) 递归函数使用关键字automatic进行定义,递归函数的每一次调用都拥有不同的地址空间。因此对这种函数的递归调用和并发调用可以得到正确的结果。
(10) 任务和函数都包含在设计层次之中,可以通过层次名对它们进行调用。
N.选择错题整理
(1)对时钟约束" create_clock -name clk100 -period 10 -waveform {0.00 5.00}[get_portsClkIn] "的表述不正确的是( )。
A、周期为10ns
B、0到5ns期间为不定态
C、占空比为50%
D、时钟信号名称为"clk100"
正确答案(B)
create_clock -name clk100 -period 10 -waveform {0.00 5.00}[get_portsClkIn]
clk100 时钟名称 周期 10 ,0.00-5.00高电平,占周期10的一半
(2)下列哪些语句不可以被综合成电路( )。
A、initial
B、always
C、assign
D、for
正确答案(A)
(3)INTEL FPGA芯片不包括( )。
A、Cyclone V
B、Kintex-7
C、Arria
D、Stratix
正确答案(B)
(4)在Verilog中,下列哪些语句属于分支语句:( AC )
A.if-else
B.Switch
C.Case
D.While
(5)下列标识符中,不合法的标识符是:( B )。
A.State0
B.9moon
C.Not_Ack_0
D.signall
数字以及下划线开头不能作为标识符
(6).在Quartus Prime开发环境中可以使用以下哪些方式来进行管脚分配( ABC )
A.Assignment Editor
B.Pin Planner
C.使用Tcl脚本
D.使用SignalTap
SingalTap 板级调试
(7)为避免 latch 的产生,需要注意以下几点( ABD )
A.if-else或case语句,结构一定要完整
B.不要将赋值信号放在赋值的源头,或条件判断当中
C.如果不要求立刻输出,将信号进行相关逻辑的组合
D.敏感信号列表建议多用 [email protected](*),防止信号漏写
B:不要将赋值信号放在赋值的源头:即作为条件,又是结果,会陷入死循环
C:信号进行相关逻辑的组合,混信号,对它进行其他逻辑组合,会造成锁存、latch 的产生,
(8)对FPGA器件的接口描述正确的有( ABC )
A.FPGA具有大量可自定义的输入输出接口
B.FPGA中某些硬核IP资源的管脚被限定到了—些管脚上
C.FPGA的IO口,主要是按数字逻辑信号(高电平与低电平)的方式的输出
D.FPGA具有大量的IO口,因此FPGA适合并口通讯,不适合串行口通讯
(9)下列优化方法中哪两种是提高运行速度(速度优化)方法:( D )。 ①流水线设计 ②资源共享 ③逻辑优化 ④串行化 ⑤寄存器配平 ⑥关键路径法
A.①⑤
B.②③
C.②⑥
D.①⑥
(10).出现锁存器Latch的原因( ABC )。
A.if语句不完整
B.case语句不完整
C.敏感列表不完整
D.复位处理不正确
(11)下列关于testbench说法错误的是( A )
A. testbench必须可综合
B. 设计testbench是FPGA设计中非常重要的一个步骤
C. testbench用于对设计进行仿真验证
D. 可使用Verilog和VHDL语言进行testbench的设计
(12)我们知道在FPGA芯片上存在大量的片上RAM模块,请问下列哪些选项Intel FPGA的片上RAM模块可以实现的功能( ABC )
A.双端口RAM
B.FIFO
C.移位寄存器
D.SDRAM
FIFO封装的双端口RAM
SRAM静态RAM
DRAM动态RAM
SDRAM随机动态RAM,速度快,容量高
边栏推荐
- Interesting Kotlin 0x0E: DeepRecursiveFunction
- BFC、IFC、GFC、FFC概念理解、布局规则、形成方法、用处浅析
- C Expert Programming Chapter 5 Thinking about Chaining 5.6 Take it easy --- see who's talking: take the Turning quiz
- C Expert Programming Chapter 4 The Shocking Fact: Arrays and pointers are not the same 4.4 Matching declarations to definitions
- What is the salary of a software testing student?
- 【21 Days Learning Challenge】Direct Insertion Sort
- 信息学奥赛一本通 1312:【例3.4】昆虫繁殖
- [Evaluation model] Topsis method (pros and cons distance method)
- 【SemiDrive源码分析】【MailBox核间通信】47 - 分析RPMSG_IPCC_RPC 方式 单次传输的极限大小 及 极限带宽测试
- go module的介绍与应用
猜你喜欢
随机推荐
What are the steps for how to develop a mall system APP?
使用Loadrunner进行性能测试
备份工具pg_dump的使用《postgres》
[Skill] Using Sentinel to achieve priority processing of requests
There is an 8 hour difference between the docker installation of mysql and the host.
Landing, the IFC, GFC, FFC concept, layout rules, forming method, use is analysed
编程大杂烩(四)
8大软件供应链攻击事件概述
7. The principle description of LVS load balancing cluster
JVM Notes
C Expert Programming Chapter 5 Thinking about Linking 5.3 5 Special Secrets of Library Linking
Plus版SBOM:流水线物料清单PBOM
烧录场景下开发如何进行源代码保密工作
go module的介绍与应用
触觉智能分享-SSD20X实现升级显示进度条
有趣的 Kotlin 0x0E:DeepRecursiveFunction
System design. How to design a spike system (full version transfer)
败给“MySQL”的第60天,我重振旗鼓,四面拿下蚂蚁金服offer
See how DevExpress enriches chart styles and how it empowers fund companies to innovate their business
redis中常见的面试题










