Transcript MPY32 硬體乘法器
[1212] Lecture 10 MPY32 認識並學習使用MPY32 了解使用MPY32的注意事項 MPY32的控制暫存器 MPY32 MPY32(Multiplier) MPY32 = 32-Bit Hardware Multiplier MSP430F5438提供一具32位元的硬體 乘法器 硬體乘法器提供8/16/24/32位元的乘 法運算和乘加運算功能 MPY32 MPY32(Multiplier) 在MPY32中的乘法運算中有三個角色, 分別為乘數(OP1),被乘數(OP2)和運 算結果(RESx) 基本的操作是將欲計算的乘數與被乘 數放入OP1和OP2暫存器中,硬體乘 法器會將運算結果存入RESx中。 MPY32 MPY32(Multiplier) 額外的運算結果會另外紀錄在SUMEXT 暫存器(16-Bit) 以及MPY32CTL0中的 MPYC(BIT0) MPY32 使用方法 MPY32的運算中,OP1的角色由數個暫 存器扮演,分別為: MPY MPYS MAC MACS MPY、MAC分別代表Multiply 和 Multiply and Accumulate 有加上S的則為Signed,是有號數的計 算 MPY32 使用方法 在存入OP1數值時,我們選擇存入的暫 存器決定了要進行何種運算 MPY32的運算中,OP2的角色就相對單 純,只要放入符合條件的值即可 MPY32的運算會在OP2被放入數值後自 動開始執行 計算結果會在OP2賦值後數個 machine cycle後放在RESx中 MPY32 使用方法 RESx由四個16-Bit 暫存器組成,分別為 RESLO/RES0,RESHI(RES1), RES2,RES3 當進行16-Bit運算時,僅會使用到 RESLO和RESHI暫存器, 進行24/32-Bit運算時,才會使用到RES2 和RES3暫存器 MPY32 使用方法 乘加運算是在OP1選用MAC與MACS時 所進行 選用乘加運算時,乘法器模組同樣會在 OP2被存入數值時,進行乘法運算 不同的是,乘法運算之後,會提取當前 存在RESxs中的數值,並做相加後再回 存RESxs中。 MPY32 使用方法 由於MPY32的啟動機制是存入數值到 OP2,因此將值存入任一OP1暫存器而 沒有接著存值到OP2,該OP1的值將會 被捨棄 而在計算過程中,若有另一組乘法運算 被存入硬體乘法器,將會覆蓋掉原本的 運算。因此,在MPY32CTL0暫存器中 提供了選項設定延遲保護 MPY32 使用方法 由於MPY32是附加的乘法模組,因此在 使用中斷副程式操作的時候,須注意是 否當中有其他程式已計算但未提取的結 果值(RESxs) 利用提取-回存的方式確保 在使用MPY32前,先將RESxs的值取出, 放在變數中,待運算完成後,再回存。 Example 範例1 16-Bit 無號乘法 範例程式下載 Example 範例2 32-Bit 無號數乘法 範例程式下載 Example 範例3 16-Bit 無號數乘加運算 範例程式下載 Example 範例4 16-Bit 無號數乘法運算 受限於系統變數情形 範例程式下載 Example 附件 LCD.h 附件下載 Exercise 練習1 參考範例,使用硬體乘法器進行 16-Bit 有號數乘法運算 Exercise 練習2 參考範例,使用硬體乘法器進行 16-Bit 有號數乘加運算 Exercise 完成後,找到專案裡面的source file,以附 檔形式寄到 [email protected],並在 主旨中註明姓名、系級與學號, source檔名稱請利於辨識。 EX: 主旨: 微處理機實習 LAB3 王大明 電機碩二 7101064123