一、单选题
跨时钟域电路的设计如下:
如果要用异门或非门作为反相器(非门),则输入端A B端的连接方式为()
触发器的D端逻辑表达式为:-toc" style="margin-left:40px;">D触发器的D端逻辑表达式为:
FIFO深度:ModuleA/ModuleB用的是同个Clock, Clock频率80MHz。
至少需要()级触发器才能生成序列信号110111
以下关于System Verilog正确的描述
UVM在层次结构中,顶层部件的类型是 ()
滤波器,完成功能为 ()-toc" style="margin-left:40px;">在数字信号上采样时,通常需要添加什么样的滤波器来完成功能 ()
下列属于异步总线的是 ( )
()电路的逻辑功能是,任何时刻的输出仅取决于此时的输入,与电路的原始状态无关。
芯片设计流程当中,通常会进行后仿真(post-simulation),关于后仿的作用,以下说法不正确的是 ( )-toc" style="margin-left:40px;">在芯片设计过程中,通常会进行后仿真(post-simulation),关于后仿的作用,以下说法是不正确的 ( )
以下异步处理是正确的 ( )
跨时钟域电路的设计是正确的 ( )
衡量数字通信系统传输质量的指标是 ( )
移位操作符:以下代码片段实现的电路功能是 ( )
十六进制数0x12345678为big-endian格式,对应little-endian格式为( )
大端模式和小端模式
C语言和RTL明显不同的是( )
下列不属于异步总线的是( )
实现以下( )CMOS电路基本单元需要的MOSFET 个数最少
二、多选题
以下方法哪些是进行面积优化( )。
速度优化,提高运行速度:
资源(面积)优化意义:
面积优化,提高资源利用率以降低功耗要求:
下面哪些属于动态验证范畴( ).
在异步设计中的对跨时钟处理的信号,功能验证时般需要考虑以下哪些因素()
可综合的verilog语法包括( )
在高速的系统设计中,下列哪种优化方案的可以提高系统的工作频率()
三、填空题
assign重写一段代码。
ROM位宽线宽
SRAM深度
OOP的三大特征是
NAND和NOR Flash的主要区别是:
四、问答题
五、编程题
参考资料
FPGA、数字IC系列(1)——**科技2021数字IC提前批笔试 - 知乎 (zhihu.com)
FPGA/数字IC秋招笔试面试002——FPGA设计的面积优化和速度优化(2022届) - 知乎 (zhihu.com)
IC/FPGA系统设计的速度和面积优化_Arist.-CSDN博客_面积优化和速度优化
delay 芯片时序output_2021**科技校招芯片岗提前批真题解析(修正版)_weixin_39834767的博客-CSDN博客
FPGA/IC笔试——**提前批 - 一曲挽歌 - 博客园 (cnblogs.com)
一、单选题
A: 信号经两级D触发器同步后即可进行跨时钟域传递 B: 跨时钟域电路存在亚稳态风险,最好避免使用 C: 跨时钟域电路中一定存在亚稳态 D: 采用单一时钟的电路也可能产生亚稳态
分析:
A:A或B中有一个接“0” B:A和B并联使用 C:A或B中有一个接"1” D:不能实现
分析:
Y=!(A^B)=A同或B:A为0时,B为0/1,Y为1/0;
选A
always @( posedge clk or negedge rst_n) if(~rst n) q<= 1'b0; else if(set) q<= 1'b1; else if(wr) q<= wdata;
A: ~set & (we & wdata) | q B: set | (wr | wdata) & q C: set | wr & wdata | ~wr & q D: set & (~wr & q) | wr & wdata & (~set)
分析:
按优先级应是rst_n最高,但是选项中并未出现,则set为1时,输出为1;否则wr为1且wdata为1时,输出为1;再wr为0的话,输出保持上一个q的值,则需要q为1;
因此选C
FIFO深度:
ModuleA和ModuleB同时启动,ModuleA产生如下周期性的burst数据给ModuleB,一共产生8次burst. burst rate : 1280 Mbit/s,burst持续时间1us。burst内部速率均匀,burst周期5us,余下的4us内没有数据
ModuleB收到启动信号后,需要花10us做初始化,所以先把Module A的数据缓存在ModuleB内部的同步FIFO中,同步FIFO位宽32bits,初始化结束后,ModuleB以640 Mbit/s的均匀速度从FIFO中读取数据。在满足功能需求的前提下,为了节省电路面积,要求FIFO size越小越好,以下四个选项的FIFO深度,选项()的FIFO深度符合要求: A: 128 B: 64 C: 96 D: 160
ModuleA发出数据,但其速率较快,moduleB读取速率跟不上,因此通过中间的FIFO进行数据缓存,这样FIFO的输入端收到ModuleA的数据进行存储,同时moduleB在输出端进行数据的读取,现在要讨论的是FIFO的深度最小可为多少,就能满足条件?
解析:考虑最大数据情况,在ModuleB启动的10us内,ModuleA一直在传输数据,一共2us有效数据,;在第11us,ModuleA传输数据 1280Mbit/s * 1us = 1280 bit,ModuleB读取 640 Mbit/s * 1us = 640 bit,,此时。
此时达到FIFO的最大需要存储值,因为后面每次写入,moduleB都会有足够的时间(1us的发送数据,5us的读取时间)写出数据,即考虑第11us时FIFO的最大深度即可。 考虑读取,前15us共写入 3 * 1280=3840,读取 5*640=3200,需要存储640,这也是15us后,FIFO所能达到的最大数据容量了。 综合考虑,,,。
A: 3 B: 4 C: 2 D: 5
分析:
8bit的序列8个状态可以生成,8个状态用3bit的状态信号即可表征,选A
如果是规定使用移位寄存器,而不是状态机来实现的话,则需要5个寄存器。
A:sv中可以用logic代替Verilog中的wire和reg类型
B:sv中,定义成reg的信号会被综合成触发器
C:sv中的function语言不可被综合
D:其他都不正确
E:sv是提供给验证使用的,因此不能被综合
分析:
A:正确
Wire is verilog datatype whereas logic is SystemVerilog data type.
1.1、Logic:SystemVerilog logic data type is 4-state data type
1.2、Wire:Verilog wire also 4-state data type, wire is used to connect input and output ports of a module instantiation together with some other element in your design
B:错误
以下是verilog-2001的标准中对wire和reg的定义如下:
wire:
A wire net can be used for nets that are driven by a single gate or continuous assignment.
reg:
Assignments to a reg are made by procedural assignments (see 6.2 and 9.2). Since the reg holds a value between assignments, it can be used to model hardware registers. Edge-sensitive (i.e., flip-flops) and level sensitive (i.e., RS and transparent latches) storage elements can be modeled. A reg needs not represent a hardware storage element since it can also be used to represent combinatorial logic.
这段话的意思是:在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到一个变量当中,而这个变量可以声明成reg类型的。根据触发条件的不同,过程赋值语句可以建模不同的硬件结构:如果这个条件是时钟的,那么这个硬件模型就是一个;如果这个条件是某一信号的,那么这个硬件模型就是一个;如果这个条件是赋值语句右侧,那么这个硬件模型就是一个。
也就是说,综合出触发器的条件是,
C:sv中的function语言
D:错误
E:sv是提供给验证使用的,因此不能被综合()
A:uvm_test B:uvm_root C:uvm_top D:uvm_component
分析:
uvm_root是验证平台中所有UVM components的“隐含”的top-level和phase控制器。用户不需要直接实例化uvm_root,UVM会自动创建uvm_root单一实例,用户可以使用全局变量(uvm_pkg范围内)uvm_top来访问uvm_root
答案:B
A:高通,抗混叠滤波
B:低通,抗周期延拓
C:低通,抗混叠滤波
D:高通,抗周期延拓
分析:
上采样与下采样,转到:数字信号的生成——上采样与下采样_weixin_42385536的博客-CSDN博客_数字信号上采样
(网友解释:过采样技术的低通滤波器要同时完成量化噪声的滤除和降采样时抗混叠滤波的功能。)
答案:这里网上有两种答案,B和C。个人见解:上采样后,频谱被压缩了,插入零越多,压缩后的带宽越小,好像并不会造成频谱混叠,应该是为了抗周期延拓吧,毕竟周期延拓的现象更明显,所以我选B。
A:SPI
B:USB
C:UART
D:IIC
分析: (1) SPI——同步通信;串行通信;全双工;主从通信(某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机)。
(2) USB——同步通信;通用串行总线。
(3) UART——;异步通信;串行通信;全双工; 对等总线,没有仲裁机制,所以只能挂载两个同时收发数据的设备,双方都可以发送和接收。
(4) I2C——同步通信;串行通信;半双工;主从通信(总线上支持多个主机和多个从机,总线上任何能够进行发送/接收数据的设备都可以占领总线。当然,任意时间点上只能存在一个主控。多主控,主器件同时争夺总线控制权时,可仲裁)。
答案:选C
A:静态逻辑
B:组合逻辑
C:动态逻辑
D:时序逻辑
分析:
A:静态逻辑电路中靠使MOS晶体管保持导通或截止状态,从而维持稳定的输出状态。输入信号存在,对应的输出状态存在;只要不断电,输出信息可以长久保持;
B:动态逻辑电路中利用来保存信息,即使输入信号不存在,输出状态也可以保持,但由于泄漏电流的存在,信息不能长期保持;
D:时序逻辑电路由存储电路和组合逻辑电路两部分组成,任何一个时刻的共同决定。
答案:选C
A:抽检netlist是否和RTL功能一致
B:抽检电路中是否出现有害的glitch
C:抽检时序是否有违规
D:抽检电路中是否存在亚稳态
答案:B
A:信号经过两级触发器即可完成异步信号的传递
B:只要信号传递的两端时钟频率不相等,即认为是异步信号
C:异步复位信号需要经过同步处理后再使用是安全的
D:异步FIFO中使用格雷码传递异步计数器可以保证每一拍传递的数据都是准确的
分析:
A:信号分为单bit和多bits信号,若是多bits信号,就不能通过两级触发器传递;
B:错误的原因是不是没有考虑整数倍频率且相位差为0的两种时钟;
C:异步复位信号需要经过同步处理后再使用是安全的
D:使用格雷码如果出错只会有一位数据跟上一次数据不一样,应该不能保证每一拍都是正确的
答案:选C
A:单bit信号经两级D触发器同步后即可进行跨时钟域传递
B:采用单一时钟的电路不会产生亚稳态
C:异步FIFO的两个时钟频率相同也可以正常工作
D:跨时钟域电路当中的亚稳态无法消除
分析:
A:单bit信号经两级D触发器同步后即可进行跨时钟域传递
B:采用单一时钟的电路不会产生亚稳态
C:异步FIFO的两个时钟频率相同也可以正常工作 (写快读慢、写满读快可以满足的话,写读时钟相同就是指写入和读取同时进行,这个应该也可以,只不过要设置一个优先级,否则有可能在满、空状态时出现问题),可以参考我的另一篇文章:同步(单时钟)、异步(双时钟)FIFO的Verilog HDL实现(含Testbench仿真代码)_Cheeky_man的博客-CSDN博客
D:跨时钟域电路当中的亚稳态无法消除
几种方法跨时钟域处理方法:
- 打两拍,两级触发器同步——跨时钟域处理,适用于数据到;
- 异步双口RAM(异步FIFO可以实现同样效果)——跨时钟域处理;
- 格雷码转换;
- 加握手信号。
答案:C(有可能对)、D(一定对):
A:信噪比
B:噪声功率
C:语音清晰度
D:误码率
分析:
衡量数字通信系统传输质量的指标分为两种:可靠性和有效性指标,有效性主要指标为传输速率,可靠性主要指标误码率或者说是误信率
答案:D
input [3:0] in; output [3:0] out; wire [3:0] a,b; assign a = in<<1; assign b = in>>3; assign out = a|b;
A:对输入信号in先右移3位,再左移1位
B:对输入信号in循环左移1位
C:对输入信号in循环右移3位
D:对输入信号in先左移1位,再右移3位
分析:
在Verilog HDL中有两种移位运算符。<<:(左移位运算符) >>:(右移位运算符)
其使用方法如下:a >> n;a << n;a代表要进行移位的操作数,n代表要移几位。这两种移位运算都用0来填补移出的空位。下面举例说明:module shift;reg [3:0] start, result;initial beginstart = 1; //start在初始时刻设为值0001result = (start<<2); //移位后,start的值0100,然后赋给resultendendmodule 这里假设in = 4'b,a = 4'b1100, b = 4'b0000, out = a | b = ;
再假设in = 4'b1001,a = 4'b0010, b = 4'b0001, out = a | b = 0011;
我们发现共同点:;
再验证一次:假设in = 4'b1011,a = 4'b0110, b = 4'b0001, out = a | b = 0111;验证正确!
答案:B、C正确(C只是方向不同)
A.0x87654321
B.0x78563412
C.0x56781234
D.以上都不正确
分析:
参考:大端模式(big-endian)与小端模式(little-endian)_jason_cuijiahui的博客-CSDN博客
大端模式与小端模式
- 大端模式是指.
- 小端模式是指。
一个数字4bit,半个byte:
例如: 一个16bit的short型x,在内存中的地址为0x0010,x的值为0x1122。那么0x11为数据高字节,0x22为数据低字节。
对于大端模式,就将0x11放在内存低地址中,即0x0010中;0x22放在内存高地址中,即0x0011中。 小端模式,就将0x11放在内存高地址中,即0x0011中;0x22放在内存低地址中,即0x0010中。
答案:B
A.难以描述设计对象的逻辑关系
B.难以描述设计对象的时间关系
C.难以描述设计对象的运算关系
D.难以描述设计对象的层次关系
分析:
应该是,C语言是顺序进行的,verilog是并行,且有延时的功能
A.IIC
B.SPI
C.USB
D.UART
分析:
UART:通用异步收发器
答案:
A . AND
B . OR
C . NOR
D . XOR
分析:
与非门NAND:4个
或非门NOR:4个
与门AND:与非门+反相器:6个
或门OR:或非门+反相器:6个
两个如上所示的晶体管,然后再用两个反相器产生两个输入信号的反信号,每个反相器需要两个mos管,因此总共需要2+2*2=6个
不过这个需要互补nmos和pmos,上图四个mos管,外加一个反相器产生一个反信号,总共4+2=6个
二、多选题
A: 串行化 B: 资源共享 C: 流水线设计 D: 寄存器配平 E: 逻辑优化 F: 关键路径优化
分析:
:
一般来说,速度优化比资源优化更重要,需要优先考虑。速度优化包括:FPGA的结构特性、HDL综合器性能、系统电路特性、PCB制版情况等,也包括Verilog的编程风格。下面主要讨论电路结构方面的速度优化方法。
(1)(也是属于,在关键路径的组合逻辑中);
(2);
寄存器配平是使较长路径缩短,较短路径加长,使其达到平衡从而提高工作频率的一种技术。若设计中,若两个组合逻辑块的延时差别过大,若T1>T2,则总体的工作频率 fmax取决于T1, 即最大的延时模块。对不合理设计进行改进,即将原本设计中的组合逻辑1的部分逻辑转移到组合逻辑2中,使t1≈t2,且T1+T2=t1+t2, T1>t1则总体的工作频率 fmax提高。
(3)(减少关键路径上的组合逻辑延时);
关键路径:指设计中从输入到输出经过的。优化关键路径是提高设计工作速度的有效方法。EDA工具中的综合器及设计分析器都提供关键路径的信息以便设计者改进设计。
(4);
(5);(牺牲了资源)
若要实现A+B+C+D。首先实现AB=A+B,CD=C+D,将AB/CD锁存一个时钟周期再相加。。
乒乓操作法是FPGA开发中的一种数据缓冲优化设计技术,可视作另一种形式的流水线技术。乒乓操作本质是使用2倍的硬件资源,通过将数据产生时间和数据使用时间重叠,解决一个数据生产效率低于数据使用效率的问题。是一种拿面积换性能的方法。通过“输入数据流选择单元”和“输出数据流选择单元”按节拍、相互配合的切换,将经过缓冲的数据流“无缝”地送到“数据流运算处理模块。
无论是在ASIC还是FPGA中,硬件设计是一个重要的技术指标。
1.可使用规模更小的可编程器件,降低系统成本,提高性价比。
2.当耗用资源过多时会严重影响时序性能。
3.为后续技术升级留下更多的可编程资源。
4.资源耗用太多会使器件功耗显著上升。
(会降低速度)
将原来耗用资源巨大、单时钟周期内完成的并行执行的逻辑块分割开,提取出相同的逻辑模块(一般为组合逻辑块),在时间上利用该逻辑模块,用多个时钟周期完成相同的功能,其代价是工作速度被大为降低。
-
例 :实现
-
描述方式1: 采用并行逻辑设计:分别相乘再相加
-
描述方式2:采用串行化设计,逐个相乘逐个相加:只需要勇1个8位的乘法器和1个16位的加法器。但是速度明显会降低,将需要耗时5个clk才能完成一次运算,并且还需要一个附加信号start
-
通过一个例子进行说明。现需要实现功能:通过选择信号s来选择执行A0 * B还是A1 * B的。RTL结构:图1:先乘后选择RTL结构:
图2:先选择后乘
-
两种方式一比较,后者在逻辑结果上没有任何改变,但却节省了一个代价高昂的乘法器,使得整个设计占用的面积几乎减少了一半。
-
资源共享主要针对数据通路中耗费逻辑资源较多的模块,通过选择、复用的方式共享使用该模块,达到减少资源使用、优化面积的目的。
-
并不是在任何情况下都能以此法实现资源优化,输入与门之类的模块使用资源共享是无意义的,有时甚至会增加资源的使用(多路选择器的面积显然要大于与门)。高级的HDL综合器,如QuartusII和Synplify Pro等,通过设置能自动识别设计中需要资源共享的逻辑结构,自动地进行资源共享。
使用优化后的逻辑进行设计,可以明显减少资源的占用。
- 状态机的设计要尽可能简洁,不要搞出不必要的,多个状态对同一个数据做处理。
- if语句中用单bit的标志位代替多bit的数据来进行条件判断。
- 设计尽可能简洁,不要弄出冗余赋值。
A: 形式验证 B: Modelsim仿真 C: 后仿 D: STA
分析:
https://kdocs.cn/l/caWkw1Hg9EzG [金山文档] IC设计完整流程及EDA工具.pof
A:形式验证,也是验证范畴,从功能上(STA是时序上)对综合后的网表进行验证。形式验证是一种,它根据电路结构静态地判断两个设计在功能上是否等价,常用来判断一个设计在修改前和修改后其功能是否保持一致。它运行时无须测试向量,但是必须有一个参照设计和一个待验证的设计。
B:Modelsim仿真中既可以功能仿真(静态),也可以时序仿真(动态),时序仿真时利用网表文件”.vo”和延时文件”.sdo”;
C:后仿,时序仿真加入布局布线的连线延时,属于动态时序分析; D:Static Timing Analysis,静态时序分析;属于验证范畴,主要在时序上对电路进行验证:检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。
前仿是针对RTL的功能验证,后仿是针对是综合后(加入约束,延时等信息)的网表文件,在前仿的基础上加入了延时信息的功能仿真,同时验证了设计的时序以及功能都正确。
A: 信号变化的最小宽度 B: 信号高电平有效还是低电平有效 C: 时钟频率 D: 相位和抖动
分析:
相位和抖动是考虑时序仿真所用,其他都是正常的功能仿真时要考虑的,比如在Modelsim的功能仿真(前仿)时,TestBench需要考虑ABC内容。
答案:ABC
A: for B: wait C: assign D: initial E: time F: always G: generate
分析:
不支持对reg 数据类型的assign或deassign进行综合,支持对wire数据类型的assign或deassign进行综合。
如:always @(posedge clk or negedge clk) begin...end
这个always块不可综合。
如:a=#10 b;
这里的#10是用于仿真时的延时,在综合的时候综合工具会忽略它。也就是说,在综合的时候上式等同于a=b;
可能会有人喜欢在条件表达式中把数据和X(或Z)进行比较,殊不知这是不可综合的,综合工具同样会忽略。所以要确保信号只有两个状态:0或1。
答案:ACFG
A:树型结构 B:迟置信号后移 C:流水线 D:资源共享
分析:
D是资源(面积)优化,树形结构、迟置信号后移、流水线均能提高系统工作频率。
答案:ABC
三、填空题
assign重写一段代码。
分析:
in[i]为1时,out[i] = a[i] ^ b[i];
in[0]为0时,out[0] = 0; in[i](i>0) 为0时,out[i] = in[i-1]; 即in[i] = 0时,out[i] 为in[i] 的左移一位,最低位为0;
答案: 或
ROM位宽线宽
深度:2048,2^11=2048,需要11条地址线表示输入;
位宽:12,需要12条数据线表示输出;
答案:11,12
分析:用B来表示A中第一个1的位置,如A = 4’b0011,第一个1出现在A的bit1,则B=2'b01;
可以列真值表很快得到答案:
答案:B[1] = A[3] | A[2];B[0] = A[3] | (~A[2] | A[1])
SRAM深度
分析:
1bytes(字节) = 8bits(位)
12根地址线,存储深度为2^12,32根数据线(32位)有4 Bytes, 即一个SRAM可存储2^12 * 2^2 = 2^14 Bytes,共需 2^20 / 2^14 = 2^6 = 64 块。
答案:64
分析:电桥等效电阻:电桥等效电阻怎么求????_百度知道 (baidu.com)
答案:Requal = R + Rbrige = R + R = 2R
分析: 电压的关系可以确定,setup可以用提高电压来满足,所以C降压后停止工作可能是setup问题,D升压后停止工作可能是hold问题。 温度的关系没找到相关资料,但是按出题人的思路想,应该是和电压的影响相反,这里A和B是hold和setup。
答案:hold(不确定),setup(不确定),setup,hold
分析:
最后的Q2部分,上面1J处的意思是先把两输入信号做“与”运算,再将运算结果作为JK触发器的输入,在Quartus中绘制原理图如图所示,给出Modelsim仿真,可以按照仿真波形去验证自己画出的波形,对Q2,显然每5个CP时钟出现一次高电平脉冲,五进制计数器。
答案:五进制计数器
OOP的三大特征是
分析:面向对象程序设计(Object Oriented Programming)的三大特征:封装性、继承性、多态性
NAND和NOR Flash的主要区别是:
1.中常存在坏块, 2.容量可以做到很大,3.写入速度比较快, 4.读出速度比较快
分析:
1.(NAND)中常存在坏块, 2.(NAND)容量可以做到很大,3.(NAND)写入速度比较快, 4.(NOR Flash)读出速度比较快
分析:
verilog语言中'=='与'==='的区别_领悟£lifetruth...的博客-CSDN博客
逻辑相等==:两个操作数逐位比较,如果两个进行比较的位是不定态‘x’或者高阻态’z’,则输出x
逻辑全等===:在进行全等运算时,对不定态与高阻态也要进行比较,当两个操作数完全一致时,其结果才为1,否则为0
答案:x;0
分析:
4 bit + 8 bit 需要 :8+1 = 9bit
4 bit * 8 bit 需要 :4+8=12bit
举例:15(2^4 - 1) + 255(2^8 - 1) = 270< 2^9 - 1 =511,所以9位足够
15(2^4 - 1) * 255(2^8 - 1) = 3825,( = 2047) =4095),所以需要12位
always@(posedge clk) begin a = 0; a <= 1; $display("%0b",a); end
a = 0; //阻塞赋值(拦住你:先别走,活干完了再走):必须马上执行,此时a已经为0
a <= 1; //非阻塞赋值:等always块结束了再执行(您先忙儿,我等会儿来),此时a还是原来的值。
%b使用固定宽度显示,以适应所显示表达式的最大可能值。 %0b显示最小宽度,禁止任何前导0或间隔。
答案:打印输出为;程序执行完后,a为1了
分析:
两个复数的乘法:4个乘法器,2个加法器
此题:设A = Ar + Ai*j, B = Br + Bi*j, C = Cr + Ci*j,
A*(B+C) = (Ar*(Br+Cr) - Ai*(Bi+Ci)) + (Ai*(Br+Cr) + Ar(Bi + Ci))*j,令Br+Cr = Dr, Bi+Ci = Di;