‘C54x寻址方式 ‘C54x特殊寻址方式说明 ‘C54x指令集 ‘C54x特殊指令使用说明

Slides:



Advertisements
Similar presentations
办公室保健指南. 减少辐射篇 ❤显示器散发出的辐射多数不是来自它的正面,而是侧面和后面。因此,不要 把自己显示器的后面对着同事的后脑或者身体的侧面。 ❤常喝绿茶。茶叶中含有的茶多酚等活性物质,有助吸收放射性物质。 ❤尽量使用液晶显示器。
Advertisements

台南市立後甲國中 訓導工作簡報 報告人:訓導主任 傅寶源 歡迎蒞臨指導. 訓導處是一個關懷學生生活問題、處理 學生生活事務的溫馨園地,舉凡生活常 規、安全防護、交通安全之教育,民主 法治、社團活動、訓育活動之訓練,衛 生習慣、飲食健康、預防疾病之培養, 體育活動,運動競賽、身心健康之鍛練, 均有專人專責為同學服務。
等可能性事件的概率(二) 上虞春晖中学数学组欢迎你! 1 本课件制作于 §10.5 等可能事件 的概率 ( 二 )
A A A.
index 目次 ( 請按一下滑鼠,解答就會出現喔 !) 接續下頁解答 3-1 極限的概念.
足太阴脾经在足大趾与足阳明胃经衔接, 在胸部与手少阴心经相接。 联系的脏腑器官有 咽、舌,属脾,络胃,注心中。 络脉从本经分出,走向足阳明经,进入腹腔,联络肠胃。 经别结于咽,贯舌本。 经筋结于髀,聚于阴器,上腹,结于脐,散于胸中。 第四章 足太阴经络与腧穴 第一节 足太阴经络.
第1章第1章 PC/AT 系統 1 Chapter 1 Chapter 1 PC/AT 系統 001.
魏 饴. 处级干部培训班讲座 一、卓越干部的德行素质  常修为政之德、常思贪欲之害、常怀律己之心!  孔老夫子有个观点 “ 为政以德,譬如北辰居其所而众星拱之。 ”  司马光《资治通鉴》 “ 才者,德之资也;德者,才之帅也。 ” “ 德 ” 胜 “ 才 ” 谓之 “ 君子 ” , “ 才 ”
不知者無罪嗎 ? 【本報台北訊】國內知名大學胡姓研究 生進口豬籠草在網路上販售,涉嫌違反 植物防疫檢疫法,胡姓研究生表示不知 道豬籠草是違禁品並當場認錯道歉 台北地檢署檢察官念他初犯,昨 天處分緩起訴,但命他繳交六萬 元緩起訴處分金作公益。 豬籠草有潛移性線蟲寄生,一旦植物感 染後,輕則枯萎凋零,重則危害農業經.
我的未来不是梦 攀枝花市经贸旅游学校. 1. 文中案例王萍苦恼的原因是 什么? 2. 你有哪些办法可以帮助王萍? 导入 思考  谁来帮帮她?
一、真愛密碼 二、尋求真愛 三、有自尊的愛. 。如果雙方對愛情產生 質疑、困惑時,則表示 彼此之間的愛情關係仍 有 待加強或釐清,千萬別 急著為自己的人生大事 下決定。 我是一個 16 歲的未婚媽媽,發現自 己懷孕時,已經五個月大了,我知 道自己沒能力照顧孩子,在驚訝之 於,大人們只好坦然接受,幫我找.
大地遊戲王 課程實錄.
DSP技术及应用 Digital Signal Processor 数字信号处理器.
103年度學生健康檢查.
第三章 信息的编程加工和智能化加工.
科學論文 鰂魚涌街的衛生情況 作者:廖梓芯 學校:北角官立上午小學 班級:P.5A.
加強水銀體溫計稽查管制及回收 回收作業須知及緊急應變措施
8 企业信息管理的定量分析 第八讲 企业信息管理的定量分析 8.1 企业信息化水平的测评 8.2 企业信息管理绩效的测评.
第4章 分錄及日記簿 4-1 借貸法則 4-2 日記簿的格式及記錄方法 4-3 分錄的意義及記錄方法 4-4 常見分錄題型分析
我在哈佛、麥肯錫 學到的一流工作術 富坂美織◎著.
國有土地管理與運用問題之探討 主講人: 廖 蘇 隆 中華民國100年10月17 日.
成才之路 · 语文 人教版 • 中国古代诗歌散文欣赏 路漫漫其修远兮 吾将上下而求索.
第十章 依赖于机器的优化 在指令级并行的机器上,程序的运行速度依赖于下面几个因素
专题三 生物圈中的绿色植物.
第十三屆 Step.1 我們的目標 Step.2 我們的角色 Step.4 權利與義務 義務 權利 年繳會費五百元整
《成佛之道》序~第三章 圓融 /
技术分析 (技术指标MACD).
第五章 各类园林绿地的规划设计.
财务管理.
第二章 资产评估的基本方法 第一节 市场法 第二节 收益法 第三节 成本法.
卷积 有限冲激响应(FIR)数字滤波器 无限冲激响应(IIR)数字滤波器 快速傅立叶变换(FFT) 第8章 数字信号处理典型算法程序设计
麻疹 腮腺炎 德國麻疹預防注射宣導 水林鄉燦林國小健康中心製.
植物保护 课程整体设计 汇报 申报省级精品资源共享课建设 植物保护课程组.
大气的受热过程 周南中学.
第一章 体育统计的基本知识 主讲教师:王丽艳 徐栋.
第八章 建筑钢材.
政府扶持资金通览 技术改造篇.
第四章 时间序列的分析 本章教学目的:①了解从数量方面研究社会经济现象发展变化过程和发展趋势是统计分析的一种重要方法;②掌握时间数列编制的基本要求;③理解和掌握水平速度两方面指标的计算及运用④理解和掌握长期趋势分析和预测的方法。 本章教学重点:现象发展的水平指标和速度指标。 本章教学难点:现象变动的趋势分析。
妈妈我爱你 你总说我还不懂事 维护我像一张白纸 你眼中我永远是长不大的孩子 虽然我有好多心事 却已不愿说与你知 我曾任性地排斥你爱我的方式
本科生医保资料的提交.
第2章 MCS-51单片机指令系统与汇编语言程序设计
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
第5章 TMS320C54x汇编语言程序设计 内容提要 汇编语言程序设计是应用软件设计的基础,主要任务是利用汇编指令和伪指令编写源程序以完成指定的功能。 本章将结合例子介绍TMS320C54x汇编语言源程序设计的基本方法,涉及的内容包括: 汇编语言源程序的格式 常数、字符串、符号和表达式的规定.
第7章 汇编语言程序设计 7.1 程序流程控制 7.2 数据块传送 7.3 定点数的基本算术运算 7.4 长字运算和并行运算
統計圖表的製作.
第6章 应用程序设计 内容提要 数字信号处理主要面向密集型的运算,包括乘法-累加、数字滤波和快速傅里叶变换等。’C54x具备了高速完成上述运算的能力,并具有体积小、功耗低、功能强、软硬件资源丰富等优点,现已在通信等许多领域得到了广泛应用。 本章结合数字信号处理和通信中最常见、最具有代表性的应用,介绍通用数字信号处理算法的DSP实现方法,主要包括:
专题 DSP McBSP设计 制作:DSP技术中心 主讲:李玉柏
第三章 DSP指令系统与特点 第一节 数据寻址方式 第二节 程序存储器地址的生成方式 第三节 流水线 第四节 指令系统概述.
第9章 DSP集成开发环境CCS 内容提要 CCS是TI公司推出的用于开发DSP芯片的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。 本章对CCS开发软件的使用作了详细地介绍。首先,对CCS开发软件作了简要地说明,并介绍了该软件的安装及配置;其次,介绍了CCS的基本操作,包括:CCS的窗口和工具条、文件的编辑、反汇编窗口、存储器窗口、寄存器窗口、观察窗口
1.3 微型计算机的结构和工作原理.
DSP原理与应用 第7章 应用程序设计 电话: ; 微信: jnliuzg
《结构力学认知实验》(授课形式)的上课时间改为: 5月5日(周二)晚上18:00~19:30和19:30~21:00,
《结构力学认知实验》(授课形式)的上课时间改为: 5月7日(周四)晚上18:30~20:00和20:00~21:30,
第3章 TMS320LF240 x的CPU功能模块和时钟模块
教科版六年级下册第一单元第4课 怎样放得更大 莲都区天宁小学 陈建秋.
畢業資格審查系統 操作步驟說明.
实验2 中断模拟实验.
新制退休實務計算說明- 現職人員退休範例說明
第3章 汇编语言指令系统 在DSP应用中,虽然可以使用C/C++高级语言编程,降低了对编程者的要求,但在一些实时性要求高的场合仍然需要采用汇编编程,以充分利用DSP丰富的硬件资源,发挥它的实时运算能力。 用汇编语言编程,要求编程者对DSP的低层有充分的了解,包括硬件结构、存储器空间模型和I/O口的组织等。同时又要求编程者对指令系统有深刻的了解。
保變住開發要點 資料來源:台北市政府都發局.
介入及追蹤紀錄表 編號: 姓/稱謂: 初次103年 月 日 追蹤 月 日 問題型態 (可複選) □ 1. 覺得西藥都很傷胃
106 學年度新生入學說明會 國立臺灣海洋大學 教務處簡介
學士學位畢業論文說明 逢 學 大 甲 土 理 管 地 2009/10/05.
F1-20P PLC简易编程器的使用.
高雄市97年度國民小學閱讀計畫創新教學-教案達人創新教學方案
第3章 汇编语言指令系统 在DSP应用中,虽然可以使用C/C++高级语言编程,降低了对编程者的要求,但在一些实时性要求高的场合仍然需要采用汇编编程,以充分利用DSP丰富的硬件资源,发挥它的实时运算能力。 用汇编语言编程,要求编程者对DSP的低层有充分的了解,包括硬件结构、存储器空间模型和I/O口的组织等。同时又要求编程者对指令系统有深刻的了解。
§4 连续型随机变量.
第4章 汇编语言程序设计 本章结合C54x的软件开发过程,介绍DSP所采用的COFF目标文件格式、结构和规范。
6.1.1 平方根.
10 有压管中的非恒定流 非恒定流在无压流及有压流中均可能产生。河道中洪水的涨落,明渠中水闸的启闭都会使河渠中产生非恒定流;水库水位上涨或下降通过有压泄水管的出流则属于有压非恒定出流。 本章主要讨论有压管中一种重要的非恒定流-水击(或称水锤)。当有压管中的流速因某种外界原因而发生急剧变化时,将引起液体内部压强产生迅速交替升降的现象,这种现象称为水击。由于交替升降的压强作用在管壁、阀门或其它管路元件上,会发生强烈的锤击管壁的响声,故水击也称水锤。
Presentation transcript:

‘C54x寻址方式 ‘C54x特殊寻址方式说明 ‘C54x指令集 ‘C54x特殊指令使用说明 第三章 DSP软件体系 ‘C54x寻址方式 ‘C54x特殊寻址方式说明 ‘C54x指令集 ‘C54x特殊指令使用说明

§3-1 TMS320C54x的寻址方式 立即数寻址: 指令中嵌有一个固定的数 绝对地址寻址: 指令中有一个固定的地址 立即数寻址: 指令中嵌有一个固定的数 绝对地址寻址: 指令中有一个固定的地址 累加器寻址: 按累加器内的地址去访问程序存储器中 的一个单元 直接寻址: 指令中的7bits是一个数据页内的偏移地址, 而所在的数据页由数据页指针DP或SP决定。 该偏移加上DP和SP的值决定了在数据存储器 中的实际地址。 间接寻址: 按照辅助寄存器中的地址访问存储器。 存储器映射寄存器寻址: 修改存储器映射寄存器中的值, 而不影响当前DP或SP的值。 堆栈寻址: 把数据压入和弹出系统堆栈。

1 . 立即数寻址 在立即数寻址中,指令里包括了立即操作数。在一条指令中可对两种立即数编码。一种是短立即数(3、5、8或9bits),另一种是16bits的长立即数。立即数可包含在单字或双字指令中。3-,5-,8-或9-bit值在单字指令中,16-bit值在双字指令中。

