FPGA/IC笔试——联发科
4.2 用一个mux和一个反相器实现xor,画电路或Verilog代码实现。
module xor_rill
(
input a,
input b,
output z
);
assign z = a?(~b):b;
endmodule
4.3 如下图所示:clk到Q的输出延时为T1min<T1<T1max,组合逻辑的延时为:T2min<T2<T2max,时钟周期为T。满足约束条件下,计算寄存器的setup和holdup。
T1max + T2max + Tsetup < T; 所以:Tsetup < T-T1max-T2max; T1min + T2min > Tholdup。
4.4 如下图所示:根据A的波形,画出B,C的波形,寄存器是同步清零的。
4.5 十进制的12.8125用二进制的数表示,十六进制的A8D6用八进制的数表示。
12 = 1100; 0.8125 × 4 = 3.25,表示:11.01,所以0.8125=0.1101; 所以,12.8125 = 1100.1101。 A8D6 = 1010100011010110 = 124326。
4.6 SV比Verilog强在哪里?OVM、UVM、VMM是什么?
SV支持面向对象的编程,支持断言的语法,支持更多的数据类型。 VMM:Verification Methodology Manual,由ARM和Synopsys提出的,寄存器解决方案RAL机制; OVM:Open Verification Methodology,Mentor和Cadence共同提出,引进了factory机制; UVM:Universal Verification Methodology,通用验证方法学,Accellera提出的,继承了VMM和OVM的优点,克服了二者的缺点,代表了验证方法学的主流,并得到了三大EDA厂商Cadence、Synopsys和Mentor Graphics的支持。
4.7 用Python或Perl写程序,在xxx.log中找到fail单词。
my %input_file = "xxx.log";
my $inf;
open($inf,"<".$input_file)||die"cannot open $input_file";
while(<$inf>){
my $input_line =$_;
$input_line =~ m/fail/;
print“匹配的字符:$&\n";}
close $inf;
4.8 int b = 100;int *a; a=&b有什么意义?a=b有什么意义?
a=&b定义指针变量a,变量指向整形数据b的地址,printf(“%d”,a)结果为100; a=b表示指针变量a的值为100,a表示一个地址为100的数据。
4.9
4.10 cpu cache miss/hit区别 CPU要访问的数据在Cache中有缓存,称为“命中” (Hit),反之则称为“缺失” (Miss)。 当运算器需要从存储器中提取数据时,它首先在最高级的cache中寻找然后在次高级的cache中寻找。如果在cache中找到,则称为命中hit;反之,则称为不命中miss。 11、110序列选择器 画状态图 写verilog代码
1 module Sequential_Detector(
2 input clk,
3 input rst_n,
4 input in,
5 output out
6 );
7 parameter s0 = 2'b00,
8 s1 = 2'b01,
9 s2 = 2'b10;
10 reg [1:0] cur_state,next_state;
11 reg out_r;
12
13 always_ff(posedge clk,negedge rst_n)begin
14 if(!rst_n)
15 cur_state <= s0;
16 else
17 cur_state <= next_state;
18 end
19
20 always_comb begin
21 case(cur_state)
22 s0: next_state = (in==1'b1)?s1:s0;
23 s1: next_state = (in==1'b1)?s2:s0;
24 s2: nexe_state = (in==1'b0)?s0:s2;
25 default: nexe_state = s0;
26 endcase
27 end
28
29 always_ff@(posedge clk,negedge rst_n)begin
30 if(!rst_n)
31 out_r <= '0;
32 else begin
33 case(cur_state)
34 s0: out_r <= '0;
35 s1: out_r <= '0;
36 s2: begin
37 if(in==0)
38 out_r <= '1;
39 else
40 out_r <= '0;
41 end
42 endcase
43 end
44
45 assign out = out_r;
46
47 endmodule