寄存器中断逻辑和定时器1_第1页
寄存器中断逻辑和定时器1_第2页
寄存器中断逻辑和定时器1_第3页
寄存器中断逻辑和定时器1_第4页
寄存器中断逻辑和定时器1_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课后测试1. ADSP21160M外部存储空间是从哪个地址开始的?由哪几部分组成?ADSP21160M芯片上MS0MS3这4个引脚的作用是什么?2. ADSP21160M双端口存储器的容量是多少?可按哪几种不同字宽模式访问?3. 试写出下面64位长字访问语句执行中,存储单元和寄存器之间是如何交换数据的。 R11DM(0 x050014)()(LW)4. ADSP21160M如何使能SIMD操作?使能SIMD操作后处理器可以执行哪些并行操作?处理器可以执行哪些并行操作?答案1.答:ADSP21160M外部存储空间是从0 x0800000开始的,由有分组区间和无分组区间组成,MS0MS3这4个引脚

2、分别是03组有分组区间的片选信号。2.答:ADSP21160M双端口存储器的容量是4Mb,可按64位(长字);48位(指令字);40位扩展精度字;32位正常字;16位短字;这样几种不同字宽的模式进行访问。3.答:将地址单元0 x050014中的值R11, 将地址单元0 x050015中的值R10。4.答:MODE1模式控制寄存器的PEYEN位控制SIMD模式的使能。该位置1,就使能了SIMD; 1)将同一条指令同时发送到两个处理单元;将同一条指令同时发送到两个处理单元; 2)从存储器载入两组操作数分别送到两个处理单元;从存储器载入两组操作数分别送到两个处理单元; 3)同时在两个处理单元里执行同

3、一条指令;同时在两个处理单元里执行同一条指令; 4)将两个运算输出结果同时保存到存储器中;将两个运算输出结果同时保存到存储器中; ADSP21160ADSP21160寄存器寄存器 ADSP21160ADSP21160寄存器分类:寄存器分类:1 1)运算单元寄存器)运算单元寄存器2 2)系统控制和状态寄存器)系统控制和状态寄存器 3 3)程序控制寄存器)程序控制寄存器4 4)数据地址产生寄存器()数据地址产生寄存器(DAG1DAG1,DAG2DAG2) 5 5)I/OI/O处理器寄存器处理器寄存器 运算单元寄存器运算单元寄存器 运算单元寄存器主要为运算单元的ALU、乘法器、移位器保存输入、输出数

4、据,主要包括:(1)通用数据寄存器Rx,Sx, Fx(x=015);(2)乘法结果寄存器MRFx, MRBx (x=02); 其中MRFx称为前台寄存器; MRBx称为后台寄存器; 主要用于存放80位定点乘法结果;注:通常也把总线交换寄存器PX,算作运算单元寄存器;系统控制和状态寄存器系统控制和状态寄存器 主要功能是配置处理器核的操作模式,同时标识处理器核的工作状态,作为条件程序执行的判别条件。 对系统控制类寄存器的写入操作有1个周期的延迟,在写入后的第二个周期才有效。系统控制和状态寄存器续系统控制和状态寄存器续寄存器名寄存器名初始值初始值MODE1模式控制寄存器模式控制寄存器10 x0000

5、 0000MODE2模式控制寄存器模式控制寄存器20 xnn00 0000MMASK模式屏蔽寄存器模式屏蔽寄存器0 x0020 0000ASTATx,ASTATy运算状态寄存器运算状态寄存器0 x0000 0000STKYx,STKYy附加运算状态寄存器附加运算状态寄存器0 x0054 0000USTATx(x1-4)用户定义状态寄存器)用户定义状态寄存器0 x0000 0000MODE1寄存器的位定义表寄存器的位定义表Bit(s)NameDefinition0BR8索引寄存器索引寄存器I8位反序使能,位反序使能,1使能使能I8位反序寻址;位反序寻址;0正常寻址正常寻址1BR0索引寄存器索引寄

6、存器I0位反序使能,位反序使能,1使能使能I0位反序寻址;位反序寻址;0正常寻址正常寻址2SRCU运算单元备用寄存器选择,运算单元备用寄存器选择,1使能使能MR备用寄存器;备用寄存器;0只能用主只能用主MR寄存器寄存器3SRD1HDAG1高高4(74)寄存器备用使能,)寄存器备用使能,1使能备用寄存器,使能备用寄存器,0只使用主寄存器只使用主寄存器4SRD1LDAG1低低4(30)寄存器备用使能,)寄存器备用使能,1使能备用寄存器,使能备用寄存器,0只使用主寄存器只使用主寄存器5SRD2HDAG2高高4(74)寄存器备用使能,)寄存器备用使能,1使能备用寄存器,使能备用寄存器,0只使用主寄存器

7、只使用主寄存器6SRD2LDAG2低低4(30)寄存器备用使能,)寄存器备用使能,1使能备用寄存器,使能备用寄存器,0只使用主寄存器只使用主寄存器7SRRFH数据寄存器(数据寄存器(R15R8)备用选择使能,)备用选择使能,1使能备用寄存器;使能备用寄存器;0只使用主寄只使用主寄存器存器98 保留保留10SRRFL数据寄存器(数据寄存器(R7R0)备用选择使能,)备用选择使能,1使能备用寄存器;使能备用寄存器;0只使用主寄只使用主寄存器存器11NESTM中断嵌套使能,中断嵌套使能,1允许中断嵌套;允许中断嵌套;0禁止中断嵌套禁止中断嵌套12IRPTEN全局中断使能,全局中断使能,1使能所有可屏

