หัวข้อในการเรียนรู้สำหรับการออกแบบวงจรลอจิก (Logic Design)#


Logic Design#

หากสนใจและต้องการเรียนรู้เกี่ยวกับการออกแบบวงจรดิจิทัลหรือวงจรลอจิก (Logic Design) เช่น ไอซีประเภทลอจิกเกต (Logic Gate ICs) หรือ ชิปโปรแกรมได้เชิงลอจิก เช่น FPGA (Field-Programmable Gate Arrays) จะมีหัวข้อที่เกี่ยวข้องอะไรบ้างที่ควรได้ศึกษาเรียนรู้ตามลำดับ บทความนี้ได้รวบรวม จัดแบ่งเป็นหมวดหมู่และมานำเสนอไว้

ก่อนอื่นลองมาทบทวนความหมายของคำศัพท์ต่อไปนี้

  • Logic Design กล่าวถึง หลักการ วิธีการ และเครื่องมือที่ใช้การออกแบบวงจรระดับลอจิก (เชิงตรรกะ) เป็นการเชื่อมโยงความรู้หรือทฤษฎี เช่น พีชคณิตบูลีน (Boolean Algebra) การออกแบบสร้างวงจรลอจิก (Logic Circuits) และวงจรลอจิกประกอบด้วยลอจิกเกตเป็นหน่วยย่อยพื้นฐานของวงจร (Basic Building Blocks) สามารถนำมาต่อกันตามรูปแบบที่เหมาะสม เป็นระบบดิจิทัลที่มีความซับซ้อนได้

  • Logic Circuits เป็นวงจรที่ใช้กับสัญญาณดิจิทัล หรือ สัญญาณลอจิก

    • วงจรมีอินพุตและเอาต์พุต (Inputs & Outputs, Interfaces) และประกอบด้วยวงจรย่อยและการเชื่อมต่อกันและแบ่งได้หลายชั้น (Component Instantiation & Interconnections, Hierarchical & Structural Composition)
    • วงจรมีสถานะทางลอจิกที่ ไม่ใช่แค่ '0' หรือ '1' (Multi-value Logic) เช่น มีสถานะ 'Z' (High-Impedance) อาจมีหน่วยความจำอยู่ภายใน (เช่น แลตช์ ฟลิปฟลอป รีจิสเตอร์)
    • สัญญาณอินพุต-เอาต์พุต และสัญญาณภายใน อาจเป็นแบบบิตเดี่ยวหรือหลายบิต
    • วงจรอาจมีสัญญาณ Clock ควบคุมการทำงานของหน่วยความจำ เช่น ในวงจรแบบ Synchronous Logic Design ที่ใช้สัญญาณ Clock กำหนดจังหวะการทำงานของฟลิปฟลอป
    • ฟังก์ชันการทำงาน เช่น การดำเนินการเชิงลอจิกกับสัญญาณดิจิทัลหรือข้อมูล และเกิดขึ้นได้พร้อมกัน (Concurrent Logical Operations)
    • การเปลี่ยนแปลงเชิงลอจิกสำหรับสัญญาณไฟฟ้าจริง มีความหน่วงหรือล่าช้าเกิดขึ้นได้ (ในระดับนาโนวินาที)
  • Digital Electronics เกี่ยวข้องกับการวิเคราะห์และการออกแบบวงจรอิเล็กทรอนิกส์ที่ใช้กับสัญญาณดิจิทัล การสร้างลอจิกเกตในรูปของวงจรอิเล็กทรอนิกส์ และในระดับย่อยลงไปต่ำกว่าลอจิกเกต เช่น ระดับทรานซิสเตอร์ วงจรรวมหรือไอซี (Integrated Circuit: IC) ที่ประกอบด้วยทรานซิสเตอร์มีขนาดเล็กมากและจำนวนมาก

  • Microelectronics: เกี่ยวข้องกับ คุณสมบัติของสารกึ่งตัวนำ (Semiconductor) ทรานซิสเตอร์ประเภทต่าง ๆ (Transistors) และฟังก์ชันการทำงาน การนำมาสร้างเป็นวงจร และการผลิตวงจรรวม

  • VLSI Design: การออกแบบวงจรรวมดิจิทัลที่มีความซับซ้อนสูง (พิจารณาตามจำนวนของทรานซิสเตอร์)

  • SoC (System-on-Chip) Design: การออกแบบวงจรรวมที่มีลักษณะเป็นระบบและมีความซับซ้อนสูงไว้ในชิปเดียวกัน เช่น ประกอบด้วยซีพียู (CPU) วงจรรอบข้าง (Peripherals) และเชื่อมต่อด้วยระบบบัส

การออกแบบวงจรและระบบดิจิทัล อาจจำแนกได้ตามระดับในการออกแบบ (เรียงจากระดับล่างขึ้นบน)

  • ในระดับ "อุปกรณ์" (Device): เกี่ยวข้องกับการศึกษาคุณลักษณะของทรานซิสเตอร์ เช่น MOSFET ที่สามารถนำมาสร้างเป็นวงจรอิเล็กทรอนิกส์ได้
  • ในระดับ "วงจร" (Circuit): เกี่ยวข้องกับเทคนิคการออกแบบและวิเคราะห์วงจรดิจิทัล โดยใช้ทรานซิสเตอร์ การใช้ลอจิกเกต หรือใช้วงจรที่ได้มีการออกแบบไว้แล้ว ใช้แนวทางการออกแบบแบบในลักษณะ Bottom-up รวมถึงแนวทางการออกแบบวงจรเพื่อนำมาในได้อีก (IP Design Reuse)
  • ในระดับ "ระบบ" (System): เกี่ยวข้องกับเทคนิคการออกแบบและวิเคราะห์ระบบดิจิทัล ซึ่งถูกแบ่งย่อยได้เป็นระบบย่อยลงไปจนถึงระดับวงจร ใช้แนวทางการออกแบบในลักษณะ Top-down

ดังนั้นในการเรียนรู้เกี่ยวกับการออกแบบวงจรลอจิก โดยทั่วไปแล้ว ก็จะเริ่มต้นที่ระดับลอจิกเกตแล้วสร้างเป็นวงจร ที่มีฟังก์ชันการทำงานในรูปแบบต่าง ๆ แต่ในส่วนของการสร้างลอจิกเกตในระดับทรานซิสเตอร์ รวมถึงการออกแบบเพื่อสร้างไอซี ก็จะเป็นระดับล่างลงไป เกี่ยวข้องกับวิชา Physical VLSI Design เป็นต้น

อย่างไรก็ตาม ในยุคปัจจุบัน เครื่องมือที่เป็นซอฟต์แวร์ประเภท EDA (Electronic Design Automation) มีความก้าวหน้าอย่างมาก การออกแบบวงจรดิจิทัล สามารถทำได้ง่ายขึ้น เช่น การใช้ภาษาคอมพิวเตอร์ HDL เพื่อเขียนอธิบายการทำงานของวงจรลอจิก แล้วสามารถแปลงให้เป็นวงจรลอจิกเกตได้โดยอัตโนมัติ รวมถึงการใช้ชิปประเภท FPGA เพื่อสร้างวงจรลอจิกและทดสอบการทำงานได้จริง ไม่จำเป็นต้องนำไปจ้างโรงงานเพื่อผลิตชิปหรือไอซีซึ่งมีต้นทุนที่สูงมาก

ภาษา HDL สำหรับวงจรดิจิทัลที่นิยมใช้ในปัจจุบันได้แก่ VHDL และ Verilog

  • HDL = Hardware Description Language)
  • ใช้อธิบายการทำงานของฮาร์ดแวร์ โดยสร้างเป็น "โมเดล" (Models) ของวงจรดิจิทัล
  • นำไปใช้ได้กับโปรแกรมจำลองการทำงานของวงจรดิจิทัล (HDL-based Logic Simulation)
  • ศึกษาและทำความเข้าใจ ตรวจสอบการทำงานและความถูกต้องของแบบจำลองวงจร
  • นำไปใช้ได้กับโปรแกรมสังเคราะห์วงจรดิจิทัล (HDL-based Logic Synthesis)
  • สร้างเป็นวงจรที่เหมาะสมจากโค้ด HDL ได้โดยอัตโนมัติ โดยใช้ซอฟต์แวร์สังเคราะห์วงจร วิธีการนี้ช่วยลดระยะเวลาในการออกแบบวงจรและพัฒนาฮาร์ดแวร์ดิจิทัล
  • นำไปใช้สร้างโมเดลของวงจรดิจิทัลในระดับของนามธรรม (Levels of Abstraction) ที่ต่างกันได้ เช่น
    • ระดับลอจิกเกต (Gate Level)
    • ระดับการย้ายข้อมูลระหว่างรีจิสเตอร์ (RTL: Register Transfer Level) ตามจังหวะของสัญญาณ Clock ในวงจรซิงโครนัส (Synchronous Logic Design)
  • VHDL = VHSIC (Very High Speed Integrated Circuit) HDL
    • เริ่มต้นในประมาณปีคศ. 1983 โดย Department of Defense (USA)
    • มีการกำหนดเป็นมาตรฐาน IEEE Standard 1076-1987
    • มีการอัพเดทปรับปรุง VHDL ตามลำดับ เช่น IEEE-1076 1993 / 2000 / 2002 / 2008
  • Verilog
    • คศ. 1985: เริ่มต้นพัฒนาและใช้งานโดยบริษัท Gateway Design Automation Co.
    • คศ. 1995: ยอมรับเป็นมาตรฐาน IEEE Standard 1364-1995 และ IEEE Standard 1364-2001 ตามลำดับ

 


การจำแนกหัวข้อในวิชา Logic Design#

การจัดหมวดหมู่ของหัวข้อพื้นฐานที่เกี่ยวข้องกับการออกแบบวงจรลอจิก มีตัวอย่างดังนี้

  • พื้นฐานเกี่ยวกับระบบจำนวนตัวเลข (Number Systems)
  • พื้นฐานเกี่ยวกับพีชคณิตบูลีน (Boolean Algebra)
  • พื้นฐานเกี่ยวกับลอจิกเกต (Logic Gates)
  • พื้นฐานเกี่ยวกับวงจรลอจิก (Logic Circuits)
  • พื้นฐานเกี่ยวกับวงจรคอมบิเนชัน (Combinational Logic Circuits)
  • พื้นฐานเกี่ยวกับอุปกรณ์หน่วยความจำในวงจรซีเควนเชียล (Sequential Logic Circuits)
  • พื้นฐานเกี่ยวกับ HDLs (Hardware Description Languages)
  • พื้นฐานเกี่ยวกับชิปที่โปรแกรมได้เชิงลอจิก (Programmable Logic Devices)

พื้นฐานเกี่ยวกับระบบจำนวนตัวเลข

  • สัญญาณและข้อมูล (ในการประมวลผลแบบดิจิทัล)
  • ระบบจำนวนตัวเลข (Number Systems) และเลขฐาน
    • เลขจำนวนเต็ม (Integer Numbers): unsigned, sign-bit magnitude, 1’s complement, 2’s complement (signed)
    • เลขทศนิยม (Floating-Point Numbers) ตามมาตรฐาน IEEE Standard 754 (single and double precision; floating-point arithmetic)
  • โค้ดหรือรหัสข้อมูล (Code) ในรูปแบบต่าง ๆ เช่น Binary, Gray, BCD (Binary-Coded Decimal), Excess-3, ASCII รวมถีงการแปลงโค้ด เช่น Binary Code - Gray Code

พื้นฐานเกี่ยวกับพีชคณิตบูลีน (Boolean Algebra)

  • ตัวแปรบูลีนและตัวดำเนินการ (Boolean Variables, Literals, Operators)
  • นิพจน์บูลีน (Boolean Expressions)
  • สัจพจน์และทฤษฎีบทของพีชคณิตบูลีน (Postulates and Theorems of Boolean Algebra) เช่น
    • ทฤษฎีบทหรือกฎของเดอมอร์แกรน (De Morgan Theorem)
    • ทฤษฎีบทหรือกฎต่างๆ ที่นำมาใช้ในการแปลงรูปนิพจน์บูลีนได้ (Algebraic Manipulation) เชื่อมโยงสู่ ลอจิกเกตพื้นฐานแบบต่างๆ เช่น NOT, NAND, NOR, OR, AND, XOR, XNOR เป็นต้น
  • "มินเทอม" (Minterms) และ "แมกซ์เทอม" (Maxterms) และรูปสมการบูลีนแบบ SOP (Sum of Products) และ POS (Product of Sums)
  • วิธีการลดรูปสมการบูลีน (Simplification) เช่น Karnaugh Map และ Quine–McCluskey Tabular Method เป็นต้น

พื้นฐานเกี่ยวกับลอจิกเกต (Logic Gates)

  • ลอจิกเกตพื้นฐานแบบต่างๆ และตารางความจริงของลอจิกเกต (Truth Table)
  • ลอจิกเกตแบบอเนกประสงค์ (Universal Logic Gates): การใช้ NAND2 (2-Input NAND) หรือ NOR2 (2-Input NOR) ในการสร้างวงจรลอจิก
  • สัญลักษณ์ของลอจิกเกตพื้นฐาน และการวาดผังวงจร (Schematic Capture)
  • การใช้ไอซีลอจิกเกตมาตรฐาน (Standard Discrete Logic ICs) เช่น 74HCxx Series เพื่อสร้างวงจรลอจิก (เช่น บนแผงต่อวงจร)
  • การจำแนกตามตระกูลของลอจิกเกต (Logic Gate Families): TTL / LVTTL และ CMOS / LVCMOS เป็นต้น
  • I/O: เอาต์พุตสามสถานะ (Tri-state Logic) เอาต์พุตแบบ Open-Collector / Open-Drain และอินพุตแบบชมิตต์ทริกเกอร์ (Schmitt-Trigger)
  • การเชื่อมทางไฟฟ้าระหว่างขา I/O ของลอจิกเกตต่างตระกูลกัน และอาจมีระดับและช่วงแรงดันไฟฟ้าที่แตกต่างกัน และข้อควรระวัง
  • คุณลักษณะทางไฟฟ้าของลอจิกเกต (Electrical and Timing Properties of Logic Gates) เช่น
    • Fan-Out
    • Propagation Delays
    • Switching Times
    • Voltage Level Parameters (VOH / VOL / VIH / VIL)
    • Noise Margin
    • Power Consumption

รูป: ตัวอย่างผังวงจรในระดับลอจิกเกต

รูป: ตัวอย่างผังวงจรลอจิกและแผนภาพแสดงการเปลี่ยนแปลงของสัญญาณในวงจรเชิงเวลา

รูป: ตัวอย่างผังวงจรของลอจิกเกต NAND2 และ NOR2 ในระดับทรานซิสเตอร์แบบ CMOS

รูป: ตัวอย่างไอซีลอจิกเกต MC74VHCT00A (Quad 2-Input NAND Gates)

รูป: ตัวอย่างคุณสมบัติทางไฟฟ้าของไอซีลอจิกเกต MC74VHCT00A

 


พื้นฐานเกี่ยวกับวงจรลอจิก (Logic Circuits)

  • วงจรที่ไม่มีหน่วยความจำ (Combinational Circuits) หรือเรียกว่า "วงจรลอจิกจัดหมู่" หรือ "วงจรตรรกะจัดหมู่" หรือ "วงจรคอมบิเนชัน" ซึ่งเป็นวงจรที่ค่าลอจิกของเอาต์พุตขึ้นอยู่กับค่าของอินพุตของวงจรเท่านั้น
  • วงจรที่มีหน่วยความจำ (Sequential Circuits) หรือเรียกว่า "วงจรลอกจิกเชิงลำดับ" หรือ "วงจรซีเควนเชียล" ซึ่งเป็นวงจรที่ค่าของเอาต์พุตขึ้นอยู่กับค่าของอินพุตและค่าในหน่วยความจำ (สถานะ) ของวงจร แบ่งแยกได้เป็นสองกลุ่มย่อยคือ
    • วงจรซีเควนเชียลแบบซิงโครนัส (Synchronous Sequential Circuits)
    • วงจรซีเควนเชียลแบบอะซิงโครนัส (Asynchronous Sequential Circuits)
  • การออกแบบและวิเคราะห์การทำงานของวงจรลอจิกประเภทต่าง ๆ

พื้นฐานเกี่ยวกับวงจรคอมบิเนชัน (Combinational Logic Circuits)

  • วงจรคอมบิเนชันสองชั้น (Two-Level Logic Networks) และแบบหลายชั้น
  • วงจรตามแบบ Sum-of-Products (SOP) และ Product-of-Sums (POS) จากตารางค่าความจริง
  • วงจรคำนวณทางคณิตศาสตร์หรือวงจรคำนวณเชิงเลข (Arithmetic Circuits)
  • วงจรบวกเลขบิตเดียว (Half Adder, Full Adder) และวงจรบวกลบเลขหลายบิต (Adder/Subtracter, Carry-Ripple Adder, Carry-Lookahead Adder, …)
  • วงจรคูณ (Multipliers) สำหรับเลขจำนวนเต็ม
  • วงจรเลื่อนบิต (Bit Shifter) เช่น Barrel Shifter
  • วงจรเปรียบเทียบค่า (Comparators) เปรียบเทียบมากกว่า-น้อยกว่า-เท่ากับ
  • วงจรหน่วยประมวลผลคณิตศาสตร์และตรรกะ (Arithmetic-Logic Unit: ALU)
  • วงจรเข้าและถอดรหัส (Encoders / Decoders)
  • วงจรเข้ารหัสแบบไบนารี่ (Binary Encoder)
  • วงจรเข้ารหัสตามความสำคัญ (Priority Encoder)
  • วงจรถอดรหัสแบบไบนารี่ (Binary Decoder)
  • วงจรแปลงรหัส BCD เป็นส่วนแสดงผลแบบ 7 ส่วน (BCD to 7-Segment Decoder)
  • การใช้งาน 7-Segment Display ทั้งแบบ Common-Anode และ Common-Cathode
  • วงจรมัลติเพลกซ์ (Multiplexers) และ วงจรดิมัลติเพลซ์ (Demultiplexers)
  • วงจรแปลงรหัส (Code Converters) เช่น Binary-to-Gray Converter
  • ไอซีลอจิกมาตรฐานในการสร้างวงจรคอมบิเนชัน

พื้นฐานเกี่ยวกับอุปกรณ์หน่วยความจำในวงจรซีเควนเชียล (Sequential Logic Circuits)

  • อุปกรณ์ "ไบสเตเบิล" (Bistable) ซึ่งมีสถานะเสถียร (Stable States) สองสถานะเท่านั้น
    • ตัวอย่างการต่อลอจิกเกต NOT แบบ CMOS สองตัว อนุกรมกันและต่อวงจรแบบป้อนกลับ (Feedback)
  • วงจรที่มีความจำประเภท "แลตช์" (Latch) จำแนกตามชนิดได้ เช่น RS-type, D-type
    • การอัปเดตค่าของเอาต์พุต (Q และ /Q) ที่เปลี่ยนแปลงตามค่าลอจิกของสัญญาณควบคุม (Level-sensitive)
    • การสร้าง RS Latch จากลอจิกเกต 2 ตัว โดยใช้เพียฝ NAND2 หรือ NOR2
    • การแปลงจากวงจรที่ใช้ NAND2 เป็นวงจรที่ใช้ NOR2 (หรือกลับกัน) ในการสร้าง RS Latch
    • การเขียนตารางค่าเอาต์พุตในกรณีต่างๆของอินพุต (R และ S) ของ RS Latch
    • การสร้าง RS Latch ที่มีขาอินพุตควบคุม Enable (RS Latch with Enable Input)
    • การสร้าง Data Latch (Gated D-type)
    • การสร้างสัญญาณกระตุ้นแบบพัลส์ (Pulse) สั้นๆ (ในระดับนาโนวินาที) จากสัญญาณ Clock เช่น เพื่อนำไปต่อกับขาควบคุม Enable ของวงจร RS Latch with Enable
    • การใช้สัญญาณอินพุตควบคุมทั้งแบบ Asynchronous / Synchronous Control Input เช่น Clear, Preset, Enable เป็นต้น
  • วงจรที่มีความจำประเภท "ฟลิปฟลอป" (Flip-Flop) จำแนกตามชนิด เช่น RS-type, JK-type, D-type, T-type
    • การอัปเดตค่าของเอาต์พุต (Q และ /Q) ที่เปลี่ยนแปลงตามจังหวะการกระตุ้นด้วยขอบสัญญาณกระตุ้น (Edge-triggered) เช่น สัญญาณนาฬิกา (Clock)
    • การทำงานหรืออัปเดตค่าของฟลิปฟลอป จำแนกตามขอบสัญญาณขาขึ้น (Rising Edge / Positive Edge) และขาลง (Falling Edge / Negative Edge)
    • การสร้าง Flip-Flop แบบต่างๆ เช่น สร้างจาก Gated D-type Latch
    • การใช้สัญญาณอินพุตควบคุมทั้งแบบ Asynchronous / Synchronous Input สำหรับฟลิปฟลอป
    • ตัวอย่างไอซีลอจิกมาตรฐานสำหรับแลตช์และฟลิปฟลอป
  • การวิเคราะห์การทำงานในเชิงเวลา (Timing Analysis) ของวงจรซีเควนเชียล-ซิงโครนัส
    • การวาดและทำความเข้าใจ "ไดอะแกรมเวลา" หรือ "แผนภาพเวลา" (Timing Diagram)
    • พารามิเตอร์เชิงเวลา (Timing Parameters) ของแลตช์และฟลิปฟลอป เช่น ค่า Setup Time และ Hold Time (เวลาก่อนและหลังขอบสัญญาณ Clock ตามลำดับ) ของฟลิปฟลอป ค่า Clock-to-Q ของฟลิปฟลอป
  • ปัญหา Metastability สำหรับฟลิปฟลอป
  • ปัญหาของ Clock Jitter และ Clock Skew สำหรับฟลิปฟลอป
  • วงจรรีจิสเตอร์ (Registers)
    • การใช้สัญญาณอินพุตควบคุมสำหรับวงจรนับทั้งแบบ Asynchronous / Synchronous Input
  • วงจรนับ (Counters) จำแนกตามประเภทย่อย เช่น
    • วงจรนับแบบไบนารี (Binary Counter)
    • วงจรนับขึ้น/นับลง (Binary Up/Down Counter)
    • วงจรนับแบบโมดูโล (Modulo Counter)
    • วงจรนับแบบวงแหวนหรือวนรอบ (Ring Counter) และวงจรนับแบบจอห์นสัน (Johnson Counter)
    • การจำแนกระหว่างวงจรนับแบบซิงโครนัสและแบบอะซิงโครนัส
    • การใช้สัญญาณอินพุตควบคุมสำหรับวงจรนับทั้งแบบ Asynchronous / Synchronous Input
  • วงจรรีจิสเตอร์เลื่อนบิต (Shift Registers)
  • พื้นฐานเกี่ยวกับ "เครื่องสถานะจำกัด" หรือ "ไฟไนท์สเตทแมชชีน" (Finite-State Machine: FSM)
    • การจำแนกประเภทของ FSM เป็น 2 ประเภท ได้แก่
      • Moore-type: เอาต์พุตที่ได้จะขึ้นอยู่กับสถานะในหน่วยความจำของ FSM เท่านั้น
      • Mealy-type: เอาต์พุตที่ได้จะขึ้นอยู่กับสถานะในหน่วยความจำและอินพุตของ FSM
    • การออกแบบ FSM
    • การเขียนไดอะแกรมการเปลี่ยนสถานะ (State-Transition Diagram)
    • การเขียนสมการบูลีนสำหรับสถานะถัดไป (Next-State Logic) และสำหรับเอาต์พุต (Output Logic)
    • การลดจำนวนสถานะใน FSM ให้เหมาะที่สุด (FSM State Minimization)
    • การเลือกรหัสให้สถานะของ FSM แบบต่างๆ (FSM State Encoding) เช่น Binary Coding, One-Hot Coding, Gray Coding
    • การสร้าง FSM อยู่ในรูปของวงจรซีเควนเชียล (แบบซิงโครนัส)

รูป: ตัวอย่างสัญลักษณ์ของ "ฟลิปฟลอป" ที่มีขาสัญญาณควบคุม และใช้สำหรับการวาดผังวงจร

รูป: การเปรียบเทียบการเปลี่ยนแปลงสัญญาณในเชิงเวลาระหว่าง D-type Latch (Level-sensitive) กับ D-type Flip-Flop (Edge-triggered)

รูป: ตัวอย่างพารามิเตอร์เชิงเวลาที่เกี่ยวข้องกับการทำงานของ "ฟลิปฟลอป"

รูป: ตัวอย่างผังวงจรในระดับ Register-Transfer Level ที่ประกอบด้วยสองส่วนหลักคือ Datapath และ FSM (Finite-State Machine)

รูป: ตัวอย่างไดอะแกรมของสเตทแมชชีน หรือ ตารางแสดงสถานะลอจิกและการเปลี่ยนสถานะ (States & State Transitions) สำหรับ FSM

 


พื้นฐานเกี่ยวกับภาษา "วีเอชดีแอล" (VHDL)

  • รูปแบบการสร้างโมเดลเพื่อจำลองการทำงานของวงจรดิจิทัลโดยใช้ VHDL เช่น รูปแบบ Data Flow, Structural และ Behavioral
  • องค์ประกอบของวงจร หรือ "โมเดล" ในภาษา VHDL เช่น Entity & Architecture
  • การใช้ Library ในภาษา VHDL ที่เป็นมาตรฐาน เช่น IEEE
  • การใช้งานวงจรหรือโมเดลที่ได้เคยออกแบบไว้แล้ว
  • ประโยคคำสั่งประเภทต่าง ๆ ในภาษา VHDL เช่น
    • Concurrent Signal Assignments
    • Processes
    • With-Select
    • Case-Is-When
    • If-Then
  • รูปแบบการสร้างโมเดลในภาษา VHDL สำหรับวงจรคอมบิเนชันแบบต่าง ๆ
  • รูปแบบการสร้างโมเดลในภาษา VHDL สำหรับวงจรซีเควนเชียลแบบต่าง ๆ
  • รูปแบบการสร้างโมเดลสำหรับ FSM
  • การเขียน VHDL Testbench และการจำลองการทำงาน (VHDL Simulation)
  • การเปรียบเทียบกับภาษา HDL ที่เป็นตัวเลือกอื่น เช่น Verilog HDL

รูป: ตัวอย่างผังวงจรในระดับ Register-Transfer Level (RTL)

รูป: ตัวอย่างโค้ด VHDL สำหรับวงจร Modulo-5 Upcounter และการแปลงให้เป็นวงจรลอจิกในระดับ RTL โดยใช้ซอฟต์แวร์ Altera Quartus

 


พื้นฐานเกี่ยวกับชิปที่โปรแกรมได้เชิงลอจิก (Programmable Logic Devices)

  • การใช้งานชิปที่สามารถโปรแกรมเชิงลอจิกใหม่ได้ เช่น CPLD / FPGA
  • สถาปัตยกรรม องค์ประกอบพื้นฐาน และเทคโนโลยีหน่วยความจำที่ใช้ในการโปรแกรมชิปประเภทนี้
  • ขั้นตอนและเครื่องมือการออกแบบวงจรดิจิทัลสำหรับ FPGA
  • การวาดผังวงจร การสร้างแบบจำลองโดยใช้ภาษา เช่น VHDL การจำลองการทำงาน (Logic Simulation)
  • การสังเคราะห์วงจร (Logic Synthesis)
  • การวิเคราะห์การทำงานของวงจรเชิงเวลา (Static Timing Analysis)
  • การทำขั้นตอน Logic Mapping และ Placment & Routing สำหรับวงจรลอจิกที่จะนำไปใช้กับชิป FPGA
  • เทคนิคการออกแบบโดยใช้ชิป FPGA และ SoC FPGA
  • การสร้างและใช้งาน IP Core การออกแบบวงจรคำนวณเชิงเลข (Digital Signal Processing Blocks)
  • การออกแบบ CPU การออกแบบร่วมระหว่างฮาร์ดแวร์/ซอฟต์แวร์ (HW/SW Codesign)
  • การออกแบบโดยใช้ชิปประเภท SoC FPGA หรือ เรียกว่า SoPC (System-on-Programmable Chip) หรือ Plaform FPGA ที่มีซีพียูหรือตัวประมวลผลอยู่ในชิป FPGA
  • การประยุกต์ใช้งานชิปลอจิกโปรแกรมได้
  • การเชื่อมต่อระหว่างชิปในรูปแบบต่าง ๆ เช่น UART, SPI, I2C, LVDS I/Os เป็นต้น

รูป: ขั้นตอนการออกแบบวงจรลอจิก FPGA Design Flow (Source: Intel/Altera)

 


กล่าวสรุป#

บทความนี้ได้นำเสนอหัวข้อที่เกี่ยวข้องกับพื้นฐานการออกแบบวงจรลอจิก โดยจำแนกตามหมวดหมู่ สำหรับผู้ที่สนใจเรียนรู้ และใช้เป็นแนวทางหรือทบทวนความรู้

บทความที่เกี่ยวข้อง

 


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Created: 2023-07-08 | Last Updated: 2023-07-09