2015年11月18日 星期三

2015.11.18 上課內容 2題

這次上課開始進入不一樣的課程 之前都是多工器的熟悉
之後的課程必須更加動腦才能解題
module test_adder1; reg a,b; reg carry_in ; wire sum; wire carry_out; adder1_behavorial A1(carry_out, sum, a, b, carry_in); initial begin carry_in = 0; a = 0; b = 0; # 100 if ( carry_out != 0 | sum !== 0) $display(" 0+0+0=00 sum is WRONG!"); else $display(" 0+0+0=00 sum is RIGHT!"); carry_in = 0; a = 0; b = 1; # 100 if ( carry_out != 0 | sum !== 1) $display(" 0+0+1=01 sum is WRONG!"); else $display(" 0+0+1=01 sum is RIGHT!"); carry_out = 0; a = 1; b = 0; # 100 if ( carry_out != 0 | sum !== 1) $display(" 0+1+0=01 sum is WRONG!"); else $display(" 0+1+0=01 sum is RIGHT!"); carry_out = 0; a = 1; b = 1; # 100 if ( carry_out != 1 | sum !== 0) $display(" 0+1+1=10 sum is WRONG!"); else $display(" 0+1+1=10 sum is RIGHT!"); carry_out = 1; a = 0; b = 0; # 100 if ( carry_out != 0 | sum !== 1) $display(" 1+0+0=01 sum is WRONG!"); else $display(" 1+0+0=01 sum is RIGHT!"); carry_in = 1; a = 0; b = 1; # 100 if ( carry_in != 1 | sum !== 0) $display(" 1+0+1=10 sum is WRONG!"); else $display(" 1+0+1=10 sum is RIGHT!"); carry_in = 1; a = 1; b = 0; # 100 if ( carry_in != 1 | sum !== 0) $display(" 1+1+0=10 sum is WRONG!"); else $display(" 1+1+0=10 sum is RIGHT!"); carry_out = 1; a = 1; b = 1; # 100 if ( carry_in != 1 | sum !== 1) $display(" 1+1+1=11 sum is WRONG!"); else $display(" 1+1+1=11 sum is RIGHT!"); $finish; end endmodule module adder1_behavorial (carry_out, sum, a, b, carry_in); input a, b, carry_in; output carry_out, sum; assign sum = (~a&b&~carry_in)|(~carry_in&a&~b)|(a&b&carry_in)|(~a&~b&carry_in);
assign carry_out = a&carry_in|a&b|b&carry_in; endmodule



module top; wire A, B, Cin, c1, c2, c3, sum, Cout; system_clock #400 clock1(Cin); system_clock #200 clock2(A); system_clock #100 clock3(B); xor(c1, A, B); and(c2, A, B); xor(sum, c1, Cin); and(c3, c1, Cin); xor(Cout, c3, Cin); endmodule module system_clock(clk); parameter PERIOD=100; output clk; reg clk; initial clk=0; always begin #(PERIOD/2) clk=~clk; end always@(posedge clk) if($time>1000)$stop; endmodule

沒有留言:

張貼留言