华为硬件逻辑岗笔试题(一)
积少成多,集腋成裘,坚持!!!目录1. 进制转换2. 状态机和编码方式3. 存储器的分类4. Verilog语法中的操作符5. 对组合逻辑的认识6. 对时序逻辑的认识7. 竞争冒险的认识8. 基本时序逻辑电路9. 建立时间和保持时间10. 同步时序电路11. 组合逻辑和时序逻辑判断13. 基本总线的理解14.加法器15.FPGA开发工具1. 进制转换1、十进制46.25对应的二进制表达式为( )。
积少成多,集腋成裘,坚持!!!
目录
-
1. 进制转换
1、十进制46.25对应的二进制表达式为( )。
A 101110.11 B 101101.01
C 101110.1 D 101110.01
考点:整数部分:除基逆取余,乘基顺取整。
-
2. 状态机和编码方式
2、在时序电路的状态转换表中,若状态数N=3,则状态变量数最少为( )
A 4 B 8 C 2 D 16
考点:状态机和编码方式(格雷码,独热码,二进制码)
为什么例子中我们使用的是独热码而非二进制码或格雷码呢?那就要从每种编码的特性上说起了,首先独热码因为每个状态只有1bit是不同的,所以在执行到43行时的(state == TWO)这条语句时,综合器会识别出这是一个比较器,而因为只有1比特为1,所以综合器会进行智能优化为(state[2] == 1’b1),这就相当于把之前3比特的比较器变为了1比特的比较器,大大节省了组合逻辑资源,但是付出的代价就是状态变量的位宽需要的比较多,而我们FPGA中组合逻辑资源相对较少,所以比较宝贵,而寄存器资源较多,所以很完美。而二进制编码的情况和独热码刚好相反,他因为使用了较少的状态变量,使之在减少了寄存器状态的同时无法进行比较器部分的优化,所以使用的寄存器资源较少,而使用的组合逻辑资源较多,我们还知道CPLD就是一个组合逻辑资源多而寄存器逻辑资源少的器件,因为这里我们使用的是FPGA器件,所以使用独热码进行编码。就因为这个比较部分的优化,还使得使用独热码编码的状态机可以在高速系统上运行,其原因是多比特的比较器每个比特到达比较器的时间可能会因为布局布线的走线长短而导致路径延时的不同,这样在高速系统下,就会导致采集到不稳定的状态,导致比较后的结果产生一个时钟的毛刺,使输出不稳定,而单比特的比较器就不用考虑这种问题。
用独热码编码虽然好处多多,但是如果状态数非常多的话即使是FPGA也吃不消独热码对寄存器的消耗,所以当状态数特别多的时候可以使用格雷码对状态进行编码。格雷码虽然也是和二进制编码一样使用的寄存器资源少,组合逻辑资源多,但是其相邻状态转换时只有一个状态发生翻转,这样不仅能消除状态转换时由多条信号线的传输延迟所造成的毛刺,又可以降低功耗,所以要优于二进制编码的方式,相当于是独热码和二进制编码的折中。
最后我们用一个表格来总结一下什么时候使用什么方式的编码效果最好(有时候不管你使用哪种编码方式,综合器会根据实际情况在综合时智能的给你进行编码的转换,当然这需要你设置额外的综合约束,这里我们不再详细讲解) 。
-
3. 存储器的分类
3、只读存储器ROM中的内容,当电源断掉后又接通,存储器中的内容 ( )。
A 全部为0 B 不可预料
C 保持不变 D 全部改变
考点:考察数字电路中存储器的基本知识
1)易失性存储器的代表就是RAM,RAM又分为DRAM(动态随机存储器)和SRAM(静态随机存储器),它们之间主要在于生产工艺不同。
SRAM保存数据是通过晶体管进行锁存的,其工艺复杂,生产成本高,所以价格相对较贵,不易做大容量,但是速度更快;DRAM保存数据靠电容充电来维持容量,生产成本较SRAM低,所以价格相对便宜,容量可以做到很大,速度虽然不如SRAM快但是随着工艺技术的提升,速度也很可观,所以较为常用。DRAM和SRAM都是异步通信的,速率没有SDRAM(同步动态随机存储器)和SSRAM(同步静态随机存储器)快。所以现在大容量RAM存储器是选用SDRAM的。
CPU中的Cache实质属于SRAM,而内存条则是属于DRAM。SDRAM和DDR SDRAM的区别在于DDR(Double Data Rate)是双倍速率。SDRAM只在时钟的上升沿表示一个数据,而DDR SDRAM能在上升沿和下降沿都表示一个数据。DDR也一步步经过改良出现了一代、二代、三代、四代,以及低功耗版本,现在也有五代。
2)非易失性存储器常见的有ROM,FLASH,光盘,软盘,硬盘。他们作用相同,只是实现工艺不一样。
ROM(Read Only Memory)在以前就是只读存储器,就是说这种存储器只能读取它里面的数据无法向里面写数据。实际是以前向存储器写数据不容易,所以这种存储器就是厂家造好了写入数据,后面不能再次修改。现在技术成熟了,ROM也可以写数据,但是名字保留了下来。ROM分为MASK ROM、OTPROM、EPROM、EEPROM。MASK ROM是掩膜ROM这种ROM是一旦厂家生产出来,使用者无法再更改里面的数据。OTPROM(One TimeProgramable ROM)一次可变成存储器,出厂后用户只能写一次数据,然后再也不能修改了,一般做存储密钥。EPROM(Easerable Programable ROM)这种存储器就可以多次擦除然后多次写入了。但是要在特定环境紫外线下擦除,所以这种存储器也不方便写入。EEPROM(Eelectrically Easerable Programable ROM)电可擦除ROM,现在使用的比较多因为只要有电就可擦除数据,就可以写入数据。
FLASH是一种可以写入和读取的存储器,叫闪存,FLASH也叫FLASH ROM,有人把FLASH当做ROM。FLASH和EEPROM相比,FLASH的存储容量大。FLASH的速度比现在的机械硬盘速度快,现在的U盘和SSD固态硬盘都是Nandflash。FLASH又分为Norflash和Nandflash。
-
4. Verilog语法中的操作符
4、在Verilog语言中,a = 4’b1011,那么&a为( )。
A 4’b1111 B 1’b1
C 1’b0 D 4’b1011
解析:考察Verilog基本语法中的操作符
“&”操作符有两种用途,既可以作为一元操作符(仅有一个操作数),也可以作为二元操作符(有两个操作数)。
当“&”作为一元操作符时表示归约与。&m是将m中所有比特相与,最后的结果为1bit。例:&4‘b1111 = 1&1&1&1 = 1’b1,&4’b1101 = 1&1&0&1 = 1’b0。
当“&”作为二元操作符时表示按位与。m&n是将m的每个比特与n的相应比特相与,在运算的时候要保证m和n的比特数相等,最后的结果和m(n)的比特数相同。例:4’b1010&4’b0101 = 4’b0000,4’b1101&4’b1111= 4’b1101。
我们在写Verilog代码时常常当if的条件有多个同时满足时就执行使用“&&”逻辑与操作符。m &&n是判断m和n是否都为真,最后的结果只有1bit,如果都为真则输出1‘b1,如果不都为真则输出1’b0。要注意和“&”的功能区分。
-
5. 对组合逻辑的认识
5、下面哪种不是组合逻辑电路功能描述方法( )。
A 真值表 B 布尔方程
C 状态机 D 逻辑框图
解析:考察数字电路中对组合逻辑电路的认识
-
6. 对时序逻辑的认识
6、时序电路的一般特征不包括( )。
A 系统的状态保持或者变化情形取决于系统的输入及其当前状态
B 时序机的状态图和状态表是相同的设计信息的两种不同的表示形式
C 可以没有时钟
D 时序电路(机)的当前状态和输入信号决定了其下一状态及输出
解析:考察数字电路中对时序逻辑电路的认识
-
7. 竞争冒险的认识
7、组合逻辑电路消除竞争冒险的方法有( )。
A 在输出端接入滤波电容
B 后级加缓冲电路
C 屏蔽输入信号的尖峰干扰
D 前级加电阻
解析:考察数字电路中对组合逻辑电路中竞争冒险的认识
-
8. 基本时序逻辑电路
8、关于2019:1的MUX,下列描述哪个正确( )。
A 输出为1路
B 选择字为2019位
C 输入为2048路
D 以上皆对
解析:考察数字电路中对基本时序逻辑电路的认识
-
9. 建立时间和保持时间
9、寄存器的Tsu(建立时间)是如何定义的( )。
A 在时钟沿到来之后数据保持稳定的时间
B 在时钟沿带来前后数据都需要保持稳定的时间
C 在整个时钟周期数据保持稳定的时间
D 在时钟沿到来之前数据保持稳定的时间
解析:考察数字电路中对时序分析基本概念的认识
本题是个概念性的问题,常常在时序分析中提到。
建立时间(Set Up Time,简写为Tsu或Ts):是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间。
建立时间的门限(为了和建立时间区别开,所以简写为T_setup):时钟沿来到之前数据必须保持稳定的最小时间,芯片选定即决定,和制作工艺有关。
保持时间(Hold Time,简写为Th):是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被稳定的打入触发器,Th就是指这个最小的保持时间。
保持时间的门限(为了和保持时间区别开,所以简写为T_hold):时钟沿来到之后数据必须保持稳定的最小时间,芯片选定即决定,和制作工艺有关。
如果我们想让系统中的时钟沿能够正确的采集到数据,那么需要建立时间的余量/裕量(Setup Slack,简写为Sslack) = 建立时间(Ts) - 建立时间的门限(T_setup) ≥ 0且保持时间的余量/裕量(Hold Slack,简写为Hslack) = 保持时间(Th) - 保持时间的门限(T_hold) ≥ 0,采集到的数据最准确的地方就是在满足建立保持时间的情况下时钟沿采集到数据的中间位置。
了解这些基本的概念后可以更方便以后在讲解时序分析相关题目时快速理解。
-
10. 同步时序电路
10、关于同步设计,说法错误的是( )。
A 在可编程逻辑器件中,使用同步电路可以避免器件受温度,电压,工艺的影响,易于消除电路的毛刺,使设计更可靠,单板更稳定
B 为保证逻辑设计可靠,必须保证整个电路中只有一个时钟域,同时只使用同一个时钟沿
C 同步电路比较容易使用寄存器异步复位/置位端,以使整个电路有一个确定的初始状态
解析:考察数字电路中对同步时序电路的理解
首先我们先了解一下同步电路和异步电路的区别。
同步电路是由时序电路(寄存器和各种触发器)和组合逻辑电路构成的电路,其所有操作都是在严格的时钟控制下完成的。这些时序电路共享同一个时钟CLK,而所有的状态变化都是在时钟的上升沿(或下降沿)完成的。比如D触发器,当上升沿到来时,寄存器把D端的电平传到Q输出端。
异步电路主要是组合逻辑电路,用于产生地址译码器、FIFO或RAM的读写控制信号脉冲,但它同时也用在时序电路中,此时它没有统一的时钟,状态变化的时刻是不稳定的,通常输入信号只在电路处于稳定状态时才发生变化。也就是说一个时刻允许一个输入发生变化,以避免输入信号之间造成的竞争冒险。电路的稳定需要有可靠的建立时间和维持时间,待下面介绍。
电路设计可分类为同步电路设计和异步电路设计。同步电路设计利用时钟脉冲使其子系统同步运作,而异步电路设计不使用时钟脉冲做同步,其子系统是使用特殊的“开始”和“完成”信号(握手信号)使之同步。由于异步电路具有:无时钟偏移(Skew)问题、低电源消耗、平均效能而非最差效能、模块性、可组合和可复用性等优点,因此近年来对异步电路研究增加快速,论文发表数以倍增,而Intel Pentium 4处理器设计,也开始采用异步电路设计。当然异步电路设计也有很多缺点:由于增加了控制和用于DFT的电路,异步电路的面积开销可能高达同步设计的的两倍。而且由于缺乏专用于异步设计的商用EDA工具,而现在芯片设计的复杂度又越来越高,EDA工具对芯片设计来说是不可替代的,因此这一点也是我们对异步电路的实用性诟病最多的地方。
在同步电路设计中一般采用D触发器,异步电路设计中一般采用Latch。所以这也是为什么我们常常会听到有人说在FPGA设计中要尽量避免产生Latch的原因。
再给大家说一个常见的误区,很多人都以为在同步电路的设计中一定不可以有异步电路的存在,异步电路的设计中也不可以有同步电路的存在,其实这都是不对的。同步电路设计一定是整个电路是全局同步的设计,局部异步的设计;同样异步电路设计也一定是整个电路是全局异步的设计,局部同步的设计。
11. 组合逻辑和时序逻辑判断
11、属于组合逻辑电路的是( )。
A 全加器 B 移位寄存器
C 计数器 D 触发器
12、在下列逻辑电路中,不是组合逻辑电路的是( )。
A 编码器 B D触发器
C 加法器 D 译码器
首先我们先来看下如何用Verilog硬件描述语言来实现它们,并通过RTL视图以及波形图来看看他们的结构,来确定是组合逻辑电路还是时序逻辑电路。
-
13. 基本总线的理解
13、双向数据总线常采用( )构成。(华为硬件逻辑实习岗)
A 全加器 B 三态门
C 译码器 D 数据分配器
解析:考察对基本总线的了解。
-
14.加法器
14、信号A、B均是4bit输入,C = A+B,请问信号C应该定义( )bit。(华为硬件逻辑实习岗)
A 4 B 5
C 6 D 3
解析:考察对基本数字电路中加法器的了解。
根据上面加法器的例子,我们可以看出两个数相加求和后的总位宽为其中加数最大的位宽再加1。两个加数的位宽分别为m和n,其相加后的总位宽可以表示为:[max(m , n) + 1],也有一些题目是让求多个数相加总位宽需要多少,我们同样可以转化为两个数求总位宽的问题。
还有些题目会考察两个相乘后的积的总位宽,其总位宽为两个数位宽之和。两个乘数的位宽分别为m和n,其相乘后的总位宽可以表示为:m+n。
-
15.FPGA开发工具
15、下列哪些是FPGA开发工具( )。
A ISE B Vivado
C CCS D Quartus
解析:本题主要考察了对FPGA基本开发工具的了解。
每个生产FPGA芯片厂商的开发工具都各不相同,因为最后都需要对芯片进行布局布线的映射,所以只有自家的开发工具才能做的更好,第三方工具能做的最多也只能是仿真与综合。
全球三大FPGA厂商都是美国公司(也有说Actel排第四,这里不再列举),虽然国产FPGA近年来也是异军突起,但是在中高端领域无论是开发工具、还是芯片、还是市场份额都无法与之相比。
Xilinx作为全球FPGA市场份额最大的公司,其发展动态往往也代表着整个FPGA行业的动态。其开发工具有很多,主要做逻辑开发的目前有两种,2012年之前主要是ISE,支持7系列及以下的芯片开发,而Vivado是Xilinx公司于2012年开始发布的集成设计环境,主要支持7系列及以上的芯片开发,包括Zynq、UltraScale、UltraScale+等高端器件的支持,并引入Block Design的设计方法,且对文件夹的管理更加智能化。
Altera公司2015年被Intel斥资167亿美元收购,全球FPGA市场份额第二。Altera的开发工具叫Quartus,被收购前名为QuartusII,被收购后从改名为Quartus_Prime(从15.1版本开始往后)。
Lattice公司以其低功耗产品著称,全球FPGA市场份额第三,苹果7手机内部搭载的FPGA芯片就是Lattice的产品。Lattice公司的开发工具叫Diamond。
这里CCS不是FPGA开发工具,其全称是CodeComposer Studio,它是美国德州仪器公司(Texas Instrument,TI)出品的代码开发和调试套件。TI公司的产品线中有一大块业务是数字信号处理器(DSP)和微处理器(MCU),CCS便是供用户开发和调试DSP和MCU程序的集成开发软件。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)