8、蔽中断;使能所有可屏蔽中断;0禁止响应所有可屏蔽中断禁止响应所有可屏蔽中断MODE1寄存器的位定义表续寄存器的位定义表续Bit(s)NameDefinition13ALUSATALU饱和处理使能,饱和处理使能,1ALU定点溢出进行饱和处理;定点溢出进行饱和处理;0不进行饱和处理不进行饱和处理14SSE定点短字符号扩展使能,定点短字符号扩展使能,1符号扩展到高符号扩展到高16位;位;0高高16位填位填015TRUNC截取模式选择,截取模式选择,1靠近靠近0截取;截取;0截取到最近的数截取到最近的数16RND3232位浮点数据截取方式选择,位浮点数据截取方式选择,1截取到截取到32位;位;0截取到

9、截取到40位位1817CSELADSP总线控制状态,总线控制状态,00ADSP控制总线,控制总线,01,10,11ADSP不控制总线不控制总线2019 保留保留21PEYENSIMD模式使能,模式使能,1使能使能PEy计算单元,使能计算单元,使能SIMD;0禁止禁止PEy,SISD模式模式22BTCST9通过地址寄存器通过地址寄存器I9广播使能,广播使能,1将将PM总线上的数据广播到两个运算单元的相总线上的数据广播到两个运算单元的相应寄存器中,应寄存器中,0禁止广播方式禁止广播方式23BTCST1通过地址寄存器通过地址寄存器I0广播使能,广播使能,1将将DM总线上的数据广播到两个运算单元的总线

10、上的数据广播到两个运算单元的相应寄存器中,相应寄存器中,0禁止广播方式禁止广播方式24CBUFEN环形缓冲寻址使能,环形缓冲寻址使能,1使能环形缓冲寻址;使能环形缓冲寻址;0线性寻址线性寻址3125 保留保留MODE2寄存器位定义表寄存器位定义表 IRQ0触发方式选择触发方式选择,1下降沿触发;下降沿触发;0低电平触发低电平触发IRQ1触发方式选择触发方式选择,1下降沿触发;下降沿触发;0低电平触发低电平触发 IRQ2触发方式选择触发方式选择,1下降沿触发;下降沿触发;0低电平触发低电平触发Bit(s)NameDefinition0IRQ0E1IRQ1E2IRQ2E3 保留保留4CAIDS指令

11、缓存禁止,指令缓存禁止,1禁止指令缓存;禁止指令缓存;0开启指令缓存开启指令缓存5TIMEN定时器使能,定时器使能,1使能定时器;使能定时器;0禁止定时器禁止定时器6BUSLK外部总线请求锁定,外部总线请求锁定,1ADSP控制总线,请求锁定总线;控制总线,请求锁定总线;0不请求锁定总线不请求锁定总线147 保留保留15FLAG0OFLAG0输入输出选择,输入输出选择,1作为输出;作为输出;0作为输入作为输入MODE2寄存器位定义表续寄存器位定义表续 16FLAG1OFLAG1输入输出选择,输入输出选择,1作为输出;作为输出;0作为输入作为输入17FLAG2OFLAG2输入输出选择,输入输出选择

12、,1作为输出;作为输出;0作为输入作为输入18FLAG3OFLAG3输入输出选择,输入输出选择,1作为输出;作为输出;0作为输入作为输入19CAFRZ指令缓存冻结,指令缓存冻结,1冻结指令缓存,禁止刷新,保持原值;冻结指令缓存,禁止刷新,保持原值;0允许指令缓存刷新允许指令缓存刷新20IIRAE是否检测非法寄存器访问,是否检测非法寄存器访问,1允许检测;禁止检测允许检测;禁止检测21U64MAE是否检测对非连续的是否检测对非连续的64位长字存储器空间的访问,位长字存储器空间的访问,1检测;检测;0禁止检测禁止检测2422 保留保留2725PID20处理器处理器ID号号2928 芯片版本号芯片版

13、本号3130PID43处理器处理器ID号。号。ASTATx运算状态运算状态寄存器表寄存器表 Bit(s)NameDefinition0AZ1ALU操作结果为操作结果为0;0ALU操作结果为非操作结果为非0或者浮点下溢或者浮点下溢1AV1ALU操作结果溢出;操作结果溢出;0ALU操作结果不溢出操作结果不溢出2AN1ALU最后一次操作结果为负数;最后一次操作结果为负数;0ALU最后一次操作结果为正数最后一次操作结果为正数3AC1ALU最后一次定点操作结果有进位;最后一次定点操作结果有进位;0ALU最后一次定点操作结果无进最后一次定点操作结果无进位位4AS1ALU的的ABS或者或者MANT操作操作输

14、入数为负;操作操作输入数为负;0ALU操作输入为正数操作输入为正数5AI1ALU浮点操作无效;浮点操作无效;0ALU浮点操作有效浮点操作有效6MN1乘法器操作结果负数;乘法器操作结果负数;0乘法器操作结果为正数乘法器操作结果为正数7MV1乘法器操作结果溢出;乘法器操作结果溢出;0乘法器操作结果不溢出乘法器操作结果不溢出8MU1乘法器浮点操作结果下溢出;乘法器浮点操作结果下溢出;0乘法器浮点操作结果未下溢出乘法器浮点操作结果未下溢出ASTATxASTATx运算状态寄存器表续运算状态寄存器表续 9MI1乘法器浮点操作数无效;乘法器浮点操作数无效;0乘法器浮点操作数有效乘法器浮点操作数有效10AF1

