2020年3月10日 星期二

Verilog Basic Gate ch4 p4-3

Verilog Basic Gate  ch4 p4-3

//=============================================
//gate level basic gate and nad or nor xor xnor
//=============================================
module basic_gate1(
O_and,I1,I0,
O_nand,I2,
O_or,A1,A0,
O_nor,A2,
O_xor,B1,B0,
O_xnor,B3,B2);

input  I2,I1,I0,A2,A1,A0,B3,B2,B1,B0;
output O_and,O_nand,O_or,O_nor,O_xor,O_xnor;


and     (O_and , I1, I0);
nand N1 (O_nand, I2 , I1, I0);

or        (O_or,  A1,A0);
nor  Nor5 (O_nor, A2,A1,A0);

xor  X9 (O_xor,  B1, B0);
xnor (O_xnor, B3,B2,B1,B0);


endmodule

//=================================
// Ch04 T.V
// nasic gate(測試平台程式)

// 時間單位 1ns, 時間精確度1 ps
`timescale 100ns/10ps

module T;
//input
reg  I0=1'b0;
reg  I1=1'b0;
reg  I2=1'b0;
reg  A2=1'b0;
reg  A1=1'b0;
reg  A0=1'b0;
reg  B3=1'b0;
reg  B2=1'b0;
reg  B1=1'b0;
reg  B0=1'b0; //暫存器資料初值為‘0’
//output
wire O_and,O_nand,O_or,O_nor,O_xor,O_xnor;

// 建立and_gate 的模組例證
basic_gate1 UUT(
.O_and(O_and) ,.I1(I1) ,.I0(I0),
.O_nand(O_nand) ,.I2(I2),
.O_or(O_or) ,.A1(A1) ,.A0(A0),
.O_nor(O_nor) ,.A2(A2),
.O_xor(O_xor) ,.B1(B1) ,.B0(B0),
.O_xnor(O_xnor) ,.B3(B3) ,.B2(B2)
);



// initial程序結構區塊, 產生A、B輸入信號波形
initial
begin
  #100; // 100ns
    I2=1'b0 ; I1= 1'b0; I0=1'b1;  // “001”
    A2=1'b0 ; A1= 1'b0; A0=1'b1;  // “001”
    B3=1'b0; B2= 1'b0; B1= 1'b0; B0=1'b1;  // 0001”
  #100; // 200ns
    I2=1'b0 ; I1= 1'b1; I0=1'b0;  // “010”
    A2=1'b0 ; A1= 1'b1; A0=1'b0;  // “010”
    B3=1'b0; B2= 1'b0; B1= 1'b1; B0=1'b01;  // 0010”  
  #100; // 300ns
    I2=1'b0 ; I1= 1'b1; I0=1'b1;  // “011”
    A2=1'b0 ; A1= 1'b1; A0=1'b1;  // “011”
    B3=1'b0; B2= 1'b0; B1= 1'b1; B0=1'b01;  // 0011”  
  #100; // 400ns
    I2=1'b1 ; I1= 1'b0; I0=1'b0;  // “100”
    A2=1'b1 ; A1= 1'b0; A0=1'b0;  // “100”
    B3=1'b0; B2= 1'b1; B1= 1'b0; B0=1'b0;  // 0100”  
  #100; // 500ns
    I2=1'b1 ; I1= 1'b0; I0=1'b1;  // “101”
    A2=1'b1 ; A1= 1'b0; A0=1'b1;  // “101”
    B3=1'b0; B2= 1'b1; B1= 1'b0; B0=1'b1;  // 0101”  
  #100; // 600ns
    I2=1'b1 ; I1= 1'b1; I0=1'b0;  // “110”
    A2=1'b1 ; A1= 1'b1; A0=1'b0;  // “110”
    B3=1'b0; B2= 1'b1; B1= 1'b1; B0=1'b0;  // 0110”  
  #100; // 700ns
    I2=1'b1 ; I1= 1'b1; I0=1'b1;  // “111”
    A2=1'b1 ; A1= 1'b1; A0=1'b1;  // “111”
    B3=1'b0; B2= 1'b1; B1= 1'b1; B0=1'b1;  // 0111”  

//=====================================================
  #100; // 800ns
    I2=1'b0 ; I1= 1'b0; I0=1'b0;  // “000”
    A2=1'b0 ; A1= 1'b0; A0=1'b0;  // “000”
    B3=1'b1; B2= 1'b0; B1= 1'b0; B0=1'b0;  // 1000”
  #100; // 900ns    
    I2=1'b0 ; I1= 1'b0; I0=1'b1;  // “001”
    A2=1'b0 ; A1= 1'b0; A0=1'b1;  // “001”
    B3=1'b1; B2= 1'b0; B1= 1'b0; B0=1'b1;  // 0001”

 #100; // 1000ns
    I2=1'b0 ; I1= 1'b1; I0=1'b0;  // “010”
    A2=1'b0 ; A1= 1'b1; A0=1'b0;  // “010”
    B3=1'b1; B2= 1'b0; B1= 1'b1; B0=1'b01;  // 1010”  
  #100; // 1100ns
    I2=1'b0 ; I1= 1'b1; I0=1'b1;  // “011”
    A2=1'b0 ; A1= 1'b1; A0=1'b1;  // “011”
    B3=1'b1; B2= 1'b0; B1= 1'b1; B0=1'b01;  // 1011”  
  #100; // 1200ns
    I2=1'b1 ; I1= 1'b0; I0=1'b0;  // “100”
    A2=1'b1 ; A1= 1'b0; A0=1'b0;  // “100”
    B3=1'b1; B2= 1'b1; B1= 1'b0; B0=1'b0;  // 1100”  
  #100; // 1300ns
    I2=1'b1 ; I1= 1'b0; I0=1'b1;  // “101”
    A2=1'b1 ; A1= 1'b0; A0=1'b1;  // “101”
    B3=1'b1; B2= 1'b1; B1= 1'b0; B0=1'b1;  // 1101”  
  #100; // 1400ns
    I2=1'b1 ; I1= 1'b1; I0=1'b0;  // “110”
    A2=1'b1 ; A1= 1'b1; A0=1'b0;  // “110”
    B3=1'b1; B2= 1'b1; B1= 1'b1; B0=1'b0;  // 1110”  
  #100; // 1500ns
    I2=1'b1 ; I1= 1'b1; I0=1'b1;  // “111”
    A2=1'b1 ; A1= 1'b1; A0=1'b1;  // “111”
    B3=1'b1; B2= 1'b1; B1= 1'b1; B0=1'b1;  // 1111”  

  #100; // 600ns
$stop;

  end


endmodule
//=================================





沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...