| Author |
Message |
Davy
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
How to count zeros in registers? |
|
|
Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
|
|
| Back to top |
|
 |
John Penton
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
Davy wrote:
| Quote: | Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
|
With a priority tree:
if (reg[7:0] == 8'b00000000)
clz = 3'h8;
else if (reg[7:1] == 7'b0000000)
clz = 3'h7;
else if ...
You can play some tricks to make it faster - particularly useful if your
register is bigger than 8 bits. It will always be quite large.
John
--
John Penton, posting as an individual unless specifically indicated
otherwise. |
|
| Back to top |
|
 |
Fred Bloggs
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
Davy wrote:
| Quote: | Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
|
Hey why don't tell us a little about the application, because this
sounds like something totally divorced from reality. Is the real
application about cheating on a homework assignment? I could understand
if applied an iota of effort, but there's no evidence of that. Aren't
you the lazy punk-assed juvenile sh_t with the loud mouth about plonking
people and shooting your f____ing mouth off about how clever you are?
Well how damned clever are you when it comes to doing something
constructive, punk-ass?
|
|
| Back to top |
|
 |
Jim Thompson
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
On 29 Nov 2005 06:12:56 -0800, "Davy" <zhushenli@gmail.com> wrote:
| Quote: | Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
|
See...
http://www.analog-innovations.com/SED/HowManyOnes.pdf
You'll need to modify it for "zeroes" and to stop at the first
occurrence of a "one"
...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona Voice:(480)460-2350 | |
| E-mail Address at Website Fax:(480)460-2142 | Brass Rat |
| http://www.analog-innovations.com | 1962 |
I love to cook with wine. Sometimes I even put it in the food. |
|
| Back to top |
|
 |
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
Fred Bloggs wrote:
| Quote: | Davy wrote:
Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
Hey why don't tell us a little about the application, because this
sounds like something totally divorced from reality.
|
Some processors have Count Leading Zeros/Ones instructions to quickly
determine how many bits to left shift data. I had to write HDL code
for a custom ASIC processor with a clz instruction. Neat little
combinational logic problem...
Pete |
|
| Back to top |
|
 |
John Penton
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
Jim Thompson wrote:
| Quote: | On 29 Nov 2005 06:12:56 -0800, "Davy" <zhushenli@gmail.com> wrote:
Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
See...
http://www.analog-innovations.com/SED/HowManyOnes.pdf
You'll need to modify it for "zeroes" and to stop at the first
occurrence of a "one"
|
I don't think this is what the OP wanted. Perhaps he could comment.
John
--
John Penton, posting as an individual unless specifically indicated
otherwise. |
|
| Back to top |
|
 |
Frank Bemelman
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
"Davy" <zhushenli@gmail.com> schreef in bericht
news:1133273576.137921.272350@f14g2000cwb.googlegroups.com...
| Quote: | Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
|
Use a chain of 2-input or-gates, output to input.
Tie the other input of each gate to your register.
The outputs of each or-gate goes to an inverter.
The outputs of the inverters go to a 8-3 binary encoder.
--
Thanks, Frank.
(remove 'q' and '.invalid' when replying by email) |
|
| Back to top |
|
 |
Spehro Pefhany
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
On 29 Nov 2005 06:12:56 -0800, the renowned "Davy"
<zhushenli@gmail.com> wrote:
| Quote: | Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
|
Pretty easy (a few minutes) if you can use a behavioral description.
What have you done to try and solve this (homework?) problem yourself?
Best regards,
Spehro Pefhany
--
"it's the network..." "The Journey is the reward"
speff@interlog.com Info for manufacturers: http://www.trexon.com
Embedded software/hardware/analog Info for designers: http://www.speff.com |
|
| Back to top |
|
 |
soxmax
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
Davy wrote:
| Quote: | Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
|
In order to get combinational logic, your best bet is to use a Karnaugh
Map for each individual case. Also - never begin a sentence with a
preposition.
-Derek |
|
| Back to top |
|
 |
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
Fred Bloggs wrote:
| Quote: | Davy wrote:
Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
Hey why don't tell us a little about the application, because this
sounds like something totally divorced from reality.
|
<snipped Fred being conversational>
The only time I had to do this, I had it easier, because I'd been asked
to produced a floating point output on a multiplexed multi-character
display, which was being driven from a shift register, back in the days
before PICs.
I don't think the system ever worked (and in fact I just found the
hardware out in the attic) but it should have worked, A colleague was
building his own photon counter, and wanted to display a wide range of
photon counts without paying for a large number of seven-segment
displays. He dumped the half-finished system on me when he went off to
concentrate on being an acadmeic chemist.
-----------
Bill Sloman, Nijmegen |
|
| Back to top |
|
 |
Richard Henry
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
"Davy" <zhushenli@gmail.com> wrote in message
news:1133273576.137921.272350@f14g2000cwb.googlegroups.com...
| Quote: | Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
|
Use the register bits as address inputs to a ROM in which the data is coded
for the results.
Register --> ROM --> Output
Examples:
ADDR DATA
00 8
01 7
02 6
03 6
04 5
05 5
06 5
07 5
08 4
....
0f 4
10 3
....
1f 3
20 2
etc.
Or you can write a mathematical expression involving logs to the base 2. |
|
| Back to top |
|
 |
Spehro Pefhany
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
On 29 Nov 2005 08:31:46 -0800, the renowned Petrov_101@hotmail.com
wrote:
| Quote: |
Fred Bloggs wrote:
Davy wrote:
Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
Hey why don't tell us a little about the application, because this
sounds like something totally divorced from reality.
Some processors have Count Leading Zeros/Ones instructions to quickly
determine how many bits to left shift data. I had to write HDL code
for a custom ASIC processor with a clz instruction. Neat little
combinational logic problem...
Pete
|
Sure, suppose you want to normalize a floating-point mantissa using a
barrel shifter.
Best regards,
Spehro Pefhany
--
"it's the network..." "The Journey is the reward"
speff@interlog.com Info for manufacturers: http://www.trexon.com
Embedded software/hardware/analog Info for designers: http://www.speff.com |
|
| Back to top |
|
 |
Rick Jackson
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
On Tue, 29 Nov 2005 15:02:42 GMT, Fred Bloggs <nospam@nospam.com>
wrote:
| Quote: |
Davy wrote:
Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
Hey why don't tell us a little about the application, because this
sounds like something totally divorced from reality.
|
It's pretty fundamental, actually; there's at least one TTL priority
encoder (the '278). A couple of obvious applications are normalisation
and interrupt prioritisation.
Rick |
|
| Back to top |
|
 |
Frank Bemelman
Guest
|
Posted:
Tue Nov 29, 2005 5:35 pm Post subject:
Re: How to count zeros in registers? |
|
|
"Spehro Pefhany" <speffSNIP@interlogDOTyou.knowwhat> schreef in bericht
news:jnuoo11clvm7t4dntf4noh36q05bsks7ja@4ax.com...
| Quote: | On 29 Nov 2005 06:12:56 -0800, the renowned "Davy"
zhushenli@gmail.com> wrote:
Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
Pretty easy (a few minutes) if you can use a behavioral description.
|
A few minutes indeed. Here's another nice puzzle I stumbled on
yesterday:
http://cgi.ebay.com/Magic-Switchboard_W0QQitemZ6581621863
Took me about 3 minutes to figure out half a solution. The problem
I have is the requirement:
"With this improved version, when the board is initially turned on
you are able to light the bulbs in any order.".
Spending another 30 minutes didn't bring me any luck ;)
--
Thanks, Frank.
(remove 'q' and '.invalid' when replying by email) |
|
| Back to top |
|
 |
Spehro Pefhany
Guest
|
Posted:
Wed Nov 30, 2005 12:44 am Post subject:
Re: How to count zeros in registers? |
|
|
On Tue, 29 Nov 2005 18:31:41 +0100, the renowned "Frank Bemelman"
<f.bemelmanq@xs4all.invalid.nl> wrote:
| Quote: | "Spehro Pefhany" <speffSNIP@interlogDOTyou.knowwhat> schreef in bericht
news:jnuoo11clvm7t4dntf4noh36q05bsks7ja@4ax.com...
On 29 Nov 2005 06:12:56 -0800, the renowned "Davy"
zhushenli@gmail.com> wrote:
Hi all,
reg[7:0] register;
The register contains data like
[0 0 0 1 0 1 0 1]
And I want to know the number of the zeros before the first 1
(in this example is 3 zeros).
How to do this in a combinational logic?
Best regards,
Davy
Pretty easy (a few minutes) if you can use a behavioral description.
A few minutes indeed.
|
It synthesized to 9 4-in LUTs on an FPGA, or 5 slices, with 6 levels
of logic.
| Quote: | Here's another nice puzzle I stumbled on
yesterday:
http://cgi.ebay.com/Magic-Switchboard_W0QQitemZ6581621863
Took me about 3 minutes to figure out half a solution. The problem
I have is the requirement:
"With this improved version, when the board is initially turned on
you are able to light the bulbs in any order.".
Spending another 30 minutes didn't bring me any luck ;)
|
Heh. Nonvolatile memory? ;-)
Best regards,
Spehro Pefhany
--
"it's the network..." "The Journey is the reward"
speff@interlog.com Info for manufacturers: http://www.trexon.com
Embedded software/hardware/analog Info for designers: http://www.speff.com |
|
| Back to top |
|
 |
|
|
|
|