Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore ວິຊາດີຈິຕໍ້ແລະໂລຈິກ

ວິຊາດີຈິຕໍ້ແລະໂລຈິກ

Published by thongla4567, 2021-08-27 02:36:48

Description: ວິຊາດີຈິຕໍ້ແລະໂລຈິກ

Search

Read the Text Version

เอกสารประกอบการสอนวิชาวงจรดิจิทัลและลอจกิ โดย อาจารย กฤษณพงศ สมสขุ เอกสารอา งอิง Morris, M, Charl es, R.K. (2007). Logic and Com puter Design Fundam entals. New Jersey: Prentice-Hal l International Inc. Marcovit z, A. B. (2009). Introduction to Logic Design. New York: McGraw-Hil l . Mark, B. (2003). Com plete Digital Design: A Com prehensive Guide to Digital Electronics and Com puter System Architecture. New York: McGraw-Hil l . David, M. H. (2012).Digital Design and Com puter Architecture. USA: Morgan Kaufm ann. Ram aswam y, P. (2011). Digital System s Design. United Kingdom : London Business School . Morris, M, Michael , D. C. (2006). Digital Design. New Jersey: Prentice-Hal l Int ernational In c. ธวชั ชยั เลอื่ นฉวี และ อนุรกั ษ เถอ่ื นศิริ. (2527). ดิจติ อลเทคนิคเลม 1.กรงุ เทพฯ: มติ รนราการพิมพ. ธวัชชัย เลื่อนฉวี. (2532). ดิจิตอลเทคนิคเลม 2.กรุงเทพฯ: มิตรนราการพิมพ. มงคล ทองสงคราม. (2544).ทฤษฎีดจิ ิตอล.กรุงเทพฯ: หา งหนุ สว นจํากัด วี.เจ. พริ้นดิ้ง. ทีมงานสมารทเลริ น นิ่ง. (2543). ออกแบบวงจร Digital และประยกุ ตใ ชงาน.กรุงเทพฯ: หา งหุนสว น สามัญสมารทเลริ น น่งิ . สมชาย ชน่ื วฒั นาประณธิ ิ. (2535). ดิจติ อลอิเลก็ ทรอนกิ ส.จ. อุดรธาน:ี มหาวิทยาลยั ราชภฏั อดุ รธานี. 232

เอกสารประกอบการสอนวิชาวงจรดจิ ิทลั และลอจิก โดย อาจารย กฤษณพงศ สมสุข แผนบริหารการสอนประจําบทที่ 12 วงจรแปลงสญั ญาณ 3 ชว่ั โมง หวั ขอ เนอ้ื หา 12.1 ออปแอมป 12.1.1 วงจรเปรียบเทยี บ 12.1.2 อินเวอรต งิ แอมปลิไฟเออร 12.2 การแปลงสญั ญาณดจิ ทิ ัลเปนสญั ญาณอนาลอก 12.2.1 วงจงแปลงสญั ญาณดจิ ทิ ัลเปนสัญญาณอนาลอก 12.3 การแปลงสญั ญาณอนาลอกเปนสญั ญาณดิจทิ ลั 12.3.1 วงจงแปลงสญั ญาณอนาลอกเปน สัญญาณดิจทิ ัล 12.4 บทสรปุ วตั ถปุ ระสงคเชงิ พฤตกิ รรม 1. เพอ่ื ใหผ เู รยี นมคี วามรคู วามเขา ใจเกยี่ วกบั ออปแอมปเ บอ้ื งตน และการนําออปแอมปม าประยกุ ตใช งานเปนวงจรแปลงสญั ญาณ 2. เพ่ือใหผ ูเรยี นมคี วามรูค วามเขาใจเกยี่ วกบั หลักการแปลงสัญญาณดจิ ิทลั เปน สญั ญาณอนาลอก และ สามารถออกแบบวงจรได 3. เพอ่ื ใหผ ูเรยี นมคี วามรูความเขา ใจเกยี่ วกบั หลกั การแปลงสญั ญาณอนาลอกเปนสญั ญาณดจิ ิทลั และ สามารถออกแบบวงจรได วธิ กี ารสอนและกจิ กรรมการเรยี นการสอนประจาํ บท 1. บรรยายเนื้อหาในแตล ะหัวขอ พรอ มยกตัวอยางประกอบ 2. ศกึ ษาจากเอกสารประกอบการสอน 3. ผสู อนสรุปเน้อื หา 4. ทําแบบฝก หดั เพื่อทบทวนบทเรยี น 5. เปด โอกาสใหผ ูเรยี นถามขอสงสยั 6. ผสู อนทําการซกั ถาม สื่อการเรียนการสอน 1. เอกสารประกอบการสอนวชิ าวงจรดิจิทลั และลอจกิ 2. ภาพเลื่อน การวดั ผลและการประเมนิ 1. ประเมนิ จากการซกั ถามในชนั้ เรยี น 2. ประเมินจากความรว มมือและความรับผดิ ชอบตอการเรยี น 3. ประเมินจากการทําแบบฝก หดั ทบทวนบทเรยี น 233

เอกสารประกอบการสอนวิชาวงจรดิจิทัลและลอจิก โดย อาจารย กฤษณพงศ สมสุข บทท่ี 12 วงจรแปลงสญั ญาณ เนื่องจากมีความเปนไปไดที่สัญญาณอินพุตของวงจรดิจิทัลอาจจะเปนสัญญาณแบบอนาลอก เชนคาอุณหภมู ิ หรือ คา ความเร็ว เปนตน ซง่ึ วงจรดจิ ทิ ัลไมส ามารถประมวลผลสัญญาณอินพุตท่เี ปน แบบอนาลอกได ดงั น้ันจึงตองมีวงจรที่ใชสําหรับแปลงสัญญาณอินพุตจากสัญญาณอนาลอกเปน สัญญาณดจิ ิทัลกอ นจึงจะสามารถนําสัญญาณดิจิทลั น้ีสงเปนอินพุตใหวงจรเพื่อนําไปประมวลตอ ไป โดยหลังจากที่วงจรดิจิทัลประมวลผลเสร็จเรียบรอยแลวคาสัญญาณเอาตพุตท่ีไดออกมาจะเปน สญั ญาณดิจทิ ัล อยา งไรก็ตามในการใชง านจรงิ กม็ คี วามเปนไปไดเ ชนกันท่ีจําเปนตองใชคาเอาตพุตที่ เปนสญั ญาณอนาลอก และในทางกลบั กนั วงจรอนาลอกบางชนิดอาจจะรับสัญญาณอินพุตแบบดิจทิ ัล ดังน้ันจึงตองมีวงจรที่ใชสําหรับการแปลงสัญญาณดิจิทัลเปนสัญญาณอนาลอกดวยเชนกัน โดย อปุ กรณทีส่ ามารถนาํ มาประยุกตใชส าํ หรับการแปลงสญั ญาณคือ ออปแอมป ในบทน้จี ะกลา วถงึ ออป แอมปเบื้องตน หลกั การแปลงสัญญาณ และวงจรแปลงสญั ญาณของท้งั สองโดยใชออปแอมป 12.1 ออปแอมป ออปแอมป คืออุปกรณทางอิเล็กทรอนิกสชนิดหน่ึงที่รับสัญญาณอินพุตเปนแบบอนาลอก ซ่ึง สามารถนาํ มาประยกุ ตใ ชส ําหรับสรางวงจรแปลงสัญญาณได โดยมีคณุ สมบัตทิ ่ีสาํ คญั 3 ประการ ดังน้ี มีอิมพิแดนซด า นอนิ พตุ สูง มอี ตั ราการขยายแรงดันสงู และ มีอิมพแิ ดนซดานเอาตพุตตา่ํ - + รปู ท่ี 12.1 สญั ลกั ษณข องออปแอมป จากรปู ที่ 12.1 แสดงใหเห็นวาสัญญาณของออปแอมปมีท้ังหมด 5 สัญญาณประกอบไปดวย สญั ญาณอินพุต 2 สญั ญาณ คือ A ซงึ่ ตอ เขา กับขาลบเรียกวา อนิ เวอรต งิ และ B ซ่ึงตอ เขา กบั ขาบวก เรยี กวา นอนอินเวอรตงิ แหลง จายไฟ 2 สญั ญาณซง่ึ เปน สญั ญาณบวก และสัญญาณลบ และสัญญาณ เอาตพุต 1 สญั ญาณ 12.1.1 วงจรเปรียบเทียบ จากรปู ท่ี 12.1 สามารถนําออปแอมปม าใชเปน ตวั เปรยี บเทยี บไดโดยทพ่ี จิ ารณาท่ีขาของ อนิ พตุ ทั้ง 2 คา โดยแบง ออกเปน 3 กรณี ดงั น้ี กรณีที่ 1: A > B, Z จะมีคาเปน -5V 234