短立即数RPT 长立即数RPT 立即数寻址的其他例子: LD #0,ARP ;ARP=2(#k3) LD #3,ASM ;ASM=3(#k5) LD #50,DP ;DP=50(#k9) LD #1234,A ;A=1234(#k) STM #FFFFh,IMR ;IMR=FFFFh(#lk)

2. 直接寻址 在直接寻址中,指令代码包含了数据存储器地址的低七位。这7-bit dma作为偏移地址与数据页指针(DP)或堆栈指针(SP)相结合共同形成16-bit的数据存储器实际地址。如右图所示。

CPL=0:dma与9-bit的DP相结合形成数据存储器地址。 9-bit的DP指向数据存储空间的512个数据页中的一页 1 2 DP 9-bit 510 511 9-bit的DP指向数据存储空间的512个数据页中的一页

编程举例:

编程举例: 直接寻址编程: .mmregs .bss x, 4, 1 a0 .word 012h a1 .word 3211h a2 .word fe11h a3 .word ff03h .sect “program” LD #0, A LD #X, DP LD #a0, T MAC x,A LD #a1,T MAC X+1,A LD #a2,T MAC X+2,A …..

CPL=1:dma加上SP基地址形成数据存储器地址。(st1中) AND sample, A LD sample, A ADD sample, B ;……..