15、ALU操作数是浮点数;操作数是浮点数;0ALU操作数是定点数操作数是定点数11SV1移位器操作结果溢出;移位器操作结果溢出;0移位器操作结果不溢出移位器操作结果不溢出12SZ1移位器操作结果为移位器操作结果为0;0移位器操作结果不为移位器操作结果不为013SS1移位器操作输入数为负数;移位器操作输入数为负数;0移位器操作输入数为正数移位器操作输入数为正数17-14 保留保留18BTF系统寄存器位测试标志系统寄存器位测试标志23-19 保留保留3124C A CC比较累加移位寄存器。位比较累加移位寄存器。位31为为ALU最后一次输入的两个操作数比较的结果。最后一次输入的两个操作数比较的结果。1X

16、输入较大;输入较大;0Y输入较大。其它输入较大。其它7位构成一个右移寄存器,每位存储一位构成一个右移寄存器,每位存储一个前面比较的结果,伴随着每一次新的比较,个前面比较的结果,伴随着每一次新的比较,DSP右移右移CACC中的值,总是中的值,总是把最新的值放在把最新的值放在31位,最旧的值放在位,最旧的值放在24位位3)程序控制寄存器(如下页图)程序控制寄存器(如下页图) ADSP程序控制寄存器引导指令的执行,主要实现以下操作:1. 指令流水指令流水2. 程序和循环堆栈程序和循环堆栈3. 定时器操作定时器操作4. 中断锁存与屏蔽中断锁存与屏蔽 程序控制寄存器表寄存器名说 明初始值PC程序计数器未

17、定义PCSTK程序计数堆栈寄存器(保存PC堆栈栈顶地址)未定义PCSTKP程序计数器堆栈指针寄存器(存放PC堆栈已用数,其值为031,PC空0,PC满31)未定义FADDR取指寄存器,存放三级流水第一步取指令地址未定义DADDR译码寄存器,存放三级流水第二步译码指令地址未定义LADDR循环地址堆栈寄存器,32位宽,6级深度,每级存放24位循环终止地址,5位终止代码,2位循环类型码未定义CURLCNTR当前循环计数寄存器,存放循环已被执行的次数未定义LCNTR定时器的计数寄存器未定义TPERIOD定时器周期计数寄存器未定义TCOUNT定时器计数寄存器未定义IRPTL中断锁存寄存器0 x00000

18、000IMASK中断屏蔽寄存器0 x00000003IMASKP中断屏蔽指针寄存器0 x00000000LIRPTL链路口中断寄存器0 x00000000FLAGSFLAG标志寄存器0 x000000004)数据地址产生器(DAG1,DAG2) 数据地址产生寄存器主要为访问数据和指令产生地址,并自动修改地址,实现连续的地址空间访问,同时也能实现环形缓冲寻址等操作,但它们不参与数值运算。 地址产生器地址产生器DAG1寄存器(寄存器(DM) 地址产生器地址产生器DAG2寄存器(寄存器(PM)I0I7I8I15M0M7M8M15B0B7B8B15L0L7L8L15(DAG1,DAG2)寄存器说明表)

19、寄存器说明表寄 存 器名说 明初始值 I0-I7DAG1索引寄存器,保存指向存储器的地址未定义M0-M7DAG1修改寄存器,为I寄存器提供地址修改量未定义B0-B7DAG1基址寄存器,为环形缓冲区操作提供起始地址未定义L0-L7DAG1长度寄存器,为环形缓冲区操作提供缓冲区长度未定义I8-I15DAG2索引寄存器,保存指向存储器的地址未定义M8-M15DAG2修改寄存器,为I寄存器提供地址修改量未定义B8-B15DAG2基址寄存器,为环形缓冲区操作提供起始地址未定义L8-L15DAG2长度寄存器,为环形缓冲区操作提供缓冲区长度未定义环形缓冲区操作MODE1寄存器的位定义表续Bit(s)Name

20、Definition13ALUSATALU饱和处理使能,1ALU定点溢出进行饱和处理;0不进行饱和处理14SSE定点短字符号扩展使能,1符号扩展到高16位;0高16位填015TRUNC截取模式选择,1靠近0截取;0截取到最近的数16RND3232位浮点数据截取方式选择,1截取到32位;0截取到40位1817CSELADSP总线控制状态,00ADSP控制总线,01,10,11ADSP不控制总线2019 保留21PEYENSIMD模式使能,1使能PEy计算单元,使能SIMD;0禁止PEy,SISD模式22BTCST9通过地址寄存器I9广播使能,1将PM总线上的数据广播到两个运算单元的相应寄存器中,

21、0禁止广播方式23BTCST1通过地址寄存器I0广播使能,1将DM总线上的数据广播到两个运算单元的相应寄存器中,0禁止广播方式24CBUFEN环形缓冲寻址使能,1使能环形缓冲寻址;0线性寻址3125 保留M为正时环形缓冲区计算方法环形缓冲区操作注意事项1地址修改只能采用后修改方式地址修改只能采用后修改方式,即可用,即可用M M寄寄存器(与存器(与I I寄存器在相同寄存器在相同DAGDAG中,但不必同中,但不必同号数,如号数,如I0I0和和M3M3),也可采用立即数),也可采用立即数; ;但不管修改值是来自但不管修改值是来自M M寄存器还是立即数,寄存器还是立即数,其修改值大小不能超出循环缓冲区

22、的长度其修改值大小不能超出循环缓冲区的长度(L L寄存器值)。寄存器值)。3. 3. 循环缓冲区的长度(循环缓冲区的长度(L L寄存器值)必须是正寄存器值)必须是正值且不能超过值且不能超过2 231311 1,如循环缓冲区长度为如循环缓冲区长度为零,则循环缓冲区操作被零,则循环缓冲区操作被DISABLEDISABLE。环形缓冲区操作注意事项环形缓冲区操作注意事项24.B寄存器被装入某个值时,同时I寄存器被装入相同的值。但I寄存器被装入某个值时,B寄存器的值不变。5.M寄存器既可以是正值,也可以是负值。 注:在上个例子中意味着 B00 x55000, M10 x4M寄存器可以是负值 初始时I寄存