เอกสารประกอบการสอนวิชาวงจรดจิ ิทลั และลอจกิ โดย อาจารย กฤษณพงศ สมสุข กรณีท่ี 2: A < B, Z จะมีคา เปน +5V กรณีท่ี 3: A = B, Z จะมคี า เปน 0V ตัวอยา งท่ี 12-1 จงหาคา แรงดนั ของ Z เมือ่ กําหนดให A = 3V และ B = 1V วธิ ีทาํ เน่ืองจาก แรงดนั ของ A มคี า มากกวาแรงดนั ของ B ดงั นน้ั Z = -5V อยา งไรกต็ ามหากนําออปแอมปมาใชเปนวงจรเปรียบเทียบ อาจกําหนดใหแรงดันท่ีเอาตพุตมี สถานะเปนบวก หรือลบเพยี งอยา งเดียวเทานนั้ เชน หากตอ งการใหส ถานะเอาตพ ุตมคี าเปน บวกเพยี ง อยางเดียวสามารถทําไดโดยตอ ขา –V ลงสายดนิ แทน ดังรปู ที่ 12.2 - + รปู ท่ี 12.2 วงจรเปรยี บเทยี บทสี่ ถานะเอาตพุตมีคา เปนบวกเทานน้ั จากรปู ท่ี 12.2 คา Z จะเหลือเพยี ง 2 สถานะเทา นั้น ดังนี้ กรณที ี่ 1: A  B, Z จะมีคาเปน 0V กรณีท่ี 2: A < B, Z จะมคี า เปน +5V ในทางกลบั กนั หากตองการใหสถานะเอาตพตุ มีคา เปน ลบเพียงอยางเดยี วสามารถทาํ ไดโ ดยตอ ขา +V ลงสายดนิ แทน ซง่ึ สถานะเอาตพุตจะเหลือเพยี งสถานะท่ีเปน ลบเพยี งอยา งเดยี ว 12.1.2 อินเวอรต งิ แอมปลไิ ฟเออร อตั ราการขยายแรงดันของออปแอมปม คี า สงู ถงึ 200,000 เทา แตไมควรทําใหแรงดันที่ เอาตพตุ สงู เกนิ 80% ดงั น้นั การใชง านจรงิ จึงควรทําใหอ ตั ราการขยายแรงดนั ของออปแอมปม คี านอ ย กวา 200,000 เทา โดยการควบคุมอตั ราการขยายดว ยวิธกี ารปอ นกลบั ผานตัวตานทานที่ตกคอ มออป แอมประหวา งอินพุตและเอาตพตุ - + รูปท่ี 12.3 อินเวอรต ิงออปแอมป 235

เอกสารประกอบการสอนวิชาวงจรดจิ ิทลั และลอจิก โดย อาจารย กฤษณพงศ สมสขุ จากรปู ที่ 12.3 อตั ราการขยายแรงดันของออปแอมปห าไดจาก V Vgain = out V in เม่ือ Vgain = อัตราการขยายแรงดัน Vout = แรงดนั ที่เอาตพ ตุ Vin = แรงดนั ท่ีอินพตุ โดยทคี่ า Vout สามารถหาไดจากสตู ร Vout = R Vf x in R in เมอื่ Rf = ตวั ตา นทานที่ตกคอมออปแอมปร ะหวา งอินพตุ และเอาตพุต Rin = ตัวตา นทานทตี่ อท่ีขาอินพุต 12.2การแปลงสัญญาณดิจทิ ัลเปน สัญญาณอนาลอก การแปลงสญั ญาณดิจทิ ัลเปนสัญญาณอนาลอก หรอื เรียกส้ันๆวา D/A คือการแปลงสัญญาณ อินพตุ ท่ีเปนแบบดิจทิ ัลใหเ ปนแรงดนั แบบอนาลอก ซงึ่ มลี กั ษณะคลายกับการแปลงจากเลขฐานสอง เปนเลขฐานสบิ น่ันเอง ยกตวั อยา งเชน สัญญาณ 00102 เมื่อแปลงเปนสัญญาณอนาลอกจะมีคาเปน 2V หรอื สัญญาณ 01012 เม่ือแปลงเปน สญั ญาณอนาลอกจะมีคาเปน 5V เปน ตน การคาํ นวณหาแรงดนั ทเ่ี ปนสัญญาณอนาลอกจากสัญญาณดจิ ทิ ัลสามารถทําไดดงั สมการตอไปนี้ Vout = K.D เม่อื Vout คือ แรงดนั อนาลอก D คอื รหสั สัญญาณดจิ ิทลั ท่เี กดิ จากการแปลงจากรหสั ฐานสองเปน เลขฐานสบิ K คือ คาคงท่ี ตัวอยางที่ 12-2 จงคํานวณแรงดันอนาลอก จากวงจร D/A ขนาด 8 บิตโดยอินพุตมีคาเปน 01010011 และคาคงทแ่ี รงดันอนาลอกมคี า เปน 10mV วธิ ีทาํ เน่อื งจากอนิ พตุ คอื 01010011 แปลงเปนเลขฐานสบิ ไดเปน 83 ดงั นนั้ จาก Vout = KD ได Vout = 10m V x 83 236

เอกสารประกอบการสอนวชิ าวงจรดจิ ิทลั และลอจิก โดย อาจารย กฤษณพงศ สมสุข = 0.83V ตัวอยางที่ 12-3 จากวงจร D/ A ขนาด 8 บติ โดยอนิ พุตมคี า เปน 01100100 จะไดแรงดนั ออกมาเปน 4V จงคาํ นวณหาคาคงทแี่ รงดนั และคาแรงดันสูงสดุ ของวงจรนี้ วธิ ที าํ เนอ่ื งจากอนิ พตุ คือ 01100100 แปลงเปนเลขฐานสิบไดเ ปน 100 ดังนั้น จาก Vout = KD ได 4 = K x 100 K = 0.04V เนื่องจากอินพตุ มีขนาด 8 บติ ดังนั้นคา สงู สุดคือ 111111112 = 25510 จาก Vm ax = KDmax ได = 0.04 x 255 = 10.2V 12.2.1วงจงแปลงสญั ญาณดิจทิ ัลเปนสัญญาณอนาลอก 1 k 1 k 2 k - 4 k 8 k + รูปท่ี 12.4 ตวั อยา งวงจร D/ A ขนาด 4 บิต จากรปู ท่ี 12.4 แสดงตวั อยางวงจร D/ A ขนาด 4 บติ ซ่ึงมอี ินพุตประกอบดวย A, B, C และ D เน่อื งจากคานาํ้ หนกั จากบิตท่ีมลี ําดบั ความสําคญั ต่ําที่สุดเรยี งไปถงึ บิตท่ีมีลําดับความสําคัญสูงท่ีสุดมี คาเปน 1, 2, 4 และ 8 ดังน้นั คา R ที่นาํ มาตอ ทีต่ าํ แหนงบติ ที่มีลําดบั ความสําคัญตํ่าท่ีสุดจึงตองมีคา มากทีส่ ดุ และคา R ทน่ี ํามาตอท่ีตําแหนงบิตทมี่ ีลาํ ดบั ความสาํ คัญสูงที่สดุ จึงตองมคี า นอยท่ีสุด จึงทํา ใหทราบวาอินพุต A แทนบิตท่ีมีลําดับความสําคัญต่ําท่ีสุด และอินพุต D คือตําแหนงที่มีลําดับ ความสําคญั สงู ที่สุดโดยกาํ หนดใหเ มอื่ อนิ พุตแตละตวั ไดรับคา เปน 1 คือรับแรงดันขนาด 5V แตหาก ไดรับคา เปน 0 คอื ยงั ไมม ีแรงดนั ตัวอยางท่ี 12-4 จากรูป 12.4 จงหาคา Vout หากอนิ พตุ มีคาเปน 1010 วิธที าํ เน่ืองจากอนิ พุตมคี าเปน 1010 ความหมายคือ D = 1, C = 0, B = 1 และ A = 0 จงึ คํานวนหาคา กระแสจากแตละอนิ พุตไดดงั น้ี ID = VD/ RD = 5/ 1 k = 5 m A 237

เอกสารประกอบการสอนวชิ าวงจรดิจิทัลและลอจิก โดย อาจารย กฤษณพงศ สมสขุ IC = VC/ RC = 0/ 2 k = 0 m A IB = VB/ RB = 5/ 4 k = 1.25 m A IA = VA/ RA = 0/ 8 k = 0 m A จาก IRf = ID + IC + IB+ IA = 6.25 m A จึงคํานวณหา Vout ไดดังน้ี จาก Vout = IRf . Rf = 6.25 m A x 1 k = 6.25V วงจร D/A ดังรูปที่ 12.4 เรียกวา วงจรแปลงสัญญาณดิจิทัลเปนสัญญาณอนาลอกแบบตัว ตานทานเลขฐานสอง (Binary Weighted Resistor D/ A) อยางไรก็ตามยังมีวงจร D/ A อีกประเภท หนึ่งท่นี ิยมถกู นาํ มาใชง านเชน กัน ซึ่งจะนําตัวตานทาน 2 คามาตอสลับกันในรูปแบบซํ้าๆ เดิม ตาม จาํ นวนบิต เรียกวงจรลักษณะนี้วา วงจรชุดความตานทานข้ันบันได (R-2R Ladder Resistor D/A) โดยการเรียงจะอยูในรูปแบบของขั้นบันไดท่ีมีการแบงสัดสวนแรงดันขาออกอยางเปนลําดับขั้น คุณสมบัตขิ องวงจร R-2R Ladder คอื ระดับแรงดนั เอาตพ ตุ จะมีคาเทา กบั ผลรวมแรงดันอนิ พุตที่เปน รหสั เลขฐานสอง โดยคา แรงดนั อนิ พุตแตละตัวจะมคี าเปน -1 -2 -(n- 1) ซึ่งคาแรงดันน้ีเรยี งจากคา 2, 2 ,…,2 แรงดนั ของอินพตุ ท่ีมีลาํ ดบั ความสําคัญสงู ทีส่ ดุ ไปจนถงึ อินพุตท่ีมลี าํ ดับความสาํ คัญตา่ํ ท่ีสดุ รปู ท่ี 12.5 ตัวอยางวงจร D/ A แบบ R-2R Ladder ขนาด 4 บิต จากรูปที่ 12.5 แสดงตัวอยางวงจร D/ A แบบ R-2R Ladder ขนาด 4 บิต โดยอินพุต D เปน อินพตุ ท่มี ลี าํ ดบั ความสาํ คญั สงู ทีส่ ุดเรยี งไปจนถึงอนิ พุต A ซ่งึ เปนอินพตุ ที่มลี าํ ดับความสําคัญตํ่าที่สุด ดังน้ันคาแรงดันของอินพุต อินพุต อินพุต และอินพุต จึงมีคาเปน -1 -2 -3 และ -4 D C B A 2, 2, 2 2 ตามลาํ ดับ 12.3การแปลงสญั ญาณอนาลอกเปน สัญญาณดจิ ทิ ลั การแปลงสญั ญาณอนาลอกเปนสัญญาณดจิ ิทัล หรอื เรียกสั้นๆวา A/D คือการแปลงสัญญาณ อนิ พุตที่เปนแบบอนาลอกใหเปน สญั ญาณแบบดิจิทลั ซึง่ มีลกั ษณะคลา ยกับการแปลงจากเลขฐานสิบ เปน รหสั เลขฐานสองนัน่ เอง 238

เอกสารประกอบการสอนวิชาวงจรดจิ ิทัลและลอจิก โดย อาจารย กฤษณพงศ สมสขุ 12.3.1วงจงแปลงสัญญาณอนาลอกเปน สญั ญาณดจิ ทิ ลั - + รูปท่ี 12.6 ตวั อยางวงจร A/ D ขนาด 4 บติ จากรปู ที่ 12.6 แสดงตวั อยางวงจร A/ D เพ่อื แปลงเปนสัญญาณดจิ ิทลั ขนาด 4 บิตโดยมี Din เปน สญั ญาณอนิ พตุ แบบอนาลอก และ Q1 – Q4 เปน สญั ญาณเอาตพ ตุ แบบดิจทิ ัล โดยแบง การอธิบายการ ทาํ งานออกเปน 3 สว นไดด งั น้ี สวนที่ 1 ออปแอมป: ทําหนา ทเ่ี ปนวงจรเปรียบเทียบสัญญาณอนาลอกระหวาง เอาตพุตของ วงจร D/ A และ Din โดยท่ีหากสญั ญาณเอาตพ ตุ จาก D/ A มคี า มากกวาหรือเทากับ Din เอาตพุตของ ออปแอมปจะมคี า เปน 0 แตหากสัญญาณเอาตพ ตุ จาก D/A มีคา นอยวา Din เอาตพตุ ของออปแอมป จะมีคาเปน 1 สว นท่ี 2 ฟลิปฟลอปแบบ JK ทงั้ 4 ตวั : จากรปู สงั เกตไดวา คาเอาตพ ุตของออปแอมปถกู สง ไป เปน อนิ พุตให J1 และ K1 คา Q1 จึงถกู แบงออกเปน เพยี ง 2 กรณคี ือ หาก J1 = k1 = 0 คา Q1 จะคงคา เดมิ แตห าก J1 = k1 = 1 คา Q1 จะเกิดการกลับบิตจากคาเดิม สวนฟลิปฟลอปตัวอื่นๆทั้งหมดถูก กําหนดใหอนิ พุต J และ K มีคาเปน 1 ดงั นน้ั เอาตพตุ ของฟลิปฟลอปตัวที่ 2 – 4 จะเกดิ การกลับบิต เสมอหากไดรบั สญั ญาญนาฬิกา ซ่ึงสังเกตวาฟลิปฟลอปตัวที่ n ไดรับสัญญาณนาฬิกาจากเอาตพุต ของฟลิปฟลอปตัวที่ n-1 เมื่อ n = 2, 3, 4 ดังน้ันการตอใชงานฟลิปฟลอปลักษณะนี้เปรียบเสมือน วงจรนับน่ันเอง โดยจะทาํ การนับไปเรอ่ื ยๆ หากเอาตพตุ ของออปแอมปมีคาเปน 1 และหยุดนับเม่ือ เอาตพุตของออปแอมปมคี า เปน 0 เนื่องจาก Q1 คงคา เดิม จึงไมเกิดสัญญาณนาฬิกาท่ี Q2, Q3 และ Q4 สว นท่ี 3 วงจร D/ A: รบั สัญญาณอนิ พตุ จาก Q1, Q2, Q3 และ Q4 เพื่อที่จะแปลงเปนสัญญาณ อนาลอกเพื่อนําไปเปรยี บเทยี บกับ Din เมือ่ รวมทัง้ 3 สวนสรปุ การทํางานไดดงั นี้ เมอ่ื มเี กิดสัญญาณ Reset จะทําใหเอาตพุตของฟลิป ฟลอปท้งั 4 ตวั มีคาเปน 0 ทงั้ หมด และวงจรจะเรม่ิ นบั ขน้ึ ทลี ะ 1 จนกระทงั่ เอาตพ ุตของวงจร D/A มี คา เทา กับ Din วงจรจึงจะหยดุ นับ และไดผ ลลพั ธซึ่งเปนสัญญาณดิจิทัลคือ Q1, Q2, Q3 และ Q4 239

เอกสารประกอบการสอนวชิ าวงจรดิจิทัลและลอจกิ โดย อาจารย กฤษณพงศ สมสขุ 12.4 บทสรุป วงจรแปลงสัญญาณ คือ วงจรท่ีทําใหร ะบบดจิ ิทัลสามารถสอื่ สารกบั อุปกรณอิเล็กทรอนิกสที่รับ สัญญาณเปน แบบสัญญาณอนาลอกได โดยวงจรแปลงสญั ญาณแบง ออกเปนสองประเภทคือวงจรการ แปลงสญั ญาณดจิ ิทัลเปน สญั ญาณอนาลอก หรอื เรียกสั้นๆวา D/A คือการแปลงสญั ญาณอินพุตทเ่ี ปน แบบดิจิทัลใหเปนแรงดันแบบอนาลอก (มีลักษณะคลายกับการแปลงจากรหัสเลขฐานสองเปน สญั ญาณท่อี ยูใ นรูปแบบของเลขฐานสิบ) และวงจรแปลงสัญญาณอนาลอกเปนสัญญาณดิจิทัล หรือ เรียกส้ันๆวา A/D คือการแปลงสัญญาณอินพุตที่เปนแบบอนาลอกใหเปนสัญญาณแบบดิจิทัล (มี ลักษณะคลา ยกบั การแปลงสญั ญาณท่เี ปน เลขฐานสบิ ใหอ ยใู นรูปของรหัสเลขฐานสอง) 240

เอกสารประกอบการสอนวชิ าวงจรดิจิทลั และลอจกิ โดย อาจารย กฤษณพงศ สมสุข คําถามทา ยบท 1. วงจรแปลงสญั ญาณมีประโยชนอยางไร 2. วงจร D/ A และ A/D คอื อะไร มคี วามแตกตา งกนั อยางไร 3. จากรูปที่ 12.1 จงหาคา แรงดนั ของ Z เม่ือ 3.1 กาํ หนดให A = 1V และ B = 3V 3.2 กาํ หนดให A = 4V และ B = 2V 4. จงคํานวณแรงดันอนาลอก จากวงจร D/A ขนาด 8 บิตโดยอนิ พตุ มีคาเปน 01001101 และคา คงที่ แรงดันอนาลอกมคี าเปน 10mV 5. จากวงจร D/ A ขนาด 8 บติ โดยอนิ พตุ มคี า เปน 01101110 จะไดแ รงดนั ออกมาเปน 5V จง คาํ นวณหาคา คงที่แรงดัน และคาแรงดันสงู สดุ ของวงจรนี้ 241

เอกสารประกอบการสอนวิชาวงจรดิจิทัลและลอจกิ โดย อาจารย กฤษณพงศ สมสขุ เอกสารอา งอิง Morris, M, Charl es, R.K. (2007). Logic and Com puter Design Fundam entals. New Jersey: Prentice-Hal l International Inc. Marcovit z, A. B. (2009). Introduction to Logic Design. New York: McGraw-Hil l . Mark, B. (2003). Com plete Digital Design: A Com prehensive Guide to Digital Electronics and Com puter System Architecture. New York: McGraw-Hil l . David, M. H. (2012).Digital Design and Com puter Architecture. USA: Morgan Kaufm ann. Ram aswam y, P. (2011). Digital System s Design. United Kingdom : London Business School . Morris, M, Michael , D. C. (2006). Digital Design. New Jersey: Prentice-Hal l Int ernational In c. ธวชั ชยั เลื่อนฉวี และ อนุรกั ษ เถ่ือนศิริ. (2527). ดิจติ อลเทคนิคเลม 1.กรงุ เทพฯ: มิตรนราการพิมพ. ธวัชชัย เลื่อนฉวี. (2532). ดิจิตอลเทคนคิ เลม 2.กรุงเทพฯ: มิตรนราการพิมพ. มงคล ทองสงคราม. (2544).ทฤษฎีดจิ ติ อล.กรุงเทพฯ: หา งหนุ สว นจํากัด วี.เจ. พริ้นดิ้ง. ทีมงานสมารทเลริ น นิ่ง. (2543). ออกแบบวงจร Digital และประยกุ ตใ ชงาน.กรุงเทพฯ: หา งหุนสว น สามัญสมารทเลริ น น่งิ . สมชาย ชน่ื วฒั นาประณธิ ิ. (2535). ดิจิตอลอิเลก็ ทรอนกิ ส.จ. อุดรธาน:ี มหาวิทยาลยั ราชภฏั อดุ รธานี. 242

เอกสารประกอบการสอนวชิ าวงจรดจิ ิทัลและลอจิก โดย อาจารย กฤษณพงศ สมสขุ แผนบรหิ ารการสอนประจําบทท่ี 13 ภาษา VHDL เบอื้ งตน 6 ชัว่ โมง หวั ขอ เนอ้ื หา 13.1 บทนาํ 13.1.1 ไลบราลี่ 13.1.2 เอน็ ตติ ้ี 13.1.3 อาชเิ ทคเชอร 13.1.4 แพ็กเกจ 13.1.5 คอมฟก กรเู รช่ัน 13.2 การตงั้ ชือ่ ตวั แปร 13.3 ชนดิ ขอ มลู 13.3.1 ชนดิ ขอ มลู BIT 13.3.2 ชนดิ ขอ มลู BIT_VECTOR 13.3.3 ชนดิ ขอ มลู STD_LOGIC 13.3.4 ชนดิ ขอมลู STD_LOGIC_VECTOR 13.3.5 ชนดิ ขอมลู INTEGER 13.3.6 ชนดิ ขอมลู อนื่ 13.4 ตวั ดําเนินการทางตรรกะ 13.5 สญั ญาณ 13.6 คา คงท่ี 13.7 คําส่ังเชงิ ลําดบั 13.8 คําสง่ั เงอ่ื นไข 13.8.1 คาํ ส่งั When – Else 13.8.2 คําสงั่ With - Select 13.8.3 คําสงั่ If - Else 13.8.4 คาํ สั่ง Case - When 13.9 การสรางสญั ญาณนาฬกิ า 13.10 บทสรปุ วัตถุประสงคเ ชงิ พฤตกิ รรม 1. เพ่ือใหผ ูเ รยี นมคี วามรคู วามเขา ใจเกยี่ วกบั การเขยี นโปรแกรมภาษาบรรยายฮารด แวรด ว ยภาษา VHDL เบื้องตน วธิ กี ารสอนและกจิ กรรมการเรยี นการสอนประจาํ บท 1. บรรยายเนอื้ หาในแตล ะหวั ขอ พรอมยกตวั อยางประกอบ 2. ศึกษาจากเอกสารประกอบการสอน 243

เอกสารประกอบการสอนวิชาวงจรดจิ ิทลั และลอจิก โดย อาจารย กฤษณพงศ สมสุข 3. ผูสอนสรปุ เนื้อหา 4. ทาํ แบบฝก หดั เพ่ือทบทวนบทเรยี น 5. เปด โอกาสใหผ ูเรยี นถามขอสงสยั 6. ผสู อนทาํ การซกั ถาม ส่อื การเรยี นการสอน 1. เอกสารประกอบการสอนวชิ าวงจรดิจิทลั และลอจิก 2. ภาพเลอ่ื น การวัดผลและการประเมนิ 1. ประเมนิ จากการซักถามในชัน้ เรยี น 2. ประเมนิ จากความรวมมอื และความรบั ผดิ ชอบตอ การเรยี น 3. ประเมินจากการทาํ แบบฝกหดั ทบทวนบทเรียน 244

เอกสารประกอบการสอนวิชาวงจรดจิ ิทัลและลอจกิ โดย อาจารย กฤษณพงศ สมสุข บทที่ 13 ภาษา VHDL เบื้องตน การออกแบบวงจรดิจทิ ลั ในบททผ่ี า น ๆ มาเปนการออกแบบวงจรโดยใชว ิธีของการวาดผังวงจร ข้ึนมาเอง ซงึ่ เปนวิธีที่ไมเ หมาะสมในกรณีทีต่ อ งออกแบบวงจรที่มีขนาดใหญ การออกแบบวงจรดวย การใชภาษาระดับสูง เปนวิธีการออกแบบวงจรดิจิทัลโดยใชวธิ ีของการเขียนโปรแกรมเพ่ือจําลองการ ทํางาน ซ่ึงสามารถพฒั นาไดงา ย เน่อื งจากรปู แบบของคําสง่ั ตางๆ เปนภาษาท่ีมนุษยอ านไดเขาใจได งาย ดังนั้นการใชภาษาระดับสูงในการออกแบบวงจรดิจิทัลที่มีขนาดใหญจึงเปนวิธีท่ีเหมาะสม มากกวาหากเปรียบเทียบกับวิธีของกาวาดผังวงจรขึ้นใชงานเอง สําหรับบทนี้จะกลาวถงึ การเขียน โปรแกรมระดับสงู เพ่ือใชส าํ หรบั การออกแบบวงจรดจิ ิทัลดว ยภาษา VHDL เบอื้ งตน 13.1 บทนาํ ภาษา VHDL ยอ มาจาก VHSIC Hardware Description Language เปนภาษาท่ีใชส ําหรบั การ ออกแบบทางดา นฮารดแวร ประเภทหนงึ่ ซึง่ ถูกพัฒนาโดยกระทรวงกลาโหมของประเทศสหรฐั อเมรกิ า และไดรับการปรับปรุงเพื่อใหเปนมาตรฐานโดย IEEE โดยมี IEEE Std 1076 (VHDL87) เปน มาตรฐานตัวแรกที่มีการใชงาน และไดมีการปรับปรุงเรอ่ื ยมา โดยภาษานี้จะแตกตางกับโปรแกรม ภาษาอื่นๆ เชน ภาษา C, C++ หรือ Java เปนตน ตรงที่ภาษา VHDL จะเปนภาษาที่ประมวลผล คําส่ังทุกคําส่ังไปพรอมๆ กัน (Concurrence Statement) ในขณะท่ีโปรแกรมภาษาอ่ืน ๆ จะ ประมวลผลคาํ สงั่ แตล ะคาํ ส่งั เปน ลําดับ (Sequential Statement) โดยภาษา VHDL จะมองตวั อักษร ภาษาอังกฤษตวั พิมพเ ล็ก และตัวอกั ษรพิมพใหญเ ปน ตวั เดยี วกนั (Case Insentitive) โครงสรางของ VHDL เปน ดังน้ี 13.1.1 ไลบรารี่ (Library) เปนสว นทใี่ ชสําหรับเก็บคําสั่ง หรือตัวดําเนินการตาง ๆ ท่ีสามารถนํามาใชงานไดตาม มาตรฐาน IEEE โดยจะอยสู ว นบนสุดของโปรแกรม มโี ครงสรางเปนดังน้ี LIBRARY library_nam e; USE library_nam e.package_nam e.item รปู ท่ี 13.1 โครงสรางไลบรารี่ จากรปู ที่ 13.1 Library_name คอื ช่อื ของไลบรารี่ที่เกบ็ แพก็ เกจ โดยจะขึ้นตน ดว ย “ IEEE” package_name คือ ชอื่ แพก็ เกจ item คือ จํานวนของขอมูลที่อยูภายในแพ็กเกจท่ีตองการนํามาใชงานภายใน โปรแกรมหลกั ซง่ึ หากตอ งการนาํ มาใชงานทงั้ หมดใหประกาศในสวนของ item เปนคาํ วา “ all” 245

เอกสารประกอบการสอนวชิ าวงจรดจิ ิทัลและลอจกิ โดย อาจารย กฤษณพงศ สมสุข 13.1.2 เอ็นตติ ี้ (Entity) เปน สว นที่ใชสาํ หรบั การบอกจํานวนอนิ พุต และจํานวนของเอาตพุตท้ังหมดท่ีจาํ เปนตอ ง ใชภายในวงจรโดยยงั ไมไดมกี ารออกแบบวงจรแตอ ยา งไร มีโครงสรา งเปน ดังนี้ Entity entity_name IS PORT(inp ut_name1: IN Datatype; input_nam e2: IN Dat at ype; input_nam en: IN Dat at ype; outp ut_nam e1: IN Datatype; outp ut_nam em: OUT Datatype); End entity_name; รูปท่ี 13.2 โครงสรา งเอ็นตติ ี้ จากรูปที่ 13.2 entity_name คือ ชอื่ ของเอน็ ตติ ้ี โดยจะตอ งมชี ่ือเดยี วกับ entity_name ทีอ่ ยู หลังคําวา End input_name1, input_name2 และ input_namen คอื ขอมูลอนิ พุตของวงจรซงึ่ จะมกี ่ี ตัวก็ได IN คือ สว นทอ่ี ยตู อ จากชอื่ ของขอมูลอนิ พตุ และเครอื่ งหมาย “ :” เพอ่ื ใหร วู า ขอมูลนเ้ี ปน ขอ มูลอินพุต OUT คือสว นท่ีอยตู อจากชือ่ ของขอมูลเอาตพ ตุ และเครอ่ื งหมาย “ :” เพื่อใหรวู า ขอมูลน้ี เปนขอมูลเอาตพตุ Datatype คอื ชนิดขอ มลู ของสญั ญาณ โดยหากอนิ พุต หรือ เอาตพ ตุ ท่มี มี ากกวา 1 ตัว มี Datatype ชนิดเดียวกันสามารถประกาศสัญญาณเหลาน้ันในบรรทัดเดียวกันไดโดยใช “ ,” คั่น สัญญาณแตละตัว ตวั อยา งที่ 13-1 จงเขยี นคาํ สัง่ ในสว นเอ็นตติ ี้เพ่ือออกแบบวงจร Z = A.B วิธที าํ จากโจทยม ีอนิ พตุ 2 ตัว และเอาตพ ตุ 1 ตวั จึงมีเอน็ ตติ เ้ี ปน ดังน้ี Entit y EX_01 IS PORT(A: IN BIT; B: IN BIT; Z : OUT BIT); End EX_01; อินพุต 2 ตวั มชี ่ือ คือ A และ B และเอาตพ ุต 1 ตัวมชี อื่ คือ Z ทั้งหมดมชี นดิ ขอมลู เปน แบบ BIT (ชนดิ ขอ มลู แบบ BIT คือ ชนดิ ขอ มลู ทม่ี สี ถานะสําหรบั ใชงานคอื 0 หรอื 1) และมีเอน็ ตติ ช้ี ือ่ EX_01 246

