上午刚参加完一场面试,晚上又有大疆的FPGA笔试题要做,下午临时磨刀,找点往年的笔试题练练手:
1 如果只使用2选1mux完成异或逻辑,至少需要几个mux?
这类问题,我在以前的博客中练习过:https://blog.csdn.net/Reborn_Lee/article/details/89518120
至于思路,我在后面给出,先写出表达式,在根据表达式画出原理图:
可知,两个可以实现,一个肯定不行,那就是2个了。
以前见过和这个同类的题目有:
用多路选择器实现与门,或门等。
当然,不仅如此,还有反相器:
output = S ? 0 : 1;
缓冲器:
output = S ? 1 : 0;
至于上面所说的异或门,我们用表达式更容易表达清楚,通过表达式在画出原理图岂不更简单,例如:
output = A ? ( B ? 0 : 1) : (B ? 1 : 0) ;
写出这个表达式很简单,A为1的话,选第一个括号内的内容,对于第一个括号,B 为·1,考虑到异或运算,应该是0,否则为1.
如此分析即可。
根据此表达式,最可能画出的原理图是:
当然这肯定是对的,是不是最简的,就不一定了,下面分析B如果为0的话,第一个选择器输出为1,第二个选择器输出为0(等于B),这不就等效于第二个选择器可以用B本身代替,因此化简为:
当然还不止这些,还有一位全加器,这里就不说了,有了公式,都好办。
2 在对信号采样过程之前抗混滤波,其作用是什么?它选用何种滤波器?其截止频率如何确定?
根据奈奎斯特采样定律,对带宽有限的模拟信号进行采样,采样频率应该高于信号最高频率的2倍,否则会出现频谱混叠现象,这样就无法恢复出原始信号。
为解决频谱混叠问题,在对模拟信号进行采样前,需要采用低通滤波器进行滤波处理,滤波器的截止频率理论上为采样频率的一半,实际工程中可以更小一点,为:
截止频率(fc)= 采样频率(fz) / 2.56
3 将二输入的与非门当非门使用时,另一端的接法应该是
与非门:
任意一端为0,输出为1.
只有两端同为1时,输出为0;
而非门则,输入为0,输出为1,输入为1,输出为0.
根据此,可知,二输入与非门另一端接高电平,即可当成非门使用。
4 属于高速串行接口的是
PCIE,USB,SPI,RapidIO;
参考链接:https://www.cnblogs.com/ylsm-kb/p/9281597.html
(abcd)
PCIE,USB,RapidIO是高速串行总线,我没意见,SPI我实在不太清楚,查了几个说法,百度:SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线。
因此,也算是吧。
5 代码覆盖率
包括语句覆盖,判定覆盖,条件覆盖,路径覆盖;
6 速度优化、面积优化的措施
面积优化:
资源共享、串行化;
速度优化:
流水线、关键路径法,寄存器配平;
7 线与逻辑
线与逻辑是两个输出信号相连可以实现“与”的功能,可以用OC或OD门来实现,需要在输出端加一个上拉电阻。
8 对于同步fifo,每100个cycle可以写入80个数据,每10个cycle可以读出8个数据,fifo的深度至少为?
写时钟频率 w_clk,
读时钟频率 r_clk,
写时钟周期里,每B个时钟周期会有A个数据写入FIFO
读时钟周期里,每Y个时钟周期会有X个数据读出FIFO
则,FIFO的最小深度是?
计算公式如下:
fifo_depth = burst_length - burst_length * X/Y * r_clk/w_clk
例举说明:
如果100个写时钟周期可以写入80个数据,10个读时钟可以读出8个数据。令wclk=rclk ,考虑背靠背(20个clk不发数据+80clk发数据+80clk发数据+20个clk不发数据的200个clk)代入公式可计算FIFO的深度
fifo_depth = 160-160X(80%)=160-128= 32
拓展:
如果令wclk=200mhz,改为100个wclk里写入40个,rclk=100mhz,10个rclk里读出8个。那么fifo深度为48
计算如下fifo_depth =80-80X(80%)X(100/200)=80-32=48