วันจันทร์ที่ 6 มิถุนายน พ.ศ. 2559

รายงานความก้าวหน้าฉบับสมบูรณ์

รายงานความก้าวหน้าฉบับสมบูรณ์

วิชา 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 ซึ่งอาจมีมากกว่าหนึ่ง) ในชิปเดียวกัน เป็นการรวมจุดเด่นของทั้งสองตัวเลือกเข้าไว้ด้วยกัน แต่ในขณะเดียวกันก็เป็นการสร้างความท้าทายสำหรับนักออกแบบและพัฒนาเช่นกันที่จะต้องเข้าใจวิธีการ ขั้นตอน และเครื่องมือที่ใช้ในการออกแบบที่มีความซับซ้อนมากขึ้น


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 ... (ลำดับ OEISA000045)
         โดยมีนิยามของความสัมพันธ์ว่า จำนวนถัดไปเท่ากับผลบวกของจำนวนสองจำนวนก่อนหน้า และสองจำนวนแรกก็คือ 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 ในแต่ละครั้ง

- สำหรับ code ส่วนอื่นๆ ดาวน์โหลดที่https://github.com/kazunori279/CPU32/blob/master/README.md

อุปกรณ์ที่ใช้ในการทำงาน
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


ไม่มีความคิดเห็น:

แสดงความคิดเห็น