校招基礎——門電路和加法器


門電路

1、使用最少數量的兩個輸入與非門設計3輸入與非門

解析:Y=ABC’=((AB)’+C’)=(((AB)’)’C)’=((1(AB)’)’C)’,答案就出來了。

 

2、分別用兩個輸入的與非門實現OR GATE,AND GATE,畫出門級電路。

分析: 或門,A+B = (A’B’)’=((1A)’(1B)’)’,三個與非門即可。

與門,AB=(AB)’)’,兩個與非門即可。

 

3畫出assign out = (a[3:0] != 4b0001)的門電路。

a[3:0] == 4’b0001    ->     out = 1’b0;

a[3:0] != 4’b0001    ->     out = 1’b1;

 

4、一位比較器的門電路實現,輸出Y0>)、Y1=)、Y2<)?

 

 

5、二選一選擇器的門電路實現?

 

 

6使用2x1MUX實現2輸入AND

 

7、使用2x1MUX實現D鎖存器?

 

 

8如果只使用21mux完成異或邏輯,至少需要幾個mux

 

9比較下面兩個代碼,利用FFMuxAdderDcmux等元件畫出對應的框圖,並比較這兩個設計的不同以及優劣(注意:不要對加法器等進行細化處理,只要利用現有的模塊,如DFFAdder、減法器等)

1)Always @(A or B or C or D)

Sum = sel ?(A+B):(C+D)

(2always @(A or B or C or D) begin

Switch0 = sel ? A:C;

Switch1 = sel ? B:D;

end assign sum = Switch0+Switch1;

 

很明顯第二種比第一種少了一個加法器,資源消耗減少,說明一個好的設計可以減少資源的占用,提高資源的利用率。

 

10、相同工藝條件下,下列哪種邏輯的組合邏輯延遲最長(A

A、2輸入異或門  B、2輸入與非門

C、2輸入或門 D、1輸入反相器

 

11、根據 A 的波形,畫出 B、C 的波形,寄存器是同步清0的。

 

 

加法器專題

1、加法器分類

(1)半加器;

(2)全加器;

(3)進位延時加法器;

  1. 行波進位加法器(RCA
  2. 超前進位加法器(CLA

(4)進位保留加法器;

2、半加器和全加器結構

半加器:兩個1位二進制相加,不考慮低位進位;

全加器:兩個1位二進制相加,考慮低位進位; 

 

 

 

3、行波進位加法器RCA(串行進位加法器、逐位進位加法器)

 

 

 

4、超前進位加法器 

 

5、下圖是一個全加器的電路圖,假設每個門的延時為T,不考慮線延時的扇入扇出,下列說法正確的是(AD

A) 4Ripple-Carry Adder的最大延時為9T

B) 8Ripple-Carry Adder的最大延時為9T

C) 4Carry-Lookahead Adder的最大延時為3T

D) 8Carry-Lookahead Adder的最大延時為4T

分析:首先明白兩種加法器的結構,首先分析 Ripple-Carry Adder的結構,2bitR加法器就是兩個R加法器連接起來,如下圖所示:

將這個圖代入題干,可以得出最大延時是ACount,然后再一個CinCount,即3+2=5,每再添一個R加法器,最長路徑多2個門,因此4R加法器最大延時為3+2+2+2=9;其次分析Carry-Lookahead Aheader的特點,C加法器的各級進位彼此獨立產生,只與輸入數據和Cin有關,因此超過1位的C加法器,其最大延時都是3位本體最大延時加上1位的進位延時,因此8位的C加法器的最大延時為3+1=4。(很多人分析的是3,他只算了輸入到進位,但我們求的是和,所以得加一)。

 

6、加法器代碼

//--------------------------------------------------------
//--    半加器
//--------------------------------------------------------
module HALF_ADDER
(
  input wire a,
  input wire b,
  output reg s,
  output reg c
);

always@(*)begin
  c = a & b;
  s = a ^ b;
end
 
endmodule
//--------------------------------------------------------
//--    全加器
//--------------------------------------------------------
module FULL_ADDER
(
  input wire ai,
  input wire bi,
  input wire ci,
  output reg s,
  output reg co
);
wire gi;
wire pi;
wire pi_ci;
wire si;

HALF_ADDER U_HALF_ADDER_0
(
  .a    (ai     ),
  .b    (bi     ),
  .c    (gi     ),
  .s    (pi     )
);

HALF_ADDER U_HALF_ADDER_1
(
  .a    (ci     ),
  .b    (pi     ),
  .c    (pi_ci  ),
  .s    (si     )
);

always@(*)begin
  co = pi_ci | gi;
  s  = si;
end

endmodule
//--------------------------------------------------------
//--    行波進位加法器
//--------------------------------------------------------
module RCA
#(
  parameter             N = 4)
(
  input wire    [N-1:0] ai,
  input wire    [N-1:0] bi,
  input wire            ci,
  output wire   [N-1:0] s,
  output wire           co
);
reg     [N-1:0] ci_t;
wire    [N-1:0] co_t;

always@(*)begin:ci_gen
  integer n;
  for(n = 0; n < N; n = n + 1)begin
    if(n == 0)
      ci_t[n] = ci;
    else
      ci_t[n] = co_t[n-1];
  end
end

assign  co = co_t[N-1];

genvar i;
generate
for(i = 0; i < N; i = i + 1)begin:rca_g
  FULL_ADDER U_FULL_ADDER
  (
    .ai     (ai[i]      ),
    .bi     (bi[i]      ),
    .ci     (ci_t[i]    ),
    .co     (co_t[i]    ),
    .s      (s[i]       )
  );
end
endgenerate

endmodule
//--------------------------------------------------------
//--    超前進位加法器
//--------------------------------------------------------
module CLA
#(
parameter           N = 4)
(
input wire [N-1:0]  ai,
input wire [N-1:0]  bi,
input wire          ci,
output reg [N-1:0]  s,
output reg          co
);
reg [N:0]   c;
reg [N:1]   st;
reg [N:1]   g;
reg [N:1]   p;
reg [N:1]   a;
reg [N:1]   b;
reg         gp;
reg         gg;

always@(*)begin
  s  = st;
  a  = ai;
  b  = bi;
  co = c[N];
end

always@(*)begin:cla_gen
 integer i;
 gp = 1;
 gg = 0;
 c[0] = ci;
 for(i=1; i<=N; i=i+1)begin
   g[i]  = a[i] & b[i];
   p[i]  = a[i] ^ b[i];
   gp    = p[i] & gp;
   gg    = g[i] + (p[i] & gg);
   c[i]  = gg | (gp & c[i-1]);
   st[i] = p[i] ^ c[i-1];
 end
end

endmodule

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM