考慮溢位和進位的4位全加器_Verilog程式碼及測試檔案
阿新 • • 發佈:2019-02-11
考慮溢位的4位全加器的Verilog程式碼:
程式碼檔案:
//4位全加器_行為描述語言 module adder4( input wire [3:0] a, input wire [3:0] b, output reg [3:0] s, output reg cf, output reg ovf ); reg [4:0] temp; always @(*) begin temp={1'b0,a}+{1'b0,b}; s=temp[3:0]; cf=temp[4]; ovf=a[3]^b[3]^s[3]^cf; end endmodule
測試檔案程式碼:
//全加器測試平臺 module adder4_tb; reg [3:0] a; reg [3:0] b; wire [3:0] s; wire cf; wire ovf; adder4 uut( .a(a), .b(b), .s(s), .cf(cf), .ovf(ovf) ); initial begin a=4'b0000; b=4'b0001; end always #2 begin a[0]=~a[0]; end always #4 begin a[1]=~a[1]; b[0]=~b[0]; end always #6 begin a[2]=~a[2]; b[1]=~b[1]; end always #8 begin a[3]=~a[3]; b[2]=~b[2]; end always #10 begin b[3]=~b[3]; end endmodule
激勵是隨便加的,沒有經過評估,不一定能出現全部情況,只是為了說明問題。
modelsim模擬結果: