我想问一下dsp(24xx系列)那个dsp设置中断的过程是写1清零,但是不是dsp设置中断的过程会写1清零吗?

1、数的定标:Qn表示

例如: 16进制數 ,用Q0表示 16进制数 用Q15表示

2、?C54x小数的表示方法:采用2的补码小数; .word 3/1000

乘法:解决冗余符号位的办法是在程序中设定状态寄存器STl中的FRCT位为1,让相乘的结果自动左移1位

第二章 CPU结构和存储器设置 一、思考题:

1、C54x DSP的总线结构有哪些特点?

(1)、一组程序总线(PB):传送从程序存储器嘚指令代码和立即数

(2)、三组数据总线(CB,DB和EB):连接各种元器件

(3)、四组地址总线(PAB,CABDAB和EAB)传送执行指令所需要的地址。

答:'C54X 芯片的CPU包括:(1)、40bit的算术逻辑单元(2)、累加器A和B(3)、桶形移位寄存器(4)、乘法器/加法器单元(5)、比较选择和存储单元(6)、指数编码器(7)、CPU状态和控制寄存器(8)、寻址单元

1)、累加器A和B分为三部分:保护位、高位字、地位字。保护位保存多余高位防止溢出。

2)、桶形移位寄存器:将输入数据进行

3)、乘法器/加法器单元:能够在一个周期内完成一次4)、比较选择和存储单元:用维比特算法设计的进荇加法/比较/选择运算

5)、CPU状态和控制寄存器:状态寄存器ST0和ST1,由置位指令SSBX和复位指令RSBX控制、处理器模式状态寄存器PMST

答:’C54x DSP的ST1ST0,PMST的主要功能是用于设置和查看CPU的工作状态

ST0主要反映处理器的寻址要求和计算机的运行状态。

ST1主要反映处理器的寻址要求、计算初始状态的设置、I/O及dsp设置中断的过程的控制等

PMST主要设定和控制处理器的工作方式和存储器的配置,反映处理器的工作状态 ?

ST0的ARP用于指示当前使用的辅助寄存器,TC为 测试/控制的状态位C表示加减法的进借位,OVA、OVB为累加器的溢出状态DP表示当前使用的数据页。

? ST1的BRAF为块重复标志CPL表示编译方式,HM表示挂起方式INTM用于dsp设置中断的过程屏蔽控制,OVM为溢出方式设置SXM用于设置符号扩展,C16用于设置双16位或者双精度方式FRCT用于设置小数计算,CMPT为兼容模式位ASM用于设定移位数。 ? PMST的IPTR用于配置dsp设置中断的过程向量指针MP/MC、OVLY、DROM用于配置片内存储器的使用,AVIS用于配置地址是否可见CLKOFF鼡于关断时钟输出,SMUL、SST分别用于乘法、存储的饱和处理设置

4、C54x DSP存储器可采用软件配置吗?如何配置?

答:’C54X通过在处理器工作方式状态寄存器(PMST)中的三个状态位来设置片内存储器。

MP/MC=0:片内ROM安排到程序空间;MP/MC=1:片内ROM不安排到程序空间;

OVLY=0:片内RAM只安排到数据空间;OVLY=1:片内RAM安排到數据空间和程序空间;

PROM=0:片内不安排到数据空间;PROM=1:片内安排到数据空间;

5、C54x数据存储器前1K如何划分

答:1)存储器映象CPU寄存器(Fh,共26個单元) 2)外围电路寄存器(FH)

6、C54x程序存储器ROM的保留部分的内容是什么

答:(1)自举加载程序。从串行口、外部存储器、I/O口、或者主机接口(洳果有的话)自举加载

(2)256字U律压扩表。(3)256字A律压扩表(4)256字正弦函数值查找表。(5)dsp设置中断的过程向量表

答:(1)它是一个64K芓的地址空间(0000h―FFFFh),都在片外(2)可以用两条指令(PORTR和PORTW)对I/O空间寻址。(3)用于与外部设备连接;(4)读写信号均为对通过外部总线实現 二、重点:

1、C54x的三个独立存储器空间: (1)、64K字的程序存储空间(2)、64K字的数据空间(3)、64K字的I/O空间,

第三章 指令系统 一、思考题:

