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

ในบริบทของการทำงานกับผลิตภัณฑ์ซอฟต์แวร์ ผู้คนจะถูกแบ่งออกเป็นผู้ใช้และโปรแกรมเมอร์ (ผู้ดูแล ผู้ดำเนินการ ฯลฯ) บทความนี้กล่าวถึงความสัมพันธ์ระหว่างสองประเภทนี้

บางทีนี่อาจช่วยแก้ไขข้อขัดแย้งระหว่างมืออาชีพรุ่นเยาว์และผู้ใช้

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

บันทึกเล็กๆ หนึ่งฉบับ

ผู้ใช้ส่วนใหญ่ไม่ทราบถึงความแตกต่างระหว่างผู้ดูแลระบบ โปรแกรมเมอร์ หรือ Unixoid

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

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

การเป็นโปรแกรมเมอร์กำลังเป็นที่นิยมในขณะนี้ ภาพยนตร์สร้างขึ้นเกี่ยวกับโปรแกรมเมอร์ที่ประสบความสำเร็จ มีการเขียนหนังสือ และนักพัฒนาในหลายประเทศได้รับค่าตอบแทนที่ดี แม้ว่าแฟชั่นสำหรับ "นักเทคโนโลยี" และนวัตกรรม ยังมีหลายสิ่งที่รู้สำหรับโปรแกรมเมอร์ซึ่งสร้างความประหลาดใจให้กับผู้อื่น ผู้ร่วมให้ข้อมูลใน Quora ได้พูดคุยถึงความแตกต่างทางสังคมวัฒนธรรมและความรู้ความเข้าใจเหล่านี้ ด้านล่างนี้เป็นความคิดเห็นที่น่าสนใจที่สุดจากการสนทนา

ดังนั้น โปรแกรมเมอร์จึงไม่เหมือนคนทั่วไป:

1. พวกเขาเข้าใจว่าฉากลักทรัพย์ในภาพยนตร์เป็นเรื่องไร้สาระโดยสิ้นเชิง ตัวอย่างเช่น คุณสามารถอ่านได้ว่ารหัสที่ปรากฏบนหน้าจอของ "ผู้เชี่ยวชาญด้านไอที" ในภาพยนตร์มาจากไหน โดยทั่วไปแล้ว ภาพเหมารวมในภาพยนตร์หลายเรื่องเกี่ยวกับโปรแกรมเมอร์นั้นไร้สาระ Bill Coleman เขียนว่า “เราทุกคนไม่ใช่อัจฉริยะที่อ้วนและเกียจคร้าน ในชีวิตจริงเรารู้วิธีการสื่อสารตามปกติงานของเราขึ้นอยู่กับมัน และอย่าสับสนกับช่างไฟฟ้า หลายคนไม่มีหัวแร้งที่บ้านด้วยซ้ำ”

ผลกระทบหลักของ "การแฮ็ก" สำหรับผู้ที่ไม่ได้ฝึกหัดคือคอนโซลแบบเปิด “คนส่วนใหญ่จะคิดว่าฉันแค่จ้องมองหน้าจอและฆ่าเวลาเมื่อฉันทำงานจริงๆ แต่ทันทีที่คุณเปิดคอนโซลและเริ่มพิมพ์ พวกเขาจะมั่นใจว่าฉันกำลังพยายามแฮ็กเพนตากอนหรือทำสิ่งมหัศจรรย์อื่น ๆ” ผู้เข้าร่วมการสนทนาคนหนึ่งเขียน

3. พวกเขารู้ว่าในความเป็นจริง แม้แต่ซอฟต์แวร์ที่สำคัญที่สุดที่ผู้ใช้ใช้ทุกวันก็ยังมี "ไม้ค้ำยัน" จำนวนมากที่น่าสะพรึงกลัว ซึ่งมารวมกันเป็นชิ้นเดียวได้อย่างน่าอัศจรรย์ “มันเหมือนกับการแยกชิ้นส่วนเครื่องบินโบอิ้งและพบว่าเบรกถูกติดเข้าด้วยกัน” Ben Cherry หนึ่งในผู้เข้าร่วมการอภิปรายเขียน โปรแกรมเมอร์รู้ดีว่าข้อมูลทางการแพทย์ การเงิน และข้อมูลส่วนบุคคลจำนวนมหาศาลถูกจัดเก็บไว้โดยมีความปลอดภัยของระบบเพียงเล็กน้อย

5. พวกเขารู้: ถ้าคนๆ หนึ่งมีนิ้วมือหกนิ้ว ระบบตัวเลขหลักในโลกจะเป็นทศนิยม ไม่ใช่ 10 อย่างที่เป็นอยู่ตอนนี้

6. พวกเขาสามารถบอกชื่อกำลังของทั้งสองได้โดยไม่ต้องใช้เครื่องคิดเลขมากกว่าคนธรรมดา ตัวย่อ “k” ในสำนวนเช่น 100k นั้นไม่ได้เข้าใจว่าเป็น “x1000” แต่เป็น “x1024” แต่ในขณะที่คนธรรมดาส่วนใหญ่คิดว่าการเขียนโปรแกรมส่วนใหญ่เกี่ยวกับคณิตศาสตร์ แต่โปรแกรมเมอร์ก็รู้ดีว่าตรรกะต้องมาก่อน

7. พวกเขารู้ว่าสิ่งเรียบง่ายที่ซับซ้อนบนอินเทอร์เน็ตเป็นอย่างไร ท้ายที่สุดแล้ว การดำเนินการง่ายๆ เช่น การค้นหาอินเทอร์เน็ต ได้รับการสนับสนุนโดยกระบวนการที่ซับซ้อนมากมายในระดับต่างๆ

8. เชื่อว่าคนส่วนใหญ่คลุมเครือเกินไปเมื่อพยายามอธิบายสิ่งที่พวกเขาต้องการ


9. พวกเขาโกรธเมื่อคนธรรมดาจากญาติ เพื่อน และคนรู้จักมาขอ “ซ่อมคอมพิวเตอร์” อยู่ตลอดเวลา

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

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

อาชีพของโปรแกรมเมอร์และนักพัฒนามีอะไรเหมือนกันมากมาย และในชีวิตประจำวันคำเหล่านี้มักใช้เป็นคำพ้องความหมาย แต่มีความแตกต่างแม้ว่าจะไม่สังเกตเห็นได้ชัดเสมอไป ไม่เช่นนั้นเหตุใดแนวคิดเช่นนักพัฒนาซอฟต์แวร์ นักวิทยาศาสตร์คอมพิวเตอร์ และโปรแกรมเมอร์จึงปรากฏขึ้นเลย?

