1 / 49

PBTL Problem-Based Teaching and Learning

PBTL Problem-Based Teaching and Learning. 蕭 天 泉 南台科技大學 資工系. 對象 : 初學者. 希望達成的目標 :. 1. 培養解題分析能力. 2. 訓練從 CCS 之 help 檔自尋答案. 加法運算. 蕭 天 泉 南台科技大學 資工系. [ 一 ] : 問題敘述. 兩數相加 : 寫 c54x 程式執行下列加法運算 1. z = c1 + c2 ; c1, c2 為整數常數 2. z = x + c2 ; c2 為整數常數 , x 為

Download Presentation

PBTL Problem-Based Teaching and Learning

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PBTLProblem-BasedTeachingandLearning 蕭 天 泉 南台科技大學 資工系

  2. 對象: 初學者 • 希望達成的目標 : 1. 培養解題分析能力 2. 訓練從 CCS 之 help 檔自尋答案

  3. 加法運算 蕭 天 泉 南台科技大學 資工系

  4. [一] : 問題敘述 • 兩數相加: 寫 c54x 程式執行下列加法運算 • 1. z = c1 + c2 ; c1, c2 為整數常數 • 2. z = x + c2 ; c2 為整數常數, x為 dma (data memory address) 資料 • 3. z = x + y ; x, y 為 dma 資料

  5. [二] : 學習目標 • 1. ADD command • 2. Immediate addressing • 3. Absolute addressing • 4. Direct addressing

  6. [三] : 解題分析 • 1. 上述題目所需之指令為加法運算, (指令為 ADD) 及儲存 • 2. 查CCS中之 Arithmetic Instructions 及 Load/Store Instructions • 3. ADD指令共有十種格式, 依上述資料型態選 用適當格式

  7. ADD 指令 1: ADD Smem, src 2: ADD Smem, TS, src 3: ADD Smem, 16, src [,dst] 4. ADD Smem, [SHIFT,] src [,dst] 5: ADD Xmem, SHIFT1, src 6: ADD Xmem, Ymem, dst 7: ADD #lk, [SHIFT1,] src [,dst 8: ADD #lk, 16, src [,dst] 9: ADD src [, SHIFT] [,dst] 10: ADD src, ASM [,dst]

  8. ************** z = c1 + c2************** • * Immediate & Absolute addressing • (2) LD #c1, A • (1) ADD #c2, A ; A = (A) + (#c2) • (3) STL A, *(z) ;store (AL) into ;location z

  9. ************* z = x + c2************* • * Immediate, direct, absolute addressing • (3) LD #c2,A ; A = #c2 • (2) LD #x, DP • (1) ADD @x, A ; A = A + (x) • (4) STL A, *(z)

  10. **************** z = x + y**************** • (4) LD #y, DP • (3) LD @y, A ;A = (y) • (2) LD #x, DP • (1) ADD @x, A ;A = (A) + (x) • (5) STL A, *(z)

  11. 加法運算 The End

  12. 乘法運算 蕭 天 泉 南台科技大學 資工系

  13. [一] : 問題敘述 • 兩數相乘: 寫 c54x 程式執行下列乘法運算 • 1. z = c1 * c2 ; c1, c2 為整數常數 • 2. z = x * c2 ; c2為整數常數, x 為dma (data memory address) 資料 • 3. z = x * y ; x, y 為dma 資料

  14. [二] : 學習目標 • 1. MPY command • 2. 定義 .mmregs • 3. Indirect addressing

  15. [三] : 解題分析 • 1. 上述題目所需之指令為乘法運算, (指令為 MPY) 及儲存 • 2. 查CCS中之 Arithmetic Instructions 及 Load/Store Instructions • 3. MPY 指令共有四種格式, 依上述資料型態 選用適當格式

  16. MPY 指令 • 1. MPY command • 1: MPY[R] Smem, dst • 2: MPY Xmem ,Ymem, dst • 3: MPY Smem, #lk, dst • 4: MPY #lk, dst • Execution • 1: (TREG) x (Smem) --> dst • 2: (Xmem) x (Ymem) --> dst • (Xmem) -->TREG • 3: (Smem) x lk --> dst • (Smem) --> TREG • 4: (TREG) x lk --> dst

  17. ************** z = c1 * c2************** • *可否仿照加法運算 ?? • (2) LD #c1, A • (1) MPY #c2, A ; A = (A) * (#c2) • (3) STL A, *(z) ;store (AL) into ;location z • *上述為錯誤碼

  18. ************** z = c1 * c2************** • 正確的方法 • (2) STM #c1,T ;需定義mmregs • (1) MPY #c2, A ; A = (TREG) * (#c2) • (3) STL A, *(z) ;store (AL) into ;location z

  19. ************* z = x * c2************* • LD #x, DP • MPY @x, #c2, A • STL A, *(z)

  20. **************** z = x * y**************** • (3) STM #y, AR3 • (2) STM #x, AR2 • (1) MPY *AR2, *AR3, A ;?? MPY @x, @y, A • (4) STL A, *(z)

  21. **************** z = x * y**************** • STM #y, AR3 • STM #x, AR2 • MPY *AR2, *AR3, A ;?? MPY @x, @y, A • STL A, *(z)

  22. **************** z = x * y**************** • 注意 : 下列碼語法錯誤 • STM #y, AR3 • STM #x, AR1 ;AR1不可使用 • MPY *AR1, *AR3, A • STL A, *(z)

  23. MPY command 1: MPY[R] Smem, dst 2: MPY Xmem ,Ymem, dst 3: MPY Smem, #lk, dst 4: MPY #lk, dst • Xmem, Ymem Dual data-memory operands 只能使用 AR2, AR3, AR4, AR5 四個registers

  24. 乘法運算 The End

  25. 乘加運算(一) 蕭 天 泉 南台科技大學 資工系

  26. [一] : 問題敘述 • 乘加運算: 寫 c54x 程式執行下列乘法運算 • y = -5 x + 10 for x = -5,-4,-3,-2,-1,0,1,2,3,4,5

  27. [二] : 學習目標 • ADD 及 MPY 指令復習 • 學習迴圈控制

  28. [三] : 解題分析 • 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

  29. 用 MPY,ADD 及 RPTB 指令 • STM #x, AR2 • STM #y, AR3 • STM #10, BRC • RPTB lp-1 • MPY *AR2+, #(-5), A ;A=-5 * x(i) • ADD #10, A ;A = A + 10 • STL A, *AR3+ • lp:

  30. 乘加運算(一) The End

  31. 乘加運算(二) 蕭 天 泉 南台科技大學 資工系

  32. [一] : 問題敘述 • 乘加運算: 寫 c54x 程式執行下列乘法運算 • 1. z = x[0]*y[0] + x[1]*y[1] + ... +x[N]*y[N]

  33. 2.

  34. 3. Convolution Summation • z[n] = h[0]x[n] + h[1]x[n-1] + … + h[N]x[n-N]

  35. [二] : 學習目標 • 學習迴圈控制 • 學習乘加指令 MAC • 乘加運算的應用 • 學習circular buffers 概念

  36. MAC 指令 • 1: MAC[R] Smem, src • 2: MAC[R] Xmem, Ymem, src [,dst] • 3: MAC #lk, src [,dst] • 4: MAC Smem, #lk, src [,dst]

  37. [三] : 解題分析 • z=x[0]*y[0]+x[1]*y[1]+...+x[9]*y[9] • a = 0 • for i = 0 to 9 • a = a + x[i]*y[i] • end • x .int 1, 2, 3, 4, 5, 6, 7, 8, 9 • y .int 1, 1, 1, 1,-1,-1,-1,-1

  38. 1. 用 MPY,ADD 及 RPTB 指令 • STM #x, AR2 • STM #y, AR3 • STM #9, BRC • LD #0, A ;A = 0 • RPTB lp • MPY *AR2+, *AR3+, B ;B=x(i)*y(i) • lp: ADD B, A ;A = A + B • STL A, *(z)

  39. 2. 用 RPT 及 MAC 指令 • STM #x, AR2 • STM #y, AR3 • STM #z, AR4 • LD #0, A • RPT #9 • MAC *AR2+, *AR3+, A • STL A, *AR4

  40. 3. 用RPTZ指令 • RPTZ A, #9 • MAC *AR2+, *AR3+, A

  41. [四] : 解題分析 (題二) • for i = 0 to 2 • a = 0 • for j = 0 to 2 • a = a + x[j]*x[j] • end • z[i] = a • end

  42. 資料的設定 (方式一) • x .int 1, 2, 3, 4, 5, 6, 7, 8, 9 • y .int 1, -1, 2, 1, -1, 2, 1, -1, 2 • z .usect “result”, 3

  43. 資料的設定 (方式二) • .sect “c1” • x .int 1, 2, 3, 4, 5, 6, 7, 8, 9 • .sect “c2” • y .int 1, -1, 2 • z .usect “result”, 3

  44. STM #y, AR3 • STM #z, AR4 • STM #x, AR2 • STM #1, AR0 • STM #3, BK • STM #2, BRC • RPTB lp-1 • RPTZ A, #2 • MAC *AR2+, *AR3+0%, A • STL A, *AR4+ • Lp ** circular buffers y 之 address 有限制

  45. The circular-buffer size register (BK) specifies the size of the circular buffer. A circular buffer of size R must start on a N-bit boundary (that is, the N LSBs of the base address of the circular buffer must be 0), where N is the smallest integer that satisfies 2n > R.

  46. Convolution Summationz[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 • x .int x0, x1, x2, x3, x4, x5, x6, x7, x8, x9 • h .int h2, h1, h0

  47. STM #h, AR3 • STM #z, AR4 • STM #x, AR2 • STM #1, AR0 • STM #3, BK • STM #2, BRC • RPTB lp-1 • RPTZ A, #2 • MAC *AR2+, *AR3+0%, A • STL A, *AR4+ • MAR *+AR2(#-2) • Lp

  48. MACD 指令常被用於 Convolution Summation 之運算 MACD Smem, pmad, src (Smem) x (pmad) -> (src) (Smem) -> TREG (Smem) -> Smem + 1

  49. 謝謝各位 敬請指教

More Related