3. 间接寻址 在间接寻址中,64K数据空间任意单元都可通过一个辅助寄存器中的16-bit地址进行访问。‘C54x有8个16-bit辅助寄存器(AR0-AR7)。两个辅助寄存器算术单元(ARAU0和ARAU1),根据辅助寄存器的内容进行操作,完成无符号的16-bit算术运算。间接寻址很灵活,不仅能从存储器中读或写一个单16-bit数据操作数,而且能在一条指令中访问两个数据存储器单元(即从两个独立的存储器单元读数据,或读一个存储器单元同时写另一个存储器单元,或读写两个连续的存储器单元)。 单操作数寻址

单操作数间接寻址方框图

单操作数间接寻址类型: *Arx: ARx包含了数据存储器地址 *ARx-/ *ARx+ : 访问后, ARx中的地址减1/加1 *ARx-0B/ *ARx+0B :访问后,从ARx中以位倒序进位的 方式减去/加上AR0 *ARx-0/ *ARx+0 : 访问后,从ARx中减去/加上AR0 *ARx-%/ *ARx+% : 访问后,ARx中的地址以循环寻址 的方式减1/加1 *ARx-0%/ *ARx+0% :访问后,从ARx中以循环寻址的方 式减去/加上AR0 *ARx(lk): ARx和16-bit的长偏移(lk) 的和用来 作为数据存储器地址。ARx本身不 被修改

*+ARx(lk): 在寻址之前,把一个带符号的16-bit的长偏移 (lk)加到ARx中,然后用新的ARx的值作为 数据存储器的地址 *+ARx(lk)%:在寻址之前,把一个带符号的16-bit的长偏移 以循环寻址的方式加到ARx中,然后再用新 的ARx的值作为数据存储器的地址

编程举例:

