MPY32 硬體乘法器

Download Report

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