เอกสารประกอบการสอนวิชาวงจรดิจิทลั และลอจกิ โดย อาจารย กฤษณพงศ สมสุข 13.1.3 อาชิเทคเชอร (Architecture) เปน สว นทใ่ี ชสาํ หรบั การออกแบบสว นทใี่ ชเ ขยี นบรรยายพฤติกรรมการทํางานของวงจร จากขอ มูลอนิ พุต และเอาตพุตทีม่ าจากสว นของเอ็นตติ ้ี ซงึ่ มีโครงสรางเปน ดงั น้ี ARCHITECTURE architecture_nam e of entity_nam e IS Signal, Constant, typ e, subprogram and com p onent d e cl arat ions Begin … End architecture_name; รปู ที่ 13.3 โครงสรา งอาชเิ ทคเชอร จากรูปท่ี 13.3 architecture_name คือ ช่ือของอาชิเทคเชอร ซึ่งจะตองมีชื่อเดียวกันกับ architecture_name ที่อยหู ลัง End ดว ย entity_name คือ ชอ่ื ของ entity ซึง่ จะตอ งมีชื่อเดียวกันกบั ช่ือของ เอ็นติตีท้ อี่ ยใู นสวน ของเอน็ ติต้ี สวนที่อยูใต ARCHITECTURE และ อยูเหนือ Begin คือการประกาศสัญญาณ คาคงที่ หรือ โปรแกรมยอยไวใชงานซง่ึ จะมหี รอื ไมก ไ็ ดข น้ึ อยกู บั การใชงาน หากมีการใชงานแตละตัวแปรตองปด ทา ยดว ยเคร่อื งหมาย “ ;” เสมอ การออกแบบสวนทใ่ี ชเขยี นบรรยายพฤติกรรมการทํางานของวงจรจะเขียนอยูระหวาง Begin และ End เสมอ โดยรปู แบบของการกาํ หนดสถานะใหเอาตพ ตุ เปน ดงั น้ี กรณที ี่ 1: กาํ หนดคาคงทใี่ หเอาตพุต รูปแบบ: ขอ มูลเอาตพ ตุ <= ‘ คา คงท่ี’ ; เชน : Z <= ‘ 1’ ; ความหมายคือ กาํ หนดใหส ัญญาณ Z มสี ถานะเปน 1 กรณีที่ 2: กําหนดสถานะอนิ พุตใหเอาตพ ตุ รูปแบบ: ขอ มลู เอาตพ ตุ <= ขอมลู อนิ พุต; เชน : Z <= A; ความหมายคอื กาํ หนดใหสญั ญาณ Z มีสถานะเหมอื นสญั ญาณ A กรณีท่ี 3: กาํ หนดสถานะนิเสธของอินพุตใหเ อาตพตุ รปู แบบ: ขอ มูลเอาตพุต <=not ขอ มูลอนิ พุต; เชน : Z <= not A; ความหมายคือ กาํ หนดใหสญั ญาณ Z มสี ถานะตรงขา มกบั สัญญาณ A กรณที ่ี 4: กาํ หนดสถานะของผลการดาํ เนินการระหวางอินพตุ ใหเอาตพ ตุ รปู แบบ: ขอ มลู เอาตพตุ <= ขอ มลู อนิ พตุ 1 ตวั ดาํ เนนิ การ ขอ มลู อนิ พตุ ท2ี่ ; เชน: Z <= A and B; 247

เอกสารประกอบการสอนวชิ าวงจรดจิ ิทัลและลอจกิ โดย อาจารย กฤษณพงศ สมสุข ความหมายคอื กําหนดใหส ญั ญาณ Z = AB ตัวอยา งที่ 13-2 จงเขยี นคําสั่งในสวนอาชเิ ทคเชอรเพือ่ ออกแบบวงจรจากตัวอยา งที่ 13-1 วิธที าํ เนอื่ งจากตัวอยา งที่ 13-1 ไดอ อกแบบโครงสรางของเอ็นตติ ้ไี วแลว จงึ ออกแบบวงจรในสว นของ อาชเิ ทคเชอรไดด งั นี้ ARCHITECTURE archit ecture_EX01 of EX_01 IS Begin Z <= A and B; End architecture_EX01; อาชิเทคเชอรมีช่ือ architecture_EX01 สวนเอ็นติตี้จะตองมีชื่อ EX_01 เสมอซึ่งเปนชื่อ เดียวกันกบั ชื่อของเอ็นตติ ที้ อ่ี ยใู นตัวอยางที่ 13-1 โดยการเขียนคําสง่ั Z = AB ดว ยภาษา VHDL เปน ดงั น้ี Z <= A and B; 13.1.4 แพก็ เกจ (Package) แพ็จเกต คือสวนทีใ่ ชสาํ หรบั เก็บขอมูลตาง ๆ หรือโปรแกรมยอยซึ่งสวนใหญแลว จะเปน ขอมูลที่มีการเรียกใชงานบอยคร้ัง หรือมีการเรียกใชงานจากหลายสวนของโปรแกรม โดยใน โปรแกรมหลักจะมีการเรยี กใชงานแพ็กเกจหรอื ไมมกี ไ็ ด โครงสรางของแพก็ เกจเปน ดงั น้ี PACKAGE p ackage_nam e IS Signal, Constant, type and comp one nt d eclarations End package_nam e; PACKAGE BODY package_name IS Signal, Constant, type, com ponent and Sub program declarations End package_nam e; รูปท่ี 13.4 โครงสรางแพก็ เกจ จากโครงสรางของแพ็กเกจแบง ออกเปน 2 สวนคอื สว นของการประกาศแพ็กเกจซ่งึ จะใช สําหรบั ประกาศสญั ญาณ หรอื คาคงท่ตี า ง ๆ โดยท่ีหากมีการสรา งแพ็กเกจข้ึนมาใชง านจะตอ งมสี วนนี้ เสมอ และสว นท่ี 2 คือ แพก็ เกจบอด้ี คือสวนของคาํ สั่งตางๆ ที่ใชบรรยายการทํางานของโปรแกรม ยอ ยซง่ึ จะมีการทํางานเปน แบบเชิงลาํ ดับ โดยสัญญาณ หรือคา คงทตี่ าง ๆ ท่ปี ระกาศภายในแพจ็ เกจ บอด้ี จะตอ งประกาศไวในสว นของการประกาศแพก็ เกจดว ยเสมอ โดยหากมีการประกาศแพ็กเกจขึ้น ใชง านจะมแี พก็ เกจบอดห้ี รือไมกไ็ ด หากมกี ารเรยี กใชงานแพก็ เกจจากโปรแกรมหลกั จะตองมีการใชคําสง่ั ดังน้ี 248

เอกสารประกอบการสอนวชิ าวงจรดจิ ิทลั และลอจิก โดย อาจารย กฤษณพงศ สมสขุ USE l ibrary_nam e.package_nam e.item ; Library_name คือ ชือ่ ของไลบราร่ีทเี่ ก็บแพก็ เกจ โดยสว นใหญแลวแพ็กเกจที่ผูเขียนสรางขึ้น เองจะถกู เก็บไวในไลบรารชี่ ่ือ “ work” package_name คอื ชอื่ แพ็กเกจ item คือ จํานวนของขอ มลู ท่อี ยภู ายในแพ็กเกจท่ีตองการนาํ มาใชง านภายในโปรแกรมหลัก ซ่ึง หากตอ งการนาํ มาใชงานทั้งหมดใชป ระกาศในสวนของ item เปน คําวา “ all” 13.1.5 คอนฟก กรเู รชนั่ (Configuration) ในกรณีที่ตองการสรางอาชิเทคเชอรไวมากกวา 1 อาชิเทคเชอรเพื่อไวใชสําหรับการ จาํ ลองการทาํ งานของเอ็นตติ ี้ จําเปนตอ งมกี ารเขียนคอนฟกกรูเรช่ันไวเ พ่ือเลือกใชง านอาชเิ ทคเชอรท ี่ ตอ งการ 13.2 การตั้งชือ่ แปร การต้ังช่อื ตัวแปรสัญญาณ หรือคาคงท่ีตาง ๆ เพ่ือไวใชงานจะตองต้ังตามขอกําหนดตอไปน้ี เทานัน้ ซ่งึ หากไมต ้ังตามที่กาํ หนดไวจ ะเกิดขอ ผดิ พลาดของโปรแกรมข้ึน 1. ช่อื ตวั แปรจะตองประกอบดวย ตัวอักษร ตัวเลข หรอื เสนใต เทานั้น 2. กรณที ช่ี อื่ ตัวแปร 1 ตัวแปรมีมากกวา 1 ตวั อักษรจะตองเขียนติดกัน หา มมีชอ งวาง 3. ไมสามารถใชเครื่องหมายขดี เสน ใตติดกนั หลายตัว และไมสามารถจบดวยเคร่ืองหมายขีด เสน ใต 4. หา มใชค าํ สงวนท่ีมอี ยใู นภาษา VHDL ดังน้ี รูปท่ี 13.5 คาํ สงวนในภาษา VHDL ท่ีมาของภาพ: http:/ / hep.uchicago.edu/ ~tangjian/ SVT_sub/ FTK_ATLAS/ AUX/ vhdl - t u t o rial .p df 13.3 ชนิดขอ มูล ขอมูลท่ีตองใชงานในภาษา VHDL มอี ยูหลายชนิด ซึ่งแตละชนิดจะมีความแตกตางกันออกไป ดงั นี้ 249