23、器中的值等于B寄存器的值; 在第一次环形缓冲区访问时,I寄存器的值更新为B+L; 然后开始递减访问缓冲区。5. I/O处理器寄存器处理器寄存器 I/O处理器寄存器组列表I/O处理器寄存器组列表续 I/O处理器寄存器分为以下几组: 系统控制寄存器组; DMA缓冲寄存器组; 链路和串行口寄存器组; lExternal port DMA ;lLink port DMA ;lSerial port DMA ;I/O处理器寄存器访问方法处理器寄存器访问方法 除DMA操作外,ADSP结构不支持在I/O寄存器与内部存储器地址单元间传递数据,要读写I/O处理器,必须要用处理器核寄存器作为中介。例如要向WAIT

24、寄存器赋值情况如下: USTAT10 x08421; DM(WAIT)USTAT1;下面我们就一些重要的IO寄存器进行详细的讲解SYSCON-系统控制寄存器位定义表系统控制寄存器位定义表续1系统控制寄存器位定义表续2系统控制寄存器位定义表续33123位保留未用SYSCON寄存器的位定义寄存器的位定义 1. SRST (位位0):软件复位,通过软件将该位置1,DSP响应不可屏蔽中断RSTI,并将该位清0。2. BSO(位位1):引导方式选择重载,1DSP使用BMS有效,从片外存储器空间加载程序。 3IIVT(位(位3):):内部中断向量表,对于ADSP21160来说1不管加载任何模式配置,强制将

25、中断向量表放到0 x40000地址(基地址);0根据加载模式选择放置。4. IMDW0(4. IMDW0(位位9)9):片内存储器块0数据宽度设置,140位,032位。 SYSCON寄存器的位定义续寄存器的位定义续 IMDW1(位(位10): 片内存储器块1数据宽度设置,140位,032位。MSIZE(位位1512):外部存储器块大小设置 MSIZElog2(块大小)13。 SYSCONSYSCON寄存器的位定义续寄存器的位定义续 寄存器部分课后测试1. ADSP21160寄存器分为哪几类? 2. ADSP程序控制寄存器引导指令的执行主要实现哪些操作?3. 根据下列条件,用DSP汇编语言编写出

26、下列环形缓冲区操作程序,并画出完成一次完整读取该环形缓冲区循环的示意图。 LENGTH=11; BASE ADDRESS=0 x6500; MODIFIER=4;ADSP21160ADSP21160中断逻辑与定时器中断逻辑与定时器 1.中断逻辑 ADSP21160ADSP21160内部提供了丰富的中断资源。内部提供了丰富的中断资源。 a.a.在外部中断方面:在外部中断方面: 复位中断; 仿真器中断; 三个外部输入中断。 b.在内部中断方面有: 非法输入中断; 运算错误中断; 链路服务请求中断; 定时器中断; 堆栈溢出中断; 多处理器中断; 环形缓冲区溢出中断; DMA控制中断; 用户自定义软件

27、中断等。ADSP SHARC系列处理器的三个外部中断系列处理器的三个外部中断触发触发方式有两种方式有两种: 电平触发方式电平触发方式和沿触发方式。沿触发方式。 触发方式的选择通过设置触发方式的选择通过设置MODE2寄存器来完成,寄存器来完成,其定义方式如下表:其定义方式如下表: BitNameDefine0IRQ0E1-下降沿下降沿 触发;触发;0低电平触发低电平触发1IRQ1E1-下降沿下降沿 触发;触发;0低电平触发低电平触发2IRQ2E1-下降沿下降沿 触发;触发;0低电平触发低电平触发使用内外部中断时应注意的几点: 1.1.对上述内、外部中断,除了对上述内、外部中断,除了仿真器中断仿真

28、器中断和和复位中断复位中断不可不可以屏蔽外,其余中断都是可以屏蔽的。以屏蔽外,其余中断都是可以屏蔽的。 2.2.除了不可屏蔽中断和引导加载中断除了不可屏蔽中断和引导加载中断EP0IEP0I或者或者LP4ILP4I外,所外,所有中断在系统复位时都默认被屏蔽。有中断在系统复位时都默认被屏蔽。3.3.当我们要使用某种中断时,必须具备以下条件:当我们要使用某种中断时,必须具备以下条件:4.4.通常,当一个中断正在执行服务期间,通常,当一个中断正在执行服务期间,ADSPADSP系列处理器系列处理器在在每个周期每个周期都会对都会对该中断锁存寄存器的相应中断标志位该中断锁存寄存器的相应中断标志位进行进行清零

29、清零,以,以禁止禁止在在执行该中断服务执行该中断服务的过程中的过程中再次允许再次允许该中断锁存该中断锁存。 下面介绍下面介绍IRPTL、IMASK和和IMASKP使用某种中断时,必须具备的条件:使用某种中断时,必须具备的条件: 1)1)将系统寄存器将系统寄存器MODE1MODE1中全局中断使能位中全局中断使能位 IRPTENIRPTEN置置1 1;2)2)将将IMASKIMASK寄存器中相应的中断屏蔽位置寄存器中相应的中断屏蔽位置1 1;3)3)中断请求到达后,中断锁存寄存器中断请求到达后,中断锁存寄存器IRPTLIRPTL的相应位置的相应位置1,1,并且中断所存寄存器中没有优先级更高的中断标

