2020年3月28日 星期六

Verilog One-Bit Full-Adder (Data flow level)

Verilog One-Bit Full-Adder

//====================================
module FA_dataflow(A,B,Cin,S,Cout);
input A,B,Cin;
output S,Cout;

assign S= A^B^Cin;
assign Cout = (A&B)| (B&Cin) | (Cin&A);

endmodule

//====================================

//  Test_bench.v  
// 全加器  (測試平台程式)

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

module Test_bench;
reg A = 1'b0;       // A 暫存器資料初值為‘0’
reg B = 1'b0;       // B 暫存器資料初值為‘0’
reg Cin= 1'b0;                // Cin 暫存器資料初值為‘0’
wire S , Cout ;

// 建立 Full Adder 全加器  的模組例證
FA_dataflow UUT (.A(A),.B(B),.Cin(Cin),.S(S),.Cout(Cout));

// initial程序結構區塊, 產生A、B 、Cin輸入信號波形
initial
begin
  #100; // 100ns
     A = 1'b0; B = 1'b0;Cin= 1'b1;     // “001”
  #100; // 200ns
     A = 1'b0; B = 1'b1;Cin= 1'b0;     // “010”
  #100; // 300ns
     A = 1'b0; B = 1'b1;Cin= 1'b1;     // “011”
  #100; // 400ns
     A = 1'b1; B = 1'b0;Cin= 1'b0;     // “100”
  #100; // 500ns
     A = 1'b1; B = 1'b0;Cin= 1'b1;     // “101”
  #100; // 200ns
     A = 1'b1; B = 1'b1;Cin= 1'b0;     // “110”
  #100; // 300ns
     A = 1'b1; B = 1'b1;Cin= 1'b1;     // “111”
end

initial
begin
  #800; // 模擬終止時間  800 ns
    $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...