# โมดูลซีเควนเชียลลอจิก
โมดูลซีเควนเชียลลอจิก 

 Counter 
 วงจรนับแบบไม่เข้าจังหวะ (Asynchronous Counter) 
ใช้ J-K Flip Flop มาเรียงต่อกัน  (Flip flop 1 ตัว แทนเลขฐานสองได้ 1 บิท) ขึ้นอยู่กับสถานะเอาต์พุตของ Flip flop ตัวก่อนหน้านี้ โดย Flip flop ตัวแรกจะส่งสัญญาณจาก Q ไปกระตุ้นที่ Clk ของ Flip flop ตัวที่สอง และ Flip flop และตัวที่สองจะส่งสัญญาณไปกระตุ้นที่ Clk ของ Flip flop ตัวที่สามไปเรื่อย ๆ ตามลำดับ การทำงานของวงจรมีลักษณะเป็นระลอก เรียกว่า วงจรนับแบบ Ripple Counter

วงจรนับเลขฐานสอง (Binary Counter)
ตัวอย่างวงจรข้างล่างนี้เรียกว่า วงจรนับเลขฐานสองแบบไม่เข้าจังหวะ ใช้ J-K Flip flop และ Flip flop ทุกตัวต่อในอยู่ในสถานะ Toggle คือ ให้ J และ K เป็น "1"  เพื่อเตรียมพร้อมที่จะให้ Flip flop เปลี่ยนสถานะเอาต์พุต เมื่อมีคล็อก (Clock) ชนิดขอบขาลง (Negative edge-triggering) เข้ามาที่ Clk ของ Flip flop แต่ละตัว ให้พิจารณาการทำงานจากตารางความจริงและไดอะแกรมของเวลา

Modulus Counter (MOD-Number Counter)
เป็นการนับตามค่าที่กำหนด คือ สร้างวงจรนับให้สามารถกำหนดค่าที่นับได้ เช่น ให้นับตั้งแต่ 0 - 9 แล้วเวียนกลับมาเริ่มต้นที่ 0 อีก หรืออาจจะกำหนดให้นับถึงเลขใดเลขหนึ่งแล้วเวียนกลับมาเริ่มต้นใหม่  เมื่อนับถึงค่าที่กำหนดวงจรจะ Reset  ตัวเองให้เริ่มต้นใหม่  โดยค่าสูงสุดที่กำหนดให้นับเรียกว่า  MOD number  จึงเรียกวงจรนับว่า MOD-3 คือ จงจรจะ  Reset  ค่าเมื่อนับถึง 3  การ  Reset  ค่าจะใช้ ขา CLR หรือ    เป็นขา Asynchronous ร่วมกับลอจิกเกตทำการ Reset  เอาต์พุตของ Flip flop 

วงจรนับสิบ (decade BCD Counter)
เราสามารถเรียกอีกอย่างได้ว่า  ดีเคดเคาน์เตอร์ (Decade counter) หรือ  บีซีดีเคาน์เตอร์ (BCD counter) หรือ วงจรนับชนิดมอดสิบ (MOD-10)  ซึ่งเป็นวงจรนับเลขฐานสองขนาด 4  bit จาก 0000 ถึง 1001 (0-9 เลขฐานสิบ)  lสามารถออกแบบโดยใช้ลอจิกเกต ควบคุมการนับ โดยไม่ต้องใช้ขา CLR หรือ ออกแบบโดยใช้ลอจิกเกต ควบคุมการนับ โดยต้องใช้ขา CLR  ก็ได้

วงจรนับแบบนับขึ้น – ลง (Asynchronous Up/Down Counter)
ที่ผ่านมาเป็นวงจรนับแบบนับขึ้น (Count Up) เราสามารถดัดแปลงวงจรให้นับลง (Count Down) โดยการต่อเอาต์พุต  ของ Flip flop ให้แสดงงผลแทน Q หรือต่อเอาต์พุต  ของ  Flip flop ไปกระตุ้น Flip flop ตัวต่อไปให้เปลี่ยนสถานะ สัญญาณที่เกิดขึ้นจึงตรงกันข้าม  ทำให้นับลง การออกแบบให้วงจรสามารถนับขึ้นและนับลง   ทำได้โดยการสับเปลี่ยนสวิทช์วงจรไปมาระหว่าง Q และ  ให้ส่งสัญญาณ Clock ไปกระตุ้น Flip flop ตัวถัดไป ถ้าต้องการนับขึ้นต้องนำสาย Enable ต่อลงกราวด์ ให้มีค่าลอจิกเป็น "0" จะได้ว่า AND เกต อยู่ในสถานะ  Enable พร้อมที่จะให้สัญญาณ (Clock) จาก Q ผ่านได้ทุกขณะ ส่วนการนับลงก็ทำกลับกันโดยให้ค่าลอจิกเป็น "1"

ข้อเสียของ Asynchronous Counter คือใช้ได้ดีเฉพาะที่ความถี่ต่ำๆ เนื่องจากปัญหาความล่าช้าของสัญญาณเอาต์พุตหรือเกิดเวลาหน่วงในการส่งข้อมูลจากอินพุตไปยังเอาต์พุต ของ Flip flop แต่ละตัว ถ้าผลรวมของเวลาที่หน่วงของ Flip flop ทุกตัวค่าน้อยกว่าเวลาที่เกิดสัญญาณ Clock ในหนึ่งลูกคลื่น ก็จะไม่เกิดปัญหาในการนับ

 วงจรนับแบบเข้าจังหวะ  (Synchronous Counter) 