เอกสารประกอบการสอนวิชาวงจรดจิ ิทัลและลอจิก โดย อาจารย กฤษณพงศ สมสุข 13.3.1ชนดิ ขอ มลู BIT: เปน ชนดิ ขอมลู พ้นื ฐานที่ใชสําหรบั กาํ หนดเปนสถานะของขอมูลอินพุต หรือขอมูลเอาตพ ตุ ซ่งึ ประกอบดวย 2 สถานะคือ 0 หรือ 1 13.3.2ชนิดขอมูลแบบ BIT_VECTOR: เปน ชนิดขอมลู แบบ BIT ท่ใี ชเ ก็บขอ มลู ใหก บั ตวั แปร 1 ตัวแปรที่มีขนาดมากกวา 1 บิต ซ่ึงสามารถกําหนดได 2 แบบคือแบบท่ี 1 เรียงจากบิตท่ีมีลําดับ ความสาํ คัญสงู ทีส่ ดุ ไปยังบิตท่ีมีลําดับความสําคัญตํ่าทสี่ ดุ โดยใช “ downto” และแบบท่ี 2 เรียงจาก บิตที่มีลาํ ดับความสําคญั ต่ําท่ีสดุ ไปยังบิตท่มี ีลําดบั ความสําคญั สงู ทีส่ ุดโดยใช “ to” ตวั อยางการใชง าน เปน ดังนี้ แบบท่ี 1 (ใช downto): signal a: BIT_VECTOR (3 downto 0) := “ 1101” ; ความหมายคือ กําหนดใหสัญญาณ a มีขนาด 4 บิตและมคี าเร่มิ ตน เปน “ 1101” (a3 = 1, a2 = 1, a1 = 0 และ a0 = 1) แบบที่ 2 (ใช to): signal a: BIT_VECTOR (0 to 3) := “ 1101” ; ความหมายคือ กําหนดใหส ัญญาณ a มีขนาด 4 บิตและมคี าเร่มิ ตน เปน “ 1101” (a0 = 1, a1 = 1, a2 = 0 และ a3 = 1) 13.3.3ชนิดขอมูล STD_LOGIC: คือ ชนิดขอมูลท่ีใชสําหรับกําหนดเปนสถานะของขอมูล อินพุต หรอื ขอ มูลเอาตพ ตุ เชนเดียวกับชนิดขอมูลแบบ BIT แตสามารถเกบ็ สถานะไดมากกวา โดย สถานะทช่ี นิดขอ มลู แบบ STD_LOGIC สามารถเก็บไดเปนดังน้ี ‘ U’ คือUninitial ized ‘ X’ คอื Unknown ‘ 0’ คือ สถานะ 0 ‘ 1’ คือ สถานะ 1 ‘ Z’ คอื High impedance ‘ W’ คือ Weak unknown ‘ L’ คอื Weak low ‘ H’ คือ Weak high ‘ -’ คือ Don’ t care 13.3.4ชนดิ ขอ มลู STD_LOGIC_VECTOR: คือ ชนดิ ขอ มลู ทใ่ี ชสาํ หรับกาํ หนดเปน สถานะของ ขอ มูลอนิ พตุ หรือขอ มลู เอาตพตุ ที่มขี นาดมากกวา 1 บติ เชนเดียวกับชนิดขอมูลแบบ BIT_VECTOR แตสามารถเกบ็ สถานะไดมากกวา โดยสถานะทช่ี นิดขอมลู แบบ STD_LOGIC_VECTOR จะเหมอื นกบั STD_LOGIC 13.3.5ชนิดขอมูล INTEGER: คือ จํานวนเต็มท่ีมีขนาดระหวาง -2,147,483,647 – +2,147,483,647 ซง่ึ เปชนิดขอ มูลทสี่ ามารถใชใ นการคาํ นวณได เชน การบวก ลบ คูณ หรอื หารเปน ตน 13.3.6ชนิดขอ มลู อื่น นอกจากชนิดขอมูล 5 ชนิดที่กลาวขางตนแลว ภาษา VHDL ยังมีชนิด ขอ มลู อืน่ ๆ ใหใชงานไดอ กี เชน REAL (จาํ นวนจริง) BOOLEAN (ตรรกศาสตร) TIME (เวลา) STRING (ตวั อักษร) เปนตน 250

เอกสารประกอบการสอนวิชาวงจรดจิ ิทัลและลอจกิ โดย อาจารย กฤษณพงศ สมสขุ 13.4 ตัวดาํ เนินการทางตรรกะ ตัวดําเนนิ การทางตรรกะคือตัวดําเนินการที่ใชในการคํานวณหาสถานะของเอาตพุตของวงจร ดิจิทลั จากความสมั พันธข องขอมูลอนิ พุตมที ง้ั หมด 7 ตวั ดังน้ี ตารางที่ 13.1 ตัวดาํ เนนิ การทางตรรกะ ประเภทตวั ดําเนนิ การ รูปแบบคําสั่ง ตัวอยางการใชง าน แอนด ออร an d z <= a and b; นอ็ ต or z <= a or b; แนนด not z <= not a; นอร n an d z <= a nand b; เอก็ ออร nor z <= a nor b; เอ็กนอร xo r z <= a xor b; xnor z <= a xnor b; 13.5 สญั ญาณ (Signal) สญั ญาณ คือ ตัวแปรทท่ี าํ หนาทใี่ นการสงผานขอ มลู ตัวอยางเชนสญั ญาณจะนําเอาตพุตท่ไี ดจ าก อปุ กรณอ เิ ล็กทรอนิกสต ัวหน่ึงไปเปนอินพุตใหกับอุปกรณอิเล็กทรอนิกสอีกตัวหน่ึง ดังตัวอยางรูปที่ 13.4 รปู ที่ 13.6 ตัวอยางสญั ญาณ จากรปู ที่ 13.6 เอาตพ ุตท่ีไดจากแอนดเกต (X) ถูกสง ไปเปน อินพตุ ใหก บั ออรเ กต แสดงวา X เปนตวั แปรสญั ญาณ รูปแบบการเขยี นสญั ญาณเปนดงั น้ี รปู แบบ: signal signal _name: Datatype := initial _value; โดยที่ signal_name คอื ช่ือสัญญาณ initial_value คอื คาเร่มิ ตน ของสญั ญาณ โดยในสว นน้ีจะมกี ารกาํ หนดหรอื ไมก็ได 251

เอกสารประกอบการสอนวิชาวงจรดิจิทลั และลอจิก โดย อาจารย กฤษณพงศ สมสุข ตัวอยางที่ 13-3 การออกแบบวงจรรปู 13-4 ดว ยภาษา VHDL โดยใชต ัวแปรสญั ญาณ Entity EX_03 is Port ( a, b, c : in BIT; Z : out BIT); end EX_03; architecture Behavioral of EX_03 is signal x: BIT; begin x <= a and b; z <= x or c; end Behavioral; 13.6 คา คงท่ี (Constant) คาคงที่ คือตัวแปรที่เม่ือถูกสรางขึ้นมาแลวตองมีการกําหนดคาใหกับตวั แปรนั้นทันทีและไม สามารถเปลย่ี นแปลงคา ใหกบั ตวั แปรน้ไี ดในภายหลัง มีรูปแบบเปน ดังน้ี รูปแบบ: constant constant_name: Datatype := value; โดยท่ี signal_name คอื ชอ่ื สัญญาณ value คอื คา คงทีท่ ต่ี องกาํ หนดใหต ัวแปร 13.7 คําสั่งเชงิ ลําดบั (Sequential statement) การเขียนโปรแกรมดวยภาษา VHDL มีลักษณะการทาํ งานเปนแบบขนานคือแตละคําส่ังจะ ทํางานไปพรอ มกนั อยางไรก็ตามสามารถกําหนดใหภาษา VHDL มีการทํางานเปนลําดับไดโดยการ เขียนคําสั่งท่ีตองการใหมีการทํางานเปน ลาํ ดบั ไวภายในโปรเซส (Process) ซ่ึงเปนคาํ ส่ังทมี่ กี ารทาํ งาน เปนแบบขนาน แตคําสั่งท่ีอยูภายในโปรเซสจะมีการทํางานแบบลําดับโดยโปรเซสจะถูกเขียนไว ภายในอาชิเทคเชอร มีโครงสรา งเปน ดงั น้ี Process_nam e: Process(input1, input2,…,input n) variabl evariable_nam e: Datatype := intial _value; Begin Sequential _st atem ent 1; Sequential _st atem ent 2; End Process; รูปที่ 13.7 โครงสรา งโปรเซส 252

เอกสารประกอบการสอนวชิ าวงจรดิจิทัลและลอจิก โดย อาจารย กฤษณพงศ สมสขุ จากรปู ท่ี 13.7 Process_name: คอื ชอ่ื ของ Process ซงึ่ จะมหี รือไมกไ็ ด Input1, input2,…,inputn คือ จํานวนอินพุตท้ังหมดท่ีตองใชงานภายในโปรเซสและสง ผล โดยตรงตอผลลพั ธภาย ในโปรเซส โดยอนิ พุตแตละตวั จะถกู ค่ันดว ย “ ,” Variable_name คอื ตัวแปรวารเิ อเบอร ซ่ึงเปนตวั แปรแบบโลคอล (Local Variable) ซงึ่ จะถกู ใชงานอยูภายในโปรเซสเทานั้น การใชงานจะคลายกับตัวแปรสัญญาณ แตกตางกันตรงที่ตัวแปร สัญญาณจะมกี ารปรับปรุงขอมูลอยูภายนอกโปรเซส แตตัวแปรวาริเอเบอรจะมีการปรับปรุงขอมูล ภายในโปรเซส การกาํ หนดสถานะของผลการดาํ เนนิ การระหวา งอินพตุ ใหเอาตพุตท่ีเปนตัวแปรอาริเอเบอรจะ ใช “ :=” ซึง่ แตกตางกับการกาํ หนดคา ใหตัวแปรสัญญาณท่ีใช “ <=” รปู แบบ: เอาตพ ตุ := สญั ญาณอินพุต คําสงั่ เชงิ ลาํ ดบั จะถูกเขยี นไวภ ายในท่อี ยรู ะหวา ง Begin และ End โดยทีค่ าํ สั่งที่ถูกเขียนกอ นจะ ถูกประมวลผลกอน ซึ่งจากรูปที่ 13.5 Sequential_statement1 ถูกเขียนกอน Sequential statement2 ดังน้นั Sequential_statement1 จะถูกนําไปประมวลผลกอ น ตวั อยา งที่ 13-4 การออกแบบวงจรรปู 13.4 ดวยภาษา VHDL โดยใชต วั แปรวาริเอเบอร Entity EX_04 is Port ( a, b, c : in BIT; Z : out BIT); end EX_04; architect ure Behavioral of EX_04 is begin Process(a, b) variabl e x: BIT; begin x := a and b; z <= x or c; end Process; end Behavioral; 13.8 คําสั่งเง่ือนไข (Conditional statement) คาํ สงั่ เงอ่ื นไขเปน คาํ สง่ั ทใี่ ชส ําหรบั คมุ ทศิ ทางการทาํ งานของโปรแกรม โดยคําส่งั เง่ือนไขถูกแบง ออกเปน 2 วิธคี ือคาํ สง่ั ทม่ี กี ารทาํ งานเปนแบบขนาน และคําสั่งที่มีการทํางานแบบลําดบั โดยมที งั้ หมด 4 คาํ สง่ั ดังนี้ 253