编程举例: 间接寻址编程: .bss x, 4, 1 a .word 1, 2, 3, 4 MAC *AR2+,A .mmregs .bss x, 4, 1 a .word 1, 2, 3, 4 .sect “program” STM #a, AR1 STM #x, AR2 LD #0, A LD *AR1+,T MAC *AR2+,A MAC *AR2+,A LD *AR1+,T LD *AR1,T MAC *AR2,A …..

双操作数寻址方式 双数据存储器操作数间接寻址类型 *Arx: ARx是数据存储器地址 *ARx-/ *ARx+: 访问后,ARx中的地址减1/加1 *ARx+0%: 访问后,AR0以循环寻址的方式加 到ARx中。 例如: MPY *AR2,*AR3,A FIRS *AR2,*AR3,coef

双数据存储器操作数间接寻址方框图

有个别指令可以使用16bits的绝对地址寻址: 4. 绝对地址寻址 有个别指令可以使用16bits的绝对地址寻址: 数据存储器地址(dmad)寻址: MVDK Smem, dmad MVDM dmad, MMR MVKD dmad, Smem MVMD pmad, Smem 程序存储器地址(pmad)寻址: FIRS Xmem, Ymem, pmad MACD Smem, pmad, src MACP Smem, pmad, src MVPD pmad, Smem 端口地址(PA)寻址 PORTR PA, Smem PORTW Smem, PA *(lk)寻址适用于支持单数据存储器操作数的指令

5. 累加器寻址 累加器寻址是用累加器中的数作为一个地址。这种寻址方式可用来对存放数据的程序存储器寻址。共有两条指令可以采用累加器寻址: 5. 累加器寻址 累加器寻址是用累加器中的数作为一个地址。这种寻址方式可用来对存放数据的程序存储器寻址。共有两条指令可以采用累加器寻址: READA Smem WRITA Smem READA是把累加器A所确定的程序存储器单元中的一个字,传送到单数据存储器(Smem)操作数所确定的数据存储器单元中。WRITA是把Smem操作数所确定的数据单元中的一个字,传送到累加器A确定的程序存储器单元中去。

6. 存储器映射寄存器寻址 只有8条指令能使用存储器映射寄存器寻址: LDM MMR, dst MVDM dmad, MMR 6. 存储器映射寄存器寻址 存储器映射寄存器寻址用来修改存储器映射寄存器而不影响当前数据页指针(DP)或堆栈指针(SP)的值。存储器映射寄存器寻址既可以在直接寻址中使用,又可以在间接寻址中使用。 只有8条指令能使用存储器映射寄存器寻址: LDM MMR, dst MVDM dmad, MMR MVMD MMR, dmad MVMM MMRx, MMRy POPM MMR PSHM MMR STLM src, MMR STM #lk, MMR

7. 堆栈寻址 系统堆栈用来在中断和子程序期间自动存放程序计数器。它也能用来存放额外的数据项或传递数据值。处理器使用一个16-bit的存储器映射寄存器—堆栈指针来对堆栈寻址,它总是指向存放在堆栈中的最后一个元素。 共有四条使用堆栈寻址方式访问堆栈的指令: PSHD 把一个数据存储器的值压入堆栈。 PSHM 把一个存储器映射寄存器的值压入堆栈。 POPD 把一个数据存储器的值弹出堆栈。 POPM 把一个存储器映射寄存器的值弹出堆栈。

§3-2 特殊寻址方式说明 本小节重点介绍两种广泛应用的特殊寻址方式—循环寻址和位倒序寻址。 位倒序寻址 §3-2 特殊寻址方式说明 本小节重点介绍两种广泛应用的特殊寻址方式—循环寻址和位倒序寻址。 位倒序寻址 位倒序寻址提高了执行速度和在FFT算法的程序中使用存储器的效率。在这种寻址方式中,AR0存放的整数N是FFT点数的一半。一个辅助寄存器指向一数据存放的物理单元。当使用位倒序寻址把AR0加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是从右向左。间接寻址中*Arn+0B/-0B表示位倒序寻址。