การเขียนโปรแกรม

ปัจจุบันไม่มีกฎตายตัวที่ชัดเจนว่าใครเรียกว่าโปรแกรมเมอร์และใครเรียกว่านักพัฒนา ดังนั้นจึงไม่มีทางออกอื่นนอกจากต้องหันไปหาต้นกำเนิด

คอมพิวเตอร์ อินเทอร์เน็ต การสื่อสารเคลื่อนที่ ตลอดจนสิ่งอัศจรรย์อื่นๆ อีกมากมายที่ขณะนี้เป็นสาธารณสมบัติ หากไม่ได้ประดิษฐ์ขึ้นโดยกองทัพ ไม่ช้าก็เร็วก็ตกอยู่ภายใต้การดูแลและการกำกับดูแลที่ละเอียดอ่อนไม่ช้าก็เร็ว หากบางสิ่งสามารถบิน ยิง ระเบิด หรือป้องกันการกระทำของศัตรูที่คล้ายกันได้ คุณจะมีทีมนักวิทยาศาสตร์ ลงชื่อและรับ. ในยุคเทคโนโลยีขั้นสูง ทหารที่ไม่มีนักวิทยาศาสตร์คงมีช่วงเวลาที่ยากลำบาก ท้ายที่สุด แม้แต่สิ่งเล็กๆ น้อยๆ เช่น รองเท้าคอมแบทและชุดเกราะก็ยังได้ซึมซับความรู้ทางเทคโนโลยีมากมาย เราจะพูดอะไรเกี่ยวกับการเขียนโปรแกรมปืนเลเซอร์และขีปนาวุธข้ามทวีป!

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

และแม้จะย้ายไปสู่อนาคตเป็นเวลาสองสามทศวรรษ แต่ก็ยังยากที่จะจินตนาการถึง Bill Gates บางคนที่จะประกอบคอมพิวเตอร์ในโรงรถที่มีความยาว 17 เมตรและสูงกว่า 2.5 เมตร ซึ่งจะประกอบด้วยชิ้นส่วน 765,000 ชิ้น ซิงโครไนซ์โดยใช้ 15 ชิ้น - เพลาเมตรและขับเคลื่อนด้วยมอเตอร์ไฟฟ้าที่มีกำลัง 5 แรงม้า เช่นเดียวกับ Mark-1 ซึ่งพัฒนาโดยนักคณิตศาสตร์จาก Harvard หลายคนภายใต้สัญญากับ IBM ในปี 1941

นี่เป็นงานที่ต้องใช้แรงงานมากเกินไปและต้องใช้สมองมาก ดังนั้นในอดีตใครก็ตามที่สร้างคอมพิวเตอร์จะต้อง "เต้น" กับมัน มีคอมพิวเตอร์ไม่กี่เครื่อง - เมื่อสิ้นสุดสงคราม "Colossi" เดียวกันเพียง 10 เครื่องเท่านั้นที่ใช้งานได้ เพียงไม่กี่ปีต่อมาโมเดลเชิงพาณิชย์รุ่นแรกก็เริ่มปรากฏขึ้น เช่น IBM 701 (ขายได้ 19 เครื่องในปีแรก) หรือ IBM 650 (ขายไปแล้ว 450 เครื่องในปีแรก) ห้องปฏิบัติการวิทยาศาสตร์ สายการบิน และสถาบันของรัฐ

และแม้ว่าตั้งแต่ปี 1965 ชาวอเมริกันเริ่มผลิต PDP-8 หลายพันเครื่องซึ่งมีราคา "เพียง" 18,000 ดอลลาร์ แต่ก็มีสถาปัตยกรรมหน่วยความจำที่ไม่สมบูรณ์ซึ่งเป็นสาเหตุที่ทำให้โครงการที่ต้องการทรัพยากรจำนวนมากล้มเหลว ดังนั้นการเขียนโปรแกรมในสมัยนั้นจึงไม่ใช่เรื่องง่าย (สวัสดีสำหรับฮาร์ดแวร์) และไม่สะดวกและเข้าถึงได้เหมือนในปัจจุบัน มีเพียงไม่กี่คนที่รู้วิธีการเขียนโปรแกรม มีเพียงไม่กี่คนที่สามารถสร้างรายได้จากสิ่งนี้ และตลอดเวลานี้โปรแกรมเมอร์ค่อนข้างสมควรที่จะรักษาชื่อเสียงของ "เด็กเนิร์ด" ผู้สวมเสื้อสเวตเตอร์ตัวเดียวกันและเป็นประจำในห้องสมุด อัจฉริยะจากนอกโลกที่ทำงานในสนามแคบ ๆ ที่คนทั่วไปไม่สามารถเข้าถึงได้

ในอดีต ผู้ที่มีสมองซึ่งรู้วิธีพูดคุยกับเครื่องจักรโดยใช้ชื่อจริงนั้น ทำงานเฉพาะในศูนย์อุตสาหกรรมการทหารหรือในสาขาวิทยาศาสตร์ จากที่นี่ โปรแกรมเมอร์ที่แท้จริงในความหมายทางประวัติศาสตร์ นี่คือบุคคลที่เขียนโปรแกรมสำหรับการป้องกัน/อาวุธที่ซับซ้อน สำหรับพลังการประมวลผลในสำนักออกแบบหรือสถาบันวิทยาศาสตร์บางแห่ง โปรแกรมหุ่นยนต์ จรวดสำหรับการบินในอวกาศ และอื่นๆ เฉพาะเรื่องที่มีความสำคัญระดับชาติเท่านั้น นวัตกรรมสูงสุด ดอกเบี้ยทางการเงินขาดหายไปหรือเกิดขึ้นที่สอง สาธารณชนไม่สนใจว่าพวกเขาบริจาคเงินจำนวนหลายพันล้านดอลลาร์ให้กับนักประดิษฐ์คอมพิวเตอร์และอินเทอร์เน็ต เช่นเดียวกับที่พวกเขาไม่สนใจว่าจะใช้เงินจำนวนเท่าใดในโครงการ Apollo แต่ตอนนี้ทุกคนมีคอมพิวเตอร์อยู่ในกระเป๋า และมีรูปธงและรูปรองเท้าบู๊ตบนดวงจันทร์ ไม่มีใครจำคนรวยได้ แต่ทุกคนจำผู้สร้างนวัตกรรมได้ เพราะฝ่ายแรกบริโภค ส่วนฝ่ายหลังเป็นผู้ให้

การพัฒนา

