การออกแบบดิจิทัลไม่เหมือนกันมากกับการพัฒนาซอฟต์แวร์ (อาจยกเว้นว่า Verilog syntax ดูเหมือนภาษา C เล็กน้อย แต่มันก็ดูเหมือน) ดังนั้นจึงเป็นการยากที่จะตอบคำถามประเภทนี้อย่างเพียงพอ แต่ในฐานะคนที่เดินเส้นทางจากการพัฒนาซอฟต์แวร์ไปจนถึงการออกแบบฮาร์ดแวร์ฉันจะให้มันยิง มองย้อนกลับไปที่ตัวเองนี่คือวิธีที่ฉันจะแนะนำตัวเองย้อนกลับไปถ้าฉันรู้สิ่งที่ฉันรู้ตอนนี้:
เริ่มจากศูนย์
ลืมทุกอย่างเกี่ยวกับการพัฒนาซอฟต์แวร์ โดยเฉพาะภาษาโปรแกรม หลักการเหล่านั้นใช้ไม่ได้กับการออกแบบดิจิทัล อาจเป็นเรื่องง่ายสำหรับคนที่ออกแบบ CPU เพื่อเขียนโปรแกรมในแอสเซมเบลอร์หรือ C แต่โปรแกรมเมอร์แอสเซมเบลอร์จะไม่สามารถออกแบบ CPU ได้
บนเส้นทางการเรียนรู้ของคุณไม่ได้มีแนวโน้มที่จะแก้ไขสิ่งที่ดูเหมือนจะเป็นปัญหาง่าย ๆ กับความรู้ที่มีอยู่ของคุณจากซอฟต์แวร์ หนึ่งในตัวอย่างคลาสสิกคือ "for loop" แม้ว่าคุณสามารถเขียน for for loop ได้ แต่พูด verilog - มันมีจุดประสงค์ที่แตกต่างกัน ส่วนใหญ่จะใช้สำหรับการสร้างรหัส มันอาจจะเป็นวงสำหรับนักพัฒนาซอฟต์แวร์ที่เห็นมัน แต่มันจะไม่ดีสำหรับอะไรนอกจากการจำลอง (เช่นคุณจะไม่สามารถโปรแกรม FPGA แบบนั้น)
ดังนั้นสำหรับทุกงานที่คุณต้องการจัดการอย่าคิดว่าคุณรู้วิธีทำวิจัยแทน - ตรวจสอบหนังสือตัวอย่างถามคนที่มีประสบการณ์มากกว่าเป็นต้น
เรียนรู้ฮาร์ดแวร์และภาษา HDL
ภาษา HDL ที่เป็นที่นิยมที่สุดคือ Verilog และ VHDL นอกจากนี้ยังมีรายการเฉพาะผู้ขายเช่น AHDL (Altera HDL) เนื่องจากภาษาเหล่านั้นถูกใช้เพื่ออธิบายส่วนประกอบฮาร์ดแวร์พวกมันทั้งหมดค่อนข้างคุ้นเคยกับการแสดงสิ่งเดียวกันในแถบอเมริกาที่คล้ายกัน แต่มีไวยากรณ์ที่แตกต่างกัน
บางคนแนะนำให้เรียนรู้ Verilog เพราะดูเหมือนว่าใช่ใช่ไวยากรณ์ของมันคือการผสมผสานระหว่าง C และ Ada แต่มันไม่ได้ทำให้ง่ายนักสำหรับนักพัฒนาซอฟต์แวร์ที่จะเรียนรู้ อันที่จริงฉันคิดว่ามันอาจทำให้แย่ลงเพราะจะมีการล่อใจให้เขียน C ใน Verilog นั่นเป็นสูตรที่ดีสำหรับการมีช่วงเวลาที่แย่มาก
โดยที่ในใจฉันขอแนะนำให้จ้องมองจาก VHDL แม้ว่า Verilog ก็ใช้ได้เช่นกันตราบใดที่มีการพิจารณาข้างต้น
สิ่งสำคัญที่ต้องจำไว้คือคุณต้องเข้าใจสิ่งที่คุณกำลังแสดงด้วยภาษานั้น ฮาร์ดแวร์ชนิดใดที่ถูก "อธิบาย" และวิธีการทำงาน
ด้วยเหตุนี้ฉันขอแนะนำให้คุณหาหนังสือเกี่ยวกับอุปกรณ์อิเล็กทรอนิกส์โดยทั่วไปและหนังสือดี ๆ เล่มนี้ - HDL Chip Design (หรือที่รู้จักในนามสมุดสีฟ้า)
รับโปรแกรมจำลอง
ก่อนที่คุณจะเริ่มทำสิ่งใดในฮาร์ดแวร์และใช้คุณสมบัติเฉพาะของผู้ขายเป็นต้นลองจำลองด้วยตัวคุณเอง ฉันเริ่มต้นด้วย Verilog และใช้ Icarus Verilog พร้อมกับ GTK Wave เหล่านี้เป็นโครงการโอเพนซอร์ซฟรี ใช้ตัวอย่างที่คุณเห็นในหนังสือฝึกฝนโดยการออกแบบวงจรของคุณเองเพื่อรับรสชาติของมัน
รับบอร์ดพัฒนา
เมื่อคุณรู้สึกอยากก้าวไปข้างหน้าให้ได้รับคณะกรรมการพัฒนา หากคุณรู้ว่านายจ้างของคุณต้องการไปกับ Lattice ให้ไปที่ Lattice
วิธีการเขียนโปรแกรมคล้ายกันมาก แต่มีรายละเอียดที่แตกต่างกัน ตัวอย่างเช่นเครื่องมือต่าง ๆ ตัวเลือกต่าง ๆ อินเทอร์เฟซที่แตกต่างกัน โดยปกติหากคุณมีประสบการณ์กับผู้ขายรายเดียวไม่ยากที่จะเปลี่ยน แต่คุณอาจต้องการหลีกเลี่ยงช่วงการเรียนรู้เพิ่มเติมนี้
ฉันต้องแน่ใจว่าบอร์ดนั้นมาพร้อมกับส่วนประกอบที่คุณวางแผนจะใช้หรือขยายได้ ตัวอย่างเช่นถ้าคุณต้องการออกแบบอุปกรณ์เครือข่ายเช่นเราเตอร์ตรวจสอบให้แน่ใจว่าบอร์ดมี Ethernet PHY หรือสามารถขยายผ่านพูดขั้วต่อ HSMC เป็นต้น
บอร์ดมักจะมาพร้อมกับการอ้างอิงที่ดีคู่มือผู้ใช้และตัวอย่างการออกแบบ ศึกษาพวกเขา
อ่านหนังสือ
คุณจะต้องอ่านหนังสือ ในกรณีของฉันฉันไม่มีเพื่อนที่รู้การออกแบบดิจิทัลและไซต์นี้ไม่ได้มีประโยชน์มากเพราะสิ่งหนึ่ง - ฉันไม่รู้ด้วยซ้ำว่าจะใช้คำถามของฉันอย่างไร ทั้งหมดที่ฉันสามารถทำได้คือ "Uhm, ผู้ชาย, มีสิ่ง dcfifo และฉันได้ยินอะไรบางอย่างเกี่ยวกับความท้าทายข้ามโดเมนนาฬิกามันคืออะไรและทำไมการออกแบบของฉันไม่ทำงาน"
ฉันเริ่มต้นด้วยตนเองเหล่านี้:
ผู้ขายของ FPGA มีตำราจำนวนมากที่มีแนวปฏิบัติที่ดีที่สุด ศึกษาพวกเขาพร้อมกับการออกแบบอ้างอิง นี่คือตัวอย่างหนึ่งจาก Altera
กลับมาพร้อมคำถามที่เจาะจงมากขึ้น
ในขณะที่คุณอ่านหนังสือจำลองการออกแบบกะพริบไฟ LED บางส่วนบนบอร์ดพัฒนาของคุณคุณอาจมีคำถามมากมาย ตรวจสอบให้แน่ใจว่าคุณไม่เห็นคำตอบสำหรับผู้ที่อยู่ในหน้าถัดไปของหนังสือหรือออนไลน์ (เช่นในฟอรัมเฉพาะ Lattice) ก่อนถามพวกเขาที่นี่