30、并且中断所存寄存器中没有优先级更高的中断标志位被置志位被置1 1; 满足上述三个条件的中断发生时DSP将执行以下操作(1)输出相应的中断向量地址;(2)将当前的程序计数器PC值压入PC堆栈;(3)如果中断源是外部中断、内部定时器中断或者多 处理器向量中断,程序控制器还要将ASTAT和 MODE1寄存器中的当前值压入状态堆栈中。(4)设置中断锁存寄存器IRPTL的相应标志位;(5)改变中断屏蔽指针寄存器IMASKP的相应位,反 映当前的中断嵌套状态。(6)DSP运行中断向量地址指示的中断服务程序, 完成中断处理任务,最后执行RTI指令。 Instr1; /中断程序入口JUMP(PC,3)(DB,

31、CI);/清除中断状态, /跳转到PC3地址单 /元(instr5)顺序执行Inst r3; /在延迟分支里执行Instr4; /在延迟分支里执行Instr5;RTS(LR); 采用RTS(LR)指令返回到程序举例 RTI指令将完成的操作 (1)返回到PC堆栈顶部的地址;(2)弹出PC堆栈栈顶中的值;(3)如果ASTAT和MODE1寄存器压栈了,则弹 出ASTAT寄存器和MODE1寄存器中的值;(4)清除中断锁存寄存器中的相应位,并将中断屏蔽指针寄存器的相应位清零; 返回1IRPTL、IMASK和IMASKP IRPTLIRPTL中断锁存寄存器中断锁存寄存器指示中断锁存状态,在上电复位后,其初

32、始值为0 x0000 0000。 IMASKIMASK中断屏蔽寄存器中断屏蔽寄存器除仿真器中断和复位中断不可以屏蔽外,其余中断都是可以屏蔽的,在上电复位后,其初始值为0 x0000 0003,相应位定义同IRPTL。 IMASKPIMASKP中断屏蔽指针寄存器中断屏蔽指针寄存器反映当前中断嵌套情况,在上电复位后,其初始值为0 x0000 0000,相应位定义同IRPTL。 IRPTL、IMASK和IMASKP寄存器的未位义如下图:IRPTL、IMASK和IMASKPIRPTL位定义表续IRPTL位定义表续IRPTL位定义表续IRPTL位定义表续2.中断嵌套 ADSP处理器支持多级中断嵌套; 中

33、断嵌套由MODE1,IRPTL,IMASKP寄存器的相关位控制; 设置MODE1寄存器的NESTM嵌套模式位为1,就可以使能中断嵌套; 反之NESTM位清零,禁止中断嵌套。2. 2. 中断嵌套中断嵌套( (续续) ) 注意注意NESTMNESTM1 1时,允许在中断服务过程时,允许在中断服务过程中处理高优先级的中断,但对同级或者中处理高优先级的中断,但对同级或者低优先级的中断请求不予处理。低优先级的中断请求不予处理。3. 多处理器向量中断 在多处理器系统中,ADSPSHARC系列处理器支持多处理器向量中断,通过向量中断寄存器(VIRPT)的设置,允许外部主机或者其它主机向VIRPT寄存器中写入

34、一个新的向量地址。 注:多处理器向量中断不作为本课程讲解的重点,大家了解就可以了。 4. 4. 定时器定时器 在ADSP21160内部只有一个可编程定时器,用来实现以下功能:1. 产生定时事件2. 实现计数事件3. 产生标准脉冲4. 中断处理器5. 测量输入脉冲 定时器的使用和设置方法 ADSP21160通过对内部寄存器: TCOUNT(计数寄存器) TPERIOD(周期寄存器) 两个寄存器进行编程,从而在TIMEXP引脚 产生定时脉冲输出; 同时产生两个定时中断: TMZHI(高优)和TMZLI(低优)。定时器的使用和设置方法(续) 定时器的启动和禁止:定时器的启动和禁止: 是通过设置是通过

35、设置MODE2MODE2的的TIMENTIMEN位来完成;位来完成; 如果该位被如果该位被置置1 1, 启动启动定时器;定时器; 如果该位被如果该位被清零清零,禁止禁止定时器。定时器。注意:在启动定时器之前,应该先将注意:在启动定时器之前,应该先将TCOUNTTCOUNT和和TPERIODTPERIOD寄存器设置好。例如:寄存器设置好。例如: TPERIODN1; /间隔周期数TCOUNTPERIOD; /初始化TCOUNTBIT SET IMASK 0 x10; /允许定时中断BIT SET MODE1 0 x1000; /全局中断使能BIT SET MODE2 0 x20; /定时器使能