การเขียนโปรแกรมเชิงพาณิชย์ในรูปแบบบริสุทธิ์ไม่มีอยู่จริงและยังไม่มีอยู่ - คำว่า "การเขียนโปรแกรม" ไม่ชัดเจนในที่นี้ ที่นี่ การพัฒนา- อีกเรื่องหนึ่ง ความจริงที่ว่า Microsoft, IBM, HP, Apple และผู้บุกเบิกคอมพิวเตอร์รายอื่น ๆ กำลังจับตลาดและสร้างรายได้มหาศาลไม่ได้เปลี่ยนความจริงที่ว่าผลิตภัณฑ์ใหม่แต่ละรายการก้าวไปข้างหน้า พวกเขาแก้ไขปัญหาใหม่ๆ ที่ไม่สำคัญ

Torvalds เป็นโปรแกรมเมอร์หรือไม่? แน่นอน. ท้ายที่สุดเขาเขียนเคอร์เนล Linux ในกรณีนี้ มันไม่สำคัญเลยว่าเขาจะใช้แนวทางปฏิบัติและวิธีการพัฒนาที่ดีที่สุดในกระบวนการทำงานของเขาหรือไม่ (เช่น เขาตั้งชื่อตัวแปรอย่างถูกต้องหรือไม่ เขาใช้หน่วยความจำอย่างเหมาะสมหรือไม่ เป็นต้น) สิ่งสำคัญคือมันใช้งานได้ และผู้ชนะจะไม่ถูกตัดสิน เช่นเดียวกับที่ Brendan Eich ผู้สร้าง JavaScript ไม่ได้ถูกตัดสิน แม้ว่าจะมีบางอย่างก็ตาม

เป็นเจ้านายอัจฉริยะและพาร์ทไทม์ที่มีเลขศูนย์และเลขฉลาดกว่า Torvalds และ Eich ซึ่งเป็นโปรแกรมเมอร์หรือเปล่าถ้าสิ่งที่เขาทำคือการแก้ปัญหามาตรฐาน? เช่น เขาเขียนร้านค้าออนไลน์ คำถามสำคัญ: เป็นคนที่รับราชการในกองกำลังพิเศษ แต่ตอนนี้ทำงานเป็นเจ้าหน้าที่รักษาความปลอดภัยในร้านค้า ทหารกองกำลังพิเศษ หรือเจ้าหน้าที่รักษาความปลอดภัยหรือไม่? ยามหลายคนเพื่อให้ดูดีขึ้นในสายตาของตนเองโดยถูรอยสักของกองทัพอย่างมีความหมายเรียกตัวเองว่ากองกำลังพิเศษ ไม่ค่อยมีใครใส่คำว่า "อดีต" ติดกับอาชีพของตน แต่มีเพียงไม่กี่คนที่ยอมรับว่าพวกเขาสูญเสียคุณสมบัติและทำงานรักษาความปลอดภัย หรือพวกเขาเจ๋งเกินไปสำหรับตำแหน่งที่พวกเขาครอบครอง ดังนั้นจึงยิงปืนใหญ่ใส่นกกระจอก

โปรแกรมเมอร์ในปัจจุบันบางคนก็เหมือนกับทหารหน่วยรบพิเศษคนนี้ ซึ่งเห็นได้ชัดว่าไม่มีที่ว่างและทำงานเฉพาะในการหาเงิน และใช้ความสามารถของเขาจนหมดสิ้น มีผู้คนอีกประเภทหนึ่งที่ใหญ่กว่ามาก (99%) ที่เรียกตัวเองว่าโปรแกรมเมอร์ แต่จริงๆ แล้วคือนักพัฒนา (หมวดหมู่นี้ยังรวมถึงผู้เขียนโค้ดใจแคบด้วย) พวกเขาเขียนและเปลี่ยนแปลงโค้ดของตนเองหรือของผู้อื่น สื่อสารกับลูกค้า แก้ไขข้อผิดพลาดอย่างต่อเนื่อง - เพราะนักพัฒนาสามารถยอมให้พวกมันทำได้ พวกเขาไม่ได้ทำงานเพื่อความคิด แต่เพื่อเงิน วันนี้เพื่อคนหนึ่ง พรุ่งนี้เพื่ออีกคนหนึ่ง ใครจะเป็นผู้ให้มากกว่านี้?

ดังที่นักวิชาการคนหนึ่งกล่าวไว้ว่า “วิทยานิพนธ์เกี่ยวกับปรัชญาจะต้องจบลงด้วยการปฏิวัติ ไม่เช่นนั้นจะไม่ใช่วิทยานิพนธ์”; หรือตามความเห็นของเรา งานของโปรแกรมเมอร์ควรจบลงด้วยความก้าวหน้าทางเทคโนโลยี มิฉะนั้นนี่ไม่ใช่งานของโปรแกรมเมอร์

และอย่าปล่อยให้บันทึกการจ้างงาน "วิศวกรซอฟต์แวร์ประเภทแรก" ทำให้เข้าใจผิด HR เองก็ไม่รู้ว่ากำลังทำอะไรอยู่ โดยใช้ตราประทับของประเทศที่หายไปเมื่อ 25 ปีที่แล้ว สิ่งที่คุณต้องทำคือถามคำถามนำ: “ตอนนี้คุณกำลังทำอะไรอยู่?” เพราะคุณสามารถพัฒนาที่ซับซ้อนได้เท่าที่คุณต้องการด้วยสถาปัตยกรรมที่ยุ่งยากและเข้าใจยาก อัดแน่นไปด้วยการพึ่งพาและองค์ประกอบทำลายสมองมากมาย ซึ่งต้องใช้ความสามารถทางจิตที่ไม่ธรรมดา แต่ถ้านี่คือร้านค้าออนไลน์ "บริการ" ปลอมอื่น ๆ หุ่นยนต์สแปมหรือเกมเบราว์เซอร์ God Forbid และบุคคลนั้นไม่ได้เขียนโปรแกรมในเวลาว่างก็มีกลิ่นเหมือนการพัฒนา ดังคำว่า “การพัฒนาแหล่งน้ำมัน”