8点的FFT蝶型结运算 0000 0100 0010 0110 0001 0101 0011 0111

FFT中混序就是位倒序 FFT运算时输出/输入序列中必有其一要混序。

位倒序寻址的执行 设FFT长度N=16,则AR0赋值为8,位倒序方式读入数据情况如下:

循环寻址: 许多算法,如卷积,相关和FIR滤波等,都需要在存储器中实现一个循环缓冲器。在这些算法中,一个循环缓冲器就是一个包含了最近的数据的滑动窗口。当新的数据来到时,缓冲器就会覆盖最早的数据。循环缓冲器实现的关键是循环寻址的实现。‘C54x间接寻址中提供了循环寻址的方式,以%表示。 循环寻址图示

循环寻址的有效地址计算 定义循环缓冲器大小寄存器(BK)来确定了循环缓冲器的大小。大小为R的循环缓冲器必须从一个N-bit边界开始。循环缓冲器的有效基地址(EFB)就是用户选定的辅助寄存器(ARx)的低N位置 0后所得到的值。 满足条件: 循环缓冲器的尾地址(EOB)是通过用BK的低N位代替ARx的低N位得到。循环缓冲器的INDEX就是ARx的低N位,step就是加到辅助寄存器,或从辅助寄存器中减去的值。循环寻址的算法如下:

if 0≤ index+step < BK: index = index + step else if index + step ≥ BK: index = index + step - BK else if index + step< 0 index = index + step + BK

如何确定循环缓冲的起始地址? R(BK)=32 ---> 二进制 100000 ---> N=6

应用举例: 计算16阶的FIR滤波器输出256个点 .sect “fir-prog” STM #255, BRC ; Repeat 256 times RPTBD fir_filter_loop STM #16, BK ; FIR circular buffer size LD *AR7+, A ; load the input value STL A, *AR4+% ; replace oldest sample with ; newest sample RPTZ A, #16 MAC *AR4+0%, *AR3+0%, A ; filtering STH A, *AR5+ ; replace the oldest buffer value fir_filter_loop

§3-3 TMS320C54x的指令集 算术运算指令 逻辑运算指令 程序控制指令 装入和存储指令

一、算术运算指令 算术运算指令可分为如下几类:  加法指令  减法指令  乘法指令  乘加指令  乘减指令  双数/双精度指令  加法指令  减法指令  乘法指令  乘加指令  乘减指令  双数/双精度指令  特殊操作指令

1、加法指令

定点DSP中数据表示方法 当它表示一个整数时,其最低位(D0)表示1,D1位表示2的1次方,次高位(D14)表示2的14方。 如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。例如,07FFFH表示最大的正数32767(十进制),而0FFFFH表示最大的负数-1(负数用2的补码方式显示)。 当需要表示小数时,小数点的位置始终在最高为后,而最高位(D15)表示符号位。这样次高位(D14)表示0.5,然后是0.25,最低位(D0)表示。所以04000H表示小数0.5,01000H表示小数0.25,而0001H表示16位定点DSP表示的最小的小数(有符号)0.000030517578125。

实现16位定点加法 ‘C54X中提供了多条用于加法的指令,如ADD,ADDC,ADDM和ADDS。其中ADDS用于无符号数的加法运算,ADDC用于带进位的加法运算(如32位扩展精度加法),而ADDM专用于立即数的加法。

使用ADD完成加法 ld temp1,a ;将变量temp1装入寄存器A add temp2,a ;将变量temp2与寄存器A相加 stl a,temp3 ;将结果(低16位)存入变量 ;temp3中。 注意,这里完成计算temp3=temp1+temp2,我们没有特意考虑temp1和temp2是整数还是小数,在加法和下面的减法中整数运算和定点的小数运算都是一样的。

