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

รายงานความก้าวหน้ามินิโปรเจคครั้งที่ 2

รายงานความก้าวหน้ามินิโปรเจคครั้งที่ 2

วัตถุประสงค์ที่ได้ดำเนินการไปแล้ว
1.ทดลองใช้ plasma CPU บน Xilinx ISE WebPACK 
การทำงานของ plasma cpu โดยจะมีหลายส่วนประกอบเพื่อนำมารวมกันกลายเป็นตัว cpu ที่เราใช้งานโดยประกอบไปด้วยหลายไฟล์มาประกอบกันกลายเป็นตัว plasma โดยส่วนที่นำมาประกอบกันจะได้อย่างรูปนี้

Plasma_3e.vhd
          ในส่วนนี้จะเป็นการทำงานนำส่วนนี้เป็นส่วนประกอบของตัวอื่นมาทำการเชื่อมต่อกันโดยจะมีการ reset การทำงานของ clk โดยถ้าขา reset เป็น 1 จะทำให้ค่า clk_regเป็น 0
Plasma.vhd
          ในส่วนของไฟล์นี้นั้นจะเป็นการทำงานของตัว plasma core โดยมี memory เพื่อช่วยในการทำงานด้วยโดยการทำงานจะเป็นการ port mapมาจากไฟล์ milte_cpu ในส่วนของการคำนวณในการทำงานคำสั่งๆต่างๆที่ทำใส่ cpu และมีการใช้ ram จากไฟล์ram_xilinx และมีการใช้คำสั่งใช้ Ethernet ได้และมีการเชื่อมต่อผ่าน uart
Mlite_cpu.vhd
จะเป็นส่วนที่ไว้บอกเส้นทางของข้อมูลว่าส่วนประกอบอันไหนเชื่อมโยงกะส่วนประกอบอันไหนลีการกำหนดคำสั่งการทำงานต่างๆของแต่ละส่วนประกอบด้วยโดยจะมีการกำหนดการทำงานของ pipeline ซึ่งเดิมทีละจะทำทีละ 2 คำสั่งมีการสามารถเปลี่ยนเป็น3 ได้แต่ว่าจะมีสัญญาณบางสัญญาณที่เกิดการหน่วงเวลาไป 1 cycle ซึ่งได้แก่ a_bus, b_bus, alu/shift/mult_func, c_source, and rd_index
Pc_next.vhd
เป็นส่วนที่ชี้ที่อยู่ของคำสั่งถัดไปให้ไปทำโดยจะไปส่งให้ตัวส่วนที่เป็น mem_ctrl
Mem_ctrl.vhd
เป็นส่วนไว้เก็บค่าที่อยู่ของคำสั่งที่ได้รับมาจากตัว program counter โดยสามารถมีการ pause ไว้ได้โดยจะทำงานคำสั่งเดิมซ้ำลงไปละถ้ามีการ reset ก็จะให้เป็น 0 เลย ถ้าไม่มีอะไรก็ส่ง opcode ต่อไปที่ control.vhd

Control.vhd
เป็นส่วนที่เอาส่วน opcode มาจำแนกเป็นการใช้งานคำสั่งต่างๆขึ้นอยู่กับว่ามี opcode อะไรก็จะให้ทำงานตามนั้นโดยจะเหมือนกับส่วนควบคุมพฤติกรรมการทำงานนั่นเอง
Reg_bank.vhd
เป็นส่วนที่ไว้เก็บตัว register และมีการรับค่าเข้ามาเพื่อดูว่า register ที่ต้องการใช้เป็นตัวไหนละมีการเก็บเป็นค่า address เอาไว้โดยถ้าจะต้องการใช้ก็บอกaddress มาจะสามารถเขียนข้อมูลลงไปหรืออ่านข้อมูล ทำหน้าที่เหมือน RAM
Bus_mux.vhd
เป็นส่วนไว้ทำการรวมสัญญาณที่มาจากต่างส่วนประกอบมาทำการรวมกันให้สามารถทำงานได้อย่างถูกต้อง
Alu.vhd
เป็นส่วนที่ใช้คำนวณทางคณิตศาสตร์
Shifter.vhd
เป็นส่วนที่ใช้ทำการเลื่อนบิตข้อมูล
Mult.vhd
เป็นส่วนที่ไว้ใช้คำนวณการคูณการหาร
Pipeline.vhd
เป็นส่วนที่ควบคุมการทำงานที่พร้อมกัน


การทดลอง
ได้ทำการโหลดไฟล์ที่เป็น Source Code มาจากเว็บไซต์ OpenCores แล้วนำทำการทดลองในโปรแกรม XillinxISE Design 14.7 โดยได้ทำการสร้างโปรเจคใหม่ละทำการ import ไฟล์ใส่เข้าไปเรียบร้อยละตอนแรกมันจะเรียกถามหาไฟล์ Ram_image ให้ใส่ไฟล์ ram_xilinx ลงไปแทนทำให้สามารถทำงานได้เหมือนกันแต่ว่าถึงจะคอมไพล์ผ่านแต่ว่าติด warning เยอะ

ภาพตอนเสร็จสิ้นการคอมไพล์

แหล่งข้อมูล : http://opencores.org/project,plasma
                     : http://plasmacpu.no-ip.org:8080/cpu.htm

2.ทดลองเขียนโค้ดโดยใช้โปรแกรมArduino และโปรแกรมลงบอร์ด Xilinx Spartan 3E-500 Starter Kit
-ทำการโหลดโปรแกรม Arduino จากเว็บไซต์ https://www.arduino.cc/en/Main/Software
-จากนั้นทำการติดตั้งโปรแกรมและเข้าโปรแกรม ไปที่ tool>board>board manager หาคำว่า FPGArduino และทำการติดตั้ง
-จากนั้นทำการตั้งค่าตามรูปข้างใต้

-เขียนโค้ดทดลองเข้าไปในโปรแกรมและ compile จากรูปจะเห็นมีชื่อบอร์ด FPGA อยู่



แหล่งข้อมูล : http://www.nxlab.fer.hr/fpgarduino/

รูปภาพการทดลอง



ผลการเรียนรู้ที่ได้รับ
          -ได้เรียนรู้วิธีการทำงาน รวมไปถึงโครงสร้าง block diagram ภายใน Plasma CPU
-ได้ศึกษาการทำงานของบอร์ด Mojo v3 (Xilinx Spartan-6) เพื่อนำไปประยุกต์ใช้กับตัว Plasma CPU

ปัญหาหรืออุปสรรคและการแก้ไข
-เวลาทดลองเขียนโค้ดจะเกิดจุด bug หรือ error ในการ compile
วิธีการแก้ไข : หาจุดที่ผิดและเขียนโค้ดลองดูใหม่อีกครั้งหรือหาข้อมูลมาควบคู่การเขียนโค้ดไปด้วย
-โปรแกรมลงบอร์ดไม่เข้าหรือบอร์ดไม่ได้รับโค้ดจากคอมพิวเตอร์ของเรา
วิธีการแก้ไข : ทำการแก้ชื่อบอร์ด รุ่นต่างๆ และทำการลงไดรเวอร์ของบอร์ดนั้นๆหรือหาโปรแกรมที่สามารถใช้เชื่อม หิ ของบอร์ดเข้าที่คอมพิวเตอร์ได้ อย่างเช่น โปรแกรม Zadig

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

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