ดังนั้นสำหรับคำถามที่ว่า “คุณทำอะไร?” คำตอบที่ถูกต้องกว่านี้อาจเป็น “หัวใจของฉันเป็นโปรแกรมเมอร์ แต่ฉันทำงานเป็นนักพัฒนา” “ฉันเป็นนักพัฒนา แต่สักวันหนึ่ง ฉันจะเป็นโปรแกรมเมอร์” หรือ “ฉันเป็นนักพัฒนา ฉันสับ กะหล่ำปลี." เมื่อสถานการณ์ต้องการคำตอบที่ไม่ถูกต้องและรวดเร็ว "โปรแกรมเมอร์" ก็สามารถเข้าใจได้ นักพัฒนาในบริบทของซอฟต์แวร์ คำนี้ค่อนข้างใหม่ แต่การเรียกตัวเองว่าเป็นโปรแกรมเมอร์ในขณะที่ดื่มน้ำผลไม้ที่ชานเมืองกำลังหลอกตัวเอง

FPGA ย่อมาจาก "Field Programmable Gate Array" และเป็นอาร์เรย์เกตขนาดใหญ่ที่สามารถตั้งโปรแกรมและสร้างใหม่ได้ทุกที่ทุกเวลา ผู้ใช้จำนวนมากยังไม่เข้าใจว่า FPGA คืออะไร “ประตูชุดใหญ่” เป็นคำอธิบายแบบง่ายของแบบจำลอง FPGA บางตัวมีฮาร์ดบล็อกในตัว: ตัวควบคุมหน่วยความจำ อินเทอร์เฟซการสื่อสารความเร็วสูง และอุปกรณ์ปลายทาง PCIe มีประตูมากมายภายใน FPGA ที่สามารถเชื่อมต่อเข้าด้วยกันได้อย่างอิสระ หลักการทำงานมีความคล้ายคลึงกับการเชื่อมต่อวงจรไมโครองค์ประกอบลอจิกแต่ละตัวไม่มากก็น้อย FPGA ผลิตโดยบริษัทชั้นนำของโลก Xilinx, Altera และ Microsemi

ประวัติความเป็นมาของการพัฒนา FPGA

อุตสาหกรรม FPGA เติบโตจากหน่วยความจำแบบอ่านอย่างเดียวที่ตั้งโปรแกรมได้ของ PROM และอุปกรณ์ลอจิก PLD ในปี 1970 Philips ได้คิดค้นเมทริกซ์ที่ตั้งโปรแกรมได้ภาคสนาม ในการออกแบบ FPGA ดังกล่าว ซึ่งประกอบด้วยสองแผน ได้มีการนำวงจรลอจิกไปใช้โดยเฉพาะ: แบบมีสายแบบตั้งโปรแกรมได้ “AND” หรือ “OR” สิ่งนี้ทำให้เธอมีโอกาสใช้ฟังก์ชันในรูปแบบของผลรวมของผลิตภัณฑ์

Altera ก่อตั้งขึ้นในปี พ.ศ. 2526 และในปี พ.ศ. 2527 ได้เปิดตัวอุปกรณ์ลอจิกที่ตั้งโปรแกรมใหม่ได้ตัวแรกของอุตสาหกรรม นั่นคือ EP300 พร้อมหน้าต่างควอตซ์ในบรรจุภัณฑ์ ซึ่งทำให้สามารถใช้หลอดอัลตราไวโอเลตบนเมทริกซ์เพื่อลบแท็ก EPROM

เพื่อเอาชนะความท้าทายด้านต้นทุนและความเร็ว จึงได้มีการพัฒนาลอจิกอาเรย์แบบตั้งโปรแกรมได้ซึ่งมีอินพุต "AND" ที่ตั้งโปรแกรมได้เพียงอินพุตเดียวในเกท "OR" แบบคงที่ PAL และ PLA พร้อมด้วยตัวแปรอื่นๆ ถูกจัดกลุ่มเป็นอุปกรณ์ลอจิกแบบตั้งโปรแกรมได้แบบง่าย (SPLD) FPGA ดังกล่าวซึ่งรวมอยู่ในชิปตัวเดียวที่มีการเชื่อมต่อระหว่างกันสำหรับการเชื่อมต่อระหว่างกันของซอฟต์แวร์ในบล็อก ถูกนำมาใช้เพื่อตอบสนองความต้องการทางเทคโนโลยีที่เพิ่มขึ้น เรียกว่า PLD ที่ครอบคลุมและพัฒนาโดย Altera

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

แนวคิดในการพัฒนา FPGA ที่ใช้งานได้ในเชิงพาณิชย์เครื่องแรกเป็นของ Ross Freeman ผู้ร่วมก่อตั้ง Xilinx และ Bernard Vonderschmitt XC2064 ได้รับการประดิษฐ์ขึ้นในปี 1985 และประกอบด้วยบล็อกลอจิกที่กำหนดค่าได้ 64 บล็อก พร้อมด้วยตารางค้นหา 3 ตาราง ช่วยให้เกิดความเข้าใจสมัยใหม่ว่า FPGA คืออะไร ช่วงปลายปี พ.ศ. 2523 สตีฟ แคสเซลแมนเสนอการทดลองเพื่อสร้างคอมพิวเตอร์ที่มีประตูโปรแกรมใหม่จำนวน 6,000,000 ประตู พบผู้สนับสนุนในแผนกสงครามพื้นผิวของกองทัพเรือสหรัฐฯ และได้รับสิทธิบัตรในปี พ.ศ. 2535

ภายในสิ้นปี 1990 มีการแข่งขันกันมากขึ้นในอุตสาหกรรม FPGA และส่วนแบ่งการตลาดของ Xilinx ก็เริ่มลดลง ผู้เล่นเช่น Actel, Altera, Lattice, QuickLogic, Cypress, Lucent และ SiliconBlue ได้สร้างตลาดเฉพาะในตลาด FPGA ระดับโลกพร้อมกับ Xilinx ในปี 1997 Adrian Thompson ประสบความสำเร็จในการรวมการเขียนโปรแกรม FPGA และเทคโนโลยีอัลกอริทึมทางพันธุกรรมเข้ากับ FPGA ซึ่งถือเป็นการเปิดศักราชใหม่ของ Evolvable

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

หลักการเขียนโปรแกรม

การเขียนโปรแกรม FPGA สำหรับผู้เริ่มต้นคือกระบวนการเรียนรู้ การวางแผน การออกแบบ และการนำโซลูชันไปใช้งานบน FPGA จำนวนและประเภทของเค้าโครงจะแตกต่างกันไปในแต่ละโปรแกรม การสร้างเอกสารข้อกำหนดและการสร้างเอกสารการออกแบบที่อธิบายว่าจะนำโซลูชันที่นำเสนอไปใช้อย่างไรจะมีประโยชน์มากในการแก้ปัญหาที่อาจเกิดขึ้น