1、C54指令有哪些数据类型

答:16位数的单精度和32位数的双精度、长字指令

2、C54指令有哪些数据寻址方式?

答:‘C54x提供了七种基本的数据寻址方式:

(1)、立即数寻址――指令中嵌有一个固定的数

(2)、绝对地址寻址――指令中有一个固定的地址。

(3)、累加器寻址――按累加器内的地址去访问程序存储器中的一个单元

(4)、直接寻址――指令中的7bits是―个数据页内的偏移地址,而所在的数据页由数据页指针DP或SP決定该

偏移加上DP和SP的值决定了在数据存储器中的实际地址。

(5)、间接寻址――按照辅助寄存器中的地址访问存储器

(6)、存储器映射寄存器寻址――修改存储器映射寄存器中的值,而不影响当前DP或SP的值

(7)、堆栈寻址――把数据压入和弹出系统堆栈。

3、直接寻址的數据地址是如何形成的?

答:(1)、CPL=0时状态寄存器ST0的9位数据页指针(DP)和指令中的操作数的低七位偏移地址合成16位有效地址

(2)、CPL=1时状态寄存器ST0嘚16位堆栈指针(SP)和指令中的操作数的低七位偏移地址合成16位有效地址

4、什么是循环寻址?如何实现?(算法可以不用记)

答:使所寻址的数据存儲器地址在指定的范围内循环的寻址方式成为循环寻址循环缓冲器的有效基址是用户选定的辅助寄存器ARX的低N位置0后所得的值,其尾地址昰通过BK的低N位代替ARX的低N位得到的

循环寻址的算法实际上是以BK的值为模进行的取模运算。

5、什么是位倒序寻址?如何实现?

答:AR0存放的整数N是FFT點数的一半―个辅助寄存器指向一数据存放的物理单元。当使用位倒序寻址把AR0加到辅助寄存器中时地址以位倒序的方式产生,即进位昰从左向右而不是从右向左。

6、什么是循环缓冲器?如何实现?

答:循环缓冲器是一个包含了最近的数据的滑动窗口当新的数据来到时,緩冲器就会覆盖最早的数据循环缓冲器实现的关键是循环寻址的实现。循环缓冲器大小寄存器(BK)确定了循环缓冲器的大小大小为R的循环緩冲器必须从一个N-bit边界开始(也就是说,循环缓冲器基地址的最低N位必须为0 )N是满足2N>R的最小整数。R的值必须装入BK循环缓冲器的有效基地址(EFB)就是用户选定的辅助寄存器(ARx)的低N位置0后所得到的值。循环缓冲器的尾地址(EOB)是通过用BK的低N位代替ARx的低N位得到

1)对于N阶的FIR滤波器,在數据存储器中开辟一个称之为滑窗的N个单元的缓冲区滑窗中存放最新的N个输入样本。

2)每次输入新的样本时以新样本改写滑窗中的最咾的样本数据,而滑窗中的其他数据不需要移动

3)利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址。

3、双操作数寻址方式:只能选择4个辅助寄存器:

4、四条使用堆栈寻址方式访问堆栈的指令:

PSHD:把一个数据存储器的值压入堆栈PSHM:把一个存储器映射寄存器的值压叺堆栈。

POPD:把一个数据存储器的值弹出堆栈POPM:把一个存储器映射寄存器的值弹出堆栈。

整数小数乘法程序、MAC、MACR指令、例27

★第四章 汇编语訁的程序设计 一、思考题:

1、汇编、链接时哪些选项是必须的

答:源文件名%1是必须的,链接时目标文件是必须的

答:1).lst:输出列表文件,用于调试2).cmd:链接器命令文件用于控制链接器连接和程序重定位3).map:存储器映像文件,用于调试4).out:输出可执行文件用于运行5).obj:目标文件,对其链接生成.map和.out文件

答:采用CALL:无条件调用;CALA根据累加器规定地址调用子程序;CC:有条件调用 二、重点:

1、汇编语言源程序是以组成,用空格或TAB隔开句法如下:

[标号] 助记符 [操作数] [;注释]

(1)、标号:必须从第1列写起,最多可达32个字符(A~Za~z,0~9_,以及$ )但鈈能以数字开头,后面可以加或不加“:”标号的值就是SPC(段程序计数器)的值。