利用ADDS实现32位数据装入 ld #0,dp ; 设置数据页指针 ld 60h,16,a ; 将60H的内容装入A的高16位 adds 61h,a ; 将61H的内容加到A的低16位 dld 60h,b ; 直接装入32位到B寄存器

ADD中寻址方式 ADD Smem [,SHIFT],src [,dst] 例如: ADD *AR0,1,A,A ADD 60H,-1,A,A ADD *AR5,1,A,B ADD Xmem, SHFT, src 例如: ADD *AR5,1,A ADD Xmem,Ymem, dst 例如: ADD *AR2,*AR3,A

2、减法指令

实现16位定点减法 ‘C54X中提供了多条用于减法的指令,如SUB,SUBB,SUBC和SUBS。其中SUBS用于无符号数的减法运算,SUBB用于带进位的减法运算(如32位扩展精度的减法),而SUBC为移位减,DSP中的除法就是用该指令来实现的。SUB指令与ADD指令一样,有许多的寻址方式,其详细使用说明请参考《TMS320C54X使用教程》

减法指令使用举例 stm #60h,ar3 ;将变量temp1的地址装入ar3寄存器 sub *ar2+, *ar3,b ;将变量temp3左移16位同时变量 ; temp2也左移16位,然后相减,结 ; 果放入寄存器B(高16位)中,同 ; 时ar2加1。 sth b,63h ;将相减的结果(高16位)存入变量63h

利用SUBC实现除法 在‘C54X中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于除以常数特别适用。另一种方法是使用SUBC指令,重复16次减法完成除法运算。

利用SUBC完成Temp1/Temp2 ld temp1,B ;将被除数temp1装入B寄存 ;器的低16位 rpt #15 ;重复SUBC指令16次 subc temp2,b ;使用SUBC指令完成除法 stl B,temp3 ;将商(B寄存器的低16位) ;存入变量temp3 sth B,temp4 ;将余数(B寄存器的高16位) ;存入变量temp4 注: 实际上是完成整数除法

实现小数除法 在‘C54X中实现16位的小数除法与前面的整数除法基本一致,也是使用SUBC指令来完成。但有两点需要注意:第一,小数除法的结果一定是小数(小于1),所以被除数一定小于除数。在执行SUBC指令前,应将被除数装入A或B寄存器的高16位,而不是低16位。其结果的格式与整数除法一样。第二,应考虑符号位对结果小数点的影响。所以应对商右移一位,得到正确的有符号数。

3、乘法指令

实现16定点整数乘法 在‘C54X中提供了大量的乘法运算指令,其结果都是32位,放在A或B寄存器中。乘数在‘C54X的乘法指令很灵活,可以是T寄存器、立即数、存贮单元和A或B寄存器的高16位。如果是无符号数乘时,请使用MPYU指令。这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。

整数乘法举例 rsbx FRCT ;清FRCT标志,准备整数乘 ld temp1,T ;将变量temp1装入T寄存器 mpy temp2,a ;完成temp2*temp1,结果放 ;入A寄存器(32位)

实现小数乘法 在‘C54X中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。‘C54X中提供了一个状态位FRCT,将其设置为1时,系统自动将乘积结果左移移位。两个小数(16位)相乘后结果为32位,如果精度允许的话,可以只存高16位,将低16位丢弃,这样仍可得到16位的结果。

小数乘法举例 ssbx FRCT ;FRCT=1,准备小数乘法 ld temp1,16,a ;将变量temp1装入寄存器A的高16位 mpya temp2 ;完成temp2乘寄存器A的高16位,结 ;果在B中,同时将temp2装入T寄存器 sth b,temp3 ;将乘积结果的高16位存入变量temp3 如:0.1(0x0ccd) x 0.7(0x599a) = 0.06997680664063(0x08f5) 注:可以使用MPYR完成四舍五入。 比较如下结果 mpyr temp1,b ; T * temp1 -> b

4、乘加和乘减指令

5、双精度/双数操作指令

6、特殊指令