เวลาที่ใช้ในการสร้างเอกสารการออกแบบที่มีคุณภาพจะช่วยประหยัดเวลาในอนาคตในการปรับโครงสร้างใหม่ การดีบัก และการแก้ไขข้อผิดพลาด การใช้โซลูชันโดยใช้การเขียนโปรแกรม FPGA เกี่ยวข้องกับการสร้างโครงการโดยใช้วิธีแนะนำการออกแบบวิธีใดวิธีหนึ่ง ซึ่งรวมถึงแผนผังหรือโค้ด HDL เช่น Verilog หรือ VHDL FPGA สามารถตั้งโปรแกรมไฟล์เอาต์พุตไปยังอุปกรณ์ FPGA จริงโดยใช้เครื่องมือการเขียนโปรแกรม FPGA ของ Altera การแนะนำการออกแบบแผนผังไม่ได้ใช้ในอุตสาหกรรมอีกต่อไป การสังเคราะห์และการเขียนโปรแกรมเกือบทั้งหมดได้รับการดูแลโดยเครื่องมือของผู้จำหน่าย เช่น ISE และ Vivado และเครื่องมือกำหนดค่า Numato Lab

RTL ย่อมาจาก Register Transfer Level ผู้ออกแบบอาจพบคำว่า Register Transfer Logic หรือ Register Transfer Language ซึ่งทั้งหมดนี้มีความหมายเหมือนกันในบริบทของการออกแบบฮาร์ดแวร์ RTL เป็นนามธรรมระดับที่สูงกว่าสำหรับการออกแบบฮาร์ดแวร์ดิจิทัล ซึ่งอยู่ระหว่างการสร้างแบบจำลองพฤติกรรมอย่างเคร่งครัดที่ปลายด้านหนึ่งกับโครงสร้างล้วนๆ ที่ระดับเกตเวย์ที่อีกด้านหนึ่ง

การสร้างแบบจำลองเกทหมายถึงการอธิบายฮาร์ดแวร์โดยใช้เกทพื้นฐาน ซึ่งค่อนข้างน่าเบื่อ RTL สามารถมองได้ว่าคล้ายคลึงกับคำว่า "pseudocode" ที่ใช้ในพื้นฐานของการเขียนโปรแกรม FPGA คุณสามารถอธิบายการออกแบบฮาร์ดแวร์เป็นชุดของขั้นตอนหรือการไหลของข้อมูลจากรีจิสเตอร์ชุดหนึ่งไปยังชุดถัดไปในแต่ละรอบสัญญาณนาฬิกา

RTL เรียกอีกอย่างว่าการออกแบบ "กระแสข้อมูล" เมื่อการออกแบบ RTL พร้อมแล้ว จะกลายเป็นโค้ด HDL จริงได้ง่ายขึ้นโดยใช้ภาษาต่างๆ เช่น Verilog, VHDL, SystemVerilog หรือภาษาคำอธิบายฮาร์ดแวร์อื่นๆ

FPGA เป็นมากกว่าเกทจำนวนมาก แม้ว่าจะเป็นไปได้ที่จะสร้างวงจรลอจิคัลของความซับซ้อนใด ๆ โดยการจัดระเบียบและเชื่อมต่อองค์ประกอบลอจิคัล เป็นวิธีแสดงตรรกะในรูปแบบง่ายๆ ที่สามารถเปลี่ยนเป็นอาร์เรย์ขององค์ประกอบได้ในที่สุด สองวิธีที่ได้รับความนิยมในการทำเช่นนี้คือการแนะนำสคีมาและภาษาคำอธิบายฮาร์ดแวร์ HDL ก่อนที่จะมีการใช้อย่างแพร่หลาย วิศวกรได้ออกแบบทุกอย่างโดยใช้แผนภาพวงจร มันง่ายมากสำหรับโครงการขนาดเล็ก แต่ไม่สามารถจัดการได้อย่างเจ็บปวดสำหรับโครงการขนาดใหญ่ ใคร ๆ ก็สามารถจินตนาการได้ว่าวิศวกรของ Intel วาดไดอะแกรมสำหรับ Pentium ซึ่งมีเกตเวย์นับล้านได้อย่างไร! นี่เป็นเรื่องยากที่ยอมรับไม่ได้

Verilog เป็นภาษาคำอธิบายฮาร์ดแวร์ HDL ที่สามารถใช้สำหรับวงจรดิจิทัลในรูปแบบข้อความ การเรียนรู้ Verilog นั้นไม่ใช่เรื่องยากหากผู้ใช้มีประสบการณ์ด้านการเขียนโปรแกรมมาก่อน VHDL เป็นอีกหนึ่ง HDL ยอดนิยมที่ใช้กันอย่างแพร่หลายในอุตสาหกรรม Verilog และ VHDL ได้รับการยอมรับไม่มากก็น้อยในตลาด แต่ผู้ใช้มักจะเลือก Verilog เนื่องจากง่ายต่อการเรียนรู้และมีความคล้ายคลึงทางวากยสัมพันธ์กับภาษา C

FPGA ถือได้ว่าเป็น Building Block ที่ช่วยให้สามารถกำหนดค่าฮาร์ดแวร์ที่ต้องการได้ นี่เป็นรูปแบบพิเศษของ PLD ที่มีความหนาแน่นสูงกว่าและฟังก์ชันการทำงานที่ได้รับการปรับปรุงในระยะเวลาอันสั้นโดยใช้ CAD FPGA มีให้เลือกหลายรุ่นขึ้นอยู่กับเทคโนโลยีการเขียนโปรแกรมที่ใช้

สามารถตั้งโปรแกรมได้โดยใช้:

  1. เทคโนโลยีแอนตี้ฟิวส์
  2. การเขียนโปรแกรมโดยใช้เทคโนโลยีแฟลชเป็นอุปกรณ์จาก Actel
  3. FPGA สามารถตั้งโปรแกรมใหม่ได้หลายพันครั้ง โดยใช้เวลาไม่กี่นาทีในการเขียนโปรแกรมใหม่ และมีหน่วยความจำแบบไม่ลบเลือน

FPGA ที่ใช้เทคโนโลยี SRAM นำเสนอการเขียนโปรแกรมซ้ำได้ไม่จำกัด และการกำหนดค่าใหม่ที่รวดเร็วมากหรือการกำหนดค่าใหม่บางส่วนระหว่างการทำงานโดยใช้วงจรเพิ่มเติมจำนวนเล็กน้อย บริษัทส่วนใหญ่เช่น Altera, Actel, Atmel และ Xilinx ผลิตอุปกรณ์เหล่านี้

บล็อกลอจิกที่กำหนดค่าได้