36、INTW:IDEL; /程序在本条语句和下条语句JUMP INTW; /之间循环等待中断产生ADSP21160中断向量表 寄存器 位 中断向量地址 中断名称 功 能 IRPTTL 0 Ox00EMUl 仿真器中断(只读,不可屏蔽,最高优先级 IRPTL l Ox04 RSTI 复位(只读,不可屏蔽) IRPTL 2 0 x08 IlCDI 检测到非法输入 IRPTL 3 0 x0C SOVFI 状态,循环堆栈溢出或PC堆栈满 IRPTL4 0 x10TMZHI定时器=O(高优先级) IRPTL 5 0 x14 VIRPTL 多处理器中断向量 IRPTL 6 0 x18 IRQ2I 外部中断IR

37、Q2有效 IRPTL7 0 xlCIRQII外部中断IRQ1有效ADSP21160中断向量表续 IRPTL 8 0 x20 IRQOI 外部中断IRQ0有效 IRPTL 9 0 x24 保留 IRPTLlO 0 x28 SPROI DMA通道0:串行口0接收 IRPTL ll Ox2C SPRlI DMA通道1:串行口1接收 IRPTL 12 0 x30 SPTOI DMA通道2:串行口0发送 IRPTL 13 0 x34 SPTll DMA通道3:串行口1发送 LIRPTL 0 Ox38 LPOI DMA通道4:LBUF0 LIRPTL 1 0 x3C LPll DMA通道5:LBUFl L

38、IRPTL 2 0 x40 LP2I DMA通道6:LBUF2 LIRPTL 3 0 x44 LP3I DMA通道7:LBUF3 LIRPTL 4 0 x48 LP41 DMA通道8:LBUF4 LIRPTL 5 0 x4C LP5I DMA通道9:LBUF5 IRPTL 15 0 x50 EPOI DMA通道10:外部口BUFF0 IRPTL 16 0 x54 EPlI DMA通道11:部口BUFFl IRPTL 17 0 x58 EP2I DMA通道12:外部口BUFF2 ADSP21160中断向量表续中断向量表续 IRPTL 18 0 x5C EP3I DMA通道13:外部口BUFF3

39、IRPTL 19 0 x60 LSRQ 链路口服务请求 IRPTL 20 0 x64 CB7I 环形缓冲7溢出 IRPTL 2l 0 x68 CBl5I 环形缓冲15溢出 IRPTL 22 0 x6C TMZLI 定时器=0(低优先级) IRPTL 23 0 x70 FIXI 定点溢出 IRPTL 24 0 x74 FLTOI 浮点上溢出 IRPTL 25 0 x78 FLTUI 浮点下溢出 IRPTL 26 0 x7C FLTII 浮点无效 IRPTL 27 0 x80 SFT0I 用户自定义软件中断0 IRPTL 28 0 x84 SFTlI 用户自定义软件中断1 IRPTL 29 0 x

40、88 SFT2I 用户自定义软件中断2 IRPTL 30 0 x8C SFT3I 用户自定义软件中断3 IRPTL 3l 0 x90 保留(最低优先级) 中断向量编程示例中断向量编程示例 .section/pm seg_rth;_lib_ EMUI: NOP;NOP;NOP;NOP; /对于ADSP2106该位保留_lib_RSTI: NOP; jump start_ID2; NOP; NOP;_lib_ IICD: NOP;NOP;NOP;NOP; /对于ADSP2106该位保留_lib_SOVFI: RTI;RTI;RTI;RTI;_lib_TMZHI: NOP; JUMP timer_i

41、nt; NOP;NOP;_lib_VIRPTI: RTI;RTI;RTI;RTI;_lib_IRQ2I: RTI;RTI;RTI;RTI;_lib_IRQ1I: RTI;RTI;RTI;RTI;_lib_IRQ0I: RTI;RTI;RTI;RTI; NOP;NOP;NOP;NOP; /该位保留_lib_SPR0I: RTI;RTI;RTI;RTI;_lib_SPR1I: RTI;RTI;RTI;RTI;中断向量编程示例续中断向量编程示例续_lib_SPT0I:NOP;JUMP STx0_int;NOP;NOP;_lib_SPT1I:NOP;JUMP STx1_int;NOP;NOP;_lib

42、_LP2I:RTI;RTI;RTI;RTI;_lib_LP3I: RTI;RTI;RTI;RTI;_lib_EP0I:RTI;RTI;RTI;RTI;_lib_EP1I: RTI;RTI;RTI;RTI;_lib_EP2I: RTI;RTI;RTI;RTI;_lib_EP3I: RTI;RTI;RTI;RTI;_lib_LSRQ: RTI;RTI;RTI;RTI;_lib_CB7I: RTI;RTI;RTI;RTI;_lib_CB15I:RTI;RTI;RTI;RTI;_lib_TMZLI: RTI;RTI;RTI;RTI;.ENDSEG;中断向量表在存储区中的存放位置 中断向量表可以放在DS

43、P内部存储区,也可以放在DSP外部存储区,随DSP芯片型号的不同而不同; ADSP21160M内部存储区中断向量表的基地址为0 x00040000,而外部存储区基地址为0 x00800000;DMA(Direct Memory Accessing) 利用DMA控制器,可以实现以下几种类型的数据传输以下几种类型的数据传输 ADSP21160内部结构图ADSP21160的的I/OI/O处理器结构图处理器结构图 IOP内部结构框图DMADMA传输的优先级传输的优先级 由于由于ADSP SHARC系列处理器提供了多个系列处理器提供了多个DMA通道,通道,在某一个时钟周期可能会出现多个在某一个时钟周期可

44、能会出现多个DMA通道的请求,处通道的请求,处理器则采用了优先级机制控制为理器则采用了优先级机制控制为DMA通道服务。通道服务。 上表中从上到下优先级逐渐降低,上表中从上到下优先级逐渐降低,DMA通道通道0优先级优先级最高,其中除了串行口对应的最高,其中除了串行口对应的DMA通道采用固定优先级通道采用固定优先级外,链路口和外部口既可以设置为固定优先级,也可以设外,链路口和外部口既可以设置为固定优先级,也可以设置为循环优先级。置为循环优先级。 如果设置为固定优先级,仍遵循表中通道号顺序,从如果设置为固定优先级,仍遵循表中通道号顺序,从上到下优先级逐渐降低。上到下优先级逐渐降低。 当然,此时也可以

45、通过指定另一个通道为最高优先级,当然,此时也可以通过指定另一个通道为最高优先级,重新定义外部口的重新定义外部口的固定优先级次序。固定优先级次序。 链路口和外部口的循环优先级可以通过对链路口和外部口的循环优先级可以通过对SYSCONSYSCON寄存寄存器的器的LDCPRLDCPR位位或或DCPRDCPR位位进行设置。进行设置。 DMA参数寄存器 IIx,IMx,Cx,CPx,GPx,EIx,EMx,ECx,DAx,DBx1. 内部参数寄存器: IIx,IMx,Cx,CPx,GPxIIx内部索引寄存器:存放相对于内部存储器基地址的偏移地址IMx内部修改寄存器Cx计数寄存器:16位,对传输次数减计数

46、,初始为数据块长度, 每传输一个数据,自动减1,减到零时,产生该DMA中断CPx链式指针寄存器,用于链式DMA操作GPx通用寄存器,通常也用于链式DMA操作DMA参数寄存器续2.外部参数寄存器:1) EIx,EMx,ECx 用于外部口DMA通道的32位参数寄存器,它们的功能和内部参数寄存器类似。EIx 外部索引寄存器;EMx 外部修改寄存器;ECx 外部计数寄存器; 2) DAx,DBx是两个16位的维数寄存器,用于串行口和链路口DMA通道,存放二维DMA传输的阵列地址,当然也可以用于一维DMA操作。 DMA控制寄存器1.外部口DMA控制寄存器 DMACx控制外部口各个DMA通道的操作模式,可

