2020年2月6日 星期四

數位IC設計入門-Verilog combinational logic 1 to 8 DeMultiplexer 解多工器 Behavioral Modeling (& Test Bench)

數位IC設計入門-Verilog combinational logic 
1 to 8  DeMultiplexer 解多工器 Behavioral Modeling (& Test Bench) 




//數位IC設計入門-Verilog combinational logic 
// 1 to 8  DeMultiplexer 解多工器 Behavioral Modeling (& Test Bench) 


module DEMUX1x8(in, select, out);
  input in;
  input [2:0] select;
  output reg [7:0]out;
  
  always@(in or select)
  begin
        out = 8'd0;
        case(select)
        3'd0 : out[0] = in;
        3'd1 : out[1] = in;
        3'd2 : out[2] = in;
        3'd3 : out[3] = in;
        3'd4 : out[4] = in;
        3'd5 : out[5] = in;
        3'd6 : out[6] = in;
        3'd7 : out[7] = in;
        endcase
  end

endmodule

 // 時間單位 100ns, 時間精確度100 ps
`timescale 100ns/100ps    
module Test_bench;
  //module DEMUX1x8(in, select, out);
  //input in;
  //input [2:0] select;
  //output reg [7:0]=out;

// Inputs
reg in=0;
reg [2:0] select=3'b000;

// Outputs
wire [7:0]out;


// Instantiate the Unit Under Test (UUT)
// DEMUX1x8(in, select, out);

DEMUX1x8 UUT(in, select, out);

initial begin
 $monitor(in, select, out);
    // Initialize Inputs
 //#25 {a,b,c,d,e,f,g,h}=8'b0000_0000 ; select[2:0]=3'b000 ;
 #20 in=1; select[2:0]=3'b000 ;

 #20 in=0 ; select[2:0]=3'b001 ;
 #20 in=1 ; select[2:0]=3'b001 ;

 #20 in=0 ; select[2:0]=3'b010 ;
 #20 in=1 ; select[2:0]=3'b010 ;

 #20 in=0 ; select[2:0]=3'b011 ;
 #20 in=1 ; select[2:0]=3'b011 ;

 #20 in=0 ; select[2:0]=3'b100 ;
 #20 in=1 ; select[2:0]=3'b100 ;

 #20 in=0 ; select[2:0]=3'b101 ;
 #20 in=1 ; select[2:0]=3'b101 ;

 #20 in=0 ; select[2:0]=3'b110 ;
 #20 in=1 ; select[2:0]=3'b110 ;

 #20 in=0 ; select[2:0]=3'b111 ;
 #20 in=1 ; select[2:0]=3'b111 ;


end

initial
begin
  #325;   // 模擬終止時間  325 ns
  $stop;
end

endmodule

沒有留言:

張貼留言

習題解答 (5/6)

  第五章 習題解答 一、 錯誤偵測技術 1. 何謂循環冗餘檢查法 (CRC)? 是一種根據傳輸資料產生簡短固定位數校驗碼的演算法。發送端將資料除以一個特定的多項式,得到的「餘數」即為 CRC 碼並隨資料發送;接收端以同樣多項式除之,若餘數為 0 則代表資料傳輸正確。 2. 何...