โดยไม่คำนึงถึงผู้ผลิตที่แตกต่างกันและสถาปัตยกรรมและชุดคุณสมบัติที่แตกต่างกันเล็กน้อย FPGA ส่วนใหญ่ก็มีแนวทางร่วมกัน บล็อกส่วนประกอบพื้นฐานของ FPGA ใดๆ ก็ตามคือ "บล็อกลอจิก" (CLB) ที่ตั้งโปรแกรมได้แบบยืดหยุ่น ล้อมรอบด้วย "บล็อกอินพุต/เอาต์พุต" ที่ตั้งโปรแกรมได้ พร้อมด้วยลำดับชั้นของช่องเส้นทางที่เชื่อมต่อบล็อกต่างๆ บนบอร์ด

นอกจากนี้ อาจประกอบด้วย DLL สำหรับการแจกจ่ายและการจัดการนาฬิกาและบล็อกหน่วยความจำ RAM เฉพาะโดยที่ Building Block หลักเป็นเซลล์แบบลอจิคัล ส่วนหลังประกอบด้วยตัวสร้างฟังก์ชันอินพุต ลอจิกการถ่ายโอน และองค์ประกอบการจัดเก็บข้อมูล เครื่องกำเนิดไฟฟ้าถูกนำมาใช้เป็นตารางการค้นหาและขึ้นอยู่กับการแนะนำ ตัวอย่างเช่น Xilinx Spartan II มี LUT อินพุต 4 ตัว โดยแต่ละตัวมี RAM แบบซิงโครนัส 16X1 บิต โดยใช้มัลติเพล็กเซอร์เป็นรีจิสเตอร์ shift เพื่อบันทึกข้อมูลในโหมดต่อเนื่อง องค์ประกอบการจัดเก็บข้อมูลจะไวต่อขอบของทริกเกอร์หรือระดับของสไลด์

  1. ตรรกะทางคณิตศาสตร์ประกอบด้วยเกต XOR เพื่อใช้งานตัวบวกแบบเต็มและจัดสรรสายดำเนินการแบบลอจิคัล
  2. บล็อก I/O และเมทริกซ์การกำหนดเส้นทาง บล็อกนี้มีอินพุตและเอาต์พุตที่รองรับมาตรฐานการส่งสัญญาณและอินเทอร์เฟซที่หลากหลาย

บล็อก I/O พื้นฐานแสดงอยู่ด้านล่าง

บัฟเฟอร์ในเส้นทางอินพุตและเอาต์พุตจะกำหนดเส้นทางสัญญาณไปยังตรรกะภายในและแผ่นเอาต์พุตโดยตรงหรือผ่านฟลิปฟล็อป สามารถกำหนดค่าให้เป็นมาตรฐานการส่งสัญญาณที่รองรับได้หลากหลาย ซึ่งสามารถกำหนดโดยผู้ใช้และติดตั้งภายนอกได้

เมทริกซ์การกำหนดเส้นทาง

ในสายการประกอบใดๆ ส่วนที่ช้าจะเป็นตัวกำหนดความสามารถในการผลิตโดยรวม อัลกอริธึมการกำหนดเส้นทางใช้เพื่อออกแบบเส้นทางที่มีประสิทธิภาพสูงสุดเพื่อให้ได้ประสิทธิภาพสูงสุด การกำหนดเส้นทางเกิดขึ้นในระดับที่แตกต่างกัน เช่น ในท้องถิ่น การกำหนดเส้นทางวัตถุประสงค์ทั่วไประหว่าง CLB ที่แตกต่างกัน การกำหนดเส้นทาง I/O ระหว่างบล็อกและ CLB การกำหนดเส้นทางเฉพาะสำหรับคลาสสัญญาณเฉพาะเพื่อเพิ่มประสิทธิภาพสูงสุด และการกำหนดเส้นทางทั่วโลกเพื่อกระจายนาฬิกาและสัญญาณอื่น ๆ ด้วยพัดลมขนาดใหญ่มาก ออก. . กลุ่มผลิตภัณฑ์ FPGA ยังมีโครงสร้างบล็อก RAM ขนาดใหญ่เพื่อเสริม RAM LUT แบบกระจาย ซึ่งขนาดจะแตกต่างกันไปตามอุปกรณ์ FPGA ต่างๆ

การออกแบบ FPGA เกี่ยวข้องกับแนวทางเดียวกันกับระบบ VLSI ใดๆ โดยมีขั้นตอนหลักคือการออกแบบ การจำลองพฤติกรรม การสังเคราะห์ การจำลองหลังการสังเคราะห์ การแปล การทำแผนที่และการกำหนดเส้นทาง และการวิเคราะห์ที่ตามมา เช่น การจำลองเวลา และการวิเคราะห์เวลาแบบคงที่ ในคอมพิวเตอร์ การออกแบบจะปรากฏตามลำดับและเรียงต่อกัน แต่ในความเป็นจริง มีตำแหน่งและการกำหนดเส้นทางที่ไม่ดี ส่งผลให้ประสิทธิภาพการทำงานไม่ดี

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

คุณภาพประตูและปัญหา

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

บ่อยครั้งที่นักออกแบบและผู้ใช้ที่ไม่มีประสบการณ์ต้องเผชิญกับภาวะที่กลืนไม่เข้าคายไม่ออกว่า FPGA มีประสิทธิภาพเพียงใดจึงเหมาะสมกับการออกแบบของพวกเขา ผู้ผลิตมักระบุหน่วยเมตริก เช่น "จำนวนเกต" ตัวอย่างเช่น การเขียนโปรแกรม Xilinx FPGA ใช้ 3 เมตริกในการวัดความจุ FPGA เกตสูงสุด บิตหน่วยความจำสูงสุด และช่วงเกตทั่วไป ตราบใดที่มีความสอดคล้องกัน การโยกย้ายระหว่างโมเดลก็ค่อนข้างง่ายกว่า แต่ก็ไม่ค่อยมีการเปรียบเทียบที่แม่นยำระหว่างผู้จำหน่าย เนื่องจากความหลากหลายในสถาปัตยกรรมและความแตกต่างด้านประสิทธิภาพ

