pbtl problem-based teaching and learning
DESCRIPTION
PBTL Problem-Based Teaching and Learning. 蕭 天 泉 南台科技大學 資工系. 對象 : 初學者. 希望達成的目標 :. 1. 培養解題分析能力. 2. 訓練從 CCS 之 help 檔自尋答案. 加法運算. 蕭 天 泉 南台科技大學 資工系. [ 一 ] : 問題敘述. 兩數相加 : 寫 c54x 程式執行下列加法運算 1. z = c1 + c2; c1, c2 為整數常數 2. z = x + c2; c2 為整數常數 , x 為 - PowerPoint PPT PresentationTRANSCRIPT
PBTLPBTLProblem-BasedProblem-Based TeachingTeaching andand LearningLearning
蕭 天 泉蕭 天 泉南台科技大學 資工系南台科技大學 資工系
對象 對象 : : 初學者初學者
希望達成的目標 希望達成的目標 ::
1. 1. 培養解題分析能力培養解題分析能力
2. 2. 訓練從 訓練從 CCS CCS 之 之 help help 檔自尋答案檔自尋答案
加法運算加法運算
蕭 天 泉蕭 天 泉南台科技大學 資工系南台科技大學 資工系
[[ 一一 ] :] : 問題敘述問題敘述 兩數相加兩數相加 : : 寫 寫 c54x c54x 程式執行下列加法運算程式執行下列加法運算
1. z = c1 + c21. z = c1 + c2 ; c1, c2 ; c1, c2 為整數常數為整數常數
2. z = x + c22. z = x + c2 ; c2 ; c2 為整數常數為整數常數 , x, x 為為 dma (data memory address) dma (data memory address) 資料資料
3. z = x + y3. z = x + y ; x, y ; x, y 為 為 dma dma 資料資料
[[ 二二 ] :] : 學習目標學習目標
1. ADD1. ADD commandcommand
2. Immediate addressing2. Immediate addressing
3. Absolute addressing3. Absolute addressing
4. Direct addressing4. Direct addressing
[[ 三三 ] : ] : 解題分析解題分析
1. 1. 上述題目所需之指令為加法運算上述題目所需之指令為加法運算 , (, ( 指令為 指令為 ADD) ADD) 及儲存及儲存
2. 2. 查查 CCSCCS 中之 中之 Arithmetic Instructions Arithmetic Instructions 及及 Load/Store InstructionsLoad/Store Instructions
3. ADD3. ADD 指令共有十種格式指令共有十種格式 , , 依上述資料型態選依上述資料型態選 用適當格式用適當格式
ADD ADD 指令指令1: ADD Smem, src1: ADD Smem, src2: ADD Smem, TS, src2: ADD Smem, TS, src3: ADD Smem, 16, src [,dst]3: ADD Smem, 16, src [,dst]4. ADD Smem, [SHIFT,] src [,dst]4. ADD Smem, [SHIFT,] src [,dst]5: ADD Xmem, SHIFT1, src5: ADD Xmem, SHIFT1, src6: ADD Xmem, Ymem, dst6: ADD Xmem, Ymem, dst7: ADD #lk, [SHIFT1,] src [,dst7: ADD #lk, [SHIFT1,] src [,dst8: ADD #lk, 16, src [,dst]8: ADD #lk, 16, src [,dst]9: ADD src [, SHIFT] [,dst]9: ADD src [, SHIFT] [,dst]10: ADD src, ASM [,dst]10: ADD src, ASM [,dst]
**************************** z = c1 + c2 z = c1 + c2
****************************
* Immediate & Absolute addressing* Immediate & Absolute addressing
(2) LD #c1, A(2) LD #c1, A
(1) ADD #c2, A(1) ADD #c2, A ; A = (A) ; A = (A) + (#c2)+ (#c2)
(3) STL A, *(z)(3) STL A, *(z) ;store (AL) into;store (AL) into ;location z;location z
************************** z = x + c2 z = x + c2
**************************
* Immediate, direct, absolute addressing* Immediate, direct, absolute addressing
(3) LD #c2,A ; A = #c2(3) LD #c2,A ; A = #c2
(2) LD #x, DP(2) LD #x, DP
(1) ADD @x, A(1) ADD @x, A ; A = A + (x) ; A = A + (x)
(4) STL(4) STL A, *(z) A, *(z)
******************************** z = x + y z = x + y
********************************
(4) LD #y, DP(4) LD #y, DP
(3) LD @y, A ;A = (y)(3) LD @y, A ;A = (y)
(2) LD #x, DP(2) LD #x, DP
(1) ADD @x, A ;A = (A) (1) ADD @x, A ;A = (A) + (x)+ (x)
(5) STL A, *(z)(5) STL A, *(z)
加法運算加法運算The EndThe End
乘法運算乘法運算
蕭 天 泉蕭 天 泉南台科技大學 資工系南台科技大學 資工系
[[ 一一 ] :] : 問題敘述問題敘述 兩數相乘兩數相乘 : : 寫 寫 c54x c54x 程式執行下列乘法運程式執行下列乘法運算算
1. z = c1 * c21. z = c1 * c2 ; c1, c2 ; c1, c2 為整數常數為整數常數
2. z = x * c22. z = x * c2 ; c2; c2 為整數常數為整數常數 , x , x 為為 dma dma (data memory address) (data memory address) 資料資料
3. z = x * y3. z = x * y ; x, y ; x, y 為為 dma dma 資料資料
[[ 二二 ] :] : 學習目標學習目標
1. MPY1. MPY commandcommand
2. 2. 定義 定義 .mmregs .mmregs
3. Indirect addressing3. Indirect addressing
[[ 三三 ] : ] : 解題分析解題分析
1. 1. 上述題目所需之指令為乘法運算上述題目所需之指令為乘法運算 , (, ( 指令為 指令為 MPY) MPY) 及儲存及儲存
2. 2. 查查 CCSCCS 中之 中之 Arithmetic Instructions Arithmetic Instructions 及 及
Load/Store InstructionsLoad/Store Instructions
3. MPY 3. MPY 指令共有四種格式指令共有四種格式 , , 依上述資料型態依上述資料型態 選用適當格式選用適當格式
MPY MPY 指令指令 1. MPY command1. MPY command 1: MPY[R] Smem, dst 1: MPY[R] Smem, dst 2: MPY Xmem ,Ymem, dst 2: MPY Xmem ,Ymem, dst 3: MPY Smem, #lk, dst 3: MPY Smem, #lk, dst 4: MPY #lk, dst4: MPY #lk, dst
ExecutionExecution
1: (TREG) x (Smem) --> dst1: (TREG) x (Smem) --> dst 2: (Xmem) x (Ymem) --> dst2: (Xmem) x (Ymem) --> dst (Xmem) -->TREG(Xmem) -->TREG 3: (Smem) x lk --> dst3: (Smem) x lk --> dst (Smem) --> TREG(Smem) --> TREG 4: (TREG) x lk --> dst4: (TREG) x lk --> dst
**************************** z = c1 * c2 z = c1 * c2
****************************
** 可否仿照加法運算 可否仿照加法運算 ????(2) LD #c1, A(2) LD #c1, A
(1) MPY #c2, A(1) MPY #c2, A ; A = (A) * (#c2); A = (A) * (#c2)
(3) STL A, *(z)(3) STL A, *(z) ;store (AL) into;store (AL) into ;location z;location z
** 上述為錯誤碼上述為錯誤碼
**************************** z = c1 * c2 z = c1 * c2
****************************
正確的方法正確的方法
(2) STM #c1,T ;(2) STM #c1,T ; 需定義需定義 mmregsmmregs(1) MPY #c2, A(1) MPY #c2, A ; A = (TREG) ; A = (TREG) * (#c2)* (#c2)
(3) STL A, *(z)(3) STL A, *(z) ;store (AL) into ;store (AL) into ;location z;location z
************************** z = x * c2 z = x * c2
**************************
LD #x, DPLD #x, DP
MPY @x, #c2, AMPY @x, #c2, A
STL A, *(z)STL A, *(z)
******************************** z = x * y z = x * y
********************************
(3) STM #y, AR3(3) STM #y, AR3
(2) STM #x, AR2(2) STM #x, AR2
(1) MPY *AR2, *AR3, A ;?? MPY (1) MPY *AR2, *AR3, A ;?? MPY @x, @y, A@x, @y, A
(4) STL A, *(z)(4) STL A, *(z)
******************************** z = x * y z = x * y
********************************
STM #y, AR3STM #y, AR3
STM #x, AR2STM #x, AR2
MPY *AR2, *AR3, A ;?? MPY @x, @y, AMPY *AR2, *AR3, A ;?? MPY @x, @y, A
STL A, *(z)STL A, *(z)
******************************** z = x * y z = x * y
********************************
注意 注意 : : 下列碼語法錯誤下列碼語法錯誤
MPY *AR1, *AR3, A MPY *AR1, *AR3, A
STM #x, AR1STM #x, AR1 ;AR1 ;AR1 不可使用不可使用
STM #y, AR3STM #y, AR3
STL A, *(z)STL A, *(z)
MPY commandMPY command
1: MPY[R] Smem, dst 1: MPY[R] Smem, dst
2: MPY Xmem ,Ymem, dst 2: MPY Xmem ,Ymem, dst
3: MPY Smem, #lk, dst 3: MPY Smem, #lk, dst
4: MPY #lk, dst4: MPY #lk, dst
Xmem, Ymem Dual data-memory operandsXmem, Ymem Dual data-memory operands只能使用 只能使用 AR2, AR3, AR4, AR5 AR2, AR3, AR4, AR5 四個四個 registersregisters
乘法運算乘法運算The EndThe End
乘加運算乘加運算 (( 一一 ))
蕭 天 泉蕭 天 泉南台科技大學 資工系南台科技大學 資工系
[[ 一一 ] :] : 問題敘述問題敘述 乘加運算乘加運算 : : 寫 寫 c54x c54x 程式執行下列乘法運算程式執行下列乘法運算
y = -5 x + 10y = -5 x + 10
for x = -5,-4,-3,-2,-1,0,1,2,3,4,5for x = -5,-4,-3,-2,-1,0,1,2,3,4,5
[[ 二二 ] :] : 學習目標學習目標
ADD ADD 及 及 MPY MPY 指令復習指令復習
學習迴圈控制學習迴圈控制
[[ 三三 ] : ] : 解題分析解題分析for i =0 to 10
y[i] = -5 * x[i] + 10
end
for i =0 to 10
A = -5 * x[i]
y[i] = A + 10
end
用 用 MPY,ADD MPY,ADD 及 及 RPTB RPTB 指令指令
MPY *AR2+, #(-5), A ;A=-5 * MPY *AR2+, #(-5), A ;A=-5 * x(i)x(i) ADD #10, A ;A = A + 10 ;A = A + 10
RPTB lp-1RPTB lp-1
STMSTM #x, AR2#x, AR2 STMSTM #y, AR3#y, AR3
STM #10, BRCSTM #10, BRC
STL A, *AR3+STL A, *AR3+
lp:lp:
乘加運算乘加運算 (( 一一 ))
The EndThe End
乘加運算乘加運算 (( 二二 ))
蕭 天 泉蕭 天 泉南台科技大學 資工系南台科技大學 資工系
[[ 一一 ] :] : 問題敘述問題敘述 乘加運算乘加運算 : : 寫 寫 c54x c54x 程式執行下列乘法運算程式執行下列乘法運算
1. z = x[0]*y[0] + x[1]*y[1] + ... 1. z = x[0]*y[0] + x[1]*y[1] + ... +x[N]*y[N]+x[N]*y[N]
2.2.
2
1
1
963
852
741
Z
)3(
)2(
)1(
)9()8()7(
)6()5()4(
)3()2()1(
)3(
)2(
)1(
y
y
y
xxx
xxx
xxx
z
z
z
3.3. Convolution Summation Convolution Summation
z[n] = h[0]x[n] + h[1]x[n-1] + … + h[N]x[n-N]= h[0]x[n] + h[1]x[n-1] + … + h[N]x[n-N]
N
i
inxihnz0
][][
[[ 二二 ] :] : 學習目標學習目標
學習迴圈控制學習迴圈控制
學習乘加指令 學習乘加指令 MACMAC
乘加運算的應用乘加運算的應用
學習學習 circular buffers circular buffers 概念概念
MAC MAC 指令指令
1: MAC[R] Smem, src1: MAC[R] Smem, src
2: MAC[R] Xmem, Ymem, src [,dst]2: MAC[R] Xmem, Ymem, src [,dst]
3: MAC #lk, src [,dst]3: MAC #lk, src [,dst]
4: MAC Smem, #lk, src [,dst]4: MAC Smem, #lk, src [,dst]
[[ 三三 ] : ] : 解題分析解題分析 z=x[0]*y[0]+x[1]*y[1]+...+x[9]*y[9]z=x[0]*y[0]+x[1]*y[1]+...+x[9]*y[9]
a = 0a = 0
for i = 0 to 9for i = 0 to 9
a = a + x[i]*y[i]a = a + x[i]*y[i]
endend
xx .int 1, 2, 3, 4, 5, 6, 7, 8, 9.int 1, 2, 3, 4, 5, 6, 7, 8, 9yy .int 1, 1, 1, 1,-1,-1,-1,-1.int 1, 1, 1, 1,-1,-1,-1,-1
1. 1. 用 用 MPY,ADD MPY,ADD 及 及 RPTB RPTB 指指令令
MPY *AR2+, *AR3+, MPY *AR2+, *AR3+, B ;B=x(i)*y(i)B ;B=x(i)*y(i)lp: ADD B, A ;A = A + B ;A = A + B
LD #0, A ;A = 0 ;A = 0
RPTB lpRPTB lp
STMSTM #x, AR2#x, AR2 STMSTM #y, AR3#y, AR3
STM #9, BRCSTM #9, BRC
STL A, *(z)STL A, *(z)
2. 2. 用 用 RPT RPT 及 及 MAC MAC 指令指令
STMSTM #x, AR2#x, AR2
STMSTM #y, AR3#y, AR3
STMSTM #z, AR4#z, AR4
LDLD #0,#0, AA
RPT #9RPT #9
MAC *AR2+, *AR3+, AMAC *AR2+, *AR3+, A
STL A, *AR4STL A, *AR4
3. 3. 用用 RPTZRPTZ 指令指令
RPTZ A, #9RPTZ A, #9
MAC *AR2+, *AR3+, AMAC *AR2+, *AR3+, A
[[ 四四 ] : ] : 解題分析 解題分析 (( 題二題二 )) for i = 0 to 2for i = 0 to 2
a = 0a = 0
for j = 0 for j = 0 to 2to 2 a = a + x[j]*x[j]a = a + x[j]*x[j]
endend
z[i] = az[i] = a
endend
資料的設定 資料的設定 (( 方式一方式一 ))
xx .int.int 1, 2, 3, 4, 5, 6, 7, 8, 91, 2, 3, 4, 5, 6, 7, 8, 9
yy .int 1, -1, 2, 1, -1, 2, 1, -1, 2.int 1, -1, 2, 1, -1, 2, 1, -1, 2
z .usect “result”, 3z .usect “result”, 3
資料的設定 資料的設定 (( 方式二方式二 ))
.sect “c1”.sect “c1”
xx .int.int 1, 2, 3, 4, 5, 6, 7, 8, 91, 2, 3, 4, 5, 6, 7, 8, 9
.sect “c2”.sect “c2”
yy .int 1, -1, 2.int 1, -1, 2
z .usect “result”, 3z .usect “result”, 3
STMSTM #x, AR2#x, AR2 STMSTM #y, AR3#y, AR3 STMSTM #z, AR4#z, AR4
STM STM #3, BK#3, BK
RPTB lp-1RPTB lp-1
RPTZ A, RPTZ A, #2#2 MAC *AR2+, MAC *AR2+, *AR3+0%, A*AR3+0%, A STL A, STL A, *AR4+*AR4+LpLp
STM STM #1, AR0#1, AR0
STM STM #2, BRC#2, BRC
** circular buffers y ** circular buffers y 之 之 address address 有限制有限制
The circular-buffer size register (BK) The circular-buffer size register (BK) specifies the size of the circular buffer.specifies the size of the circular buffer.A circular buffer of size R must start onA circular buffer of size R must start ona N-bit boundary (that is, the N LSBs ofa N-bit boundary (that is, the N LSBs ofthe base address of the circular buffer mustthe base address of the circular buffer mustbe 0), where N is the smallest integer that be 0), where N is the smallest integer that satisfies 2satisfies 2n n > R. > R.
Convolution SummationConvolution Summation
z[n] = h[0]x[n] + h[1]x[n-1] + … + h[N]x[n-N]= h[0]x[n] + h[1]x[n-1] + … + h[N]x[n-N]
z[n] = h[0]x[n] + h[1]x[n-1] + h[2]x[n-2] for n = 2 to 9= h[0]x[n] + h[1]x[n-1] + h[2]x[n-2] for n = 2 to 9
x .int x0, x1, x2, x3, x4, x5, x6, x7, x8, x9
h .int h2, h1, h0
STMSTM #x, AR2#x, AR2 STMSTM #h, AR3#h, AR3 STMSTM #z, AR4#z, AR4
STM STM #3, BK#3, BK
RPTB lp-1RPTB lp-1 RPTZ A, RPTZ A, #2#2 MAC *AR2+, MAC *AR2+, *AR3+0%, A*AR3+0%, A STL A, *AR4+STL A, *AR4+ MAR *+AR2(#-2) MAR *+AR2(#-2) LpLp
STM STM #1, AR0#1, AR0
STM STM #2, BRC#2, BRC
MACD MACD 指令常被用於指令常被用於 Convolution Summation Convolution Summation 之運算之運算
MACD Smem, pmad, srcMACD Smem, pmad, src
(Smem) x (pmad) -> (src)(Smem) x (pmad) -> (src) (Smem) -> TREG(Smem) -> TREG (Smem) -> Smem + 1(Smem) -> Smem + 1
謝謝各位謝謝各位
敬請指教敬請指教