การทำงานของวงจรนับที่ความถี่สูงๆ จำเป็นที่จะต้องให้ Flip flop ได้รับสัญญาณกระตุ้นพร้อมๆ กันเพื่อหลีกเลี่ยงปัญหาที่เกิดจากการหน่วงเวลาของ Flip flop เรียกวงจรนับชนิดนี้ว่า วงจรนับแบบเข้าจังหวะ (Synchronous Counter)   รูปด้านล่างนี้เป็นวงจรนับแบบเข้าจังหวะ (Synchronous Counter) 4 บิท โดยใช้ J-K Flip flop ขา Clk ทุกตัวต่อรวมกัน และต่อเข้าสัญญาณ Clock

วงจรนับขึ้นลงแบบได้จังหวะ (Synchronous up/down counter)	
เป็นวงจรนับเลขไบนารี่ที่สามารถนับขึ้น(Count Up) หรือนับลง(Count Down)ได้ ขา Clock  ต่อเข้ากับ Clock ทุกตัวของ Flip flop นำเอาเอาต์พุต Q หรือ Q ANDกับ Up/ Down และต่อเข้าขา J และ K ของ Flip flop ตัวถัดไป การนับขึ้นหรือนับลงควบคุมได้ที่ขา Up/ Down ถ้าเป็นโลจิก“1” ให้วงจรนับทำการนับขึ้น โลจิก “0”ให้วงจรนับทำการนับลง

ข้อเสียของ  synchronous Counter คือ โครงสร้างในการออกแบบทำให้การนำ JK Flip-flop มาต่อเป็นวงจรทำได้ค่อนข้างยาก เพราะ JK Flip-flopทุกตัวต้องเริ่มนับพร้อมกัน และต้องการเอาต์พุตในแต่ละขาของ JK Flip-flop ที่แต่ต่างกันไปตามรูปแบบวงจรนับที่ต้องการ ดังนั้นจึงมีการนำวงจรชนิดนี้ไปใช้งานน้อย 

 Shift- register 
ข้อมูลเข้าแบบอนุกรม/ออกแบบอนุกรม (Serial-in/Serial-Out - SISO)
ในการส่งข้อมูลแบบอนุกรมและตัวรับแบบอนุกรมนี้ไม่ใช้ในการรับส่งข้อมูลทั่วไป แต่ใช้หน่วงเวลาของข้อมูล  หากต้องการหน่วงเวลาของข้อมูล ไป 1 ช่วงสัญญาณนาฬิกาก็ได้ Flip-flop D จำนวน 1 ภาค และเพิ่มขึ้นทุกจำนวน 1 ภาค ต่อการหน่วง ไป 1 จังหวะของสัญญาณนาฬิกา อย่างไรก็ตามจำนวนบิทของข้อมูลที่ส่งต่อหน่วยเวลาจะต้องเท่ากับความถี่ของสัญญาณนาฬิกาที่ให้กับ Flip-flop D

ข้อมูลเข้าแบบอนุกรม/ออกแบบขนาน (Serial-in/Parallel-Out - SIPO)
ปกติตัวเลื่อนแบบ SISO จะนำมาใช้เมื่อต้องการหน่วงเวลาสัญญาณเท่านั้น  ด้านล่างเป็นตัวอย่างการใช้ Flip-flop D ในการเลื่อนข้อมูลแบบรับเข้าอนุกรม และส่งออกแบบขนาน 

ข้อมูลเข้าแบบขนาน/ออกแบบอนุกรม (Parallel-in/Serial-Out - PISO)
การส่งข้อมูลให้กับตัวเลื่อนชนิดนี้ ทำได้โดยการส่งข้อมูลให้ตัวเลื่อนแบบขนาน และรับข้อมูลจากตัวเลื่อนแบบอนุกรม การรับข้อมูลแบบอนุกรมในลักษณะนี้สัญญาณ CLOCK ของฝ่ายรับจะต้องมีคาบเวลาเท่ากับสัญญาณ CLOCK ของฝ่ายหลัง (แต่ไม่จำเป็นต้องเป็นสัญญาณเดียวกัน) ข้อมูลที่รับได้จึงจะเป็นข้อมูลที่ถูกต้อง 

ข้อมูลเข้าแบบขนาน/ออกแบบขนาน (Parallel-in/Parallel-Out - PIPO)
ตัวเลื่อนข้อมูลในลักษณะนี้ จะนำมาใช้เป็นตัวจดบันทึก หรือคงค่า (latch) เพื่อให้เห็นภาพของการใช้งานที่ชัดเจน 

 วงจรนับแบบ  Shift- register 
วงจรนับวงแหวน (Ring Counter)  
การต่อเอาต์พุตของ Flip-flop บิตสุดท้ายกับขาอินพุตกับ Flip-flop บิตแรก เกิดเป็นรูปแบบการนับเลื่อนกลับเป็นวงกลมในกรณีที่มีสัญญาณนาฬิกาเข้ามา 

วงจรนับแบบจอห์นสัน (Johnson Counter)
เป็นการนำผลตรงข้ามของเอาต์พุตของ Flip-flop สูงสุดป้อนกลับมายังขาอินพุตของ Flip-flop ตัวแรก รูปแบบการนับทางเอาต์พุตของวงจร Johnson ขนาด 4 บิตมี 8 รูปแบบ และ รูปแบบการนับทางเอาต์พุตของ

วงจร Johnson ขนาด 5  บิตมี10 รูปแบบ โดยหารูปแบบได้จากสูตร 2n (โดย n คือ จำนวนบิต)