ตัวบ่งชี้ที่ดีที่สุดคือการเปรียบเทียบประเภทและปริมาณของทรัพยากรเชิงตรรกะที่มีให้ นอกจากนี้ผู้ออกแบบจะต้องเข้าใจอย่างถ่องแท้ถึงสิ่งที่ต้องการจากอุปกรณ์อย่างแท้จริง เนื่องจากผู้ผลิตจะมีคุณสมบัติที่จะสร้างความแตกต่างให้กับงานน้อยที่สุด ตัวอย่างเช่น Stratix II EP2S180 ของ Altera มี LUT 4 อินพุตประมาณ 1,86,576 LUT ในขณะที่ Xilinx Virtex-4 XC4VLX200 มี 1,78,176 ตามลำดับ อย่างไรก็ตาม หากการออกแบบต้องการเพียง 177,000 LUT ก็เพียงพอแล้ว

หาก RAM เป็นตัวชี้วัดที่ต้องการสำหรับนักออกแบบ ดังนั้นทั้ง 6Mbit Xilinx XC4VLX200 และ 9Mbit Altera EP2S180 ก็คงไม่เหมาะกว่ารุ่น 9.9Mbit XC4VFX140 ที่เก่ากว่าซึ่งมีการโฆษณาน้อยกว่า

ภาษาโปรแกรมและซอฟต์แวร์

การเขียนโปรแกรม Altera FPGA สำหรับผู้เริ่มต้นเริ่มต้นด้วยการเลือกภาษา ตัวเลือก C, C++ หรือ System C ช่วยให้คุณสามารถใช้ประโยชน์จากความสามารถของอุปกรณ์ที่ใหญ่ที่สุด และในขณะเดียวกันก็บรรลุการพัฒนากราฟิกที่สมจริง ความสามารถในการใช้ C สำหรับการออกแบบ FPGA นั้นมาจาก HLS (การสังเคราะห์ระดับสูง) ซึ่งใกล้จะถึงการพัฒนามาเป็นเวลาหลายปีด้วยเครื่องมืออย่าง Handle-C สิ่งนี้ได้กลายเป็นความจริงเมื่อเร็วๆ นี้โดยผู้จำหน่ายรายใหญ่ Altera และ Xilinx นำเสนอ HLS ในชุดเครื่องมือ Spectra-Q และ Vivado HLx ตามลำดับ

มีการใช้งานการเขียนโปรแกรม Altera FPGA สำหรับผู้เริ่มต้นที่ใช้ C อื่นๆ จำนวนมาก เช่น OpenCL ซึ่งมีไว้สำหรับนักพัฒนาซอฟต์แวร์ที่ต้องการเพิ่มประสิทธิภาพด้วย FPGA โดยไม่ต้องมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับการออกแบบ FPGA

เช่นเดียวกับ HDL HLS มีข้อจำกัดเมื่อใช้วิธีการเขียนโปรแกรม FPGA ในภาษา C เช่นเดียวกับ HDL แบบดั้งเดิม นักพัฒนาจะต้องทำงานกับชุดย่อยของภาษา ตัวอย่างเช่น เป็นการยากที่จะสังเคราะห์และใช้การเรียกของระบบ เนื่องจากคุณต้องแน่ใจว่าทุกอย่างมีขอบเขตและมีขนาดคงที่ ข้อดีของ HLS คือคุณสามารถพัฒนาอัลกอริธึมจุดลอยตัวของคุณเองได้ และมีเครื่องมือ HLS สำหรับการแปลงจุดลอยตัวเป็นจุดคงที่

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

ขั้นตอนการออกแบบ

การฝึกอบรมการเขียนโปรแกรม FPGA สามารถทำได้ทางออนไลน์ เนื่องจากแพลตฟอร์มดังกล่าวมีการนำเสนออย่างดีบนอินเทอร์เน็ต เมื่อตั้งค่า FPGA ขั้นตอนแรกคือการออกแบบวงจรซึ่งต้องใช้ความรู้ด้านอิเล็กทรอนิกส์ดิจิทัล ต่างจากการเขียนโปรแกรมตรงที่จะเริ่มการแบ่งส่วนโค้ดได้ยากกว่ามากหากสถาปัตยกรรมของโปรแกรมไม่ชัดเจน ทันทีที่ชัดเจนว่าต้องดำเนินการอะไรบ้าง เราจะเริ่มอธิบายวงจรโดยใช้ภาษาใดภาษาหนึ่ง: Verilog หรือ VHDL

ข้อเท็จจริงที่แสดงให้เห็นการเปลี่ยนแปลงกระบวนทัศน์ก็คือ ภาษาเหล่านี้ไม่ได้เรียกว่าภาษาโปรแกรม FPGA แต่เป็นภาษาคำอธิบาย เนื่องจากความซับซ้อนของการทดสอบวงจรดิจิทัล จึงมักจะใช้ชุดทดสอบที่จำลองพฤติกรรมของอุปกรณ์ในขั้นตอนนี้ เครื่องมือประเภทนี้ช่วยให้คุณเห็นสถานะของสัญญาณได้ตลอดเวลาและตรวจสอบว่ามีการเปลี่ยนแปลงกับผลลัพธ์ที่ต้องการหรือไม่

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

ฮาร์ดแวร์และการตั้งค่า

Intel Quartus Prime Software Suite Lite Edition เป็นซอฟต์แวร์การออกแบบ FPGA เหมาะสำหรับผู้เริ่มต้นเนื่องจากสามารถดาวน์โหลดได้ฟรีและไม่ต้องใช้ไฟล์ลิขสิทธิ์ คุณสามารถดาวน์โหลดซอฟต์แวร์ได้จากเว็บไซต์ของผู้ผลิต ไฟล์มีขนาดใหญ่ (หลายกิกะไบต์) และอาจใช้เวลานานในการดาวน์โหลดและติดตั้ง เพื่อลดเวลาและพื้นที่ดิสก์ที่ต้องการให้เหลือน้อยที่สุด ขอแนะนำให้ดาวน์โหลดเฉพาะรายการที่จำเป็นสำหรับงานของผู้ใช้ เมื่อได้รับแจ้งให้ดาวน์โหลดไฟล์ ให้ยกเลิกการเลือก "เลือกทั้งหมด" และเลือกเฉพาะอุปกรณ์ที่รองรับ Quartus Prime และ Cyclone V