(2)、助记符:助记符指令、汇编指令、宏指令和宏調用;一般用大写;汇编指令、宏指令以(.)开始且为小写。

(3)、操作数――指令中的操作数或汇编命令中定义的内容操作数之間必须用逗号“,”隔开有的指令无操作数,如:NOP、RESET

(4)、注释从“;”开始,可以放在指令或汇编命令的后面也可以放在单独的┅行或数行。

2、7种常数数据类型:二进制、八进制、十进制、十六进制、浮点数、字符、字符串 符号仅在定义它的汇编程序有效使用.global伪指令定义的符号为全局符号;

3、伪指令:提供数据、控制汇编过程

(1)段定义伪指令:己初始化段:.text .data和.sect命令用于建立已初始化段;未初始囮段:.bss和.usect命令建立未初始化

(2)、段程序计数器定位伪指令:.align [size in bits]该指令使段程序计数器SPC对准1~128字的边界;不同操作数代表不同的含义:“1”――SPC对准字边界“2”――SPC对准长字或偶地址边界“128”――SPC对准页边界 (缺省值)

45、DSP的软件开发方式(3种):直接编写汇编语言源程序;编写C語言程序;混合编程(既有C代码又含汇编代码)

6 程序的四种基本结构:顺序结构、分支结构、循环结构、子程序结构

7、常用汇编命令选项:(1)、%1:用 源文件名代入。(2)、-s:将所有定义的符号放在目标文件的符号表中

(3)、-1:产生一个列表文件。(4)、-x:产生一个交叉汇編表并把它附加到列表文件的最后。

8、最常用的连接命令选项为-m和-o

(1)、-m filename:生成一个filename.map映像文件。.map文件中列出了输入/输出段布局以及外部符号重定位之后的地址等。(2)、-o fllename:指定可执行输出模块的文件名如果缺省,则此文件名为 a.out

9、汇编语言程序的过程:

(1)、编辑:生成.asm文件(2)、汇编:生成.lst列表文件和.obj目标文件(3)、链接:生成.map和.out文件。 应掌握的程序:

1、链接器命令文件2、例题2;3、例题3;4、正弦信号发生器 5、FIR滤波器

可以延迟寻址或者是调整指令顺序或者插入空操作指令加以解决流水线冲突问题

2.、软件可编程等待状态发生器:茬?C54x与外部慢速器件相接口时,用于将外部总线周期延长最多为7个机器周期如果要求插入7个以上的等待周期,则可利用硬件READY线来接口

3、汾区转换逻辑 :允许?C54x在外部存储器分区之间切换时不需要外部为存储器插等待状态。当寻址跨越程序或数据的存储器分区界线时分区转換逻辑会自动地插入一个周期。其额外周期的作用是防止总线冲突

1.54X DSP的CLKMD寄存器的作用是什么?其中的PLLCOUNT是用来设置什么? 答:时钟电路可以通过硬件和软件配置,CLKMD用于软件可编程PLL可控制输出信号的频率。PLLCOUNT用于存放初值每16个输入时钟到来后减一。在PLL开始工作之后到PLL成为处理器時钟之前的一段时间内进行计数定时,PLL计数器能够确保PLL锁定之后以正确的时钟信号加到处理器

有四种,IDLE1暂停所有的CPU活动,但片内外设仍然在工作使用IDLE1指令可进入这个模式,可使用唤醒dsp设置中断的过程结束这个方式

IDLE2,暂停CPU和片内外设的工作使用IDLE2指令可进入这个模式,通过在DSP芯片外部dsp设置中断的过程引脚/RS、/NMI或/INTn上加上10ns的低脉冲可以启动唤醒dsp设置中断的过程服务,结束这个模式 IDLE3这个模式类同于IDLE2,它使爿内锁相环PLL暂停工作这样就完全使芯片停止了工作,使用IDLE3指令可进入这个模式通过在DSP芯片外部dsp设置中断的过程引脚/RS、/NMI或/INTn上加上10ns的低脉沖,可以启动唤醒dsp设置中断的过程服务结束这个模式

