From: Bob Eld on

"Bitrex" <bitrex(a)de.lete.earthlink.net> wrote in message
news:Qq6dnXrFS-I2KtDWnZ2dnUVZ_s2dnZ2d(a)earthlink.com...
> I'm playing around with some 7400 series logic, trying to teach myself
> the basics of digital design. I've been able to come up with a working
> circuit for a 24 hour digital clock easily, but I'm struggling trying to
> think of a way to make a 12 hour clock. Specifically my problem is the
> reset of the hours counter - when the tens digit of the hours section is
> 0 I need the units counter to count from 1 to 9 and roll over to 0
> (for example 09 pm to 10 pm) but when the tens digit of the hours
> counter is a 1 I need the units counter to start counting at 1 (for
> example 12 pm - 1 am). I'm using 74LS93 series plain binary counters
> and assorted logic, and after working on it for a long while I can't
> think of a way to get it to work without using something like a
> presetable counter. Anyone have any ideas?

I realize that you are trying to learn digital circuit design but this is
really a job for a microprocessor. A PIC or some other processor can do all
of the functions of xtal clock generation, timing, BCD to seven segment
conversion, latching as well as drive LEDs or LCD's for the display on a
single chip. It can all be done in a few lines of code and is trivial
compared to using 1970's TTL technology. You might as well try to do it with
6SN7 tubes if you want ancient methods. How about filing out your own brass
gears to make a clock?

I believe your time would be better spent learning a programming language
and how to accomplish various tasks in a processor than fooling around with
TTL. This would give you a foundation for a whole range of neat projects for
the 21st century. Plus the versatility of processors allows a virtual
infinity of designs in one type of device. Other than learning how to work
with a few NAND gates and D-Flops, there isn't any future in complicated TTL
methods for projects like yours.




From: John Larkin on
On Wed, 13 Jan 2010 07:08:27 -0500, Bitrex
<bitrex(a)de.lete.earthlink.net> wrote:

>I'm playing around with some 7400 series logic, trying to teach myself
>the basics of digital design. I've been able to come up with a working
>circuit for a 24 hour digital clock easily, but I'm struggling trying to
>think of a way to make a 12 hour clock. Specifically my problem is the
>reset of the hours counter - when the tens digit of the hours section is
> 0 I need the units counter to count from 1 to 9 and roll over to 0
>(for example 09 pm to 10 pm) but when the tens digit of the hours
>counter is a 1 I need the units counter to start counting at 1 (for
>example 12 pm - 1 am). I'm using 74LS93 series plain binary counters
>and assorted logic, and after working on it for a long while I can't
>think of a way to get it to work without using something like a
>presetable counter. Anyone have any ideas?

One caution: it's tempting, when using discrete logic, to build
klugey, asynchronous hairballs. That tends to be most efficient when
wiring up 7400-series logic, but it doesn't scale. Do that some, but
note that most "modern" logic is done in CPLDs and FPGAs and ASICs
with zillions of fast gates and flops available, and is usually fully
synchronous. I'd suggest you follow up this project with an identical
function, but implemented fully synchronously in a small FPGA. Dev
kits aren't expensive.

There is a place for asynchronous hairball logic, so it's good to be
comfortable with both.

John

From: Dennis on
Bitrex wrote:
> Sylvia Else wrote:
>> Bitrex wrote:
>>> I'm playing around with some 7400 series logic, trying to teach
>>> myself the basics of digital design. I've been able to come up with
>>> a working circuit for a 24 hour digital clock easily, but I'm
>>> struggling trying to think of a way to make a 12 hour clock.
>>> Specifically my problem is the reset of the hours counter - when the
>>> tens digit of the hours section is 0 I need the units counter to
>>> count from 1 to 9 and roll over to 0 (for example 09 pm to 10 pm) but
>>> when the tens digit of the hours counter is a 1 I need the units
>>> counter to start counting at 1 (for example 12 pm - 1 am). I'm using
>>> 74LS93 series plain binary counters and assorted logic, and after
>>> working on it for a long while I can't think of a way to get it to
>>> work without using something like a presetable counter. Anyone have
>>> any ideas?
>>
>> Treat the sequence as
>>
>> 00 01 02 03 04 05 06 07 08 19 10 11
>>
>> Increment left digit when right digit becomes 9. Clear both when both
>> = becomes 12.
>>
>> Left digits are decoded as is.
>>
>> Right digits are decoded such that 0 is displayed as 1, 1 as 2,... 9
>> as 0.
>>
>> So the above sequence is displayed as
>>
>> 01 02 03 04 05 06 07 08 09 10 11 12
>>
>> Sylvia
>>
>>
>
> Thanks for your reply. I forgot to mention that I was hoping to use BCD
> to 7 segment decoders for the output, and I think it's going to be hard
> to shift the output of the counter like that so the appropriate digits
> are applied to the input of the decoder. I guess I can decode the
> shifted outputs individually but it'll take a lot of logic.