เอกสารประกอบการสอนวิชาวงจรดจิ ิทัลและลอจกิ โดย อาจารย กฤษณพงศ สมสุข 13.8.1 คาํ ส่งั When – Else คาํ สง่ั ท่มี กี ารทาํ งานแบบขนาน โดยสถานะของสัญญาณเอาตพุตจะมีคาตรงกับสถานะ ของสญั ญาณหรือคาคงทที่ ีอ่ ยูห นา When ในกรณีท่เี งอ่ื นไขท่อี ยูหลงั When เปน จริง โครงสรางคําส่ัง เปน ดังน้ี signal_nam e<= expression_1 when co ndision1 else expression_2 when condision2 else … Expression_n; รปู ที่ 13.8 โครงสรา งคําสั่ง When – Else จากรูปท่ี 13.8 signal_name คือ ชอ่ื สญั ญาณเอาตพุต expression_1, expression_2,…,expression_n คือสถานะของคาคงท่ี หรืออินพุตท่ีจะ กาํ หนดใหสัญญาณเอาตพุตโดยข้นึ อยกู ับเงอ่ื นไขโดยจะตรวจสอบเงอ่ื นไขแรกกอน (condision1) ซึ่ง หากเปนจริงจะกําหนดสถานะของ expression_1 ใหสญั ญาณเอาตพ ตุ แตหากเงือ่ นไขเปนเท็จจะไป ตรวจสอบเง่ือนไขตอไป กรณีที่ไมมีเงอื่ นไขใดเลยท่ีเปนจริงจะกําหนดสถานะของ expression ตัว สุดทา ย (expression_n) ใหแกสญั ญาณเอาตพ ุตโดย expression ตวั สุดทายตอ งไมม ี คาํ สง่ั when – Else ตามหลัง ตวั อยา งท่ี 13-5 จงออกแบบวงจรมลั ติเพล็กเซอรแ บบ 2 อนิ พุตโดยใชค ําสง่ั When – Else โดยมี C เปน สญั ญาณทีใ่ ชเลือก พฤตกิ รรมของวงจร ดงั นี้ เมอ่ื C = 0แสดงผลลพั ธ Z = A C = 1 แสดงผลลพั ธ Z = B entity EX_05 is Port ( A, B, C : in BIT; Z : out BIT); end EX_05; architecture Behavioral of EX_05 is b egin Z <= A when C = '0' else B; end Behavioral; จากโปรแกรมมหี ลักการทาํ งานเปน ดังน้ี เมอ่ื C = 0 (เง่ือนไขเปนจรงิ ) จะได Z = A แตหากเงอื่ นไขเปนเท็จจะได Z = B 254

เอกสารประกอบการสอนวิชาวงจรดิจิทลั และลอจกิ โดย อาจารย กฤษณพงศ สมสุข เนือ่ งจาก C เปน ตวั แปรแบบ BIT ซ่ึงมเี พียง 2 สถานะคือ 0 หรือ 1 ดงั นัน้ กรณที ี่เงื่อนไขเปน เทจ็ จะเกดิ ขน้ึ เม่อื C มคี าเปน 1 13.8.2 คาํ สั่ง With – Select คาํ สัง่ ทมี่ ีการทํางานแบบขนาน โดยสถานะของสัญญาณเอาตพุตจะมคี าตรงกับสถานะ ของสัญญาณหรอื คา คงทท่ี ี่อยหู นา When ในกรณีทเ่ี ง่ือนไขท่ีอยูหลัง When มีคาตรงกับสัญญาณที่ อยหู ลงั With โครงสรางของคาํ สัง่ เปน ดงั นี้ Wit h select_signal select signal_nam e<= expression_1 when co ndision1; expression_2 when condision2; … expression_n when condision_n; รูปที่ 13.9 โครงสรา งคาํ สั่ง With – Select จากรปู ท่ี 13.9 signal_name คือ สญั ญาณเอาตพ ตุ expression_1, expression_2,…,expression_n คือสถานะของคาคงที่ หรืออินพุตที่ จะกําหนดใหสัญญาณเอาตพุตโดย ข้ึนอยูกับเง่ือนไข โดยเง่ือนไขใดที่ตรงกับสัญญาณ “ select_signal” จะกาํ หนดใหส ถานะของสญั ญาณเอาตพตุ มีคาตรงกับสถานะของสัญญาณที่อยูใน บรรทัดเดยี วกันกับเงื่อนไข เชน กรณีท่ี condision2 ตรงกับ select_signal ดังน้ัน signal_name จะมสี ถานะตรงกับ expression_2 เปนตน ตัวอยา งที่ 13-6 จงออกแบบวงจรทม่ี ีการทาํ งานเชนเดยี วกบั วงจรในตวั อยางท่ี 13-5 แตใหใชค าํ ส่งั With - Select entity EX_06 is Port ( A,B,C : in BIT; Z : out BIT); end EX_06; architecture Behavioral of EX_06 is b e gin with C select Z <= A when '0', B w hen '1'; end Behavioral ; 255

เอกสารประกอบการสอนวิชาวงจรดจิ ิทัลและลอจกิ โดย อาจารย กฤษณพงศ สมสุข 13.8.3 คาํ สง่ั If - Else เปน คาํ สงั่ ท่ีนิยมใชมากที่สุด โดยคําส่ัง If – Else จะเปนคําส่ังท่ีมีการทํางานเปนแบบ ลําดับ ดังนัน้ การใชงานจะตอ งอยูภายในคําสั่งโปรเซส โดยชุดคําส่ังที่จะถูกนําไปใชงานอยูในบล็อค ของเง่อื นไขท่เี ปน จรงิ โครงสรางของคาํ ส่ังเปนดงั น้ี if condition1 then sequential _st at em ent1; el sif condition2 then sequential _st at em ent2; … el se sequential _st at em entn; en d if รูปท่ี 13.10 โครงสรางคําสง่ั If – Else จากรูปท่ี 13.10 การทํางานจะเร่มิ ตรวจสอบเง่ือนไข condition1 กอ น ซ่ึงหากเงอื่ นไขเปนจริง โปรแกรมจะประมวลผลการทํางานที่ sequential_statement1 แตห ากเง่ือนไขเปนเท็จ โปรแกรม จะตรวจสอบเง่ือนไขถัดไป อยางไรก็ตามกรณีที่ไมมีเงื่อนไขท่ีเปนจริง โปรแกรมจะประมวลผล sequential_statementn ทอ่ี ยูใ นบล็อกของ else ซ่ึงเปนคําส่งั ที่อยูส ว นสุดทายของคําสง่ั If – Else โดยท่ีคําส่ัง If จะตองมีเสมอในโครงสรางของคําสั่ง If – Else แตคําสั่ง Else และคาํ ส่ัง Elsif จะมี หรอื ไมมกี ็ได ตัวอยา งที่ 13-7 จงออกแบบวงจรทีม่ ีการทาํ งานเชนเดยี วกบั วงจรในตัวอยา งท่ี 13-5 แตใ หใ ชค ําส่ัง If – El se entity EX_07 is Port ( A,B,C : in BIT; Z : out BIT); end EX_07; architecture Behavioral of EX_07 is begin Process(A,B) begin if C = '0' then Z <= A; el se Z <= 'B'; end if; end process; end Behavioral; 256

เอกสารประกอบการสอนวชิ าวงจรดิจิทลั และลอจกิ โดย อาจารย กฤษณพงศ สมสขุ 13.8.4 คาํ สัง่ Case - When คาํ สัง่ Case – When จะเปน คาํ สัง่ ทม่ี กี ารทํางานเปน แบบลาํ ดับเชน เดียวกนั กับคาํ ส่ัง If - Else ดงั นั้นการใชงานจะตอ งอยูภายในคําสั่งโปรเซส โดยชดุ คําสัง่ ทจี่ ะถูกนาํ ไปใชงานจะอยูใ นบลอ็ ก when ที่มีสถานะสัญญาณท่ีตรงกบั สถานะของสญั ญาณท่อี ยูหลงั case กรณีทไี่ มมีสญั ญาณทอี่ ยหู ลงั when ที่มีสถานะตรงกับสถานะที่อยูหลัง case โปรแกรมจะเลือกใชงานชุดคําส่ังที่อยูหลัง when others ซงึ่ จะเปน ชุดคําสัง่ ทอี่ ยูตําแหนงสุดทายของคําสั่ง Case – When โครงสรางของคําส่ังเปน ดังนี้ case expression is w hen choice_1 => sequent ial_statem ent1; w hen choice_2 => sequent ial_statem ent1; … w hen ot hers sequential_statem entn; end case รูปที่ 13.11 โครงสรา งคําสัง่ Case - When จากรปู ท่ี 13.11 ชุดคําสั่งท่ีจะถูกนําไปประมวลผลจะอยูในบรรทัดเดียวกันกับ choice ที่มี สถานะต รงกับ expression เชน choice_1 มีสถานะต รง กับ expression คําส่ัง sequential_statement1 จะเปน คาํ สัง่ ท่ีถูกนําไปประมวลผล เปนตน ตัวอยางท่ี 13-8 จงออกแบบวงจรทม่ี ีการทาํ งานเชน เดยี วกบั วงจรในตวั อยางท่ี 13-5 แตใหใชค าํ สงั่ Case - When entityEX_08 is Port ( A, B, C : in BIT; Z : out BIT); endEX_08; architecture Behavioral of EX_08 is begin Process(A,B) begin case C is w hen '0' => Z <= A; w hen others => Z <= B; end case; end process; end Behavioral ; 257

