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