47、配置成5种模式。具体位定义略。 1)主机模式 2)同步主机模式 3)从机模式 4)握手模式 5)外部握手模式DMA控制寄存器 2.串行口DMA控制寄存器串行口发送和接收控制寄存器:串行口发送和接收控制寄存器: STCTLxSRCTLx(x=01) 上述两个寄存器中与DMA控制相关的位如下表DMA控制寄存器3.链路口链路口DMA控制寄存器控制寄存器LCTLx :与与DMA控制相关的位列表控制相关的位列表 DMA通道的建立外部口外部口DMADMA传输通道的建立传输通道的建立(1) 首先设置DMA参数寄存器: IIx,IMx,Cx,CPx,EIx,EMx,Ecx;(2) 定义内部存储器缓冲区: 缓冲

48、区大小、起始地址、地址增量、外部口寻址区间、地址增量等;(3) 然后设定DMA通道控制寄存器: 定义数据传输方向、数据打包模式、握手模式、并使能DMA传输; 上述设定结束后,DMA数据就自动开始从后台传输,直到数据传输完毕,产生DMA中断。DMA通道的建立续2.I/O口DMA传输通道的建立(1)首先要配置I/O口;(2)然后设定内部存储区DMA参数寄存器;(3)最后设置I/O口控制寄存器,定义数据传输方向,数据格式,并使能DMA传输。I/O数据传输过程: 接收数据当数据到达I/O口缓冲区时,I/O口自动将数据送到内部存储区; 发送数据自动从内部存储区将数据取出送到I/O口缓冲区,进行发送。链式

49、DMA传输简介 链式DMA传输:就是允许ADSP SHARC系列处理器在一次DMA传输完成后自动将DMA参数寄存器载入新值,开始一次新的DMA传输。 上述特性使得处理器在无须处理器核干预的情况下进行无限制的多重DMA传输,但每个DMA操作有不同的属性。二维DMA传输简介 二维DMA模式可以将存储区中的传输数据块当作一个数据阵列,因而对那些执行矩阵操作的DSP算法非常有用,可以大大简化程序设计,提高算法执行效率。 二维DMA模式只适用于链路口和串行口所对应的DMA通道。 二维DMA模式设置方法将链路口或串行口的控制寄存器中L2DMA位或D2DMA位置1,并使能DMA传输。串行口 在我们讲解DSP

50、串口之前,还是让我们回顾一下RS232C串行口。1.为什么RS232C串行口被如此广泛的应用?2.RS232C所采用的核心芯片是什么?3.RS232C扩展 (1)RS485 (2)RS442ADSP处理器串行口 ADSP SHARC系列处理器有两个独立的同步串行口SPORT0和SPORT1,为与外部数字或模拟器件连接提供了一种灵活、简捷的I/O接口; 每个串行口都有自己的一套控制寄存器和数据缓冲区,而且支持可编程的串行时钟和帧同步选择。同步串行通讯同步串行通讯 所谓同步串行通讯,指的就是每一个数据位的所谓同步串行通讯,指的就是每一个数据位的发送是严格和一个时钟脉冲同步,每个时钟脉发送是严格和一

51、个时钟脉冲同步,每个时钟脉冲冲(TCLKx)(TCLKx)发一位数据这就要求每一个串行发一位数据这就要求每一个串行口都有自己的发送和接收时钟引脚(口都有自己的发送和接收时钟引脚(TCLKxTCLKx和和RCLKxRCLKx),我们通过对),我们通过对TDIVxTDIVx,RDIVxRDIVx两个寄存两个寄存器的设置来配置内部串行时钟频率。器的设置来配置内部串行时钟频率。 此外我们也可以用一个帧同步信号来标识一个此外我们也可以用一个帧同步信号来标识一个字或一个字块的开始,发送和接收帧同步信号字或一个字块的开始,发送和接收帧同步信号用用TFSTFS和和RFSRFS表示,同样内部帧同步频率也是通表示