逻辑指令包括与、或、异或、移位和测试指令 二、逻辑运算指令 逻辑指令包括与、或、异或、移位和测试指令 1、与指令(AND)

2、或、异或指令

3、移位和测试指令

三、程序控制指令 程序控制指令包括: 分支指令 调用指令 中断指令 返回指令 重复指令 堆栈操作指令 混合程序控制指令

1、分支指令

2、调用与中断指令

3、返回指令

4、重复指令和堆栈操作指令

5、混合程序控制指令

四、装入和存储指令 装入和存储指令包括: 一般的装入和存储指令 条件存储指令 并行装入和存储指令 并行装入和乘法指令 并行存储和加件乘指令 混合装入和存储指令

1、一般的装入指令

2、存贮指令

3 并行装入和存储指令 4、条件存储指令

5、并行存储和加、减、乘法指令

6、并行装入和乘法指令

7、混合装入和存储指令

注意:同一条指令在不同存储器中可能有不同执行时间 操作数在双寻址空间、单寻址空间和外部 程序代码在双寻址、单寻址和外部空间 操作数和代码在相同存储器块中 数据空间插入了等待周期 程序空间插入了等待周期

§3-4 特殊指令使用说明 FIRS指令 FIRS指令用于线性相位滤波器的处理。一个如下图的8阶线性相位滤波器的输出表达式: §3-4 特殊指令使用说明 FIRS指令 FIRS指令用于线性相位滤波器的处理。一个如下图的8阶线性相位滤波器的输出表达式: FIRS指令使用方法: FIRS *AR2+, *AR3+, COEF

FIR滤波的两指令MAC、FIRS RPTZ A,#(N-1) ;重复MAC指令N次,先将A清零 MAC *FIR_DATA_P+0%,*FIR_COFF_P+0%,A ; 完成滤波计算。注意FIR滤波 ;系数存放在数据存储区 RPTZ B, #(N/2-1) 重复FIRS指令N/2次,先将B清零 FIRS *ar2+0%, *ar3+0%,filter_coff+N/2 ;完成滤波计算。注意FIR滤波系数 ;存放在程序存贮filter_coff为 ;系数起始地址

Viterbi译码指令DADST、DSADT、CMPS 在信道均衡和解码中经常会使用到Viterbi算法,C54x为此提供了专门的硬件和指令。根据输入信号确定分支似然概率增加量D1/D2,放在T寄存器中,TRN存储可能信号译码输出。

相关指令应用

最小均方运算LMS 在进行自适应滤波等操作中经常会使用LMS算法,C54x提供的LMS指令方便了编程。如下图所示的自适应滤波器设计中,滤波器系数修正公式为: 其中,e(i) = d(i) - y(i)。 滤波器输出:

基于LMS的自适应滤波编程

数据归一化相关指令EXP、NORM 归一化一个数是先求其指数,然后把它调整到最大精度格式。实现方法如下:

数据块移动MVDD、MVDP、MVPD 在C54x系列DSP,数据与数据存储器、数据与程序存储器之间可以方便的进行数据传输,结合单指令循环可实现数据块移动。如16个系数的移动:

C54x中有一些指令功能差不多,但编写出的程序效率不同,应灵活使用,如: MPY[R] Smem, dst ;T*(Smen)dst 指令效率的提高 C54x中有一些指令功能差不多,但编写出的程序效率不同,应灵活使用,如: MPY[R] Smem, dst ;T*(Smen)dst MAC[R] Smem, dst ;(Smen)*T+src ( MPY[R] +ADD) ; src MACD Smen,pmen,src ;pmend PAR (MAC+DELY+LD) ;(Smem)*(pmed) ; +(src) src ;(Smem)T ;(Smem) Smem+1

本章小结 本章重点介绍了TMS320C54x的软件体系,并对特殊的寻址方式和特殊指令进行了介绍,对于各指令更详细的了解需同学自己多看书。 制作:DSP实验室 2002.10