When I did this a couple of decades ago I cheated and used 74ls83 4 bit
adders. The 74ls283 is probably cheaper now (it has the power at the
package corners instead of the middle).
From: Sylvia Else on
Bitrex wrote:
> Sylvia Else wrote:
>> Bitrex wrote:
>>> I'm playing around with some 7400 series logic, trying to teach
>>> myself the basics of digital design. I've been able to come up with
>>> a working circuit for a 24 hour digital clock easily, but I'm
>>> struggling trying to think of a way to make a 12 hour clock.
>>> Specifically my problem is the reset of the hours counter - when the
>>> tens digit of the hours section is 0 I need the units counter to
>>> count from 1 to 9 and roll over to 0 (for example 09 pm to 10 pm) but
>>> when the tens digit of the hours counter is a 1 I need the units
>>> counter to start counting at 1 (for example 12 pm - 1 am). I'm using
>>> 74LS93 series plain binary counters and assorted logic, and after
>>> working on it for a long while I can't think of a way to get it to
>>> work without using something like a presetable counter. Anyone have
>>> any ideas?
>>
>> Treat the sequence as
>>
>> 00 01 02 03 04 05 06 07 08 19 10 11
>>
>> Increment left digit when right digit becomes 9. Clear both when both
>> = becomes 12.
>>
>> Left digits are decoded as is.
>>
>> Right digits are decoded such that 0 is displayed as 1, 1 as 2,... 9
>> as 0.
>>
>> So the above sequence is displayed as
>>
>> 01 02 03 04 05 06 07 08 09 10 11 12
>>
>> Sylvia
>>
>>
>
> Thanks for your reply. I forgot to mention that I was hoping to use BCD
> to 7 segment decoders for the output, and I think it's going to be hard
> to shift the output of the counter like that so the appropriate digits
> are applied to the input of the decoder. I guess I can decode the
> shifted outputs individually but it'll take a lot of logic.

Maybe use a 4 bit adder, catch the 1010 state and force the 1 ouputs to
zero. Or catch the 1001 state going into the adder, and force the 0
inputs to 1, so that the address overflows to zero.

I did a 7 segment decoder at uni. I don't remember it being so bad. It
was part of an exercise of a technique whose name I no longer know, but
I vaguely remember drawing squares around digits on a truth table. Maybe
someone can give a name for the technique.

Sylvia.
From: Spehro Pefhany on
On Thu, 14 Jan 2010 13:19:06 +1100, the renowned Sylvia Else
<sylvia(a)not.at.this.address> wrote:

>Bitrex wrote:
>> Sylvia Else wrote:
>>> Bitrex wrote:
>>>> I'm playing around with some 7400 series logic, trying to teach
>>>> myself the basics of digital design. I've been able to come up with
>>>> a working circuit for a 24 hour digital clock easily, but I'm
>>>> struggling trying to think of a way to make a 12 hour clock.
>>>> Specifically my problem is the reset of the hours counter - when the
>>>> tens digit of the hours section is 0 I need the units counter to
>>>> count from 1 to 9 and roll over to 0 (for example 09 pm to 10 pm) but
>>>> when the tens digit of the hours counter is a 1 I need the units
>>>> counter to start counting at 1 (for example 12 pm - 1 am). I'm using
>>>> 74LS93 series plain binary counters and assorted logic, and after
>>>> working on it for a long while I can't think of a way to get it to
>>>> work without using something like a presetable counter. Anyone have
>>>> any ideas?
>>>
>>> Treat the sequence as
>>>
>>> 00 01 02 03 04 05 06 07 08 19 10 11
>>>
>>> Increment left digit when right digit becomes 9. Clear both when both
>>> = becomes 12.
>>>
>>> Left digits are decoded as is.
>>>
>>> Right digits are decoded such that 0 is displayed as 1, 1 as 2,... 9
>>> as 0.
>>>
>>> So the above sequence is displayed as
>>>
>>> 01 02 03 04 05 06 07 08 09 10 11 12
>>>
>>> Sylvia
>>>
>>>
>>
>> Thanks for your reply. I forgot to mention that I was hoping to use BCD
>> to 7 segment decoders for the output, and I think it's going to be hard
>> to shift the output of the counter like that so the appropriate digits
>> are applied to the input of the decoder. I guess I can decode the
>> shifted outputs individually but it'll take a lot of logic.
>
>Maybe use a 4 bit adder, catch the 1010 state and force the 1 ouputs to
>zero. Or catch the 1001 state going into the adder, and force the 0
>inputs to 1, so that the address overflows to zero.
>
>I did a 7 segment decoder at uni. I don't remember it being so bad. It
>was part of an exercise of a technique whose name I no longer know, but
>I vaguely remember drawing squares around digits on a truth table. Maybe
>someone can give a name for the technique.
>
>Sylvia.

Karnaugh maps?


Best regards,
Spehro Pefhany
--
"it's the network..." "The Journey is the reward"
speff(a)interlog.com Info for manufacturers: http://www.trexon.com
Embedded software/hardware/analog Info for designers: http://www.speff.com