2013-04-11 73 views
2

我正在嘗試學習Verilog,但在這個例子中,我正在研究[NumberOfBits-1:0]命令被使用,我不能很清楚爲什麼它在那裏以及它在做什麼。這是我的代碼:Verilog爲什麼[NumberOfBits-1:0]和它在做什麼

module verilogmodule(Minuend,Subtrahend,SumDiff,CarryOut,Mode); 
//4-bit adder and subtractor. Mode=0 to add and Mode = 1 to subtract 
parameter NumberOfBits = 4; 
input [NumberOfBits-1:0] Minuend, Subtrahend; input Mode; 
output [NumberOfBits-1:0] SumDiff; output CarryOut; 

wire [NumberOfBits-1:0] InverterOut; 
wire [NumberOfBits-1:0] MuxOut; 
wire [NumberOfBits-1:0] AdderLowCarryout; 

//module not4bits(A3,A2,A1,A0,Y3,Y2,Y1,Y0); 
not4bits U1 (Subtrahend[3], Subtrahend[2], Subtrahend[1], Subtrahend[0],InverterOut[3], InverterOut[2], InverterOut[1],InverterOut[0]); 
//module mux4bits(A,B,Y,choice); 
mux4bits U2(Subtrahend,InverterOut,MuxOut,Mode); 
//module adder2bits(A,B,Cin, Sum, Cout); 
adder2bits AdderLow(Minuend[1:0],MuxOut[1:0],Mode,SumDiff[1:0],AdderLowCarryout[1:0]); 
adder2bits AdderHigh(Minuend[3:2],MuxOut[3:2],AdderLowCarryout[1:0],SumDiff[3:2],CarryOut); 


endmodule 

回答

4

這不是一個命令,它是電線的寬度。

例如這裏:

wire [NumberOfBits-1:0] MuxOut; 

NumberOfBits是價值4的參數,所以取代後的線寬度變爲[4-1:0],或[3:0]。這僅表示寬度爲4的導線,其中個別位爲3,2,1和0.

1

parameter與C中的macros類似。基本上它將數字替換爲定義爲parameter的文本。在上面的代碼中,它在實際模擬之前用4替換了NumberOfBits。

相關問題