อัลกอริทึมสำหรับการสร้างโครงการ:

  1. เปิดตัวช่วยสร้างโครงการใหม่
  2. เลือก ถัดไป > ไดเร็กทอรี > ชื่อ > ออบเจ็กต์ระดับบนสุด
  3. เลือกไดเร็กทอรีเพื่อวางโปรเจ็กต์ เช่น "Blink" และวางไว้ในโฟลเดอร์ intelFPGA_lite แต่คุณสามารถวางไว้ที่ใดก็ได้แล้วคลิก "ถัดไป"
  4. เมื่อได้รับแจ้งให้สร้างไดเร็กทอรี ให้เลือกใช่
  5. เลือก “โครงการว่าง” และคลิก “ถัดไป”
  6. เพิ่มไฟล์และ "ถัดไป"
  7. ตั้งค่าตระกูล อุปกรณ์ และบอร์ดโดยเลือกดังต่อไปนี้: ตระกูล - Cyclone V, อุปกรณ์ - Cyclone V SE, ฐาน, ชื่ออุปกรณ์: 5CSEBA6U2317
  8. หากต้องการเลือกอุปกรณ์เฉพาะ คุณต้องกดลูกศรขึ้น/ลงเพื่อดูรายการอุปกรณ์ที่รองรับจนกว่า 5CSEBA6U2317 จะปรากฏขึ้น
  9. ผู้ใช้อาจต้องขยายช่อง "ชื่อ" เพื่อดูชื่อเต็มของอุปกรณ์ คลิก "ถัดไป"
  10. เมื่อตั้งค่าเครื่องมือ EDA จะใช้เครื่องมือมาตรฐาน จึงไม่มีการเปลี่ยนแปลง คลิก "ถัดไป" และ "เสร็จสิ้น" หน้าจอสรุปจะปรากฏขึ้น
  11. สร้างไฟล์ HDL โดยฝัง Verilog เป็น HDL
  12. ไปที่แท็บไฟล์ (หน้าต่างหลัก) และเลือกใหม่
  13. เลือกไฟล์ Verilog HDL แล้วคลิกตกลง
  14. เลือก "ไฟล์"> "บันทึกเป็น"
  15. เลือกชื่อไฟล์ นี่คือชื่อไฟล์ระดับบนสุดและจะต้องเหมือนกับชื่อโปรเจ็กต์
  16. คลิก "บันทึก"
  17. สร้างโมดูล Verilog
  18. คัดลอกและวางโค้ด Verilog ด้านล่างลงในหน้าต่าง Blink.v จากนั้นบันทึกไฟล์โค้ด
  19. คลิกขวาที่ "การวิเคราะห์และการสังเคราะห์" จากนั้นคลิก "เริ่ม" เพื่อทำการตรวจสอบไวยากรณ์และการสังเคราะห์โค้ด Verilog

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

โปรแกรมเมอร์ที่มีประสบการณ์ทุกคนรู้ดีว่าโปรแกรมที่ซับซ้อน แม้แต่รูทีนย่อยก็ยังทำงานไม่ถูกต้องในครั้งแรก ความสามารถด้านนามธรรมของมนุษย์โดยอาศัยประสบการณ์ ทำให้เขาสามารถค้นหาวิธีแก้ไขโดยไม่ต้องกังวลกับรายละเอียดที่เล็กที่สุด แต่ความจริงที่ยากก็คือระบบทางกายภาพที่ใช้ฝังโปรแกรมนั้นจำเป็นต้องคำนึงถึงรายละเอียดเล็กๆ น้อยๆ ทั้งหมดก่อนที่ทุกอย่างจะทำงานได้

ด้วยการปรับปรุงเครื่องมือซอฟต์แวร์พัฒนา FPGA จากผู้ขายแบบดั้งเดิมและผู้จำหน่ายเครื่องมืออิสระเป็นหลัก: Syncplicity ทำให้ FPGA ได้รับความนิยมมากขึ้นทุกวัน ปัจจุบัน FPGA ได้เริ่มรวมฮาร์ดแวร์เฉพาะสำหรับฟังก์ชันที่ลูกค้าต้องการ ซึ่งช่วยลดต้นทุนสำหรับผู้ผลิต ดังนั้นในอนาคตอาจมีการแข่งขันระหว่างระบบที่เข้มงวดและระบบต้นทุนต่ำที่มีคอร์ที่ยืดหยุ่น คาดว่าต้นทุนจะลดลงอีกในอนาคตอันใกล้นี้เนื่องจาก FPGA ได้รับความนิยมมากขึ้น

ผู้ผลิตได้เริ่มทดลองแนวคิดในการฝัง FPGA ลงในวงจรรวมเพื่อสร้างอุปกรณ์ไฮบริด จุดเน้นยังคงอยู่ที่การกำหนดเส้นทางการเชื่อมต่อระหว่างกัน และสถาปัตยกรรม CLB มีการเปลี่ยนแปลงน้อยลง เนื่องจาก FPGA ยังคงขับเคลื่อนโปรเซสเซอร์ต่อไป คนรุ่นใหม่ไม่เพียงต้องการความรู้ด้านฮาร์ดแวร์การออกแบบดิจิทัลเท่านั้น แต่ยังต้องอาศัยประสบการณ์ของนักพัฒนาในกระบวนการเขียนโปรแกรม FPGA แบบครั้งเดียวด้วย โดยรวมแล้ว FPGA คาดว่าจะครองส่วนแบ่งการตลาดในอุปกรณ์ ASIC และกลายเป็นเทคโนโลยีที่โดดเด่นซึ่งครอบคลุมแอปพลิเคชันจำนวนมากจากโดเมนต่างๆ

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

- ภารกิจหลักคือการควบคุมการทำงานของเซิร์ฟเวอร์และซอฟต์แวร์เซิร์ฟเวอร์ การดูแลการแลกเปลี่ยนโทรศัพท์ นโยบายความปลอดภัย - โดยทั่วไปแล้ว สิ่งเหล่านี้คือสมองของโครงสร้างคอมพิวเตอร์ทั้งหมดขององค์กร

ผู้เชี่ยวชาญด้านการสนับสนุนทางเทคนิค (หรือวิศวกร)- คนเหล่านี้คือคนที่จัดการกับคอมพิวเตอร์ของผู้ใช้ทั่วไป ตั้งค่า ช่วยเหลือผู้ใช้แก้ไขปัญหาปัจจุบัน จับไวรัสในคอมพิวเตอร์ของผู้ใช้ ฯลฯ ฯลฯ โดยพื้นฐานแล้วผู้เชี่ยวชาญคือผู้ดูแลระบบในอนาคตเพราะว่า ผู้ดูแลระบบสามารถทำงานของผู้เชี่ยวชาญได้เช่นกัน ผู้เชี่ยวชาญสามารถทำงานของผู้ดูแลระบบได้หากฝ่ายบริหารอนุญาต - ฝ่ายบริหารมีความมั่นใจในผู้ดูแลระบบมากขึ้น :)

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



2024 wisemotors.ru. วิธีนี้ทำงานอย่างไร. เหล็ก. การทำเหมืองแร่ สกุลเงินดิจิทัล