52、,同样内部帧同步频率也是通过对过对TDIVxTDIVx和和RDIVxRDIVx两个寄存器的设置来配置的。两个寄存器的设置来配置的。 返回1ADSP SHARC串行口的功能 (1)每个串行口都有独立的发送与接收通道,能够同时进行全双工收/发数据; (2)为与外设接口双向通信提供了6条或者8条简捷的硬件连接线; (3)具有双数据缓冲结构; (4)发送或者接收数据时,有集成的可选硬件压扩(A律或u律)功能;串行口串行口A A律、律、u u律压扩律压扩 所谓数据压扩就是利用对数编码、解码所谓数据压扩就是利用对数编码、解码算法对数据位进行最小化处理。算法对数据位进行最小化处理。 A A律压扩:是将律压扩

53、:是将1313位线性码压缩成位线性码压缩成8 8位。位。 u u律压扩:是将律压扩:是将1414位线性码压缩成位线性码压缩成8 8位。位。返回1ADSP SHARC串行口的功能续(5)能实现与内部处理器间在ADSP核控制下的中断触发的单字传输;(6)每个串行口都支持两种传输模式:DMA块传输和单字传输,实现串行口与内部存储器间的数据发送或接收;(7)支持多种操作模式:标准模式、IZS模式和TDM接口的多通道模式;(8)可编程实现332位数据传输,可以先传高位或者先传低位ADSP21160的串行口内部结构图串行口的引脚描述ADSP21160每个串行口共有6个引脚如下:串行口控制寄存器和数据缓冲表

54、串行口控制寄存器和数据缓冲表续串行口发送和接收控制寄存器串口模式的设置:从上面的表格可以了解到(1)串口控制寄存器是IOP寄存器;(2)对于每一个串行口都有自己一套独立的控制寄存器,可以利用处理器核寄存器对这些寄存器进行读写;注: (1)对串口寄存器写入新的值存在一个周期的延迟, (2)对于串行口的使能,要经过两个输入时钟周期,串行口才能开始发送或接收数据。串行口发送控制寄存器STCTLx位定义表在标准模式下数据格式:在标准模式下数据格式: 在多通道模式下数据格式:在多通道模式下数据格式: 串行口发送控制寄存器STCTLx位定义表续ADSP串行口设计和编程注意事项1.我们在编程时,首先是设置控

55、制寄存器,使能同步串行口传输,然后如果是发送数据,只需把数据送入TX缓冲区;如果是接收数据是从RX缓冲区取数。2.DSP的SPORT不是我们学习IBM PC硬件接口电路时所讲的UART,所以不能直接和一个RS232设备通讯。3.有两种方法可以复位SPORT串行口。一种是利用RESET引脚硬件复位法,另一种是通过对STCTLx和SRCTLx寄存器中串行口使能位SPEN位的清零,进行软件复位SPORT串行口。 串口模式的设置串口模式的设置 首先串口控制寄存器是首先串口控制寄存器是IOPIOP寄存器寄存器( (存储存储器映射寄存器器映射寄存器) ),所以不能直接和存储器,所以不能直接和存储器交换数据

56、,须处理器核寄存器作为中介,交换数据,须处理器核寄存器作为中介,对于每一个串行口都有自己一套独立的对于每一个串行口都有自己一套独立的控制寄存器,可以利用处理器核寄存器控制寄存器,可以利用处理器核寄存器对这些寄存器进行读写对这些寄存器进行读写; ; 其次需要其次需要注意的是,对这些寄存器写入注意的是,对这些寄存器写入新的值存在一个周期的延迟,对于串行新的值存在一个周期的延迟,对于串行口的使能,要经过两个输入时钟周期,口的使能,要经过两个输入时钟周期,串行口才能开始发送或接收数据。串行口才能开始发送或接收数据。 串行口的应用编程串行口的应用编程 串行口的应用编程,关键就是对发送控串行口的应用编程,

57、关键就是对发送控制寄存器(制寄存器(STCTLxSTCTLx)和接收控制寄存器)和接收控制寄存器(SRCTLxSRCTLx)的设置,上述两个寄存器的)的设置,上述两个寄存器的位除位除21212828有所不同外,基本上相对应。有所不同外,基本上相对应。当需要重新设定串行口的操作模式时,当需要重新设定串行口的操作模式时,应首先将串行口控制寄存器清零,然后应首先将串行口控制寄存器清零,然后再写入新的控制数据。再写入新的控制数据。串行口发送、接收时钟频率计算公式fRCLK 串行口接收时钟频率 ; fTCLK 串行口发送时钟频率 RCLKDIV接收分频系数;TCLKDIV发送分频系数 fCCLK 处理器

58、核时钟频率;串口帧同步频率 (1)每来一个时钟脉冲,就会传输1位数据。 (2)在每个字或者数据块发送或者接收的开始,串口要产生帧发送同步信号TFSx或者RFSx。 (3)内部产生帧同步信号可以通过配置TDIVx和RDIVx寄存器的TFSDIV,RFSDlV位来设定帧同步信号的频率。 (4)帧同步分频系数表示有多个接收发送时钟就产生一个帧同步脉冲TFS或RFS。帧同步频率计算公式fTFS 发送帧同步频率; fRFS 接收帧同步频率fTCLK 串行口发送时钟频率; fRCLK 串行口接收时钟频率TFSDIV发帧同步分频系数; TFSDIV收送帧同步分频系数 1.串口发送控制寄存器配置举例SPEN=1 串口使能DTYPE00(b)标准模式,数据采用右对齐,未用的高位填0SENDN=0 先传高位数据SLEN01111 串行数据长度选择,字宽15116位字长PACK0 不使能16位到32位数据字打包ICLK1 内部产生传输时钟CKRE1 采样数据/帧同步信号的时钟边沿选择,1上升沿有效TFSR1 每个发送字都有帧同步信号ITFS1 内部产生帧同步 1.串口发送控制寄存器配置举例续根据上述要求编写如下语句:根据上述要求编写如下语句: r00 x000274f1;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论