หน่วยจุดลอยตัวหลักของ MICROCHIP CoreFPU
การแนะนำ
- หน่วย Core Floating Point (CoreFPU) ออกแบบมาสำหรับการคำนวณเลขคณิตจุดลอยตัวและการแปลงเลขทศนิยม สำหรับเลขทศนิยมแบบ Single และ Double Precision CoreFPU รองรับการแปลงจากจุดคงที่เป็นจุดลอยตัว และจากจุดลอยตัวเป็นจุดคงที่ รวมถึงการบวก ลบ และคูณเลขทศนิยม มาตรฐาน IEEE® สำหรับเลขคณิตจุดลอยตัว (IEEE 754) เป็นมาตรฐานทางเทคนิคสำหรับการคำนวณเลขทศนิยม
- สิ่งสำคัญ: CoreFPU รองรับการคำนวณด้วยตัวเลขปกติเท่านั้น และรองรับเฉพาะภาษา Verilog เท่านั้น ไม่รองรับ VHDL
สรุป
ตารางต่อไปนี้เป็นการสรุปคุณลักษณะของ CoreFPU
ตารางที่ 1 ลักษณะของ CoreFPU
เวอร์ชันหลัก | เอกสารนี้ใช้กับ CoreFPU v3.0 |
กลุ่มอุปกรณ์ที่รองรับ |
|
รองรับการไหลของเครื่องมือ | ต้องการ Libero® SoC v12.6 หรือรุ่นที่ใหม่กว่า |
การออกใบอนุญาต | CoreFPU ไม่มีการล็อคใบอนุญาต |
คำแนะนำในการติดตั้ง | ต้องติดตั้ง CoreFPU ลงใน IP Catalog ของ Libero SoC โดยอัตโนมัติผ่านฟังก์ชันอัปเดต IP Catalog หรือสามารถดาวน์โหลด CoreFPU ด้วยตนเองจากแคตตาล็อกได้ เมื่อติดตั้ง IP Core แล้ว
เมื่อติดตั้งแล้ว จะได้รับการกำหนดค่า สร้าง และสร้างตัวอย่างภายใน SmartDesign เพื่อรวมไว้ในโครงการ |
การใช้งานและประสิทธิภาพของอุปกรณ์ | ข้อมูลสรุปการใช้งานและประสิทธิภาพการทำงานของ CoreFPU อยู่ในหมวดการใช้งานทรัพยากรอุปกรณ์และประสิทธิภาพการทำงาน |
ข้อมูลบันทึกการเปลี่ยนแปลง CoreFPU
ส่วนนี้ให้ครอบคลุมมากกว่าview ของฟีเจอร์ใหม่ที่เพิ่มเข้ามา เริ่มต้นด้วยเวอร์ชันล่าสุด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหาที่ได้รับการแก้ไข โปรดดูส่วนปัญหาที่ได้รับการแก้ไข
เวอร์ชัน | มีอะไรใหม่ |
v3.0 | นำแฟล็กเอาต์พุตเพิ่มเติมมาใช้เพื่อเพิ่มความแม่นยำของ IP |
v2.1 | เพิ่มคุณสมบัติความแม่นยำสองเท่า |
v2.0 | อัปเดตรูปคลื่นเวลา |
v1.0 | การเปิดตัวผลิตภัณฑ์ CoreFPU ครั้งแรก |
1. คุณสมบัติ
CoreFPU มีคุณสมบัติหลักดังต่อไปนี้:
- รองรับตัวเลขลอยตัวความแม่นยำเดี่ยวและคู่ตามมาตรฐาน IEEE-754
- รองรับการแปลงตามรายการ:
- การแปลงจุดคงที่เป็นจุดลอยตัว
- การแปลงจุดลอยตัวเป็นจุดคงที่
- รองรับการดำเนินการทางคณิตศาสตร์ตามรายการ:
- การบวกเลขทศนิยมลอยตัว
- การลบเลขทศนิยมลอยตัว
- การคูณเลขทศนิยมลอยตัว
- ให้รูปแบบการปัดเศษ (ปัดเศษเป็นเลขคู่ที่ใกล้เคียงที่สุด) สำหรับการดำเนินการทางคณิตศาสตร์เท่านั้น
- ให้แฟล็กสำหรับ Overflow, Underflow, Infinity (อินฟินิตี้บวก, อินฟินิตี้ลบ), Quiet NaN (QNaN) และ Signalling NaN (SNaN) สำหรับตัวเลขจุดลอยตัว
- รองรับการใช้งานการดำเนินการทางคณิตศาสตร์แบบเต็มรูปแบบ
- จัดเตรียมการกำหนดค่าแกนหลักสำหรับข้อกำหนดการออกแบบ
คำอธิบายการทำงาน
- มาตรฐาน IEEE สำหรับเลขคณิตจุดลอยตัว (IEEE 754) เป็นมาตรฐานทางเทคนิคสำหรับการคำนวณจุดลอยตัว คำว่าจุดลอยตัวหมายถึงจุดฐานของตัวเลข (จุดทศนิยมหรือจุดฐานสอง) ซึ่งอยู่ในตำแหน่งใดก็ได้เมื่อเทียบกับเลขนัยสำคัญของตัวเลข
โดยทั่วไปแล้ว จำนวนจุดลอยตัวจะแสดงในรูปแบบสัญกรณ์วิทยาศาสตร์ โดยมีเศษส่วน (F) และเลขชี้กำลัง (E) ของฐานหนึ่ง (r) ในรูปของ F × r^E เลขฐานสิบใช้ฐานของ 10 (F × 10^E) ในขณะที่เลขฐานสองใช้ฐานของ 2 (F × 2^E) - การแสดงตัวเลขจุดลอยตัวไม่ซ้ำกัน ตัวอย่างเช่นampเช่น ตัวเลข 55.66 แสดงเป็น 5.566 × 10^1, 0.5566 × 10^2, 0.05566 × 10^3 และอื่นๆ ส่วนที่เป็นเศษส่วนจะถูกทำให้เป็นมาตรฐาน ในรูปแบบที่ทำให้เป็นมาตรฐาน จะมีเพียงหลักเดียวที่ไม่ใช่ศูนย์ก่อนจุดฐาน ตัวอย่างเช่นampโดยที่ เลขทศนิยม 123.4567 ได้รับการทำให้เป็นมาตรฐานเป็น 1.234567 × 10^2; เลขฐานสอง 1010.1011B ได้รับการทำให้เป็นมาตรฐานเป็น 1.0101011B × 2^3
- สิ่งสำคัญที่ต้องทราบคือ ตัวเลขจุดลอยตัวจะสูญเสียความแม่นยำเมื่อแสดงด้วยจำนวนบิตคงที่ (เช่นample, 32 บิต หรือ 64 บิต) เนื่องจากมีจำนวนจริงเป็นจำนวนอนันต์ (แม้จะอยู่ในช่วง 0.0 ถึง 0.1 ก็ตาม) ในทางกลับกัน
รูปแบบไบนารี n บิต แสดงถึงจำนวนจำกัดที่แตกต่างกัน 2^n จำนวน ดังนั้นจึงไม่สามารถแสดงจำนวนจริงทั้งหมดได้ จะใช้ค่าประมาณที่ใกล้เคียงที่สุดแทน ซึ่งส่งผลให้สูญเสียความแม่นยำ
ตัวเลขทศนิยมแบบความแม่นยำเดี่ยวแสดงดังต่อไปนี้:
- บิตเครื่องหมาย: 1 บิต
- ความกว้างของเลขชี้กำลัง: 8 บิต
- ความแม่นยำที่สำคัญ: 24 บิต (23 บิตถูกเก็บไว้อย่างชัดเจน)
รูปที่ 2-1 เฟรม 32 บิต
ตัวเลขจุดลอยตัวความแม่นยำสองเท่าแสดงดังต่อไปนี้:
- บิตเครื่องหมาย: 1 บิต
- ความกว้างของเลขชี้กำลัง: 11 บิต
- ความแม่นยำที่สำคัญ: 53 บิต (52 บิตถูกเก็บไว้อย่างชัดเจน)
รูปที่ 2-2 เฟรม 64 บิต CoreFPU คือการผสานรวมโมดูลการแปลงสองโมดูล (Fixed to Float point และ Float to Fixed point) และการดำเนินการทางคณิตศาสตร์สามแบบ (FP ADD, FP SUB และ FP MULT) เข้าด้วยกันในระดับสูงสุด ผู้ใช้สามารถกำหนดค่าการดำเนินการใดการดำเนินการหนึ่งตามความต้องการ เพื่อให้ทรัพยากรถูกนำไปใช้ในการดำเนินการที่เลือก
รูปต่อไปนี้แสดงแผนผังบล็อก CoreFPU ระดับบนสุดพร้อมพอร์ต
รูปที่ 2-3 แผนผังบล็อกพอร์ต CoreFPU
ตารางต่อไปนี้แสดงความกว้างของพอร์ตอินพุตและเอาต์พุต ตารางที่ 2-1 ความกว้างของพอร์ตอินพุตและเอาต์พุต
สัญญาณ | ความกว้างความแม่นยำเดี่ยว | ความกว้างความแม่นยำสองเท่า |
เออิน | [31:0] | [63:0] |
ถังขยะ | [31:0] | [63:0] |
ออก | [31:0] | [63:0] |
ยื่นปาก | [31:0] | [63:0] |
การแปลงจุดคงที่เป็นจุดลอยตัว
CoreFPU ที่กำหนดค่าให้คงที่เป็นเลขทศนิยมลอยตัว หมายถึงโมดูลแปลงค่าจากจุดคงที่เป็นเลขทศนิยมลอยตัว อินพุต (ain) ของ CoreFPU คือตัวเลขจุดคงที่ใดๆ ที่มีบิตจำนวนเต็มและเศษส่วน ตัวกำหนดค่า CoreFPU มีตัวเลือกให้เลือกความกว้างของอินพุตจำนวนเต็มและเศษส่วน อินพุตใช้ได้กับสัญญาณ di_valid และเอาต์พุตใช้ได้กับสัญญาณ do_valid เอาต์พุต (aout) ของการดำเนินการแปลงค่าจากจุดคงที่เป็นเลขทศนิยมลอยตัวจะอยู่ในรูปแบบเลขทศนิยมแบบหนึ่งหน่วยหรือสองหน่วย
Exampตารางต่อไปนี้แสดงรายละเอียดการดำเนินการแปลงจุดคงที่เป็นจุดลอยตัว
ตารางที่ 2-2. อดีตample สำหรับการแปลงจุดคงที่เป็นจุดลอยตัว
หมายเลขจุดคงที่ | เลขจุดลอยตัว | |||||
เออิน | จำนวนเต็ม | เศษส่วน | ออก | เข้าสู่ระบบ | เลขยกกำลัง | แมนทิสซา |
0x12153524 (32 บิต) | 00010010000101010 | 011010100100100 | 0x4610a9a9 | 0 | 10001100 | 00100001010100110101001 |
0x0000000000008ซีซีซี
(64 บิต) |
0000000000000000000000000000000000000000000000001 | 000110011001100 | 0x3FF199999999999A | 0 | 01111111111 | 0001100110011001100110011001100110011001100110011010 |
การแปลงจุดลอยตัวเป็นจุดคงที่ (การแปลง)
CoreFPU ที่กำหนดค่าจากค่าทศนิยมลอยตัวเป็นจุดคงที่ หมายถึงโมดูลแปลงค่าจุดลอยตัวเป็นจุดคงที่ อินพุต (ain) ของ CoreFPU คือเลขทศนิยมลอยตัวความเที่ยงเดี่ยวหรือความเที่ยงคู่ใดๆ และสร้างเอาต์พุต (aout) ในรูปแบบจุดคงที่ซึ่งประกอบด้วยบิตจำนวนเต็มและเศษส่วน อินพุตใช้ได้กับสัญญาณ di_valid และเอาต์พุตใช้ได้กับสัญญาณ do_valid ตัวกำหนดค่า CoreFPU มีตัวเลือกให้เลือกความกว้างของเอาต์พุตเป็นจำนวนเต็มและเศษส่วน
Exampตารางต่อไปนี้แสดงรายละเอียดการดำเนินการแปลงจุดลอยตัวเป็นจุดคงที่
ตารางที่ 2-3. อดีตample สำหรับการแปลงจุดลอยตัวเป็นจุดคงที่
เลขจุดลอยตัว | หมายเลขจุดคงที่ | |||||
เออิน | เข้าสู่ระบบ | เลขยกกำลัง | แมนทิสซา | ออก | จำนวนเต็ม | เศษส่วน |
0x41bd6783 (32 บิต) | 0 | 10000011 | 01111010110011110000011 | 0x000bd678 | 00000000000010111 | 101011001111000 |
0x4002094c447c30d3
(64 บิต) |
0 | 10000000000 | 0010000010010100110001000100011111000011000011010011 | ขนาด 0x0000000000012095 | 0000000000000000000000000000000000000000000000010 | 010000010010101 |
การบวกเลขทศนิยมลอยตัว (การดำเนินการทางคณิตศาสตร์)
CoreFPU ที่กำหนดค่าเป็น FP ADD อนุมานโมดูลการบวกเลขทศนิยมลอยตัว โดยจะบวกเลขทศนิยมสองจำนวน (ain และ bin) และให้ผลลัพธ์ (pout) ในรูปแบบเลขทศนิยมลอยตัว อินพุตและเอาต์พุตเป็นเลขทศนิยมลอยตัวแบบความเที่ยงเดี่ยวหรือแบบความเที่ยงคู่ อินพุตถูกต้องที่สัญญาณ di_valid และเอาต์พุตถูกต้องที่สัญญาณ do_valid แกนหลักจะสร้างแฟล็ก ovfl_fg (Overflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) และ ninf_fg (Negative Infinity) ตามการดำเนินการบวก
Exampตารางต่อไปนี้แสดงรายการสำหรับการดำเนินการบวกเลขทศนิยมลอยตัว
ตารางที่ 2-4. อดีตample สำหรับการดำเนินการบวกเลขทศนิยมแบบลอยตัว (32 บิต)
ค่าจุดลอยตัว | เข้าสู่ระบบ | เลขยกกำลัง | แมนทิสซา |
อินพุตจุดลอยตัว 1 ain (0x4e989680) | 0 | 10011101 | 00110001001011010000000 |
อินพุตแบบจุดลอยตัว 2 ช่อง (0x4f191b40) | 0 | 10011110 | 00110010001101101000000 |
เอาต์พุตการบวกจุดลอยตัว (0x4f656680) | 0 | 10011110 | 11001010110011010000000 |
ตารางที่ 2-5. อดีตample สำหรับการดำเนินการบวกเลขทศนิยมแบบลอยตัว (64 บิต)
ค่าจุดลอยตัว | เข้าสู่ระบบ | เลขยกกำลัง | แมนทิสซา |
อินพุตจุดลอยตัว 1
ain (0x3ff4106ee30caa32) |
0 | 01111111111 | 0100000100000110111011100011000011001010101000110010 |
อินพุตจุดลอยตัว 2
bin (0x40020b2a78798e61) |
0 | 10000000000 | 0010000010110010101001111000011110011000111001100001 |
เอาต์พุตการบวกจุดลอยตัว (0x400c1361e9ffe37a) | 0 | 10000000000 | 1100000100110110000111101001111111111110001101111010 |
การลบเลขทศนิยมแบบจุดลอยตัว (การดำเนินการเลขคณิต)
CoreFPU ที่กำหนดค่าเป็น FP SUB จะอนุมานโมดูลการลบจำนวนจุดลอยตัว โดยจะลบจำนวนจุดลอยตัวสองจำนวน (ain และ bin) และให้ผลลัพธ์ (pout) ในรูปแบบจำนวนจุดลอยตัว อินพุตและเอาต์พุตเป็นจำนวนจุดลอยตัวแบบความเที่ยงเดี่ยวหรือแบบความเที่ยงคู่ อินพุตใช้ได้กับสัญญาณ di_valid และเอาต์พุตใช้ได้กับสัญญาณ do_valid แกนหลักจะสร้างแฟล็ก ovfl_fg (Overflow), unfl_fg (Underflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) และ ninf_fg (Negative Infinity) ตามการดำเนินการลบ
Exampตารางต่อไปนี้แสดงรายการสำหรับการดำเนินการลบจุดลอยตัว
ตารางที่ 2-6. อดีตample สำหรับการดำเนินการลบเลขทศนิยมแบบลอยตัว (32 บิต)
ค่าจุดลอยตัว | เข้าสู่ระบบ | เลขยกกำลัง | แมนทิสซา |
อินพุตจุดลอยตัว 1 ain (0xac85465f) | 1 | 01011001 | 00001010100011001011111 |
อินพุตแบบจุดลอยตัว 2 ช่อง (0x2f516779) | 0 | 01011110 | 10100010110011101111001 |
เอาต์พุตการลบจุดลอยตัว (0xaf5591ac) | 1 | 01011110 | 10101011001000110101011 |
ค่าจุดลอยตัว | เข้าสู่ระบบ | เลขยกกำลัง | แมนทิสซา |
อินพุตจุดลอยตัว 1
เอน (0x405569764adff823) |
0 | 10000000101 | 0101011010010111011001001010110111111111100000100011 |
อินพุตจุดลอยตัว 2
bin (0x4057d04e78dee3fc) |
0 | 10000000101 | 0111110100000100111001111000110111101110001111111100 |
เอาต์พุตการลบจุดลอยตัว (0xc02336c16ff75ec8) | 1 | 10000000010 | 0011001101101100000101101111111101110101111011001000 |
การคูณเลขทศนิยมแบบลอยตัว (การดำเนินการเลขคณิต)
CoreFPU ที่กำหนดค่าเป็น FP MULT อนุมานโมดูลการคูณเลขทศนิยมลอยตัว โดยจะคูณเลขทศนิยมลอยตัวสองตัว (ain และ bin) และให้ผลลัพธ์ (pout) ในรูปแบบเลขทศนิยมลอยตัว อินพุตและเอาต์พุตเป็นเลขทศนิยมลอยตัวแบบความเที่ยงเดี่ยวหรือแบบความเที่ยงคู่ อินพุตถูกต้องที่สัญญาณ di_valid และเอาต์พุตถูกต้องที่สัญญาณ do_valid แกนหลักสร้างแฟล็ก ovfl_fg (Overflow), unfl_fg (Underflow), qnan_fg (Quiet Not a Number), snan_fg (Signalling Not a Number), pinf_fg (Positive Infinity) และ ninf_fg (Negative Infinity) ตามการดำเนินการคูณ
Exampตารางต่อไปนี้แสดงรายการสำหรับการดำเนินการคูณเลขทศนิยมลอยตัว
ตารางที่ 2-8. อดีตample สำหรับการดำเนินการคูณเลขทศนิยมแบบลอยตัว (32 บิต)
ค่าจุดลอยตัว | เข้าสู่ระบบ | เลขยกกำลัง | แมนทิสซา |
อินพุตจุดลอยตัว 1 ain (0x1ec7a735) | 0 | 00111101 | 10001111010011100110101 |
อินพุตจุดลอยตัว 2 ช่อง (0x6ecf15e8) | 0 | 11011101 | 10011110001010111101000 |
เอาต์พุตการคูณจุดลอยตัว (0x4e21814a) | 0 | 10011100 | 01000011000000101001010 |
ค่าจุดลอยตัว | เข้าสู่ระบบ | เลขยกกำลัง | แมนทิสซา |
อินพุตจุดลอยตัว 1
ain (0x40c1f5a9930be0df) |
0 | 10000001100 | 0001111101011010100110010011000010111110000011011111 |
อินพุตจุดลอยตัว 2
bin (0x400a0866c962b501) |
0 | 10000000000 | 1010000010000110011011001001011000101011010100000001 |
เอาต์พุตการคูณจุดลอยตัว (0x40dd38a1c3e2cae9) | 0 | 10000001101 | 1101001110001010000111000011111000101100101011101001 |
ตารางความจริงสำหรับการบวกและการลบ
ตารางค่าความจริงต่อไปนี้แสดงค่าสำหรับการบวกและการลบ ตารางที่ 2-10 ตารางค่าความจริงสำหรับการบวก
ข้อมูล A | ข้อมูล B | เซ็นบิต | ผลลัพธ์ | ล้น | อันเดอร์โฟลว์ | สนาเอ็น | คำถามนาน | พินฟ์ | เอ็นไอเอ็นเอฟ |
QNaN/SNaN | x | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
x | QNaN/SNaN | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
ศูนย์ | ศูนย์ | 0 | โพสซีโร่ | 0 | 0 | 0 | 0 | 0 | 0 |
ศูนย์ | posfinite(y) | 0 | posfinite(y) | 0 | 0 | 0 | 0 | 0 | 0 |
ศูนย์ | เนกฟินิตี(y) | 1 | เนกฟินิตี(y) | 0 | 0 | 0 | 0 | 0 | 0 |
ศูนย์ | โพซินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
ศูนย์ | เนกินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
posfinite(y) | ศูนย์ | 0 | posfinite(y) | 0 | 0 | 0 | 0 | 0 | 0 |
บวกอนันต์ | โพซินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โต๊ะ 2-10. ตารางค่าความจริงสำหรับการบวก (ต่อ) | |||||||||
ข้อมูล A | ข้อมูล B | เซ็นบิต | ผลลัพธ์ | ล้น | อันเดอร์โฟลว์ | สนาเอ็น | คำถามนาน | พินฟ์ | เอ็นไอเอ็นเอฟ |
บวกอนันต์ | เนกินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกฟินิตี(y) | ศูนย์ | 1 | เนกฟินิตี(y) | 0 | 0 | 0 | 0 | 0 | 0 |
เนกอฟินิท | โพซินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
เนกอฟินิท | เนกินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
โพซินอนันต์ | ศูนย์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โพซินอนันต์ | บวกอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โพซินอนันต์ | เนกอฟินิท | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โพซินอนันต์ | โพซินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โพซินอนันต์ | เนกินอนันต์ | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
เนกินอนันต์ | ศูนย์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกินอนันต์ | บวกอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกินอนันต์ | เนกอฟินิท | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกินอนันต์ | โพซินอนันต์ | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
เนกินอนันต์ | เนกินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
บวกอนันต์ | บวกอนันต์ | 0 | บวกอนันต์ | 0 | 0 | 0 | 0 | 0 | 0 |
บวกอนันต์ | บวกอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
บวกอนันต์ | บวกอนันต์ | 0/1 | คำถามนาน | 0 | 0 | 0 | 1 | 0 | 0 |
บวกอนันต์ | บวกอนันต์ | 0/1 | สนาเอ็น | 0 | 0 | 1 | 0 | 0 | 0 |
บวกอนันต์ | บวกอนันต์ | 0 | โพสนาเอ็น | 1 | 0 | 1 | 0 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 0 | บวกอนันต์ | 0 | 0 | 0 | 0 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 1 | เนกอฟินิท | 0 | 0 | 0 | 0 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 0 | โพสนาเอ็น | 0 | 1 | 1 | 0 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 0 | บวกอนันต์ | 0 | 0 | 0 | 0 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 1 | เนกอฟินิท | 0 | 0 | 0 | 0 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 0 | โพสนาเอ็น | 0 | 1 | 1 | 0 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 1 | เนกอฟินิท | 0 | 0 | 0 | 0 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกอฟินิท | เนกอฟินิท | 0/1 | คำถามนาน | 0 | 0 | 0 | 1 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 0/1 | สนาเอ็น | 0 | 0 | 1 | 0 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 0 | โพสนาเอ็น | 1 | 0 | 1 | 0 | 0 | 0 |
ข้อมูล A | ข้อมูล B | เซ็นบิต | ผลลัพธ์ | ล้น | อันเดอร์โฟลว์ | สนาเอ็น | คำถามนาน | พินฟ์ | เอ็นไอเอ็นเอฟ |
QNaN/SNaN | x | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
x | QNaN/SNaN | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
ศูนย์ | ศูนย์ | 0 | โพสซีโร่ | 0 | 0 | 0 | 0 | 0 | 0 |
ศูนย์ | posfinite(y) | 1 | เนกฟินิตี(y) | 0 | 0 | 0 | 0 | 0 | 0 |
ศูนย์ | เนกฟินิตี(y) | 0 | posfinite(y) | 0 | 0 | 0 | 0 | 0 | 0 |
ศูนย์ | โพซินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
ศูนย์ | เนกินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
posfinite(y) | ศูนย์ | 0 | posfinite(y) | 0 | 0 | 0 | 0 | 0 | 0 |
บวกอนันต์ | โพซินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
บวกอนันต์ | เนกินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
เนกฟินิตี(y) | ศูนย์ | 1 | เนกฟินิตี(y) | 0 | 0 | 0 | 0 | 0 | 0 |
เนกอฟินิท | โพซินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
โต๊ะ 2-11. ตารางค่าความจริงสำหรับการลบ (ต่อ) | |||||||||
ข้อมูล A | ข้อมูล B | เซ็นบิต | ผลลัพธ์ | ล้น | อันเดอร์โฟลว์ | สนาเอ็น | คำถามนาน | พินฟ์ | เอ็นไอเอ็นเอฟ |
เนกอฟินิท | เนกินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โพซินอนันต์ | ศูนย์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โพซินอนันต์ | บวกอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โพซินอนันต์ | เนกอฟินิท | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โพซินอนันต์ | โพซินอนันต์ | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
โพซินอนันต์ | เนกินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
เนกินอนันต์ | ศูนย์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกินอนันต์ | บวกอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกินอนันต์ | เนกอฟินิท | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกินอนันต์ | โพซินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกินอนันต์ | เนกินอนันต์ | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
บวกอนันต์ | บวกอนันต์ | 0 | บวกอนันต์ | 0 | 0 | 0 | 0 | 0 | 0 |
บวกอนันต์ | บวกอนันต์ | 1 | เนกอฟินิท | 0 | 0 | 0 | 0 | 0 | 0 |
บวกอนันต์ | บวกอนันต์ | 0 | โพสนาเอ็น | 0 | 1 | 1 | 0 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 0 | บวกอนันต์ | 0 | 0 | 0 | 0 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
บวกอนันต์ | เนกอฟินิท | 0/1 | คำถามนาน | 0 | 0 | 0 | 1 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 0/1 | สนาเอ็น | 0 | 0 | 1 | 0 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 0 | โพสนาเอ็น | 1 | 0 | 1 | 0 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 1 | เนกอฟินิท | 0 | 0 | 0 | 0 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกอฟินิท | บวกอนันต์ | 0/1 | คำถามนาน | 0 | 0 | 0 | 1 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 0/1 | สนาเอ็น | 0 | 0 | 1 | 0 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 0 | โพสนาเอ็น | 1 | 0 | 1 | 0 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 0 | บวกอนันต์ | 0 | 0 | 0 | 0 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 1 | เนกอฟินิท | 0 | 0 | 0 | 0 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 0 | โพสนาเอ็น | 0 | 1 | 1 | 0 | 0 | 0 |
สำคัญ:
- ซึ่งในตารางข้างต้นหมายถึงตัวเลขใดๆ
- ในตารางก่อนหน้าแสดงถึงเงื่อนไขไม่สนใจ
ตารางความจริงสำหรับการคูณ
ตารางความจริงต่อไปนี้แสดงรายการค่าสำหรับการดำเนินการคูณ
ตาราง 2-12 ตารางค่าความจริงของการคูณ
ข้อมูล A | ข้อมูล B | เซ็นบิต | ผลลัพธ์ | ล้น | อันเดอร์โฟลว์ | สนาเอ็น | คำถามนาน | พินฟ์ | เอ็นไอเอ็นเอฟ |
QNaN/SNaN | x | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
x | QNaN/SNaN | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
ศูนย์ | ศูนย์ | 0 | โพสซีโร่ | 0 | 0 | 0 | 0 | 0 | 0 |
ศูนย์ | บวกอนันต์ | 0 | โพสซีโร่ | 0 | 0 | 0 | 0 | 0 | 0 |
ศูนย์ | เนกอฟินิท | 0 | โพสซีโร่ | 0 | 0 | 0 | 0 | 0 | 0 |
ศูนย์ | โพซินอนันต์ | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
ศูนย์ | เนกินอนันต์ | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
โต๊ะ 2-12. ตารางค่าความจริงของการคูณ (ต่อ) | |||||||||
ข้อมูล A | ข้อมูล B | เซ็นบิต | ผลลัพธ์ | ล้น | อันเดอร์โฟลว์ | สนาเอ็น | คำถามนาน | พินฟ์ | เอ็นไอเอ็นเอฟ |
บวกอนันต์ | ศูนย์ | 0 | โพสซีโร่ | 0 | 0 | 0 | 0 | 0 | 0 |
บวกอนันต์ | โพซินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
บวกอนันต์ | เนกินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกอฟินิท | ศูนย์ | 0 | โพสซีโร่ | 0 | 0 | 0 | 0 | 0 | 0 |
เนกอฟินิท | โพซินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกอฟินิท | เนกินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โพซินอนันต์ | ศูนย์ | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
โพซินอนันต์ | บวกอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โพซินอนันต์ | เนกอฟินิท | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
โพซินอนันต์ | โพซินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
โพซินอนันต์ | เนกินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกินอนันต์ | ศูนย์ | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
เนกินอนันต์ | บวกอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกินอนันต์ | เนกอฟินิท | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
เนกินอนันต์ | โพซินอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกินอนันต์ | เนกินอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
บวกอนันต์ | บวกอนันต์ | 0 | บวกอนันต์ | 0 | 0 | 0 | 0 | 0 | 0 |
บวกอนันต์ | บวกอนันต์ | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
บวกอนันต์ | บวกอนันต์ | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
บวกอนันต์ | บวกอนันต์ | 0 | โพสนาเอ็น | 0 | 0 | 1 | 0 | 0 | 0 |
บวกอนันต์ | บวกอนันต์ | 0 | โพสนาเอ็น | 1 | 0 | 1 | 0 | 0 | 0 |
บวกอนันต์ | บวกอนันต์ | 0 | โพสนาเอ็น | 0 | 1 | 1 | 0 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 1 | เนกอฟินิท | 0 | 0 | 0 | 0 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
บวกอนันต์ | เนกอฟินิท | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 0 | โพสนาเอ็น | 0 | 0 | 1 | 0 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 0 | โพสนาเอ็น | 1 | 0 | 1 | 0 | 0 | 0 |
บวกอนันต์ | เนกอฟินิท | 0 | โพสนาเอ็น | 0 | 1 | 1 | 0 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 1 | เนกอฟินิท | 0 | 0 | 0 | 0 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 1 | เนกินอนันต์ | 0 | 0 | 0 | 0 | 0 | 1 |
เนกอฟินิท | บวกอนันต์ | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 0 | โพสนาเอ็น | 0 | 0 | 1 | 0 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 0 | โพสนาเอ็น | 1 | 0 | 1 | 0 | 0 | 0 |
เนกอฟินิท | บวกอนันต์ | 0 | โพสนาเอ็น | 0 | 1 | 1 | 0 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 0 | บวกอนันต์ | 0 | 0 | 0 | 0 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 0 | โพซินอนันต์ | 0 | 0 | 0 | 0 | 1 | 0 |
เนกอฟินิท | เนกอฟินิท | 0 | โพสคิวนาเอ็น | 0 | 0 | 0 | 1 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 0 | โพสคิวนาเอ็น | 0 | 0 | 1 | 0 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 0 | โพสคิวนาเอ็น | 1 | 0 | 1 | 0 | 0 | 0 |
เนกอฟินิท | เนกอฟินิท | 0 | โพสคิวนาเอ็น | 0 | 1 | 1 | 0 | 0 | 0 |
สำคัญ:
บิตเครื่องหมาย '0' กำหนดเอาต์พุตบวก และ '1' กำหนดเอาต์พุตลบ
x ในตารางก่อนหน้าแสดงถึงเงื่อนไขไม่สนใจ
พารามิเตอร์ CoreFPU และสัญญาณอินเทอร์เฟซ
หัวข้อนี้จะกล่าวถึงพารามิเตอร์ในการตั้งค่า CoreFPU Configurator และสัญญาณ I/O
พารามิเตอร์การกำหนดค่า GUI
มีตัวเลือกการกำหนดค่ามากมายที่ใช้ได้กับหน่วย FPU ดังแสดงในตารางต่อไปนี้ หากต้องการการกำหนดค่าอื่นนอกเหนือจากค่าเริ่มต้น กล่องโต้ตอบการกำหนดค่าจะใช้เพื่อเลือกค่าที่เหมาะสมสำหรับตัวเลือกที่กำหนดค่าได้
ตาราง 3-1 พารามิเตอร์ GUI การกำหนดค่า CoreFPU
ชื่อพารามิเตอร์ | ค่าเริ่มต้น | คำอธิบาย |
ความแม่นยำ | เดี่ยว | เลือกการดำเนินการตามความต้องการ:
ความแม่นยำเดี่ยว |
ประเภทการแปลง | การแปลงจุดคงที่เป็นจุดลอยตัว | เลือกการดำเนินการตามความต้องการ:
|
ความกว้างของเศษส่วนอินพุต1 | 15 | กำหนดค่าจุดเศษส่วนในสัญญาณอินพุต ain และ bin
ช่วงที่ถูกต้องคือ 31–1 |
ความกว้างของเศษส่วนเอาต์พุต2 | 15 | กำหนดค่าจุดเศษส่วนในสัญญาณเอาท์พุต
ช่วงที่ถูกต้องคือ 51–1 |
สำคัญ:
- พารามิเตอร์นี้สามารถกำหนดค่าได้เฉพาะในระหว่างการแปลงจุดคงที่เป็นจุดลอยตัวเท่านั้น
- พารามิเตอร์นี้สามารถกำหนดค่าได้เฉพาะในระหว่างการแปลงจุดลอยตัวเป็นจุดคงที่เท่านั้น
สัญญาณอินพุตและเอาต์พุต (ถามคำถาม)
ตารางต่อไปนี้แสดงรายการสัญญาณพอร์ตอินพุตและเอาต์พุตของ CoreFPU
ตาราง 3-2 คำอธิบายพอร์ต
ชื่อสัญญาณ | ความกว้าง | พิมพ์ | คำอธิบาย |
คล้าก | 1 | ป้อนข้อมูล | นาฬิการะบบหลัก |
ร.ส.ท. | 1 | ป้อนข้อมูล | การรีเซ็ตแบบอะซิงโครนัสแบบแอคทีฟ-โลว์ |
di_valid | 1 | ป้อนข้อมูล | อินพุตแอคทีฟสูงถูกต้อง
สัญญาณนี้บ่งชี้ว่าข้อมูลที่มีอยู่ใน ain[31:0], ain[63:0] และ bin[31:0], bin[63:0] นั้นถูกต้อง |
เออิน | 32/64 | ป้อนข้อมูล | บัสอินพุต (ใช้สำหรับการดำเนินการทั้งหมด) |
ถังขยะ1 | 32/64 | ป้อนข้อมูล | บัสอินพุต B (ใช้สำหรับการดำเนินการทางคณิตศาสตร์เท่านั้น) |
ออก2 | 32/64 | เอาท์พุต | ค่าเอาต์พุตเมื่อเลือกการดำเนินการแปลงจากจุดลอยตัวเป็นลอยตัวหรือจากจุดลอยตัวเป็นคงที่ |
ยื่นปาก1 | 32/64 | เอาท์พุต | ค่าเอาท์พุตเมื่อเลือกการดำเนินการบวก ลบ หรือคูณ |
โต๊ะ 3-2. คำอธิบายพอร์ต (ต่อ) | |||
ชื่อสัญญาณ | ความกว้าง | พิมพ์ | คำอธิบาย |
ถูกต้อง | 1 | เอาท์พุต | สัญญาณแอคทีฟสูง
สัญญาณนี้บ่งชี้ว่าข้อมูลที่มีอยู่ในบัสข้อมูล pout/aout นั้นถูกต้อง |
ovfl_fg3 | 1 | เอาท์พุต | สัญญาณแอคทีฟสูง
สัญญาณนี้ระบุการล้นระหว่างการดำเนินการจุดลอยตัว |
ไม่ฟล_ฟก | 1 | เอาท์พุต | สัญญาณแอคทีฟสูง
สัญญาณนี้ระบุการไหลเกินระหว่างการดำเนินการจุดลอยตัว |
คิวแนน_เอฟจี3 | 1 | เอาท์พุต | สัญญาณแอคทีฟสูง
สัญญาณนี้ระบุถึง Quiet Not a Number (QNaN) ในระหว่างการดำเนินการแบบจุดลอยตัว |
สนาน_เอฟจี | 1 | เอาท์พุต | สัญญาณแอคทีฟสูง
สัญญาณนี้ระบุการส่งสัญญาณแบบไม่ใช่ตัวเลข (SNaN) ในระหว่างการดำเนินการแบบจุดลอยตัว |
พินฟ์_เอฟจี3 | 1 | เอาท์พุต | สัญญาณแอคทีฟสูง
สัญญาณนี้ระบุอินฟินิตี้บวกในระหว่างการดำเนินการจุดลอยตัว |
นินฟ์_เอฟจี | 1 | เอาท์พุต | สัญญาณแอคทีฟสูง
สัญญาณนี้ระบุค่าอินฟินิตี้เชิงลบระหว่างการดำเนินการจุดลอยตัว |
สำคัญ:
- พอร์ตนี้มีไว้สำหรับการบวก ลบ หรือคูณเลขทศนิยมเท่านั้น
- พอร์ตนี้มีไว้สำหรับการแปลงจากจุดคงที่เป็นจุดลอยตัวและจากจุดลอยตัวเป็นจุดคงที่เท่านั้น
- พอร์ตนี้มีไว้สำหรับการแปลงจุดลอยตัวเป็นจุดคงที่ การบวกจุดลอยตัว การลบจุดลอยตัว และการคูณจุดลอยตัว
การนำ CoreFPU ไปใช้ใน Libero Design Suite
หัวข้อนี้จะอธิบายการใช้งาน CoreFPU ใน Libero Design Suite
สมาร์ทดีไซน์
CoreFPU พร้อมให้ดาวน์โหลดในแค็ตตาล็อก Libero IP ผ่านทาง web ที่เก็บข้อมูล เมื่ออยู่ในแค็ตตาล็อกแล้ว คอร์จะถูกสร้างอินสแตนซ์โดยใช้โฟลว์ SmartDesign สำหรับข้อมูลเกี่ยวกับการใช้ SmartDesign เพื่อกำหนดค่า เชื่อมต่อ และสร้างคอร์ โปรดดูวิธีใช้ออนไลน์ของ Libero SoC
หลังจากกำหนดค่าและสร้างอินสแตนซ์หลักแล้ว ฟังก์ชันการทำงานพื้นฐานจะถูกจำลองโดยใช้ Testbench ที่มาพร้อมกับ CoreFPU พารามิเตอร์ Testbench จะปรับให้เข้ากับการกำหนดค่า CoreFPU โดยอัตโนมัติ CoreFPU จะถูกสร้างเป็นส่วนประกอบของการออกแบบที่ใหญ่กว่า
รูปที่ 4-1 อินสแตนซ์ SmartDesign CoreFPU สำหรับการดำเนินการทางคณิตศาสตร์
รูปที่ 4-2 อินสแตนซ์ SmartDesign CoreFPU สำหรับการดำเนินการแปลง
การแปลงจุดคงที่เป็นจุดลอยตัว
ระหว่างการแปลงค่าจุดคงที่เป็นจำนวนจุดลอยตัว สามารถกำหนดค่าความกว้างเศษส่วนอินพุตได้ ความกว้างเอาต์พุตถูกตั้งค่าเป็น 32 บิตสำหรับความแม่นยำเดี่ยว และ 64 บิตสำหรับความแม่นยำสองเท่าตามค่าเริ่มต้น
หากต้องการแปลงจากจุดคงที่เป็นจุดลอยตัว ให้เลือกประเภทการแปลงจากจุดคงที่เป็นจุดลอยตัว ดังที่แสดงในรูปต่อไปนี้
จากจุดลอยตัวไปเป็นจุดคงที่
ในระหว่างการแปลงจุดลอยตัวเป็นจุดคงที่ ความกว้างเศษส่วนของเอาต์พุตสามารถกำหนดค่าได้ และความกว้างอินพุตจะถูกตั้งเป็น 32 บิตสำหรับความแม่นยำเดี่ยวและ 64 บิตสำหรับจุดลอยตัวความแม่นยำสองเท่าตามค่าเริ่มต้น
หากต้องการแปลงจากจุดลอยตัวเป็นจุดคงที่ ให้เลือกประเภทการแปลงจากจุดลอยตัวเป็นจุดคงที่ ดังที่แสดงในรูปต่อไปนี้
รูปที่ 4-4 ตัวกำหนดค่า CoreFPU สำหรับจุดลอยตัวเป็นค่าคงที่ การบวก/ลบ/คูณเลขทศนิยมลอยตัว
ในระหว่างการบวก ลบ และคูณแบบจุดลอยตัว ความกว้างของเศษส่วนอินพุตและความกว้างของเศษส่วนเอาต์พุตไม่สามารถกำหนดค่าได้ เนื่องจากเป็นการดำเนินการเลขคณิตแบบจุดลอยตัว และความกว้างของอินพุต/เอาต์พุตจะถูกตั้งเป็นความแม่นยำเดี่ยว 32 บิตและ 64 บิตสำหรับความแม่นยำสองเท่าแบบจุดลอยตัวตามค่าเริ่มต้น
รูปต่อไปนี้แสดงตัวกำหนดค่า CoreFPU สำหรับการดำเนินการลบจุดลอยตัว
รูปที่ 4-5 ตัวกำหนดค่า CoreFPU สำหรับการลบจุดลอยตัวการจำลอง (ถามคำถาม)
ในการรันการจำลอง ในหน้าต่างการกำหนดค่าหลัก ให้เลือก User Testbench หลังจากสร้าง CoreFPU แล้ว ภาษาคำอธิบายฮาร์ดแวร์ (HDL) ของ Testbench ก่อนการสังเคราะห์ files ได้รับการติดตั้งใน Libero แล้ว
รูปคลื่นจำลอง (ถามคำถาม)
หัวข้อนี้จะกล่าวถึงรูปแบบคลื่นจำลองสำหรับ CoreFPU
รูปภาพต่อไปนี้แสดงรูปคลื่นของการแปลงจุดคงที่เป็นจุดลอยตัวสำหรับทั้ง 32 บิตและ 64 บิต
การรวมระบบ
รูปต่อไปนี้แสดง example ของการใช้แกนหลัก ในกรณีนี้ample, UART ของการออกแบบใช้เป็นช่องทางการสื่อสารระหว่างการออกแบบและพีซีโฮสต์ สัญญาณ ain และ bin (แต่ละสัญญาณมีความกว้าง 32 บิตหรือ 64 บิต) เป็นอินพุตจาก UART เข้าสู่การออกแบบ หลังจากที่ CoreFPU รับสัญญาณ di_valid แล้ว มันจะคำนวณผลลัพธ์ หลังจากคำนวณผลลัพธ์แล้ว สัญญาณ do_valid จะเปลี่ยนเป็น high และเก็บผลลัพธ์ (ข้อมูล aout/pout) ไว้ในบัฟเฟอร์เอาต์พุต ขั้นตอนเดียวกันนี้ใช้ได้กับการแปลงและการดำเนินการทางคณิตศาสตร์ สำหรับการดำเนินการแปลง อินพุต ain เท่านั้นก็เพียงพอ ในขณะที่การดำเนินการทางคณิตศาสตร์ ต้องใช้ทั้งอินพุต ain และ bin เอาต์พุต aout ถูกเปิดใช้งานสำหรับการดำเนินการแปลง และพอร์ต pout ถูกเปิดใช้งานสำหรับการดำเนินการทางคณิตศาสตร์
รูปที่ 4-16 อดีตample ของระบบ CoreFPU
- การสังเคราะห์ (ถามคำถาม)
ในการรันการสังเคราะห์บน CoreFPU ให้ตั้งค่ารูทการออกแบบเป็นอินสแตนซ์ส่วนประกอบ IP และจากบานหน้าต่างกระแสการออกแบบ Libero ให้รันเครื่องมือ Synthesis
สถานที่และเส้นทาง (สอบถาม)
หลังจากสังเคราะห์การออกแบบแล้ว ให้เรียกใช้เครื่องมือ Place-and-Route CoreFPU ไม่ต้องการการตั้งค่า Placeand-Route พิเศษใดๆ - ผู้ใช้ Testbench (ถามคำถาม)
CoreFPU IP เวอร์ชันนี้มีการทดสอบการใช้งานสำหรับผู้ใช้ คุณสามารถตรวจสอบพฤติกรรมการทำงานของ CoreFPU ได้ด้วยการทดสอบนี้
แผนภาพบล็อกแบบง่ายของการทดสอบผู้ใช้แสดงไว้ในรูปต่อไปนี้ การทดสอบผู้ใช้จะสร้างการออกแบบ CoreFPU ที่กำหนดค่าไว้ (UUT) และประกอบด้วยตัวสร้างข้อมูลการทดสอบพฤติกรรม สัญญาณนาฬิกาที่จำเป็น และสัญญาณรีเซ็ต
รูปที่ 4-17 การทดสอบผู้ใช้ CoreFPU
สิ่งสำคัญ: คุณต้องตรวจสอบสัญญาณเอาต์พุตในเครื่องจำลอง ModelSim โปรดดูส่วนการจำลอง
เอกสารอ้างอิงเพิ่มเติม (ถามคำถาม)
ส่วนนี้มีรายการข้อมูลเพิ่มเติม
สำหรับการอัปเดตและข้อมูลเพิ่มเติมเกี่ยวกับซอฟต์แวร์ อุปกรณ์ และฮาร์ดแวร์ โปรดไปที่
หน้าทรัพย์สินทางปัญญาของ FPGA และ PLD ของ Microchip webเว็บไซต์.
- ปัญหาที่ทราบและแนวทางแก้ไข (ถามคำถาม)
ไม่มีปัญหาที่ทราบและแนวทางแก้ไขสำหรับ CoreFPU v3.0 - คุณสมบัติและอุปกรณ์ที่เลิกผลิต (ถามคำถาม)
ไม่มีคุณลักษณะและอุปกรณ์ที่เลิกผลิตในรุ่น IP นี้
คำศัพท์
ต่อไปนี้คือรายการคำศัพท์และคำจำกัดความที่ใช้ในเอกสาร
ตารางที่ 6-1 คำศัพท์และคำจำกัดความ
ภาคเรียน | คำนิยาม |
เอฟพียู | หน่วยจุดลอยตัว |
เอฟพี แอด | การบวกเลขทศนิยมลอยตัว |
FP ซับ | การลบเลขทศนิยมลอยตัว |
FP มัลติ | การคูณเลขทศนิยมลอยตัว |
ปัญหาที่ได้รับการแก้ไข
ตารางต่อไปนี้แสดงรายการปัญหาที่ได้รับการแก้ไขทั้งหมดสำหรับรุ่น CoreFPU ต่างๆ
ตาราง 7-1. ปัญหาที่ได้รับการแก้ไข
ปล่อย | คำอธิบาย |
3.0 | ต่อไปนี้คือรายการปัญหาทั้งหมดที่ได้รับการแก้ไขในรุ่น v3.0:
หมายเลขคดี: 01420387 และ 01422128 เพิ่มตรรกะรูปแบบการปัดเศษ (ปัดเศษเป็นจำนวนคู่ที่ใกล้เคียงที่สุด) |
2.1 | ต่อไปนี้คือรายการปัญหาทั้งหมดที่ได้รับการแก้ไขในรุ่น v2.1: การออกแบบพบปัญหาเนื่องจากมีโมดูลซ้ำกันเมื่อมีการสร้างอินสแตนซ์คอร์หลายตัว การเปลี่ยนชื่ออินสแตนซ์ IP ของ CoreFPU ส่งผลให้เกิดข้อผิดพลาด “โมดูลไม่ได้กำหนด” |
1.0 | การเปิดตัวครั้งแรก |
การใช้ทรัพยากรอุปกรณ์และประสิทธิภาพการทำงาน
แมโคร CoreFPU ถูกนำไปใช้ในกลุ่มที่ระบุไว้ในตารางต่อไปนี้
ตาราง 8-1 การใช้อุปกรณ์หน่วย PolarFire ของ FPU สำหรับ 32 บิต
ทรัพยากร FPGA | การใช้ประโยชน์ | |||||||
ตระกูล | 4LUT | ดีเอฟเอฟ | ทั้งหมด | บล็อกคณิตศาสตร์ | อุปกรณ์ | เปอร์เซ็นtage | ผลงาน | ความหน่วงเวลา |
จากจุดคงที่ไปเป็นจุดลอยตัว | ||||||||
โพลาร์ไฟร์® | 260 | 104 | 364 | 0 | MPF300T | 0.12 | 310 เมกะเฮิรตซ์ | 3 |
จากจุดลอยตัวไปเป็นจุดคงที่ | ||||||||
โพลาร์ไฟร์ | 591 | 102 | 693 | 0 | MPF300T | 0.23 | 160 เมกะเฮิรตซ์ | 3 |
การบวกเลขทศนิยมลอยตัว | ||||||||
โพลาร์ไฟร์ | 1575 | 1551 | 3126 | 0 | MPF300T | 1.06 | 340 เมกะเฮิรตซ์ | 16 |
การลบเลขทศนิยมลอยตัว | ||||||||
โพลาร์ไฟร์ | 1561 | 1549 | 3110 | 0 | MPF300T | 1.04 | 345 เมกะเฮิรตซ์ | 16 |
การคูณเลขทศนิยมลอยตัว | ||||||||
โพลาร์ไฟร์ | 465 | 847 | 1312 | 4 | MPF300T | 0.44 | 385 เมกะเฮิรตซ์ | 14 |
ทรัพยากร FPGA | การใช้ประโยชน์ | |||||||
ตระกูล | 4LUT | ดีเอฟเอฟ | ทั้งหมด | บล็อกคณิตศาสตร์ | อุปกรณ์ | เปอร์เซ็นtage | ผลงาน | ความหน่วงเวลา |
จากจุดคงที่ไปเป็นจุดลอยตัว | ||||||||
RTG4™ | 264 | 104 | 368 | 0 | อาร์ที4จี150 | 0.24 | 160 เมกะเฮิรตซ์ | 3 |
จากจุดลอยตัวไปเป็นจุดคงที่ | ||||||||
RTG4 | 439 | 112 | 551 | 0 | อาร์ที4จี150 | 0.36 | 105 เมกะเฮิรตซ์ | 3 |
การบวกเลขทศนิยมลอยตัว | ||||||||
RTG4 | 1733 | 1551 | 3284 | 0 | อาร์ที4จี150 | 1.16 | 195 เมกะเฮิรตซ์ | 16 |
การลบเลขทศนิยมลอยตัว | ||||||||
RTG4 | 1729 | 1549 | 3258 | 0 | อาร์ที4จี150 | 1.16 | 190 เมกะเฮิรตซ์ | 16 |
การคูณเลขทศนิยมลอยตัว | ||||||||
RTG4 | 468 | 847 | 1315 | 4 | อาร์ที4จี150 | 0.87 | 175 เมกะเฮิรตซ์ | 14 |
ทรัพยากร FPGA | การใช้ประโยชน์ | |||||||
ตระกูล | 4LUT | ดีเอฟเอฟ | ทั้งหมด | บล็อกคณิตศาสตร์ | อุปกรณ์ | เปอร์เซ็นtage | ผลงาน | ความหน่วงเวลา |
จากจุดคงที่ไปเป็นจุดลอยตัว | ||||||||
โพลาร์ไฟร์® | 638 | 201 | 849 | 0 | MPF300T | 0.28 | 305 เมกะเฮิรตซ์ | 3 |
จากจุดลอยตัวไปเป็นจุดคงที่ | ||||||||
โพลาร์ไฟร์ | 2442 | 203 | 2645 | 0 | MPF300T | 0.89 | 110 เมกะเฮิรตซ์ | 3 |
การบวกเลขทศนิยมลอยตัว | ||||||||
โพลาร์ไฟร์ | 5144 | 4028 | 9172 | 0 | MPF300T | 3.06 | 240 เมกะเฮิรตซ์ | 16 |
การลบเลขทศนิยมลอยตัว | ||||||||
โพลาร์ไฟร์ | 5153 | 4026 | 9179 | 0 | MPF300T | 3.06 | 250 เมกะเฮิรตซ์ | 16 |
การคูณเลขทศนิยมลอยตัว | ||||||||
โพลาร์ไฟร์ | 1161 | 3818 | 4979 | 16 | MPF300T | 1.66 | 340 เมกะเฮิรตซ์ | 27 |
ทรัพยากร FPGA | การใช้ประโยชน์ | |||||||
ตระกูล | 4LUT | ดีเอฟเอฟ | ทั้งหมด | บล็อกคณิตศาสตร์ | อุปกรณ์ | เปอร์เซ็นtage | ผลงาน | ความหน่วงเวลา |
จากจุดคงที่ไปเป็นจุดลอยตัว | ||||||||
RTG4™ | 621 | 201 | 822 | 0 | อาร์ที4จี150 | 0.54 | 140 เมกะเฮิรตซ์ | 3 |
จากจุดลอยตัวไปเป็นจุดคงที่ | ||||||||
RTG4 | 1114 | 203 | 1215 | 0 | อาร์ที4จี150 | 0.86 | 75 เมกะเฮิรตซ์ | 3 |
การบวกเลขทศนิยมลอยตัว | ||||||||
RTG4 | 4941 | 4028 | 8969 | 0 | อาร์ที4จี150 | 5.9 | 140 เมกะเฮิรตซ์ | 16 |
การลบเลขทศนิยมลอยตัว | ||||||||
RTG4 | 5190 | 4026 | 9216 | 0 | อาร์ที4จี150 | 6.07 | 130 เมกะเฮิรตซ์ | 16 |
การคูณเลขทศนิยมลอยตัว | ||||||||
RTG4 | 1165 | 3818 | 4983 | 16 | อาร์ที4จี150 | 3.28 | 170 เมกะเฮิรตซ์ | 27 |
สิ่งสำคัญ: หากต้องการเพิ่มความถี่ ให้เลือกตัวเลือก เปิดใช้งานการกำหนดเวลาใหม่ในการตั้งค่าการสังเคราะห์
ประวัติการแก้ไข
ประวัติการแก้ไขจะอธิบายการเปลี่ยนแปลงที่เกิดขึ้นในเอกสาร โดยจะแสดงรายการการเปลี่ยนแปลงตามการแก้ไข โดยเริ่มจากการเผยแพร่ครั้งล่าสุด
รองรับ Microchip FPGA
กลุ่มผลิตภัณฑ์ Microchip FPGA สนับสนุนผลิตภัณฑ์ด้วยบริการสนับสนุนต่างๆ รวมถึงการบริการลูกค้า ศูนย์สนับสนุนด้านเทคนิคสำหรับลูกค้า a webเว็บไซต์และสำนักงานขายทั่วโลก ขอแนะนำให้ลูกค้าเข้าชมแหล่งข้อมูลออนไลน์ของ Microchip ก่อนติดต่อฝ่ายสนับสนุน เนื่องจากเป็นไปได้มากที่คำถามของพวกเขาจะได้รับคำตอบแล้ว
ติดต่อศูนย์บริการทางเทคนิคผ่าน webไซต์ที่ www.microchip.com/support. ระบุหมายเลขชิ้นส่วนอุปกรณ์ FPGA เลือกหมวดหมู่เคสที่เหมาะสม และอัปโหลดการออกแบบ fileขณะสร้างกรณีการสนับสนุนทางเทคนิค
ติดต่อฝ่ายบริการลูกค้าสำหรับการสนับสนุนผลิตภัณฑ์ที่ไม่ใช่ด้านเทคนิค เช่น ราคาผลิตภัณฑ์ การอัพเกรดผลิตภัณฑ์ ข้อมูลอัปเดต สถานะการสั่งซื้อ และการอนุญาต
- จากอเมริกาเหนือ โทร 800.262.1060
- จากส่วนอื่นของโลก โทร 650.318.4460
- แฟกซ์จากทุกที่ในโลก 650.318.8044
ข้อมูลไมโครชิป
เครื่องหมายการค้า
ชื่อและโลโก้ “Microchip” โลโก้ “M” และชื่อ โลโก้ และแบรนด์อื่นๆ เป็นเครื่องหมายการค้าจดทะเบียนและไม่ได้จดทะเบียนของ Microchip Technology Incorporated หรือบริษัทในเครือและ/หรือบริษัทย่อยในสหรัฐอเมริกาและ/หรือประเทศอื่นๆ (“เครื่องหมายการค้า Microchip”) ข้อมูลเกี่ยวกับเครื่องหมายการค้า Microchip สามารถพบได้ที่ https://www.microchip.com/en-us/about/legal-information/microchip-trademarks
ISBN: 979-8-3371-0947-3
ประกาศทางกฎหมาย
สิ่งพิมพ์และข้อมูลในที่นี้สามารถใช้ได้เฉพาะกับผลิตภัณฑ์ของไมโครชิป ซึ่งรวมถึงการออกแบบ ทดสอบ และผสานรวมผลิตภัณฑ์ของไมโครชิปเข้ากับแอปพลิเคชันของคุณ การใช้ข้อมูลนี้ในลักษณะอื่นใดถือเป็นการละเมิดข้อกำหนดเหล่านี้ ข้อมูลเกี่ยวกับแอปพลิเคชันของอุปกรณ์มีให้เพื่อความสะดวกของคุณเท่านั้นและอาจถูกแทนที่ด้วยการอัปเดต เป็นความรับผิดชอบของคุณที่จะต้องตรวจสอบให้แน่ใจว่าใบสมัครของคุณตรงตามข้อกำหนดของคุณ ติดต่อสำนักงานขายของ Microchip ในพื้นที่ของคุณเพื่อขอรับการสนับสนุนเพิ่มเติม หรือขอรับการสนับสนุนเพิ่มเติมที่ www.microchip.com/en-us/support/design-help/client-support-services
ข้อมูลนี้จัดทำโดย MICROCHIP "ตามที่เป็น" MICROCHIP ไม่รับรองหรือรับประกันใดๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยนัย เป็นลายลักษณ์อักษรหรือวาจา ตามกฎหมายหรืออย่างอื่นใดที่เกี่ยวข้องกับข้อมูล รวมถึงแต่ไม่จำกัดเฉพาะการรับประกันโดยนัยของการไม่ละเมิด ความสามารถในการขาย และความเหมาะสมสำหรับจุดประสงค์เฉพาะ หรือการรับประกันที่เกี่ยวข้องกับเงื่อนไข คุณภาพ หรือประสิทธิภาพ
ในกรณีใดๆ MICROCHIP จะไม่รับผิดชอบต่อการสูญเสีย ความเสียหาย ค่าใช้จ่าย หรือค่าใช้จ่ายใดๆ อันเป็นทางอ้อม พิเศษ เป็นการลงโทษ โดยบังเอิญ หรือเป็นผลสืบเนื่อง ไม่ว่าประเภทใดก็ตามที่เกี่ยวข้องกับข้อมูลหรือการใช้งาน ไม่ว่าจะเกิดจากสาเหตุใดก็ตาม แม้ว่า MICROCHIP จะได้รับแจ้งถึงความเป็นไปได้หรือความเสียหายที่คาดการณ์ได้ก็ตาม ในขอบเขตสูงสุดที่กฎหมายอนุญาต ความรับผิดทั้งหมดของ MICROCHIP ต่อการเรียกร้องใดๆ ก็ตามที่เกี่ยวข้องกับข้อมูลหรือการใช้งานนั้นจะไม่เกินจำนวนค่าธรรมเนียม (ถ้ามี) ที่คุณได้ชำระโดยตรงกับ MICROCHIP สำหรับข้อมูลดังกล่าว
การใช้เครื่องมือไมโครชิปในการช่วยชีวิตและ/หรือการใช้งานด้านความปลอดภัยเป็นความเสี่ยงของผู้ซื้อโดยสิ้นเชิง และผู้ซื้อตกลงที่จะปกป้อง ชดเชย และทำให้ไมโครชิปไม่ต้องรับผิดใดๆ จากความเสียหาย การเรียกร้อง การฟ้องร้อง หรือค่าใช้จ่ายใดๆ ทั้งสิ้นที่เกิดจากการใช้งานดังกล่าว จะไม่มีการให้ใบอนุญาตใดๆ ไม่ว่าโดยปริยายหรือด้วยวิธีอื่นใด ภายใต้สิทธิ์ในทรัพย์สินทางปัญญาของไมโครชิป เว้นแต่จะระบุไว้เป็นอย่างอื่น
คุณสมบัติการป้องกันรหัสอุปกรณ์ไมโครชิป
โปรดทราบรายละเอียดต่อไปนี้เกี่ยวกับคุณลักษณะการป้องกันรหัสบนผลิตภัณฑ์ Microchip:
- ผลิตภัณฑ์ Microchip ตรงตามข้อกำหนดที่ระบุไว้ในแผ่นข้อมูล Microchip เฉพาะของตน
- Microchip เชื่อว่ากลุ่มผลิตภัณฑ์ของตนจะปลอดภัยเมื่อใช้ตามลักษณะที่ต้องการ ภายใต้ข้อกำหนดการทำงาน และภายใต้เงื่อนไขปกติ
- Microchip ให้ความสำคัญและปกป้องสิทธิในทรัพย์สินทางปัญญาของบริษัทอย่างจริงจัง การพยายามละเมิดคุณสมบัติการป้องกันโค้ดของผลิตภัณฑ์ Microchip เป็นสิ่งต้องห้ามโดยเด็ดขาด และอาจฝ่าฝืน Digital Millennium Copyright Act
- ทั้ง Microchip และผู้ผลิตเซมิคอนดักเตอร์รายอื่นไม่สามารถรับประกันความปลอดภัยของโค้ดได้ การปกป้องโค้ดไม่ได้หมายความว่าเรารับประกันว่าผลิตภัณฑ์นั้น “ไม่แตกหัก” การปกป้องโค้ดนั้นได้รับการพัฒนาอย่างต่อเนื่อง Microchip มุ่งมั่นที่จะปรับปรุงคุณสมบัติการปกป้องโค้ดของผลิตภัณฑ์ของเราอย่างต่อเนื่อง
เอกสาร / แหล่งข้อมูล
![]() |
หน่วยจุดลอยตัวหลักของ MICROCHIP CoreFPU [พีดีเอฟ] คู่มือการใช้งาน v3.0, v2.1, v2.0, v1.0, CoreFPU หน่วยจุดลอยตัวหลัก, หน่วยจุดลอยตัวหลัก, หน่วยจุดลอยตัว, หน่วยจุด |