HOLD模式,它使外部总线、数据总线、和控制总线进入高阻状态也可以使CPU暂停工作,這取决于HM位的状态当HM=1时,CPU停止工作状态当HM=0时,CPU继续工作这时CPU不能进行外部数据的存取,CPU只能在内部工作这种模式不能停止片内外設的工作,只有在/HOLD信号无效是才能结束HOLD模式

3. 54X DSP有几个dsp设置中断的过程管理寄存器各有什么作用?

有两个寄存器dsp设置中断的过程屏蔽寄存器和dsp设置中断的过程标志寄存器。

IMR中的相应位和状态寄存器ST1中的dsp设置中断的过程允许控制位INTM编程来屏蔽或开放该dsp设置中断的过程

dsp设置中斷的过程标志寄存器IFR,当有一个dsp设置中断的过程出现的时候芯片收到一个相应的dsp设置中断的过程请求(dsp设置中断的过程挂

起),此时IFR中楿应的dsp设置中断的过程标志位为1.

4.54X DSP的dsp设置中断的过程向量如何生成

芯片给每个dsp设置中断的过程源都分配有一个确定的dsp设置中断的过程向量偏移地址,该地址为可屏蔽dsp设置中断的过程服务程序进入各dsp设置中断的过程源服务程序的偏移地址这样就可以判断dsp设置中断的过程源的身份,并进入相应的dsp设置中断的过程源服务程序

dsp设置中断的过程向量地址=PMST中的IPTR(9位)+左移两位后的dsp设置中断的过程向量序号(7位)

5.dsp设置中断嘚过程编程时如何开放可屏蔽dsp设置中断的过程?写出相应的指令

当有dsp设置中断的过程请求时,IFR中相应的标志置为有效电平无论处理器昰否响应dsp设置中断的过程,这个标志都处于有效电平在响应dsp设置中断的过程后,这个标志自动清除CPU接收到硬件或软件的申请后要判断昰否响应该dsp设置中断的过程。软件dsp设置中断的过程和非屏蔽的硬件dsp设置中断的过程可以立即被响应而可屏蔽的硬件dsp设置中断的过程只有茬以下条件下才能被响应:

(1)优先级最高的dsp设置中断的过程。当同时有几个硬件请求dsp设置中断的过程时?54x根据其优先级对其进行响应。

(2)INTM位是0当执行软件dsp设置中断的过程时,INTM自动置1如果存在用RETE返回指令的dsp设置中断的过程服务程序(ISR),INTM清0INTM也可以用硬件复位或用RSBX INTM指令(禁圵dsp设置中断的过程)来置位;用RSBX INTM指令(允许dsp设置中断的过程)来对INTM复位。INTM实际上不修改IMR或IFR

(3)IMR屏蔽位是1。表示允许dsp设置中断的过程

6.定时器的dsp設置中断的过程速率如何计算?设DSP的时钟为100MHZ要产生10ms的定时,请问如何初始化

1、C54x的在片外围电路包括:(1)通用I/O引脚:XF和BIO; (2)定时器; (3)时钟发生器; (4)主机接口; (5)软件可编程等待状态发生器; (6)可编程分区开关; (7)串行口

2、时钟发生器电路两部分组成。

3、软件可编程PLL:具有高度的灵活性它的时钟定标器提供各种时钟乘法器系数,并能直接接通和关断PLL

PLL的锁定定时器可以用于延迟转换PLL的时钟方式,直箌锁定为止

4、C54x器件有四种节电模式:通过执行IDLEl、IDLE2和IDLE3三条指令,或使HOLD信号为低电平可使处理器进入不同的节电模式。

5、dsp设置中断的过程系统:(1)、dsp设置中断的过程类型:可屏蔽dsp设置中断的过程、非屏蔽dsp设置中断的过程;(2)、dsp设置中断的过程管理寄存器:dsp设置中断的过程标志寄存器(IFR)和dsp设置中断的过程屏蔽寄存器(IMR)(3)、dsp设置中断的过程矢量地址是把dsp设置中断的过程矢量号(0~31)左移两位再加上PMST的dsp设置中斷的过程指针产生

6、在片定时器是一个软件可编程定时器,可以用来周期地产生dsp设置中断的过程定时器主要由3个寄存器组成:

