+ All Categories
Home > Documents > การออกแบบวงจรลอจิกด้วย VHDL · 106...

การออกแบบวงจรลอจิกด้วย VHDL · 106...

Date post: 06-May-2020
Category:
Author: others
View: 4 times
Download: 0 times
Share this document with a friend
Embed Size (px)
of 28 /28
การออกแบบวงจรลอจิกด้วย VHDL 105 บทที7 การออกแบบวงจรลอจิกด้วย VHDL 7.1 หลักการเบื้องต ้นของวงจรลอจิก วงจรลอจิกเบื ้องต ้น เราจะศึกษาเกี่ยวกับ Two-state Logic คือจะมีค่า 2 สภาวะโดยมี ข้อ กาหนด คือ สามารถมีได้เพียง 2 สภาวะเท่านั ้น และจะอยู่ในสภาวะใดสภาวะหนึ ่ง จะอยูพร้อมกันทั ้ง 2 สภาวะในเวลาเดียวกันไม่ได้ ลอจิก 2 สภาวะดังกล่าว อาจใช้แทนความหมาย ต่างๆ ได้ เช่น ถูก - ผิด, สูง ่า, ขึ ้น ลง, ปิ ด เปิ ด, ใช่ ไม่ใช่ , ทางาน ไม่ทางาน เป็นต้น เพื่อความสะดวก ตัวแปรค่า 2 สภาวะเราใช้สัญลักษณ์ 0 และ 1 โดยที- ลอจิก 0 แทนไม่มีสัญญาณ หรือ สวิทซ์ เปิ ด - ลอจิก 1 แทนมีสัญญาณ หรือ สวิทซ์ ปิด ในระบบลอจิก เราใช้ระดับของแรงดันไฟฟ้า ( Voltage Level) แทนภาวะทั ้งสองเมื่อ ใช้ ลอจิก “l” แทนแรงดันที่เป็นบวกมากกว่า เราก็ใช้ ลอจิก 0แทนแรงดันที่ เป็นบวก น้อย กว่า ระบบเช่นนี ้เราเรียกว่า ลอจิกทางบวก (Positive Logic) ในทางตรงกันข้าม ถ้าใช้ ลอจิก 1แทนแรงดันที่เป็นลบมากกว่า เราก็ใช้ ลอจิก “0” แทนแรงดันที่เป็นลบน้อยกว่า ระบบ เช่นนี ้ เราเรียกว่า ลอจิกทางลบ (Negative Logic) ตัวอย่างของ Positive และ Negative Logic ดังแสดงไว้ดังรูปที่ 7.1 รูปที่ 7.1 Positive และ Negative Logic
Transcript
  • การออกแบบวงจรลอจิกดว้ย VHDL 105

    บทที่ 7 การออกแบบวงจรลอจิกด้วย VHDL

    7.1 หลักการเบ้ืองต้นของวงจรลอจิก

    วงจรลอจิกเบื้องตน้ เราจะศึกษาเก่ียวกบั Two-state Logic คือจะมีค่า 2 สภาวะโดยมีขอ้ ก าหนด คือ สามารถมีไดเ้พียง 2 สภาวะเท่านั้น และจะอยูใ่นสภาวะใดสภาวะหน่ึง จะอยู่พร้อมกนัทั้ง 2 สภาวะในเวลาเดียวกนัไม่ได ้ลอจิก 2 สภาวะดงักล่าว อาจใชแ้ทนความหมายต่างๆ ได ้เช่น ถูก - ผดิ, สูง – ต ่า, ขึ้น – ลง, ปิด – เปิด, ใช่ – ไม่ใช่, ท างาน – ไม่ท างาน เป็นตน้

    เพือ่ความสะดวก ตวัแปรค่า 2 สภาวะเราใชส้ญัลกัษณ์ 0 และ 1 โดยที่

    - ลอจิก 0 แทนไม่มีสญัญาณ หรือ สวทิซ์ เปิด - ลอจิก 1 แทนมีสญัญาณ หรือ สวทิซ์ ปิด

    ในระบบลอจิก เราใชร้ะดบัของแรงดนัไฟฟ้า (Voltage Level) แทนภาวะทั้งสองเม่ือใช ้ลอจิก “l” แทนแรงดนัที่เป็นบวกมากกวา่ เราก็ใช ้ลอจิก “0” แทนแรงดนัที่ เป็นบวก นอ้ยกวา่ ระบบเช่นน้ีเราเรียกวา่ ลอจิกทางบวก (Positive Logic) ในทางตรงกนัขา้ม ถา้ใช ้ ลอจิก “1” แทนแรงดันที่เป็นลบมากกว่า เราก็ใช้ ลอจิก “0” แทนแรงดันที่เป็นลบน้อยกว่า ระบบเช่นน้ี เราเรียกว่า ลอจิกทางลบ (Negative Logic) ตวัอย่างของ Positive และ Negative Logic ดงัแสดงไวด้งัรูปที่ 7.1

    รูปที่ 7.1 Positive และ Negative Logic

  • 106 การออกแบบวงจรลอจิกดว้ย VHDL

    7.2 เกทพื้นฐานและการแทนด้วย VHDL

    7.2.1 แอนดเ์กต (AND Gate) อุปกรณ์ลอจิกเกตแต่ละตวัมีหน้าที่ในการท างานไม่เหมือนกนั แอนด์เกต จะท าหน้าที่

    คลา้ยๆ กบัการคูณ สัญลกัษณ์ของแอนด์เกต และวงจรสมมูลการท างานแสดงในรูปที่ 7.2 A และ B แทนค่าระดบัสัญญาณที่ถูกป้อนเขา้มาทางอินพตุของแอนด์เกต F แทนระดบัสัญญาณทางเอาตพ์ตุของ แอนดเ์กต ผลของการแอนดก์นัระหวา่งค่าระดบัสญัญาณทั้งสอง ถา้ค่าระดบัสัญญาณทางอินพุตใดอินพุตหน่ึงมีค่าเป็น “0” จะส่งผลให้ค่าระดบัสัญญาณทางเอาตพ์ุตมีค่าเป็น “0” ด้วย และค่าระดับสัญญาณทางเอาต์พุตมีโอกาสเป็น “1” ได้เพียงกรณีเดียวนั่นคือระดบัสัญญาณอินพุตที่ป้อนให้กบัแอนด์เกต จะตอ้งมีค่าระดบัสัญญาณเป็น “1” ทั้งหมด และสามารถเขียนสมการหรือฟังกช์นัการท างานไดด้งัน้ีคือ BAF

    รูปที่ 7.2 สญัลกัษณ์ วงจรสมมูล และตารางการท างานของแอนดเ์กต

  • การออกแบบวงจรลอจิกดว้ย VHDL 107

    การแทนแอนด์เกตด้วย VHDL การแทนแอนดเ์กตดว้ย VHDL สามารถอธิบายเป็นภาษา VHDL ไดด้งัรูปที่ 7.3 ซ่ึงจะเป็น พื้นฐานในการน ามาประกอบเป็นวงจรที่ใหญ่ขึ้นไดต่้อไป

    -------------------------------------------------- -- AND gate

    -- two descriptions provided

    --------------------------------------------------

    library ieee;

    use ieee.std_logic_1164.all;

    --------------------------------------------------

    entity AND_ent is

    port( x: in std_logic;

    y: in std_logic;

    F: out std_logic );

    end AND_ent;

    --------------------------------------------------

    architecture behav1 of AND_ent is

    begin

    process(x, y)

    begin

    -- compare to truth table

    if ((x='1') and (y='1')) then

    F

  • 108 การออกแบบวงจรลอจิกดว้ย VHDL

    7.2.2 ออร์เกต (OR Gate) การท างานของออร์เกตจะมีลกัษณะคลา้ยๆ กบัการน าค่าระดบัสญัญาณอินพตุมาบวก

    กนั สญัลกัษณ์ของออร์เกต และวงจรสมมูลการท างานของออร์เกต แสดงดงัรูปที่ 7.4

    รูปที่ 7.4 สญัลกัษณ์ วงจรสมมูล และตารางการท างานของออร์เกต

    ตวัแปร A และ B ใชแ้ทนค่าระดบัสัญญาณที่ป้อนให้กบั ออร์เกต ตวัแปร F แทนค่าระดบัสญัญาณทางเอาตพ์ตุที่ไดจ้าก A และ B ท าการออร์กนั จากตารางการท างานของออร์เกต แสดงใหเ้ห็นวา่ค่าระดบัสญัญาณทางเอาตพ์ตุของออร์เกต จะมีโอกาสเป็น “0” ไดน้ั้น ค่าระดบัสญัญาณที่ป้อนเขา้ทางอินพตุจะตอ้งเป็นค่า “0” ทุกค่า ที่เป็นเช่นน้ีก็เพราะวา่ออร์เกต ไม่จ าเป็นจะตอ้งมีแค่ 2 อินพตุ อินพตุของออร์เกต อาจจะเป็น 3, 4 หรือ 5 หรือมากกวา่ แลว้แต่เราจะเลือกน ามาใชง้าน และในขณะเดียวกนั ถา้ค่าระดบัสัญญาณทางอินพุตใดมีค่าเป็น “1” จะส่งผลทางเอาต์พุตเป็น “1” เราสามารถเขียนสมการหรือฟังก์ชันการท างานของออร์เกตได้ดงัน้ีคือ BAF

  • การออกแบบวงจรลอจิกดว้ย VHDL 109

    การแทนออร์เกตด้วย VHDL การแทนออร์เกตดว้ย VHDL สามารถอธิบายเป็นภาษา VHDL ไดด้งัรูปที่ 7.5

    -----------------------------------------------

    -- OR gate

    -- two descriptions provided

    -----------------------------------------------

    library ieee;

    use ieee.std_logic_1164.all;

    -----------------------------------------------

    entity OR_ent is

    port( x: in std_logic;

    y: in std_logic;

    F: out std_logic );

    end OR_ent;

    -----------------------------------------------

    architecture OR_arch of OR_ent is

    begin

    process(x, y)

    begin

    -- compare to truth table

    if ((x='0') and (y='0')) then

    F

  • 110 การออกแบบวงจรลอจิกดว้ย VHDL

    7.2.3 นอตเกต หรือ อินเวอร์เตอร์ (NOT Gate or Inverter) นอตเกต มีหน้าที่ในการกลับค่าระดับสัญญาณ ให้มีค่าเป็นตรงกันขา้มกับค่าระดับ

    สัญญาณที่ถูกป้อนเขา้มาทางอินพุต สามารถพิจารณาวงจรสมมูลไดด้งัรูปที่ 7.6 เราสามารถเขียนสมการความสมัพนัธใ์นการท างานของนอตเกตดงัสมการ AF

    รูปที่ 7.6 สญัลกัษณ์ โครงสร้างสมมูล และตารางการท างานของนอตเกต การแปลงเกตด้วยนอตเกต

    โดยหลกัการพื้นฐานคือการต่อนอตเกตเขา้ที่เอาตพ์ตุของเกตต่างๆ เช่น ในรูปเม่ือต่อนอตเกตที่เอาตพ์ตุของแอนดเ์กต จะท าใหก้ารท างานเหมือนกบัแนนดเ์กต เป็นตน้

    รูปที่ 7.7 การแปลงแอนดเ์กตแป็นแนนดเ์กตดว้ยนอตเกต

  • การออกแบบวงจรลอจิกดว้ย VHDL 111

    หลกัการต่อนอตเกตเขา้ที่อินพตุของเกตอ่ืนๆ ก็สามารถเปล่ียนแปลงฟังกช์นัการท างานของเกตเหล่านั้นไดเ้ช่นกนั ดงัตวัอยา่ง ต่อนอตเกตเขา้ที่อินพตุทั้งสองของนอร์เกตจะเป็นผลให้นอร์เกตน้ีท างานไดเ้หมือนกบัแอนดเ์กต เป็นตน้ นัน่แสดงวา่ )()( BABA

    รูปที่ 7.8 การต่อนอตเกตเขา้ที่อินพตุของนอร์เกตจึงท างานไดเ้หมือนแอนดเ์กต

    ในท านองเดียวกนั เม่ือต่อนอตเกตเขา้ทั้งที่เอาตพ์ุตและอินพุตของเกตอ่ืนๆ ก็สามารถเปล่ียนแปลงฟังกช์นัของเกตนั้นได ้เช่น ต่อนอตเกต 2 ตวัเขา้ที่อินพตุของแอนดเ์กต และต่ออีกตวัหน่ึงที่เอาตพ์ตุของแอนดเ์กต จะท าใหแ้อนดเ์กตท างานเหมือนกบัออร์เกต เป็นตน้

    รูปที่ 7.9 การต่อนอตเกตเขา้ที่อินพตุและเอาตพ์ตุของแอนดเ์กตจึงท างานไดเ้หมือนออร์เกต นัน่แสดงวา่ )()( BABA ส าหรับเกตตวัที่สามารถเปล่ียนแปลงฟังกช์นัการ

    ท างานไดโ้ดยใชน้อตเกตต่อที่อินพตุหรือเอาตพ์ตุนั้น แสดงในตารางที่ 7.1

  • 112 การออกแบบวงจรลอจิกดว้ย VHDL

    ตารางที่ 7.1 การแปลงเกตโดยใชน้อตเกตทางดา้นอินพตุและเอาตพ์ตุ

  • การออกแบบวงจรลอจิกดว้ย VHDL 113

    ดงันั้นจะเห็นไดว้่ามีการใชแ้นนดเ์กตและนอร์เกต เพื่อดดัแปลงให้ท าหนา้ที่แทนเกตตวัอ่ืนๆ อีกมาก สัญลกัษณ์ของแนนตเ์กตและนอร์เกตจึงอาจเขียนไ ด ้ 2 ลกัษณะ กล่าวคือ เขียนโดยใช ้นอตเกต ไวท้ี่อินพุตหรือไวท้ี่เอาตพ์ุต ดงัแสดงในรูปที่ 7.10 (ก) เป็นการเขียนสัญลักษณ์แนนด์เกตโดยเขียนนอตเกตไวท้ี่อินพุตของออร์เกต และในรูปที่ 7.10 (ข) เขียนสญัลกัษณ์ของนอร์เกตโดยใชน้อตเกต ต่อที่อินพตุของแอนดเ์กต เป็นตน้

    รูปที่ 7.10

  • 114 การออกแบบวงจรลอจิกดว้ย VHDL

    การแทนนอตเกตด้วย VHDL การแทนนอตเกตดว้ย VHDL สามารถอธิบายเป็นภาษา VHDL ไดด้งัรูปที่ 7.11

    -------------------------------------------------

    -- Inverter

    --

    -- two descriptions provided

    -------------------------------------------------

    library ieee;

    use ieee.std_logic_1164.all;

    -------------------------------------------------

    entity Inverter is

    port( x: in std_logic;

    F: out std_logic );

    end Inverter;

    -------------------------------------------------

    architecture behv1 of Inverter is

    begin

    process(x)

    begin

    -- compare to truth table

    if (x='1') then

    F

  • การออกแบบวงจรลอจิกดว้ย VHDL 115

    7.2.4 แนนดเ์กต (NAND Gate) แนนดเ์กต เป็นเกตที่มีลกัษณะโครงสร้างคลา้ยแอนดเ์กต โดยการน าแอนดเ์กตและ

    นอตเกตมาใชง้านร่วมกนัท าใหแ้นนดเ์กตมีค่าระดบัสญัญาณทางเอาตพ์ตุตรงขา้มกบัแอนดเ์กต

    รูปที่ 7.12 สญัลกัษณ์ โครงสร้างสมมูล และตารางการท างานของแนนดเ์กต

    จากตารางการท างานของแนนด์เกต ค่าระดับสัญญาณทางอินพุตเพียงสภาวะเดียว เท่านั้นที่สามารถท าให้ค่าระดับสัญญาณทางเอาต์พุตมีค่าเป็น “0” ได้ คือ ค่าระดับสัญญาณทางดา้นอินพตุจะตอ้งมีค่าเป็น “1” ทุกอินพตุ ในสภาวะอ่ืนจะใหค้่าระดบัสญัญาณเป็น “1” เราสามารถเขียนสมการหรือฟังกช์นัการท างานของ แนนดเ์กต ไดด้งัสมการ BAF

    นอกจากน้ีแลว้แนนดเ์กตยงัเป็นเกตอเนกประสงคท์ี่สามารถที่จะน าไปท าเป็นเกตชนิดอ่ืนๆไดอี้กดงัตารางที่ 7.2

  • 116 การออกแบบวงจรลอจิกดว้ย VHDL

    ตารางที่ 7.2 แสดงการน าแนนดเ์กตไปท าเป็นเกตต่างๆ

  • การออกแบบวงจรลอจิกดว้ย VHDL 117

    การแทนแนนด์เกตด้วย VHDL การแทนแนนดเ์กตดว้ย VHDL สามารถอธิบายเป็นภาษา VHDL ไดด้งัรูปที่ 7.13

    -------------------------------------------------- -- NAND gate

    --

    -- two descriptions provided

    --------------------------------------------------

    library ieee;

    use ieee.std_logic_1164.all;

    --------------------------------------------------

    entity NAND_ent is

    port( x: in std_logic;

    y: in std_logic;

    F: out std_logic );

    end NAND_ent;

    --------------------------------------------------

    architecture behv1 of NAND_ent is

    begin

    process(x, y)

    begin

    -- compare to truth table

    if (x='1' and y='1') then

    F

  • 118 การออกแบบวงจรลอจิกดว้ย VHDL

    รูปที่ 7.13 การแทนแนนดเ์กตดว้ยภาษา VHDL 7.2.5 นอร์เกต (NOR Gate) นอร์เกต เป็นอุปกรณ์ลอจิกเกตที่เกิดจากการน าเอา ออร์เกต และนอตเกต มาใชง้าน ร่วมกนั โครงสร้าง และสญัลกัษณ์แสดงดงัรูปที่ 7.14

    รูปที่ 7.14 สญัลกัษณ์ โครงสร้างสมมูล และตารางการท างานของนอร์เกต

    จากตารางการท างานของ นอร์เกต ค่าระดบัสญัญาณทางเอาตพ์ุตมีโอกาสเป็น “1” ได้ในกรณีเดียว คือค่าระดบัสญัญาณทางดา้นอินพตุทั้งหมดจะตอ้งเป็น “0” และเม่ือใดที่ค่าระดบัสัญญาณทางอินพุตหน่ึงอินพุตใดเป็น “1” จะส่งผลให้ค่าระดบัสัญญาณทางเอาตพ์ุตเป็น “0” สามารถเขียนสมการหรือฟังกช์นัการท างานของนอร์เกต ไดด้งัสมการ BAF

  • การออกแบบวงจรลอจิกดว้ย VHDL 119

    การแทนนอร์เกตด้วย VHDL การแทนนอร์เกตดว้ย VHDL สามารถอธิบายเป็นภาษา VHDL ไดด้งัรูปที่ 7.15

    -------------------------------------------------- -- NOR gate

    --

    -- two descriptions provided

    --------------------------------------------------

    library ieee;

    use ieee.std_logic_1164.all;

    --------------------------------------------------

    entity NOR_ent is

    port( x: in std_logic;

    y: in std_logic;

    F: out std_logic );

    end NOR_ent;

    --------------------------------------------------

    architecture behv1 of NOR_ent is

    begin

    process(x, y)

    begin

    -- compare to truth table

    if (x='0' and y='0') then

    F

  • 120 การออกแบบวงจรลอจิกดว้ย VHDL

    รูปที่ 7.15 การแทนนอร์เกตดว้ยภาษา VHDL 7.2.6 เอ็กคลูซีฟออร์เกต (Exclusive OR Gate) อุปกรณ์ลอจิกเกตที่ไดก้ล่าวมา สามารถสรุปไดว้า่ เป็นการสร้างเพือ่ตอบสนองการ

    ท างานที่แตกต่างกนัออกไป เอ็กคลูซีฟออร์เกต กเ็ช่นเดียวกนั แต่ เอ็กคลูซีฟออร์เกต เป็นเกตที่ค่อนขา้งแตกต่างไปจากกลุ่มที่ไดก้ล่าวมา ลกัษณะการท างานของ เอ็กคลูซีฟออร์เกต สามารถจดัไดว้า่เป็นอุปกรณ์ลอจิกเกตที่มีการท างานในลกัษณะการเปรียบเทียบค่าระดบัสญัญาณทางอินพตุ

    รูปที่ 7.16 สญัลกัษณ์ โครงสร้างสมมูล และตารางการท างานของเอ็กคลูซีฟออร์เกต

    จากตารางการท างาน จะเป็นการเปรียบเทียบค่าระดบัสัญญาณอินพุต ในกรณีที่ค่าระดบัสัญญาณทางอินพุตมีความแตกต่าง ต่างระดบัสัญญาณทางเอาตพ์ุตของ เอ็กคลูซีฟออร์เกต จะมีค่าเป็น “1” แต่ถา้ค่าระดบัสัญญาณทางอินพุตเหมือนกนั จะไดค้่าระดบัสัญญาณทางเอาตพ์ตุเป็น “0” เราสามารถเขียนสมการหรือฟังก์ชนัการท างานของ เอ็กคลูซีฟออร์เกต ไดด้งัสมการ BAF

  • การออกแบบวงจรลอจิกดว้ย VHDL 121

    การแทนเอ็กคลูซีฟออร์เกต ด้วย VHDL การแทนเอ็กคลูซีฟออร์เกตดว้ย VHDL สามารถอธิบายเป็นภาษา VHDL ไดด้งัรูปที่ 7.17

    ----------------------------------------------- -- XOR gate

    --

    -- two descriptions provided

    -----------------------------------------------

    library ieee;

    use ieee.std_logic_1164.all;

    -----------------------------------------------

    entity XOR_ent is

    port( x: in std_logic;

    y: in std_logic;

    F: out std_logic );

    end XOR_ent;

    -----------------------------------------------

    architecture behv1 of XOR_ent is

    begin

    process(x, y)

    begin

    -- compare to truth table

    if (x/=y) then

    F

  • 122 การออกแบบวงจรลอจิกดว้ย VHDL

    รูปที่ 7.17 การแทนเอ็กคลูซีฟออร์เกต ดว้ยภาษา VHDL 7.2.7 เอ็กคลูซีฟนอร์เกต (Exclusive NOR Gate) เอ็กคลูซีฟนอร์เกต เป็นเกตที่เราน าเอา เอ็กคลูซีฟออร์เกต และนอตเกต มาต่อเขา้ดว้ยกนั

    ค่าสญัญาณเอาตพ์ตุของ เอ็กคลูซีฟนอร์เกต จะใหผ้ลที่ตรงกนัขา้มกบั เอ็กคลูซีฟออร์เกต

    รูปที่ 7.18 สญัลกัษณ์ โครงสร้างสมมูล และตารางการท างานของเอ็กคลูซีฟนอร์เกต

    ผลการท างานของเอก็คลูซีฟนอร์เกต กรณีค่าระดบัสญัญาณที่ป้อนเขา้ทางดา้นอินพตุมีค่าเท่ากนั จะใหผ้ลค่าระดบัสญัญาณทางดา้นเอาตพ์ตุเป็น “1” แต่ในกรณีค่าสญัญาณที่ป้อนใหท้างอินพตุมีค่าไม่เท่ากนั ผลของค่าระดบัสญัญาณที่ไดท้างดา้นเอาตพ์ตุจะเป็น “0” เราสามารถเขียนสมการหรือฟังกช์นัการท างานของ เอ็กคลูซีฟนอร์เกตไดด้งัสมการ BAF

  • การออกแบบวงจรลอจิกดว้ย VHDL 123

    การแทนเอ็กคลูซีฟนอร์เกต ด้วย VHDL การแทนเอ็กคลูซีฟนอร์เกตดว้ย VHDL สามารถอธิบายเป็นภาษา VHDL ไดด้งัรูปที่ 7.19

    -----------------------------------------------

    -- XNOR gate

    --

    -- two descriptions provided

    -----------------------------------------------

    library ieee;

    use ieee.std_logic_1164.all;

    -----------------------------------------------

    entity XNOR_ent is

    port( x: in std_logic;

    y: in std_logic; F: out std_logic );

    end XNOR_ent;

    -----------------------------------------------

    architecture behv1 of XNOR_ent is

    begin

    process(x, y)

    begin

    -- compare to truth table

    if (x/=y) then

    F

  • 124 การออกแบบวงจรลอจิกดว้ย VHDL

    รูปที่ 7.19 การแทนเอ็กคลูซีฟนอร์เกต ดว้ยภาษา VHDL 7.2.8 บฟัเฟอร์ (Buffer) บฟัเฟอร์ เป็นเกตที่ไม่ค่อยจะมีบทบาทมากนกั ส าหรับนกัออกแบบมือใหม่ เพราะ

    บฟัเฟอร์ให้ค่าระดับสัญญาณทางดา้นเอาต์พุต เหมือนระดบัสัญญาณทางดา้นอินพุต หน้าที่ของบฟัเฟอร์ สามารถน าไปเป็นตวัขบัค่าระดับสัญญาณให้มีความแรงยิ่งขึ้น และสามารถน าไปช่วยแก้ปัญหา ที่เกิดจากการหน่วงสัญญาณ (Propagation Delay Time) สมการหรือฟังกช์นัของบฟัเฟอร์ คือ AF

    รูปที่ 7.20 สญัลกัษณ์ และตารางการท างานของบฟัเฟอร์

  • การออกแบบวงจรลอจิกดว้ย VHDL 125

    7.3 การออกแบบวงจรลอจิกด้วย VHDL

    ในการออกแบบวงจรลอจิกจาก Switching function หรือ Truth table นั้นเราจะตอ้งลดรูป Function ของ เอาตพ์ตุ ใหเ้หลือนอ้ยที่สุดก่อน โดยใชท้ฤษฎีของบูลีน หรือวธีิอ่ืนๆ ทั้งน้ีก็เพื่อให้วงจรลอจิกที่เราตอ้งการมีจ านวนเกตน้อยที่สุด หรือมีการลงทุนในการสร้างวงจรต ่า นอกจากน้ียงัเป็นการลด Delay time ของวงจรอีกดว้ย (Delay time หมายถึง เวลาที่ใชใ้นการท างานของวงจร นบัจากอินพตุ ไปถึงเอาตพ์ตุ) ตัวอย่างที่ 7.1 จงออกแบบวงจรลอจิกจากสมการบูลีน CBACAABBAY วธีิท า CBACAABBAY

    CAB

    BCAAAB

    )1()(

    รูปที่ 7.21 วงจรจากการลดรูปสมการในตวัอยา่งที่ 7.1 ตัวอย่างที่ 7.2 จงออกแบบวงจรลอจิกจากสมการบูลีนต่อไปน้ี วธีิท า CBAABCCBABCBABAY

    CBA

    BCCBA

    CBABCA

    CBAABCCBBBA

    )1(

  • 126 การออกแบบวงจรลอจิกดว้ย VHDL

    รูปที่ 7.22 วงจรจากการลดรูปสมการในตวัอยา่งที่ 7.2 ตัวอย่างที่ 7.3 จงออกแบบวงจรลอจิกจากสมการบูลีนต่อไปน้ี วธีิท า ))()()(( CBACBACBABAY

    BA

    BABA

    ))((

    รูปที่ 7.23 วงจรจากการลดรูปสมการในตวัอยา่งที่ 7.3 ตัวอย่างที่ 7.4 จงออกแบบวงจรลอจิกจากสมการบูลีนต่อไปน้ี

    วธีิท า CDBACBABAY ))((

    CDB

    CDB

    CDACAAB

    CDCBABABA

    CDBACBABA

    )(

    ))((

    รูปที่ 7.24 วงจรจากการลดรูปสมการในตวัอยา่งที่ 7.4

    ตัวอย่างที่ 7.5 จงออกแบบวงจรลอจิกจากสมการบูลีนต่อไปน้ี

    วธีิท า DCBADACABABCDY ))((

  • การออกแบบวงจรลอจิกดว้ย VHDL 127

    ))((

    )1(

    ))((

    DCAABCD

    DCAABCD

    BDCAABCD

    DCBADCAABCD

    DCBADACABABCD

    รูปที่ 7.25 วงจรจากการลดรูปสมการในตวัอยา่งที่ 7.5 7.4 Timing Diagram

    Timing Diagram เป็นองคป์ระกอบอีกองคป์ระกอบหน่ึงในระบบวงจรดิจิตอล ที่ใช้แสดงผลสถานะต่างๆ ออกมาเป็นสญัญาณพลัส์ การเขียน Timing Diagram เป็นเร่ืองที่ง่ายมาก ถา้ไม่ค านึง ถึงผลของการหน่วงเวลาในตวัอุปกรณ์ลอจิกเกต (Delay Time) ซ่ึงจะเกิดขึ้นกบัตวัอุปกรณ์ทุกตวั ลกัษณะของการเปล่ียนแปลงของสัญญาณพลัส์จะประกอบดว้ยกนั 2 ช่วง คือ ขอบขาขึ้นของสญัญาณและขอบขาลงของสญัญาณ ดงัรูปที่ 7.26

  • 128 การออกแบบวงจรลอจิกดว้ย VHDL

    รูปที่ 7.26 ตวัอยา่งของการเขียน Timing Diagram

    ขอบขาขึ้นของสัญญาณ หมายถึง ช่วงของการเปล่ียนแปลงจากค่าระดบัสญัญาณ “0” ไปเป็น “1” (Active HIGH)ขอบขาลงของสัญญาณ หมายถึง ช่วงของการเปล่ียนแปลงจากค่าระดบัสญัญาณ “1” ไปเป็น “0” (Active LOW)

    รูปที่ 7.27 ลกัษณะของสญัญาณ Clock เราสามารถออกแบบวงจรลอจิกจากตารางความจริงหรือสมการที่ก าหนดใหไ้ด ้ในท านองเดียวกนัเราก็สามารถที่จะออกแบบวงจรลอจิกจาก Timing Diagram ไดเ้ช่นเดียวกนั ตัวอย่างที่ 7.6 จงออกแบบวงจรลอจิกจาก Timing Diagram ต่อไปน้ี

  • การออกแบบวงจรลอจิกดว้ย VHDL 129

    วธีิท า จาก Timing Diagram ที่ก าหนดให ้จะไดว้า่ เม่ือ A = 0 B = 0 C = 0 จะได ้Output Y = 0 A = 0 B = 0 C = 1 จะได ้Output Y = 1 A = 0 B = 1 C = 0 จะได ้Output Y = 1 A = 0 B = 1 C = 1 จะได ้Output Y = 1 A = 1 B = 0 C = 0 จะได ้Output Y = 0 A = 1 B = 0 C = 1 จะได ้Output Y = 1 A = 1 B = 1 C = 0 จะได ้Output Y = 0 A = 1 B = 1 C = 1 จะได ้Output Y = 1 สามารถเขียนตารางความจริงไดด้งัน้ี

    Input Output

    A B C Y

    0 0 0 0

    Input A

    Input B

    Input C

    Output Y

  • 130 การออกแบบวงจรลอจิกดว้ย VHDL

    0 0 0 1 1 1 1

    0 1 1 0 0 1 1

    1 0 1 0 1 0 1

    1 1 1 0 1 0 1

    mY (1, 2, 3, 5, 7)

    BAC

    BAAAC

    ACBACA

    ACBCA

    ACBCBA

    ACBACBA

    BBACCCBACBA

    ABCCBABCACBACBA

    )(

    )(

    )(

    )()(

  • การออกแบบวงจรลอจิกดว้ย VHDL 131

    แบบฝึกหัดที่ 7

    1. จงตอบค าถามต่อไปน้ี (ก) เกตที่ใหเ้อาตพ์ตุตรงกนัขา้มกบัอินพตุคือเกตชนิดใด (ข) เกตที่ใหเ้อาตพ์ตุ 0 เม่ืออินพตุตวัใดตวัหน่ึงหรือทั้งหมดเป็น 0 คือเกตชนิดใด (ค) เกตที่ใหเ้อาตพ์ตุเป็น 0 เม่ืออินพตุมีลอจิกต่างกนัคือเกตชนิดใด

    2. จากวงจรใชแ้ทนเกตชนิดใด (ก) (ข)

    (ค) (ง)

    3. จากวงจรเอาตพ์ตุ Y มีค่าเท่ากบัเท่าใด

    (ก)

    (ข)

    (ค)

  • 132 การออกแบบวงจรลอจิกดว้ย VHDL

    (ง) 4. จากรูปจงหาจุดผดิพลาดของโปรแกรม VHDL

    --------------------------------

    -- OR gate

    -- two descriptions provided

    -------------------------------- library ieee;

    use ieee.std_logic_1164.all; -------------------------------- entity OR_ent is

    port( x: in std_logic;

    y: in std_logic;

    F: out std_logic

    );

    end OR_ent;

    ----------------------------------

    architecture OR_arch of OR_ent is

    begin

    process(x, y)

    began

    -- compare to truth table

    if ((x='0') or (y='0')) then

    F


Recommended