รายงานความก้าวหน้าฉบับสมบูรณ์
วิชา 010123109 Computer Organization
ชื่อโครงงาน : MIPS 32 CPU
วัตถุประสงค์ของโครงงาน(มินิโปรเจค)
- ศึกษาการใช้งาน CPU
ที่ใช้สถาปัตยกรรมแบบ MIPS 32 บิต และ เป็น Open
hardware IP core คือ CPU32 MIPS
- ทดลองสร้างระบบตามตัวอย่างที่มีอยู่ในเว็บไซต์
โดยนำมาทดลองกับบอร์ด FPGA ที่มีอยู่ในห้องแล็ป
- บอร์ด Altera Cyclone III
- สาธิตการทำงานโดยใช้โค้ดตัวอย่าง
หรือสร้างตัวอย่างขึ้นมาเอง เพื่อสาธิตการทำงานของฮาร์ดแวร์และโค้ดตัวอย่าง
(โค้ดอาจเขียนด้วยภาษา C หรือ
Assembly ก็ได้) อย่างน้อยหนึ่งตัวอย่าง
ตัวอย่างสาธิตการทำงาน
คำนวณ และแสดงค่า Fibonacci
Number บน 7Segment LED
แนวทางการดำเนินการ
-แบ่งกลุ่มการทำงานไม่เกินกลุ่มละ
3 คน
- เขียน web
blog นำเสนอรายงานความก้าวหน้าทุกสัปดาห์
- ส่งงานและสาธิตการทำงานสัปดาห์ถัดไปหลังช่วงสอบปลายภาค
- คะแนนของหัวข้อมินิโปรเจคนี้
คิดเป็น 20% ของคะแนนรวม 100%
ความรู้พื้นฐานที่เกี่ยวข้อง
CPU32
CPU32
คือ ระบบ CPU ที่ทำงานตามสถาปัตยกรรมแบบ MIPS สำหรับบอร์ด FPGA
มีฟังก์ชั่นการทำงานดังนี้
- สามารถทำงานได้ตามชุดคำสั่ง MIPS เช่น คำสั่งพื้นฐานทางคณิตศาสตร์ คำสั่งเงื่อนไขต่างๆ
- รัน MIPS
ได้จาก โปรแกรมภาษา C พื้นฐาน
- 32KB RAM (จาก Block RAM ของ Cyclone III)
- I/O : 7-seg LEDs สำหรับ เอาท์พุท , sw3 - sw0 สำหรับ อินพุท
ภาพตัวอย่าง
CPU32 บนบอร์ด FPGA
บอร์ด FPGA
รูปบอร์ด FPGA ที่ใช้ในการทดลอง
EP3C10E144C8 มีความจุทางลอจิก 10,320 LEs (หรือ ประมาณ 575,800
เกท), RAM 414 Kbits, Build-in Phase Locked Loop 2 ชุด, Embedded Multipliers ขนาด 18 บิตx18บิต จำนวน 23 ชุด และ 9
บิตx9 บิต จำนวน 46 ชุด
ชิป FPGA เป็นไอซีประเภทหนึ่งที่สามารถนำมาใช้ในการออกแบบวงจรดิจิทัลใดๆตามต้องการ
อาจเป็นวงจรที่ถูกคิดค้นขึ้นมาใหม่เพื่อตอบโจทย์ใหม่ๆ หรือออกแบบ
"เฉพาะงาน" และสามารถทดสอบการทำงานของวงจรเหล่านั้นโดยใช้ชิปหรือฮาร์ดแวร์จริงได้
โดยไม่ต้องส่งไปผลิตชิปซึ่งมีค่าใช้จ่ายสูง
ความยืดหยุ่นในการใช้งานไอซีประเภทนี้มาจากความสามารถในการโปรแกรมสิ่งที่อยู่ภายในชิป
FPGA
(เป็นการโปรแกรมเชิงฮาร์ดแวร์)
ให้ได้วงจรที่ทำงานตามที่ได้ออกแบบไว้ ชิป FPGA จึงเป็นไอซีประเภทที่เรียกว่า
Field-Programmable Logic Device
นับตั้งแต่เริ่มมีการพัฒนาชิป
FPGA
ในราวปีค.ศ. 1985 จนถึงปัจจุบัน
จะเห็นได้ถึงความก้าวหน้าทางเทคโนโลยีในการผลิตชิป รวมถึงความก้าวหน้าเชิงสถาปัตยกรรมของ
FPGA อย่างต่อเนื่อง และแม้ว่าหลายคนจะมองว่า ชิปหรือบอร์ด FPGA
มีราคาหรือต้นทุนที่สูงกว่าไมโครคอนโทรลเลอร์ และในงานด้าน Embedded
Systems ส่วนใหญ่แล้ว
ก็สามารถตอบโจทย์ได้โดยใช้เพียงไมโครคอนโทรลเลอร์ การเรียนรู้และใช้งาน FPGA
และการออกแบบวงจร "เฉพาะงาน" ยังถือว่าเป็นสิ่งสำคัญ
เพราะจะทำให้เข้าใจการทำงานของวงจรดิจิทัลในระดับลอจิกเกต และในระดับสูงขึ้นไป
และสำหรับบางโจทย์การออกแบบ ไมโครคอนโทรลเลอร์อาจไม่สามารถตอบโจทย์ได้อย่างเหมาะสม
ชิปในปัจจุบันมีหลายตระกูลที่ได้รวม FPGA ไว้กับไมโครโปรเซสเซอร์
(CPU cores ซึ่งอาจมีมากกว่าหนึ่ง) ในชิปเดียวกัน
เป็นการรวมจุดเด่นของทั้งสองตัวเลือกเข้าไว้ด้วยกัน
แต่ในขณะเดียวกันก็เป็นการสร้างความท้าทายสำหรับนักออกแบบและพัฒนาเช่นกันที่จะต้องเข้าใจวิธีการ
ขั้นตอน และเครื่องมือที่ใช้ในการออกแบบที่มีความซับซ้อนมากขึ้น
ที่มาข้อมูล
: http://cpre.kmutnb.ac.th/esl/learning/index.php?article=quartus-web-edition-13.1&start=80
Fibonacci Number
จำนวนฟีโบนัชชี
หรือ เลขฟีโบนัชชี (อังกฤษ: Fibonacci number) คือจำนวนต่าง
ๆ ที่อยู่ในลำดับจำนวนเต็มดังต่อไปนี้
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,
377, 610, 987, 1597, 2584, 4181, 6765, 10946 ... (ลำดับ OEIS A000045)
โดยมีนิยามของความสัมพันธ์ว่า
จำนวนถัดไปเท่ากับผลบวกของจำนวนสองจำนวนก่อนหน้า และสองจำนวนแรกก็คือ 0 และ 1 ตามลำดับ
และลำดับของจำนวนดังกล่าวก็จะเรียกว่า ลำดับฟีโบนัชชี (อังกฤษ: Fibonacci
sequence)
หากเขียนให้อยู่ในรูปของสัญลักษณ์ ลำดับ Fn
ของจำนวนฟีโบนัชชีนิยามขึ้นด้วยความสัมพันธ์เวียนเกิดดังนี้
Fn = Fn-1 + Fn-2
โดยที่
F0 = 0 , F1 = 1
ชื่อของจำนวนฟีโบนัชชีตั้งขึ้นเพื่อเป็นเกียรติแก่นักคณิตศาสตร์ชาวอิตาลีชื่อ
เลโอนาร์โดแห่งปีซา (Leonardo de Pisa) ซึ่งเป็นที่รู้จักกันในนามฟีโบนัชชี
(Fibonacci) ผู้ค้นพบจำนวนฟีโบนัชชีในต้นศตวรรษที่ 13
Code ที่ใช้ในการทำงาน
- Code ในการแสดงค่าตัวเลขบน 7-segments
LED ตั้งแต่ 0-9 และ A-F
- Code ภาษา c ที่ใช้คำนวณค่าของเลข
Fibonacci ในแต่ละครั้ง
อุปกรณ์ที่ใช้ในการทำงาน
1. USB BLASTER
2. ALTERA CYCLONE III FPGA
3. 7-SEGMENT LED
4. สายไฟ
ขั้นตอนการทดลอง
1. ใช้โปรแกรม Altera ในการเขียนโค้ดตัวอย่างเพื่อใช้ในการทำงานทดลอง
2. ลงโปรแกรมที่เป็นโค้ด vhdl ลงบนบอร์ด FPGA
3. กำหนด PIN ของ
input และ output ที่เป็นตัว LED
และสวิตซ์ ดังนี้
4. ต่อวงจรตามรูป ดังนี้
ผลการทดลอง
สาทิตการทำงานของ CPU32 MIPS ด้วย
code ภาษา C ที่จะแสดง Fibonacci Number ตามลำดับ
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,
377, 610, 987, 1597, 2584, 4181, 6765, 10946 ...
โดยใน code กำหนดให้แสดงตัวเลขฐาน 16 จำนวน 4 digits แต่การทดลองต่อแสดงแค่ 2 digits
ไม่มีความคิดเห็น:
แสดงความคิดเห็น