เอกสารประกอบการสอนวชิ าวงจรดิจิทัลและลอจกิ โดย อาจารย กฤษณพงศ สมสขุ 13.9 การสรา งสญั ญาณนาฬกิ า การสรา งสญั ญาณนาฬิกาโดยใชภาษา VHDL มีรูปแบบคาํ ส่งั เปนดงั น้ี รปู แบบ: signal_name’ event and signal_name = ‘ 0 (or 1)’ ; โดยที่ signal_name คือ สัญญาณท่ีจะนํามาใชเปนสัญญาณนาฬิกา ซึ่งมี 2 สถานะคือหาก signal_name มคี า เปน 0 เปนการเกดิ สัญญานาฬิกาทข่ี อบขาลง แตหาก signal_name มคี า เปน 1 เปนการเกดิ สัญญานาฬิกาทีข่ อบขาขนึ้ ตวั อยา งที่ 13-9 สรา งฟลปิ ฟลอปแบบ D ทใ่ี ชส ญั ญาณนาฬกิ าขอบขาลงโดยใชภ าษา VHDL entity EX_09 is Port ( D,CLK : in BIT; Q,notQ : out BIT); endEX_09; architecture Behavioral of EX_09 is begin Process(CLK) begin if CLK'event and CLK = '0' then Q <= D; notQ<= not D; end if; end process; end Behavioral ; จากโปรแกรมกําหนดให D คอื อินพตุ ของวงจร, CLK คือ อินพตุ ท่ใี ชสรา งเปนสญั ญาณนาฬิกา, Q และ notQ คือเอาตพุตของวงจรโดยที่ notQ คือ นิเสธของ Q การทํางานคือเม่ือเกิดสัญญาณ นาฬกิ า Q จะมคี าเทา กับสถานะของ D และ notQ จะมีสถานะตรงขามกบั Q ขอสงั เกต สญั ญาณ CLK เปนสัญญาณอินพุตเพียงตัวเดียวที่ถูกประกาศเปนอินพุตของคําสั่ง โปรเซส เนอ่ื งจาก CLK จะมผี ลตอสัญญาณ Q และ notQ โดยตรง ในขณะที่ D จะขึ้นอยูกับสัญญาณ CLK หากไมเ กดิ สญั ญาณ CLK สถานะ Q และ notQ จะไมม ีการเปล่ยี นแปลง 13.10 บทสรปุ ภาษา VHDL (ยอมาจาก VHSIC Hardware Description Language) เปน ภาษาระดบั สูงที่ใช สาํ หรบั การออกแบบทางดานฮารดแวรประเภทหนงึ่ ซึง่ เปนวิธีการออกแบบวงจรดิจิทัลโดยใชวิธีของ การเขียนโปรแกรมเพอ่ื จาํ ลองการทํางาน ซง่ึ สามารถพัฒนาไดงาย เน่ืองจากรูปแบบของคําสั่งตางๆ เปน ภาษาที่มนุษยอานไดเขาใจ ดังนน้ั การใชภ าษาระดบั สูงในการออกแบบวงจรดิจิทลั ท่ีมีขนาดใหญ จงึ เปนวธิ ีทีเ่ หมาะสมมากกวา หากเปรยี บเทียบกับวิธีของกาวาดผังวงจรข้ึนใชง านเอง 258

เอกสารประกอบการสอนวชิ าวงจรดจิ ิทลั และลอจกิ โดย อาจารย กฤษณพงศ สมสขุ คําถามทายการทดลอง 1. ภาษา VHDL คอื อะไร และมปี ระโยชนอ ยางไร 2. Entity คืออะไร และมไี วเ พือ่ อะไร 3. จงอธิบายโครงสรางท้งั หมดของ Entity มาโดยละเอยี ด 4. จงเขยี นคาํ สง่ั ในสว นเอ็นตติ เ้ี พอ่ื ออกแบบวงจร Y = A(B + C) 5. Architecture คืออะไร และมีไวเ พ่อื อะไร 6. จงอธิบายโครงสรางท้ังหมดของ Architecture มาโดยละเอยี ด 7. จาก Entity ท่ีไดในขอ 4 จงนาํ มาออกแบบวงจรในสว นของ Architecture 8. Package คอื อะไร และมีประโยชนอ ยางไร 9. จงอธิบายความแตกตางระหวางชนดิ ขอ มลู แบบ BIT และ BIT_VECTOR 10. จงอธิบายความแตกตางระหวางการเรียงบติ ขอมลู แบบ TO และ DOWNTO 11. จงอธบิ ายความแตกตางระหวาง Concurrence statem ent และ Sequential st atement 12. จงอธิบายความแตกตางระหวาง Signal และ Variable 13. จงออกแบบวงจรถอดรหสั โดยใชภ าษา VHDL ทแ่ี ปลงจากอินพตุ ทีเ่ ปนเลขฐานสองขนาด 10 บิต เปน รหสั เลขฐานสบิ โดยใช 13.1 คาํ สง่ั When – El se 13.2 คําส่งั With – Select 13.3 คาํ ส่งั If – Else 13.4 คําสั่ง Case – When 14. จงออกแบบฟลปิ ฟลอปแบบ JK ทใ่ี ชส ัญญาณนาฬิกาทขี่ อบขาลงโดยใชภ าษา VHDL 259

เอกสารประกอบการสอนวิชาวงจรดจิ ิทลั และลอจกิ โดย อาจารย กฤษณพงศ สมสขุ เอกสารอา งองิ Mark, Z. (2004). Digital System Design with VHDL. United Kingdom: Pearson Ed u cat io n . ชํานาญ ปญ ญาใส และ วชั รากร หนูทอง. (2547). ภาษา VHDL สําหรบั การออกแบบวงจรดิจติ อล. กรุงเทพฯ: หางหุน สวนจาํ กดั เอช-เอน การพิมพ. ณรงค ทองฉิม และ เจริญ วงษชุมเย็น. (2552). ออกแบบไอซีดิจิตอลดวย FPGA และ CPLD ภาคปฏบิ ัติโดยใชภ าษา VHDL ซอฟตแวรทูล ISE WebPack.กรุงเทพฯ: บริษัท วี.พริ้นท (1991) จาํ กดั . http:/ / hep.uchicago.edu/ ~tangjian/ SVT_sub/ FTK_ATLAS/ AUX/ vhdl -tutorial .pdf 260

เอกสารประกอบการสอนวชิ าวงจรดจิ ิทลั และลอจิก โดย อาจารย กฤษณพงศ สมสุข บรรณานกุ รม Morris, M, Charl es, R.K. (2007). Logic and Com puter Design Fundam entals. New Jersey: Prentice-Hal l International Inc. Marcovit z, A. B. (2009). Introduction to Logic Design. New York: McGraw-Hil l . Mark, B. (2003). Com plete Digital Design: A Com prehensive Guide to Digital Electronics and Com puter System Architecture. New York: McGraw-Hil l . David, M. H. (2012).Digital Design and Com puter Architecture. USA: Morgan Kaufm ann. Ram aswam y, P. (2011). Digital System s Design. United Kingdom : London Business School . Morris, M, Michael , D. C. (2006). Digital Design. New Jersey: Prentice-Hal l Int ernational In c. Mark, Z. (2004). Digital System Design with VHDL. United Kingdom: Pearson Ed u cat io n . สมชาย ช่ืนวฒั นาประณธิ ิ. (2535). ดิจติ อลอิเล็กทรอนิกส.จ. อุดรธาน:ี มหาวทิ ยาลัยราชภัฏอดุ รธานี. ธวชั ชยั เล่ือนฉวี และ อนุรักษ เถือ่ นศิริ. (2527). ดิจิตอลเทคนคิ เลม 1.กรงุ เทพฯ: มิตรนราการพิมพ. ธวัชชัย เลอ่ื นฉวี. (2532). ดิจติ อลเทคนคิ เลม 2.กรงุ เทพฯ: มิตรนราการพมิ พ. มงคล ทองสงคราม. (2544).ทฤษฎีดิจิตอล.กรงุ เทพฯ: หา งหนุ สว นจํากัด วี.เจ. พริ้นดิง้ . ทมี งานสมารทเลริ น น่งิ . (2543). ออกแบบวงจร Digital และประยุกตใ ชงาน.กรงุ เทพฯ: หา งหนุ สว น สามัญสมารท เลริ นนิ่ง. ชาํ นาญ ปญ ญาใส และ วชั รากร หนูทอง. (2547). ภาษา VHDL สําหรับการออกแบบวงจรดจิ ติ อล. กรงุ เทพฯ: หางหนุ สว นจํากดั เอช-เอน การพิมพ. 261

 


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook