Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

provide the necessary circuit

Status
Not open for further replies.

ASIC_int

Advanced Member level 4
Joined
May 14, 2011
Messages
118
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,296
Activity points
2,234
Can u provide a circuit that can test whether a given binary no. is power of 2?
 

dcreddy1980

Full Member level 5
Joined
Dec 3, 2004
Messages
243
Helped
46
Reputation
92
Reaction score
21
Trophy points
1,298
Location
Munich, Germany
Activity points
1,532
Hi ASIC_int,

One-hot detection circuit is the one which you are looking for "to determine whether binary number is power of 2".

If your input is n-bit wide, bit-wise sum of the input vector is "1", then it is a power of 2.

Example :

module one_hot (in,out);

input [3:0] in;
output out;

wire [2:0] sum;

assign sum = in[0] + in[1] + in[2] + in[3];

assign out = (sum == 1) ? 1'b1 : 1'b0;

endmodule

Regards,
dcreddy
 
  • Like
Reactions: FvM

    FvM

    Points: 2
    Helpful Answer Positive Rating

ASIC_int

Advanced Member level 4
Joined
May 14, 2011
Messages
118
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,296
Activity points
2,234
dcreaddy1980


What do you mean by bitwise sum? Do u want top mean the LSB of the' resut of summatio'n? The reason I ask this because the binary sum will have sum and carry and the sum can be a binary value whose decimal equivalence is more than 1.

How do u say it is one-hot detection circuit?
 

FvM

Super Moderator
Staff member
Joined
Jan 22, 2008
Messages
49,392
Helped
14,437
Reputation
29,138
Reaction score
13,227
Trophy points
1,393
Location
Bochum, Germany
Activity points
284,272
I think the meaning of "bitwise sum" is obvious from the code. The only point, that may need explanation is the used bitwidth in calculating
assign sum = in[0] + in[1] ...
It can be derived from Verilog Rules for expression bit lengths. This is a case of context-determined expression, where the maximum bitlength of left hand and right hand side of the expression is used. Thus all possible carries are considered correctly.
 

rca

Advanced Member level 4
Joined
May 20, 2010
Messages
1,485
Helped
355
Reputation
710
Reaction score
328
Trophy points
1,363
Location
Marin
Activity points
8,522
if a number is power of 2, only one bit will be equal to one, other one bit to zero. quite easy check, as describe by dcreddy1980, with the sum all individual bit.
 

ASIC_int

Advanced Member level 4
Joined
May 14, 2011
Messages
118
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,296
Activity points
2,234
rca

Even a binary number having odd no. of 1s will produce the sum to be one, but still it is not power of 2. Is not it?

fvm

But how will you store the carry and full sum? Even a binary number having odd no. of 1s will produce the sum to be one, but still it is not power of 2. Is not it?
 

FvM

Super Moderator
Staff member
Joined
Jan 22, 2008
Messages
49,392
Helped
14,437
Reputation
29,138
Reaction score
13,227
Trophy points
1,393
Location
Bochum, Germany
Activity points
284,272
You didn't pay attention to the definition [2:0] sum. The sum for odd numbers can be also 3 in the present example. For the detail behaviour of the add operation, see my previous post.
 

rca

Advanced Member level 4
Joined
May 20, 2010
Messages
1,485
Helped
355
Reputation
710
Reaction score
328
Trophy points
1,363
Location
Marin
Activity points
8,522
sorry, you could count the number of 1 in the vecotr and this one will equal to 1 for power of 2 number, isn't it?
 

dcreddy1980

Full Member level 5
Joined
Dec 3, 2004
Messages
243
Helped
46
Reputation
92
Reaction score
21
Trophy points
1,298
Location
Munich, Germany
Activity points
1,532
Hi ASIC_int,

Synthesize the above particular piece of code and apply "0000_0111" vector to the input of the circuit(netlist) and see what it will result.

Your expectation is "1" for the abve vector, I would say no, try it out and comeback if your expected result has been generated by the circuit.

Regards,
dcreddy
 

ASIC_int

Advanced Member level 4
Joined
May 14, 2011
Messages
118
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,296
Activity points
2,234
fvm

Sorry, I did not see the [2:0]. Thanks for the tips. Now I agree with the solution of dcreaddy1980.

Regards
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top