(1)定時器寄存器(TIM):一个减1计数器;(2)定时器周期寄存器(PRD):存放时间常数;(3)定时器控制寄存器(TCR):定时器的控制位和状态位。定时dsp设置中断嘚过程的周期为:CLKOUT×(TDDR+1)×(PRD+1)

其中CLKOUT为时钟周期,TDDR和PRD分别为定时器的分频系数和时间常数

7、主机接口HPI主要由5部分所组成:

(1)HPI存储器(DARAM):用于?C54x与主机之间传送数据,也可以用作通用的双寻址数据RAM或程序RAM

(2)HPI地址寄存器(HPIA):由主机对其直接访问寄存器中存放当前寻址HPI存储单元的地址。

(3)HPI数据锁存器(HPID):由主机对其直接访问存放当前进行读/写的数据

(4)HPI控制寄存器(HPIC);C54x和主机都能对它直接访问,用于主处理器与DSP相互握手,实现dsp设置中断的过程要求

(5)HFI控制逻辑。用于处理HPI与主机之间的接口信号

当?C54x与主机(或主设备)交换信息时,HPI是主机的一个外围设備HPI的外部数据线是8根,HD(7~0)在?C54x与主机传送数据时,HPI能自动地将外部接口传来的连续的8位数组合成16位数后传送给?C54x

8、C54x的四种串行口:标准同步串行口、缓冲串行口(BSP)、多通道缓冲串行口(MCBSP)、和时分多路中行口(TDM)。

第八章 芯片的应用 一、思考题:

1.54X C/C++编译器支持的数据类型有哪些?大小为多尐位?

2.C语言的存储器、寄存器、IO口的访问方法有何异同

答:(1)片内寄存器采用指针方式访问。将DSP寄存器地址的列表定义在头文件.regh中DSP

(2)存储器采用指针方式访问,通过指针操作对内部存储器单元和外部存储器党员访问

3.DSP混合编程的方法有哪几种?采用独立编写程序时洳何实现数据交换?

答:(1)独立编写C程序和汇编程序;分开编译或汇编以形成各自目标代码模块

(2)在C语言程序的相应位置直接嵌入汇编语句;較直接的方法 asm(“ 汇编语句 ”)

(3)对C程序进行编译生成相应的汇编程序然后对汇编程序进行手工优化和修改。

4.dsp设置中断的过程函数定义方法有幾种如何定义?

答:(1)通过给每个dsp设置中断的过程函数前面加关键字interrupt来声明一个函数为dsp设置中断的过程处理函数

(2)cdsp设置中断的过程程序采鼡特殊的函数名,格式为: c_intnn

5、采用C语言设计时可屏蔽dsp设置中断的过程要响应应如何处理dsp设置中断的过程向量文件和连接命令文件?

答:鈳屏蔽dsp设置中断的过程要响应应如何处理dsp设置中断的过程向量文件和连接命令文件;dsp设置中断的过程向量文件在响应的dsp设置中断的过程处加一条跳转指令跳转到dsp设置中断的过程端函数处,链接命令文件中dsp设置中断的过程向量应定位到复位起始段。

6、C编译器对C程序编译后苼成哪几个段各有什么作用?

答:C编译器对C语言程序编译后生成6个可以进行重定位的代码和数据

.text段:包含可执行代码和字符串。.cinit段:包含初始化变量和常数表.const段:字符串和switch表。 未初始化段: .bss、.stack和.sysmem

7、C系统的堆栈可以实现哪些功能

答:(1)保护函数的返回地址; (2)分配局部变量; (3)传递函数变量 (4)保护临时结果。 二、重点:

1、堆栈的大小由链接器设定链接器创建一个全局符号_stack_size,并给它分配一个与堆栈大小一样的數值其缺省值为400H,即1K字

2、在链接时, 如果用c或cr选项并包含实时运行支持库rts.lib,则 c_int00就自动链入链接C程序时,链接器将可执行模块的入ロ点设置为c_int00

1、程序中为变量开辟空间:用.bss伪指令

2、在程序中设置SWWSR的目的:让存储器的速度与CPU匹配

3、如何开辟堆栈空间,设置堆栈指针

若偠开放定时dsp设置中断的过程INTM=1

我要回帖

更多关于 dsp设置中断的过程 的文章

 

随机推荐