Ring and Johnson counters
3.4.9· Hardware › Sequential Circuits
Do special shift-register counters hain jo shift register ki output ko uske input pe feed karke bante hain. Yeh "waste hone wale" states ke badle mein glitch-free, self-decoding counting dete hain.
[!intuition] Core picture kya hai
Ek shift register bas flip-flops ki ek chain hai jo ek bit ko aise pass karti hai jaise bucket-brigade mein log ek ball pass karte hain. Ek counter ko normally ek adder ya complex logic chahiye hoti hai. Lekin kya ho agar hum ek shift register lein aur uski last output ko first input pe loop kar dein? 1s aur 0s ka pattern hamesha ke liye circulate karta rahega — aur woh circulating pattern HI count hai.
- Ring counter = ko seedha pe feed karo. Ek "hot" bit circulate karti hai.
- Johnson counter (a.k.a. twisted-ring / switch-tail) = complement feed karo. Yeh twist states ki sankhya double kar deta hai.
WHY care karna chahiye? State jaanne ke liye koi decoding logic nahi chahiye — aap seedha padh sakte ho. Aur har transition mein sirf one flip-flop ek baar mein change hoti hai, isliye no decoding glitches hote hain (unlike binary counter jahan multiple bits ek saath flip hoti hain).
[!definition] Definitions
- Ring counter: ek -flip-flop shift register jisme (ya ) ko se wire kiya gaya hota hai; exactly ek flip-flop high hoti hai, aur woh 1 rotate karta hai. Iske ==== valid states hote hain.
- Johnson counter: same shift register lekin inverted last output pehle input ko feed karta hai; ==== valid states produce karta hai.
- Ek valid/used state woh hai jo counter apne normal cycle mein actually visit karta hai; baki sab unused (lock-out) states hote hain.
[!formula] States ki sankhya — derive karo, yaad mat karo
WHY ring counter states deta hai? cells mein ek single 1 load karo. Har clock use ek position shift karta hai. shifts ke baad woh 1 har cell visit karke ghar wapas aa jaata hai. Isliye cycle length = cells ki sankhya:
WHY Johnson deta hai? Fill/empty process trace karo. Sab 0 se shuru karo. Feedback hai , toh ek 1 enter karta hai. Har clock ke saath 1s left se fill hoti jaati hain jab tak register puri tarah 1s se bhar na jaaye — yeh steps hain. Ab , toh 0s enter hote hain aur register left se empty hoti hai — dobara all 0s tak pahunchne mein aur steps lagte hain.
Efficiency (80/20 fact). flip-flops ke saath aap tak count kar sakte the. Toh: Johnson, ring se twice as efficient hai lekin dono binary counter ke mukable mein bahut zyada wasteful hain. Aap silicon simplicity + no glitches ke liye dete ho.

[!example] Worked: 4-bit Ring counter ()
Wiring: . se preset karo.
| Clock | |
|---|---|
| init | 1000 |
| 1 | 0100 |
| 2 | 0010 |
| 3 | 0001 |
| 4 | 1000 (repeat) |
- 1000 se start kyun? Ring counter apna starting 1 khud generate nahi kar sakta — feedback sirf copy karta hai. Aapko ek 1 inject karna padega (preset/clear). Yeh step kyun? Kyunki : agar sab cells 0 hoti, toh hamesha → 0000 pe stuck.
- Sirf 4 states kyun? 4 positions mein ek 1 → 4 arrangements. Yeh step kyun? Hot positions ki sankhya register length ke barabar hoti hai.
[!example] Worked: 4-bit Johnson counter ( states)
Wiring bilkul same except . se start karo.
| Clock | ||
|---|---|---|
| 0 | 0000 | 1 |
| 1 | 0001 | 1 |
| 2 | 0011 | 1 |
| 3 | 0111 | 1 |
| 4 | 1111 | 0 |
| 5 | 1110 | 0 |
| 6 | 1100 | 0 |
| 7 | 1000 | 0 |
| 8 | 0000 (repeat) | — |
- Fill hone ke baad empty kyun hota hai? Jab ho jaata hai, feedback 0s inject karna shuru kar deta hai. Yeh step kyun? Twist (complement) hi woh cheez hai jo incoming bit ko flip karti hai aur cycle double karti hai.
- 2-input AND se ek state uniquely decode karna. Notice karo ki har state mein exactly ek "0→1 boundary" ya "1→0 boundary" hoti hai. E.g. state ek akaila state hai jisme ho. Toh ise se decode karo. Yeh step kyun? Adjacent-bit patterns Johnson ke har state ke liye unique hote hain → har output ko sirf ek 2-input gate chahiye, sasta aur glitch-free.
[!example] Self-starting fix (mini-derivation)
Problem: kya ho agar ek Johnson counter unused state jaise mein power up ho? Trace karo: , shift → … yeh ek dead loop mein oscillate karta rehta hai, kabhi main cycle mein join nahi karta.
- Fix: feedback ko modify karo taaki style correction ho (ek common trick: variants) jo illegal states ko valid cycle mein wapas force kare. Yeh step kyun? Ek self-correcting counter mein har unused state eventually kisi used state mein map honi chahiye, jo noise/power-up ke baad recovery guarantee karta hai.
[!mistake] Common mistakes (steel-manned)
" flip-flops wala ring counter tak count karta hai." Kyun sahi lagta hai: har doosra counter jo tumne seekha (binary ripple/sync) karta hai. Fix: ring counters count ko ek single 1 ki position ke roop mein encode karte hain, sirf states dete hain. Pura point yeh hai ki count-range ko trade karo zero decode logic ke liye.
"Ring aur Johnson same hain, ek mein bas ek inverter hai — koi badi baat nahi." Kyun sahi lagta hai: circuits mein ek wire ka fark hai. Fix: woh inverter ring ko twist karta hai aur states double kar deta hai () aur 2-gate self-decoding enable karta hai. Ek wire fundamental state count badal deta hai.
"Yeh khud hi count karna shuru kar dete hain." Kyun sahi lagta hai: doosre counters bas power on hote hain aur chalne lagte hain. Fix: dono ko initialisation chahiye (ring mein ek 1 preset karo; Johnson ko clear karo) ya unhe self-starting banana padega, warna yeh dead loops mein lock ho sakte hain.
"Johnson state phir — kya hum skip kar gaye?" Kyun sahi lagta hai: yeh ek jump jaisa lagta hai. Fix: pe feedback hai, toh ek 0 shift hoke aata hai, nahi. All-0 state tab aati hai jab saare 1s shift out ho jaate hain.
[!recall]- 12 saal ke bacche ko samjhao
Socho 4 bacchon ki ek line hai jo ek akeli glowing ball ko right mein pass kar rahe hain; last baccha use pehle bacche ko wapas throw karta hai. Ball jahan bhi ho = "count" — yahi ek ring counter hai, 4 possible spots. Ab twist: last baccha, same ball pass karne ki jagah, ulti cheez pass karta hai — agar uske paas lit ball hai toh woh dark wali pass karta hai, aur vice-versa. Ab poori line ek ek karke light up hoti hai, phir ek ek karke dark ho jaati hai. Same bacchon se twice as many patterns! Yahi ek Johnson counter hai. Koi scoreboard nahi chahiye — bas lights dekho.
[!mnemonic]
- Ring = ek 1 Ring mein Run karta hai → states.
- Johnson = Just iNverter add karo → doubles → (J for "twisted / double").
- "Ring: n. Johnson: 2n. Binary: 2ⁿ." — badhta count, badhta decode-cost.
Flashcards
-bit ring counter mein kitne states hote hain?
-bit Johnson counter mein kitne states hote hain?
Ring counter ko Johnson counter mein badalne ke liye kaunsa ek hardware change karna padta hai?
Ring/Johnson counters ko decoding logic kyun nahi chahiye (no glitches)?
Ring counter ko exactly ek 1 se preset kyun karna padta hai?
Johnson counter ka state utilisation binary counter se compare karo?
"Lock-out"/dead loop kya hota hai aur ise kaise fix karte hain?
4-bit Johnson counter mein state ke baad kya aata hai?
4-bit Johnson state ke liye decode gate kya hai?
Connections
- Shift Registers — woh base building block jisse dono counters bante hain.
- Synchronous Counters — compare karo: poora range lekin multi-bit transitions glitches cause karte hain.
- Flip-Flops (D type) — yahan use hone wala storage element.
- Glitches and Decoding Hazards — kyun single-bit-change counters matter karte hain.
- Self-starting Sequential Circuits — lock-out aur correction feedback.
- Frequency Division — ek ring counter clock ko se divide karta hai, Johnson se.