DSP汇编指令学习笔记

DSP汇编指令学习笔记
DSP汇编指令学习笔记

Knowledge

问题

谁在DSP的汇编语言中加入了NOP指令?

NOP指令加入的条件是什么?

About DSP

1.DSP是实时数字信号处理的核心和标志。

2.DSP分为专用和通用两种类型。专用DSP一般采用定点数据结构(一般不支持小数),

数据结构简单,处理速度快;通用DSP灵活性好,但是处理速度有所降低。

3.DSP采用取指、译码、执行三个阶段的流水线(Pipeline)技术,缩短了执行时间,提高了

运行速率。DSP具有8个Functional unit,如果并行处理的话,以600MHz的时钟计算,如果执行的指令是single cycle指令,则可以4800MIPS(指令每秒)。

4.DSP的8个functional Unit,具有独特的功能,对滤波、矩阵运算、FFT(傅里叶变换)

具有

哈弗结构

把指令空间与数据空间隔离的存储方式。

这样实现是为了实现指令的连续读取,而实现pipeline流水线结构。

传统哈弗结构:两个独立的存储空间,还使用独立总线。让取指与执行存储独立,加快执行速度。

改进型哈弗结构:指令与数据的存储空间还是独立的。但是使用公共的总线(地址总线与数据总线)。这样实现的原因是因为出现了CACHE,数据的存储动作大部分被内部的CACHE 总线承接了,所以总线冲突的情况会大大减少。同时让总线的结构与控制变得简单,CACHE 存储的速度也明显快于外设存储器。

冯诺依曼结构:是指令空间与数据空间共享的存放方式。它不能实现pipeline的执行过程。

Pipeline(流水线)技术

是把指令的取指-译码和指令的执行独立开来的技术。虽然每条指令的过程还是要经过取指-译码-执行三个阶段最少3个CPU Cycle。但是多个指令同时并行先后进行,保证总体的指

令吞吐速率理想情况下可以保证在每个指令只要一个CPU CYCLE。

Pipeline技术必须要有哈弗结构支持,即必须把指令空间与数据空间隔离存放。

流水线阻断

流水线中阻断现象也十分普遍,下面就各种阻断情况下的流水线性能进行详细分析。

流水线阻断总体有两种情况:

1.资源冲突阻断:

a)如果前一指令的某Stage与后一指令某Stage在同一个Cycle执行,但是

前一指令此Stage占用了后一指此Stage的资源,则后一指令此Stage的

工作会被延迟执行。

b)被延迟执行的动作会停留在前一个Stage状态,则前一个Stage的状态就

不能进入新的指令的动作。

c)依次前推,则总有一个取指Stage的指令被阻断,那么其后一个指令也被阻

断而不能被取指。

d)所以,每产生一个Cycle的阻断,就会让CPU的执行延迟一个Cycle。即此

指令后面的所有指令都会被延迟一个Cycle被执行。

e)解决的方法是:使用Cache让存放变得更快;变量集群使用,记录减少变量

存放到memory的需要。

2.跳转阻断:

a)跳转阻断有很多情况产生,比如函数调用/返回,循环的break/continue,

if等条件判断,循环跳转,中断跳转的产生。

b)一旦某条指令要进行跳转时,它就会设置LR寄存器,阻止后续的指令进入执

行Stage,并修改PC指针,执行跳转后的目标代码。

c)解决的方法是:减少循环、条件判断、分支结构的使用。

DSP Pipeline技术

DSP具有8个独立的执行单元,所以每个CYCLE可以执行8条指令(要求其总线宽度是256bit)。

即DSP是8个pipeline并行处理的技术。所以DSP每个阶段取8个指令,然后在译码阶段把8个指令分配到8个执行单元去处理。

所以必须保证被同时取的指令之间没有相关性(即一个指令的执行不需要其他指令的结果参

与),否则会得到错误的结果。所以,DSP引入了NOP指令,如果不能实现这一的要求,则DSP的编译器,则DSP优化器会在其编译的指令后面添加NOP指令。表示此Cycle不能执行8条有效指令,只能擦入空指令。则这样就会有某些执行单元在此CYCLE空闲了。

DSP Pipeline阻断

DSP Pipleline的阻断处理相对比较复杂一些,因为它涉及到8独立执行单元的阻断。

1.资源冲突阻断:

a)如果某个Unit因为资源冲突阻断,或者因为一个指令需要多个Cycle执行。则此

Unit会被阻断。

b)当某个Unit被阻断时,其上一个阶段的指令就不能往下传递。一直阻断到此Unit

的取值动作。

c)所以当有阻断发生是,FG并不会请求8条指令,而是请求1-7条,或者不请求(8

个Unit全部阻断了)。这样没有被阻断的Unit还是能够充分运行的。

2.跳转阻断:https://www.360docs.net/doc/016898379.html,/p-908395009795.html

a)

NOP

Not dispatched instruction

It is an empty instruction in DP packet.

如果一个指令标识需要Delay N个slot,则需要在这个指令后面跟N个NOP指令(对于那些自身不带NOP的指令,比如B)(但是对于BNOP则不需要的)。

通过寄存器的定位技巧

1.查看NRP寄存器的值,则可以直接查看在哪个周期的指令异常了(NRP指令的前一周期就是crash

的指令)(使用A10/B10……可以看到此函数的参数)

2.查看B3寄存器的值,跳到此代码段查看前面一个的Jump指令。看是jump到哪个函数了,则是在此

函数中出异常了。则可以看到是谁调用的此crash的函数。(使用A4/B4……可以看到parent的参数)3.如果参数是二维指针,则此参数所在类存一般都是栈内的某个地址。(可以根据栈空间的特点知道具

体应该是哪个地址)

CPU data path & control

说明:

1.Register A也是由两片寄存器组组成的,A0:A1/ … /A30:A31的pair是分布在两个组片

中的

2.ST path是把寄存器的值写入内存的路径

3.LD path是把内存的值加载到寄存器中的路径

4.DA path是读写寄存器的路径

5.X path是跨组读写寄存器的路径

A &

B path general purpose registers

1.Each A & B path has 32 32-bit register, named A0-A31, B0-B31.

2.It supports 40bit & 64bit value. If value is larger than 32 bit, it needs

register-pair. The 32LSB stores in even-numbered register, such A0, and the 8 or 32 MSB stores in odd-numbered register, such A1.

3.General purpose registers can be used for data, address pointers,

condition registers.

8 functional units

1.8 functional units can be divided into 2 groups, G1: L1, S1, M1, D1

for A register path, and G2: L2, S2, M2, D2 for B register path. 2.Each function units has its special function, such as +/-/*/>/<. But

some operations can be deal in all units

Unit path

The C6000 CPU has 2 generous purpose register files ( A & B), 8 function units (L1/S1/D1/M1 & L2/S2/M2/D1).

The 8 function units have different path to access data or data addres s:

1.L Path:LD1/LD2: Access data path of A & B register files

a)从A/B中读取数据

2.DA1/DA2: access data address path of A & B register files

a)把数据保存到A/B中

3.ST1/ST2: write data path of A & B register files

a)把立即数或者控制寄存器保存到A/B中

4.1X/2X: cross path of A & B register files, to access opposite-side.

a)跨A/B读取数据

5.说明:

a)前面三个路径统称为T路径(LD、ST、DA)。在具体汇编指

令上,只会显示为T或者X路径,不会具体显示某一种T路

径。

b)X路径是在跨A/B寄存器使用的,用或不用情况是一定的

c)现在只有使用了X路径,或者LDW、STW指令会显示具体使

用的路径名称。

Register File Cross Paths

1.G1 units can read/write data from/into A registers. And the G2 units

can read/write data from/into B registers. So G1 units have cross path to A registers, and G2 units have cross path to B register.

2.At the same time, A registers have cross paths to opposite-B registers,

such as Ax is connect to Bx. So function units of A registers can access B register.

Normal registers

Reserved by表示谁负责保存这个寄存器中的值,如果是Parent,则是Caller;如果是Child 则是called function。

这里的Parent与child是与某此调用动作相关。如果脱离具体的某此调用,基本所有的函数都即是parent又是child。或者说,在某此函数调用时,哪些寄存器是在调用之前就要压栈保存(可能同时赋值的)——parent类的寄存器;哪些寄存器是在调用后如果使用到了才需要压栈保存的——child类寄存器。

寄存器中的值,始终是根据此次调用(即Crash时的调用)的参数状态。即Parent寄存器保

存的Crash function的Caller的参数;而child寄存器保存的是crash本函数的参数。所以可以查看A10、B10……查看异常函数的参数;查看A4/B4……查看上层函数的参数。

同一指令周期并行执行的指令,不能同时使用同一寄存器。

SP /B15 & FP/A15 & PC & DP

1.SP /B15:是栈顶指针(B15可以在gPdb查看)。启动时需要手动初始化。

2.FP/A15:是本函数的栈底指针。现在没有使用,FP始终等于SP。A15没有使用。

3.PC:是PFC(program fetch counter),是取指位置,是jump指令操作的寄存器(不能在

gPdb中查看,也没有具体意义,因为异常处理时PC也会变)

4.DP:初始化是.bss(为全局变量和静态变量保留(不包含const类全局变量))段的起始

地址。用于指示全局变量的基址。启动时需要手动初始化。

5.

SP & B15 (stack pointer)

B15就是SP的值,它们是同一个寄存器。表示栈顶指针。

SP指针必须是8字节对齐的。Unaligned SP Can Cause Application Crash。

B15 is the stack pointer (SP), which points to the next unused location on

the stack。

FP & A15 (frame pointer)

A15就是SP寄存器。

The frame pointer is used to read arguments from the stack and to handle register spilling instructions.

A4:A5 & A3 (function return value)

A4 (或者A4:A5):是函数返回值(非结构体返回值)存放的寄存器。通常其值的来源是上一函数的返回值。

A3:如果返回的是一个结构,则返回结构的支持存放在这里。

B3 & IRP & NRP (function return address)

B3:普通函数,当前调用的返回地址。之前调用的返回值已经压入栈中了。

IRP:可掩中断调用返回地址。

NRP:不可掩中断调用返回地址。

B3:

836178A0 AaSysComMsgRelay:

836178A0 2246 MV.L1 A4,A1//T1

836178A2 0247 || MV.L2 B4,B0

836178A4 01BC94F6 || STW.D2T2 B3,*SP--[4]

836178A8 9014A121 [!A1] BNOP.S1 C$L37 (PC+40 = 0x836178c8),5//T2

836178AC 80040264 || [ A1] LDW.D1T1 *+A1[0],A0

836178B0 D014A120 [!A0] BNOP.S1 C$L37 (PC+40 = 0x836178c8),5//T3

836178B4 1000C813 CALLP.S2 $Tramp$L$PI$$_AaSysComMsgSend (PC+1600 = 0x83617ee0),B3//T4 //跳转到AaSysComMsgSend函数(FP AaSysComMsgSend),并把T5的代码的地址保存在B3中836178B8 00002276 || STW.D1T2 B0,*+A0[1]

836178BC E0200003 .fphead n, l, W, BU, nobr, nosat, 0000001

836178C0 01BC92E6 LDW.D2T2 *++SP[4],B3//下一周期T5

836178C4 6C6E NOP 4

PFC & retPC & PCE1

1. PFC is the program fetch counter

2. retPC represents the address of the first instruction of the execute packet in the DC

stage of the pipeline

3. PCE1 (program counter) represents the address of the first instruction in the fetch

packet in the E1 stage of the pipeline..

Control register file

Table 2-6. Control Registers

Acronym Register Name Section

AMR Addressing mode register Section 2.8.3

CSR Control status register Section 2.8.4

GFPGFR Galois field multiply control register Section 2.8.5

ICR Interrupt clear register Section 2.8.6

IER Interrupt enable register Section 2.8.7

IFR Interrupt flag register Section 2.8.8

IRP Interrupt return pointer register Section 2.8.9

ISR Interrupt set register Section 2.8.10

ISTP Interrupt service table pointer register Section 2.8.11

NRP Nonmaskable interrupt return pointer register Section 2.8.12

PCE1 Program counter, E1 phase Section 2.8.13

Control Register File Extensions (C64x+ DSP)

DIER Debug interrupt enable register Section 2.9.1

DNUM DSP core number register Section 2.9.2

ECR Exception clear register Section 2.9.3

EFR Exception flag register Section 2.9.4

GPLYA GMPY A-side polynomial register Section 2.9.5

GPLYB GMPY B-side polynomial register Section 2.9.6

IERR Internal exception report register Section 2.9.7

ILC Inner loop count register Section 2.9.8

ITSR Interrupt task state register Section 2.9.9

NTSR NMI/Exception task state register Section 2.9.10

REP Restricted entry point address register Section 2.9.11

RILC Reload inner loop count register Section 2.9.12

SSR Saturation status register Section 2.9.13

TSCH Time-stamp counter (high 32) register Section 2.9.14

TSCL Time-stamp counter (low 32) register Section 2.9.14

TSR Task state register

这些控制寄存器,直接使用就可以了。TI会把他们定义为全局变量。比如

extern __cregister volatile unsigned int EFR;

这任何时刻,EFR表示“EFR”寄存器的值。

Exceptions

Exceptions

1.外部中断:由CPU的外围设备产生的,输入到CPU内,产生的中断叫外部中断。如果

是外部严重错误(Fatal error)将会产生NMI中断。

2.内部中断:CPU内部自己产生的,比如溢出异常、指令异常、内存访问异常、资源冲

突、等,称为内部中断。内部中断会有寄存器记录其产生的原因的。

3.Reset Interrupt: GPIO 23,强制重启中断。不可掩。

4.NMI - EXCPHNDL_EFR_NXF(non-maskable interrupt): 是CPU硬件错误

a)The NMIE bit in TSR must be set, then NMI will occur

b)Setting the global exception enable (GEE) bit in the task state register (TSR) to 1,

this interrupt will behave as an exception.

5.IXF - EXCPHNDL_EFR_IXF: 是CPU计算异常

a)比如指令异常、内存异常,资源异常、除0溢出异常等

6.EXF - EXCPHNDL_EFR_EXF: 是外设上报到CPU的异常

7.SXF - EXCPHNDL_EFR_SXF: 是软件通过SWE指令特意触发的异常,相当于error2。

8.所有的异常,在执行结束后都会继续执行(出了断电异常)。一般芯片的异常后停止运

行的现象,是APP软件自己实现的,即在底层运行一个死循环。

CPU control registers

1.PC(PCE1)是用来指示下一条要执行的指令的,即存放的是下一条要执行的指令的地址。

几乎所有的MCU都不允许MOV指令修改PC值,这是一个常识。

2.中断服务表指针寄存器ISTP(interrupt servicetable pointer)用于确定中断服务程序在中断服务表中的地址。ISTP中的字段ISTB确定IST的地址的基值,另一字段HPEINT确定特定的中断,并给出这一特定中断取指包在IST中的位置。

3.IFR(中断标志寄存器):显示出有终端请求但尚未得到服务的中断。

4.IER(中断使能寄存器):使能后禁止中断处理。

5.IRP(可屏蔽中断返回指针寄存器):包含从可屏蔽中断返回的地址,该中断返回通过指令BIRP完成。

6.NRP(不可屏蔽中断返回指针寄存器):包含从不可屏蔽中断返回的地址,该中断返回通过指令BNRP完成。

7.CSR(控制状态寄存器):控制全局使能或禁止中断。

8.AMR(寻址模式寄存器):制定是否使用线性或循环寻址,若循环寻址还指定循环地址大小。

9.EN(端结方式):1=小端终结;0=大端终结。

10.Event Encoder (事件编码器):事件寄存器ER(包括ERL和ERH)用于捕获对应于64个EDMA通道的事件。在事件编码器中只是负责提交请求,事件的优先局依赖于EDMA通道参数的设定,并且在Transfer Crossbar中才正式排定。

11.协处理器控制位

CR0中的位1~4分别标记位MP(算术存在位)、EM(模拟位)、TS(任务切换位)和ET (扩展类型位),它们控制浮点协处理器的操作。

EM位控制浮点指令的执行是用软件模拟,还是由硬件执行。EM=0时,硬件控制浮点指令传送到协处理器;EM=1时,浮点指令由软件模拟。

12.中断描述符表寄存器IDTR

IDTR长48位,高32位存段基址,低16位存段界线。由于80386只支持256个中断/异常,所以IDT表的最大长度是2K,以字节位单位的段界线为7FFH。IDTR表示IDT表的方式与GDTR表示GDT表的方式相同。

Pipeline

Pipeline Stages

All instructions require the same number of pipeline phases for fetch and decode, but require a varying number of execute phase s.

Fetch -- Decode – Execute

Knowledge points

Network materials

5stage的

F/D - Fetch (from cache) and decode four instructions

G - Group up to four instructions

R - Read register file and forward operands

E - Execute operations, read memory

W - Updates select control registers, complete writes

Fetch packet

就是一次获取的指令。即||获取的指令包。

一个指令包最少1条指令,最多8条。

Execute packet

是执行单元内部的概念。

即一条被执行的指令。

一个Fetch packet可以包含1-8个Execute packet

Fetch package steps

1.PG: generate a program address

2.PS: send a request to read program

3.PW: wait for response

4.PR: Receive a program instruction

Decode package steps(P512)

1. DP: Instruction dispatch

a) 从fetch packet中提取execute packets并送到对应的执行单元中。

2. DC: Instruction decode

a) 在执行单元中的第一个动作,解析DP送进来的execute packet。

Execute stage

Execute stage has 5 phase, E1-E5. Each phase need which

Each phase has its own special functions. Different instructions require different E phases to complete their executions.

执行阶段最多需要5个步骤。不同的指令需要的步骤也是不一样的。

从执行的步骤的角度看,DSP相关的指令,大致可以分为6类(包括NOP有7类),下图是每类指令需要的执行步骤,以及执行完这些步骤所需要的Slot (CPU Cycle)。

Delay slot:是E1步骤执行完后,此类指令后续执(或者等待)行还需要的CPU Cycle数。只有在Delay Slot之后,指令的结果才是可用的。

6类指令的具体情况是:

1.Single Cycle类:单Cycle指令类,只有数据的计算存储。这类指令只需要E1步骤,需

要一个CPU Cycle。这个指令是计算立即数,并把计算的结果保存的AB寄存器中。

2.16bit * 16bit (.M Unit执行)指令:这个指令需要2个Cycle。

3.store:是指存放到memory中。它需要3个步骤E1、E2、E3,但是只需要1个Cycle。

这是因为,在数据Access memory后,如果后面是Load动作,则直接可以从E4开始了,所以相当于Store只用了1个Cycle。

Summary

1.取值是根据PC指令,从内存中取出指令;取数是值根据寄存器记录的内存地址,从此

地址中获取数据。

2.此DSP指令读取与数据读取是走同一Pipeline中的,但是在不同的阶段完成的。指令获

取是在PG/PS/PW/PR/DP中完成的,它把指令送到执行单元。执行单元经过DC,后开始执行指令。在执行指令时,如果需要Load数据,则会在E1/.../E5中完成对数据的操作。

3.取指令的5个阶段与取数据的5个阶段的过程是类似的。如下图:

4.当数据或者指令都L1cache中(L1D、L1P中),则取值与取数都不会有额外的CPU stall

产生。

a)但是如果指令不在L1P中,则取值会在PW阶段产生大等于1个Cycle的stall。

b)但是如果指令不在L1D中,则取值会在E3阶段产生大等于1个Cycle的stall。

c)当CPU产生Stall,则会前向传递进行Stall积压指令。

5.Stall就是CPU需要额外的N周期去获取资源时,则会停止取指N周期。

6 types of instructions

Single cycle instructions

Most DSP instructions are single-cycle instructions, which means they have only one execution phase (E1).

Store Instructions

Three steps E1/E2/E3:

E1: get target address from register file, and calculate the access address of memory. E2: send this address to Memory controller. Get data from register file and send it to memory controller

E3: operating the memory. Write the data into the memory. Branch Instructions

Instructions

Units of Instruction

Conditional Operations

执行条件寄存器判断。

A0/A1/A2 B0/B1/B2 为0(Z=0)时才执行;或者不为0(Z = 1)是才执行。

Creg 3bit决定对哪个寄存器进行判断。

Operations

1.Src → dst : 32 bit data

2.Src_h:Src_l → dst_h:dst_l : 40 bit data. H is 8msb

3.src_o:Src_e → dst_o:dst_e : 64 bit data o is 32 msb

Instruction description

Description format

EXAMPLE (.unit) src, dst

.unit = .L1, .L2, .S1, .S2, .D1, .D2

src and dst indicate source and destination, respectively. The (.unit) dictates which

functional unit the instruction is mapped to (.L1, .L2, .S1, .S2, .M1, .M2, .D1, or .D2).

可见,DSP的汇编已经制定命令执行的Unit了,dispatch动作仅仅是根据指令进行分发而已。指令格式有以下特点:

1.在同一个指令中,使用不同的unit,与操作数的bit数什么的都有关系。所以从指令使

用的unit,可以看到很多关于操作数的性质。

2.指令中已经包含了指令的unit,所以dispatch动作仅仅是根据指令进行分发

3.

ABS

A BS Absolute Value With Saturation

Syntax ABS (.unit) src2, dst //for 32bit data

or

ABS (.unit) src2_h:src2_l, dst_h:dst_l //for 40bit data

unit = .L1 or .L2

Instruction Type Single-cycle Delay Slots 0

Compatibility C62x, C64x, and C64x+ CPU

Examples Example 1

ABS .L1 A1,A5

Examples Example 2

ABS .L1 A1:A0,A5:A4

x cross path for src2; 0 = do not use cross path, 1 = use cross path

op opfield; field w ithin opcode that specifies a unique instruction:指令号

p parallel execution; 0 = next instruction i s not executed in parallel, 1 = next instruction is executed in parallel

s side A or B for destination; 0 = side A, 1 = side B.

ABS2 (for 16bit)

A BS2 Absolute Value With Saturation, Signed, Packed 16-Bit

Syntax ABS2 (.unit) src2, dst

unit = .L1 or .L2

Instruction Type Single-cycle Delay Slots 0

Compatibility C64x and C64x+ CPU

Src2:是两个独立的16bit的数据。

Dst:是两个独立的16bit的数据。

ADD系列(ADD/ADDAB/ADDKPC)

ADD

A DD Add Two Signed Integers Without Saturation

Syntax ADD (.unit) src1, src2, dst

or

ADD (.L1 or .L2) src1, src2_h:src2_l, dst_h:dst_l

or

ADD (.D1 or .D2) src2, src1, dst (if the cross path form is not used)

or

ADD (.D1 or .D2) src1, src2, dst (if the cross path form is used)

or

ADD (.D1 or .D2) src2, src1, dst (if the cross path form is used with a constant) unit = .D1, .D2, .L1, .L2, .S1, .S2

Instruction Type Single-cycle Delay Slots 0

Compatibility C62x, C64x, and C64x+ CPU

Execution:

Src1 + Src2 --> dst

ADDAB

A DDA

B Add Using Byte Addressing Mode

Syntax ADDAB (.unit) src2, src1, dst (C64x and C64x+ CPU) or

ADDAB (.unit) B14/B15, ucst15, dst (C64x+ CPU)

unit = .D1 or .D2

Compatibility C62x, C64x, and C64x+ CPU

sint Signed 32-bit integer value

ucst n n-bit unsigned constant field (for example, ucst5)

Execution:

src2 + src1 → dst

ADDK

Syntax ADDK (.unit) cst, dst

DSP汇编指令学习笔记

Knowledge 问题 谁在DSP的汇编语言中加入了NOP指令? NOP指令加入的条件是什么? About DSP 1.DSP是实时数字信号处理的核心和标志。 2.DSP分为专用和通用两种类型。专用DSP一般采用定点数据结构(一般不支持小数), 数据结构简单,处理速度快;通用DSP灵活性好,但是处理速度有所降低。 3.DSP采用取指、译码、执行三个阶段的流水线(Pipeline)技术,缩短了执行时间,提高了 运行速率。DSP具有8个Functional unit,如果并行处理的话,以600MHz的时钟计算,如果执行的指令是single cycle指令,则可以4800MIPS(指令每秒)。 4.DSP的8个functional Unit,具有独特的功能,对滤波、矩阵运算、FFT(傅里叶变换) 具有 哈弗结构 把指令空间与数据空间隔离的存储方式。 这样实现是为了实现指令的连续读取,而实现pipeline流水线结构。 传统哈弗结构:两个独立的存储空间,还使用独立总线。让取指与执行存储独立,加快执行速度。 改进型哈弗结构:指令与数据的存储空间还是独立的。但是使用公共的总线(地址总线与数据总线)。这样实现的原因是因为出现了CACHE,数据的存储动作大部分被内部的CACHE 总线承接了,所以总线冲突的情况会大大减少。同时让总线的结构与控制变得简单,CACHE 存储的速度也明显快于外设存储器。 冯诺依曼结构:是指令空间与数据空间共享的存放方式。它不能实现pipeline的执行过程。 Pipeline(流水线)技术 是把指令的取指-译码和指令的执行独立开来的技术。虽然每条指令的过程还是要经过取指-译码-执行三个阶段最少3个CPU Cycle。但是多个指令同时并行先后进行,保证总体的指

DSP课程设计总结报告

课程设计总结报告课程名称DSP控制器及其应用 设计题目万年历设计 业专电子信息工程 班级 姓名 学号

指导教师 报告成绩 信息工程学院 年六月十三日二〇一四 录目 言前 (3) 设计要求第一章4.....................................................................................基本要求1.14.....................................................................................

系统的组成和工作原理第二章5............................................................. 芯片的工作原理VC5509APGE2.1DSPTMS3205.............................. 液晶显示器的工作原理2.2LCD16026..............................................主电路图及程序流程图第三章.. (7) 主电路图3.17...................................................................................... 程序总流程图3.27.............................................................................. 程序分块流程图3.38..........................................................................软件程序设计第四章9.............................................................................

DSP学习心得笔记

DSP学习心得笔记 ---------------- 白建成.baijc.icekoor 建立新工程过程中: 问题1: "GPIO_Study.c", line 61: fatal error: could not open source file "DSP280x_Device.h" 1 fatal error detected in the compilation of "GPIO_Study.c". 解决方法: 因为project →build options→compiler→preprocessor中,要包含的头文件的地址没有加进去,你可以找到头文件的地址,然后加进去。 问题2: undefined first referenced symbol in file --------- ---------------- _c_int00 D:\DSP study\test3\Debug\DSP280x_CodeStartBranch.obj FS$$MPY D:\DSP study\test3\Debug\DSP280x_CpuTimers.obj FS$$TOL D:\DSP study\test3\Debug\DSP280x_CpuTimers.obj >> error: symbol referencing errors - './Debug/test3.out' not built 或者下面的问题: undefined first referenced symbol in file --------- ---------------- _c_int00 D:\DSP study\GPIO_Study\Debug\DSP280x_CodeStartBranch.obj >> error: symbol referencing errors - './Debug/GPIO_Study.out' not built 解决办法都是下面: 这个问题是因为没有加在库文件,请在project →build options→linker→libraries 中加入rts2800.lib。 问题3: >> warning: creating .stack section with default size of 400 (hex) words. Use -stack option to change the default size. >> error: can't allocate .stack, size 00000400 (page 1) in RAMM1 (avail: 00000380) >> error: errors in input - ./Debug/GPIO_Study.out not built 解决办法:

DSP汇编指令总结

DSP汇编指令总结 一、寻址方式: 1、立即寻址: 短立即寻址(单指令字) 长立即数寻址(双指令字) 第一指令字 第二指令字 16位常数=16384=4000h 2、直接寻址 ARU 辅助寄存器更新代码,决定当前辅助寄存器是否和如何进行增或减。N规定是否改变ARP值,(N=0,不变)

4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); 4.3.1.2、减法指令(5条); 4.3.1.3、乘法指令(2条); 4.3.1.4、乘加与乘减指令(6条); 4.3.1.5、其它算数指令(3条); 4.3.1.6、移位和循环移位指令(4条); 4.3.1.7、逻辑运算指令(4条); 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条) 4.3.2.2、临时寄存器指令(5条) 4.3.2.3、乘积寄存器指令(6条) 4.3.2.4、辅助寄存器指令(5条) 4.3.2.5、状态寄存器指令(9条) 4.3.2.6、堆栈操作指令(4条) 4.3.3、存储器与I/O操作指令(8条)4.3.3.1、数据移动指令(4条) 4.3.3.2、程序存储器读写指令(2条) 4.3.3.3、I/O操作指令(2条) 4.3.4、程序控制指令(15条) 4.3.4.1、程序分支或调用指令(7条) 4.3.4.2、中断指令(3条) 4.3.4.3、返回指令(2条) 4.3.4.4、其它控制指令(3条)

4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); ▲ADD ▲ADDC(带进位加法指令) ▲ADDS(抑制符号扩展加法指令) ▲ADDT(移位次数由TREG指定的加法指令) 4.3.1.2、减法指令(5条); ★SUB(带移位的减法指令) ★SUBB(带借位的减法指令) ★SUBC(条件减法指令) ★SUBS(减法指令) ★SUBT(带移位的减法指令,TREG决定移位次数)4.3.1.3、乘法指令(2条); ★MPY(带符号乘法指令) ★MPYU(无符号乘法指令) 4.3.1.4、乘加与乘减指令(6条); ★MAC(累加前次积并乘)(字数2,周期3) ★MAC(累加前次积并乘) ★MPYA(累加-乘指令) ★MPYS(减-乘指令) ★SQRA(累加平方值指令) ★SQRS(累减并平方指令) 4.3.1.5、其它算数指令(3条); ★ABS(累加器取绝对值指令) ★NEG(累加器取补码指令) ★NORM(累加器规格化指令) 返回 4.3.1.6、移位和循环移位指令(4条); ▲ SFL(累加器内容左移指令) ▲ SFR(累加器内容右移指令) ▲ROL(累加器内容循环左移指令) ▲ROR(累加器内容循环右移指令) 返回 4.3.1.7、逻辑运算指令(4条); ▲ AND(逻辑与指令) ▲ OR(逻辑或指令) ▲ XOR(逻辑异或指令) ▲ CMPL(累加器取反指令) 返回 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条)

dsp课程设计实验报告

DSP 课程设计实验 一、语音信号的频谱分析: 要求首先画出语音信号的时域波形,然后对语音信号进行频谱分析。在MATLAB 中,可以利用函数fft 对信号进行快速傅立叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。 其程序为: >> [y,fs,bits]=wavread('I:\',[1024 5120]); >> sound(y,fs,bits); >> Y=fft(y,4096); >> subplot(221);plot(y);title('原始信号波形'); | >> subplot(212);plot(abs(Y));title('原始信号频谱'); 程序运行结果为: 二、设计数字滤波器和画出频率响应: 根据语音信号的特点给出有关滤波器的性能指标: 低通滤波器性能指标,p f =1000Hz ,c f =1200Hz ,s A =100dB ,p A =1dB ; 高通滤波器性能指标,c f =4800Hz ,p f =5000Hz ,s A =100dB ,p A =1dB ; 带通滤波器性能指标,1p f =1200Hz ,2p f =3000Hz ,1c f =1000Hz ,2c f =3200Hz ,s A =100dB , p A =1dB ;

】 要求学生首先用窗函数法设计上面要求的三种滤波器,在MATLAB中,可以利用函数firl 设计FIR滤波器;然后再用双线性变换法设计上面要求的三种滤波器,在MATLAB中,可以利用函数butte、cheby1和ellip设计IIR滤波器;最后,利用MATLAB中的函数freqz画出各种滤波器的频率响应,这里以低通滤波器为例来说明设计过程。 低通: 用窗函数法设计的低通滤波器的程序如下: >> fp=1000;fc=1200;As=100;Ap=1;fs=22050; >> wc=2*fc/fs;wp=2*fp/fs; >> N=ceil(/*(wc-wp)/2))+1; >> beta=*; >> Win=Kaiser(N+1,beta); 、 >>b=firl(N,wc,Win); >>freqz(b,1,512,fs); 程序运行结果: 这里选用凯泽窗设计,滤波器的幅度和相位响应满足设计指标,但滤波器长度(N=708)太长,实现起来很困难,主要原因是滤波器指标太苛刻,因此,一般不用窗函数法设计这种类型的滤波器。 用双线性变换法设计的低通滤波器的程序如下: >> fp=1000;fc=1200;As=100;Ap=1;fs=22050; >> wc=2*fc/fs;wp=2*fp/fs; 》 >> [n,wn]=ellipord(wp,wc,Ap,As); >> [b,a]=ellip(n,Ap,As,wn); >> freqz(b,a,512,fs); ^

DSP课程设计报告

共享知识分享快乐 盛年不重来,一日难再晨。及时宜自勉,岁月不待人。 数据采集处理和控制系统设计 一课程设计要求 1.基本DSP硬件系统设计要求 ①基本DSP硬件系统以TMS320C54x系列为核心处理器,包括最小系统、存储器扩展、显示器、键盘、AD、DA等电路模块; ②硬件设计画出主要芯片及电路模块之间的连接即可,重点考查电路模块方案设计与系统地址分配; ③设计方案以电路示意图为主,辅以必要的文字说明。 2.基本软件设计要求 ①看懂所给例程,画出例程输出波形示意图; ②修改例程程序,使之输出其它波形,如方波、三角波、锯齿波等均可; ③设计方案以程序实现为主,辅以必要的文字说明。 3.课程设计报告要求 ①硬件系统设计:设计思路、设计系统功能、主要芯片选型及使用方法、设计方案说明、电路示意图 ②软件系统设计:示例程序功能解读及输出波形示意图、设计软件功能、设计思路、实现源码(带程序注释) ③报告总结 二系统分析 利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。在DSP 中采集信号,并且对信号进行频谱分析,滤波等。通过键盘或者串口命令选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD 上显示。主要功能如下: (1)对外部输入的模拟信号采集到DSP 内存,会用CCS 软件显示采集的数据波形。 (2)对采集的数据进行如下算法分析: ①频谱分析:使用fft 算法计算信号的频率。 ②对信号进行IIR 滤波或FIR 滤波,并且计算滤波前后信号的频率。 ③外部键盘或者从计算机来的串口命令选择算法功能,并且将结果在 LCD 上显示。 绘制出DSP系统的功能框图、使用AD(Altium Designer)绘制出系统的原理图和PCB 版图。 在 DSP 中采集信号,用CCS 软件显示采集的数据波形,以及对采集的数据进行算法分析。 三硬件设计 3.1 硬件总体结构

DSP-AD学习心得

DSP-AD模块学习的心得 1.AD采样的高级教程 经过这几天的忙碌,我感觉我对2812的AD模块又有了一些新的理解,感觉AD的框架已经被我架出,现在来说明这几天对其中的理解。 1.1.AD的结构 首先还是要接受一下AD的基本结构吧!把几个容易混淆哦概念重新的定位,让大家看看我自己的理解, ①双排序和级联工作模式 ②顺序采样和同步采样 ③启停/连续工作模式 这三个概念是我自己学习的时候容易混淆或是不知道如何才能很好运用的一个门槛 下面以一个图形来表示他们之间的关系 所以2812AD总共有8种工作方式可以实现,在实际运用中可以根据自己的需要选择合适的工作方式。 1.2.AD模块时钟问题的提出 ①高速时钟 ②ADCLK-AD模块时钟 ③事件管理器时钟(如果要用到EVA/B来触发AD启动的时候)

以上就是整个和系统、AD模块相关的所有时钟的信息。当然里面涉及很多寄存器,各个寄存器的设置可以查相关的资料得出自己想要的合适的时钟和相应的采样保持脉冲的宽度。 1.3几个基本概念 接下来解释几个常混的概念,但是都是本人个人的理解不一定准确。 ①AD采样频率 ②AD启动频率 ③AD的采样保持宽度 ④AD的转换时间 以及这些跟ADCclk之间的联系? 首先来说明一下AD采样频率,我个人认为AD采样频率就是1S中采样多少个点,那么根据实际运用AD模块的经验,你自己启动几次AD模块,它就采样几次,意味着其实AD的采样频率就是AD的启动频率,如果你用事件管理器来触发的话,那么触发频率也同样是AD的采样频率,也就是你所用的通用定时器的定时时间。其次,AD的采样保持时间,这个是一定AD启动就马上开始采样,由于采样这个过程就是给电容充电的过程,那么就是意味着要需要一段的时间电容才可以电荷把电荷储存起来,采样保持时间就是起到这个作用的,但是和AD的启动频率有什么关系呢?个人认为AD的采样频率就是相邻两个采样点之间的时间间隔应该要大于采样保持器保持的时间,这样才可以保证在下一次采样触发到来之前把信号可靠的保持下来。最后讲到,AD的转换时间,这个就是采样保持后,要将保持的模拟量转换成数字量,就要通过内部的转换器,转换器的时间跟ADCclk有关。因为大家都知道AD转换器转换需要给他提供时钟,那么时钟频率越高,转换的速度越快,这样转换时间就越小。 这些关系希望大家可以理解清楚,不过以上都是本人自己的理解,希望可以帮我指出错误的地方。 ⑤合理的安排计算这些频率和时间是AD采样的关键,比如一个正弦信号如果您要求他要在一个正弦波的一个周期内采样24个点,那么首先要确定AD

dsp课程设计实验报告总结

DSP课程设计总结(2013-2014学年第2学期) 题目: 专业班级:电子1103 学生姓名:万蒙 学号:11052304 指导教师: 设计成绩: 2014 年6 月

目录 一设计目的----------------------------------------------------------------------3 二系统分析----------------------------------------------------------------------3 三硬件设计 3.1 硬件总体结构-----------------------------------------------------------3 3.2 DSP模块设计-----------------------------------------------------------4 3.3 电源模块设计----------------------------------------------------------4 3.4 时钟模块设计----------------------------------------------------------5 3.5 存储器模块设计--------------------------------------------------------6 3.6 复位模块设计----------------------------------------------------------6 3.7 JTAG模块设计--------------------------------------------------------7 四软件设计 4.1 软件总体流程-----------------------------------------------------7 4.2 核心模块及实现代码---------------------------------------8 五课程设计总结-----------------------------------------------------14

dsp心得体会

dsp心得体会 篇一:dsp实验报告心得体会 TMS320F2812x DSP原理及应用技术实验心得体会 1. 设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是 软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。 2. 在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上的型 号去添加。 3. 不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。设置好的配置中 只能有一项。 4. CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的 DSP环境,可以调试、运行程序。但是一般无法构造DSP 中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。 5. 这次实验采用软件仿真,不需要打开电源箱的电源。 6. 在软件仿真工作时,无需连接板卡和仿真器等硬件。 7. 执行write_buffer一行时。如果按F10执行程序,则程序在mian主函数中运行,

如果按F11,则程序进入write_buffe函数内部的程序运行。 8. 把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变 量,就可以看到结构体变量中的每个元素了。 9. 在实验时,显示图形出现问题,不能显示,后来在Graph Title 把Input的大写 改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。 10. 在修改了实验2-1的程序后,要重新编译、连接执行程序,并且必须对.OUT 文件进行重新加载,因为此时.OUT文件已经改变了。如果不重新加载,那么修改执行程序后,其结果将不会改变。 11. 再观察结果时,可将data和data1的窗口同时打开,这样可以便于比较,观察 结果。 12. 通过这次实验,对TMS320F2812x DSP软件仿真及调试有了初步的了解与认识,因为做 实验的时候都是按照实验指导书按部就班的,与真正的理解和掌握还是有些距离的。但是这也为我们日后运用这些知识打下了基础,我觉得实验中遇到的问题,不要急于问老师或者同学,先自己想办法分析原因,想办法解决,这样对

DSP语音信号处理课程设计(精)

DSP语音信号处理课程设计报告书 语音信号处理GUI工具箱设计 指导老师:专业:电子信息工程 班级: 姓名:学号: 设计时间: 2011年10月12日至 地点: 摘要 语音信号处理是研究数字信号处理技术和语音信号进行处理的一门学科,是一门新型的学科,是在多门学科基础上发展起来的综合性技术,它涉及到数字信号处理、模式识别、语言学。语音信号处理是研究用数字信号处理技术对语音信号处理的一门学科。处理的目的是要得到一些语音参数以便高效的传输或存储;或者是通过处理的某种运算以达到某种用途的要求。语音信号处理又是一门边缘学科。如上所诉,它是“语言语音学”与“数字信号处理”两个学科相结合的产物。 语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展。在数字音频技术和多媒体技术迅速发展的今天,传统的磁带语音录放系统因体积大、使用不便、放音不清晰而受到了巨大挑战。本次课程设计提出的体积小巧,功耗低的数字化语音存储与回放系统,可以有效的解决传统的语音录放系统在电子与信息处理的使用中受到的限制。 本文提出了语音信号处理课程建设的实验环节中的一些考虑,作为专业课程的学习,实验内容不能仅仅停留在验证性实验上,还应增加实验延伸的设计要求,是学生加深对理论分析认识的同时,强调培养学生的实际动手能力和知识综合运用能力。从而提高语音信号的教学和实验的质量。实验内容采用MATLAB编程实现,不仅易于语音信号处理的实现,更易引导学生完成实验延伸的设计。 目录 第一章绪论 (1) 1.1课程设计的目的及意义 (1) 1.2设计要求 (1) 1.3 研究内容 (1) 第二章语音信号处理理论基础 (3) 第三章系统方案论证 (4) 2.1 设计方案 (4) 2.2 GUI界面功能介绍 (4) 2.3 GUI界面的具体操作 (5)

DSP 汇编指令缩写

ABS Absolute value of Accumulator ADD add to accumulator ADDC add to accumulator with carry ADDT add to accumulator with shift specified by TREG AND and with accumulator CMPL complement accumulator LACC load accumulator with shift LACL load low accumulator and clear high accumulator LACT load accumulator with shift specified by TREG NEG negate accumulator NORM normalize contents of accumulator OR or with accumulator ROL/ROR rotate accumulator left/right SACH/SACL store high/low accumulator with shift SFL/SFR shift accumulator left/right SUB subtract from accumulator SBUC conditional subtract SUBS subtract from accumulator with sign extension suppressed SUBT subtract from accumulator with shift specified by TREG XOR exclusive or with accumulator ZALR zero low accumulator and load high accumulator with rounding ADRK add short limmediate value to AR BANZ branch on AR not zero CMPR compare AR with AR0 LAR load AR MAR modify AR STR store AR SBRK subtract short limmediate APAC add PREG to accumulator LPH load PREG LT load TREG LTA load TREG and ACC previous product LTD load TREG ACC previous product and move date LTS load TREG and subtract previous product MAC multiply and accumulate MACD multiply and accumulate wit data move MPY multiply MPY A multiply and accumulate previous product MPYS multiply and subtract previous product MPYS multiply unsign PAC load accumulator with PREG SPAC subtract PREG from accumulator SPH/SPL store high/low PREG SPM set PREG output shift mode

课程设计的总结报告

课程设计的总结报告 ----WORD文档,下载后可编辑修改---- 下面是小编收集整理的范本,欢迎您借鉴参考阅读和下载,侵删。您的努力学习是为了更美好的未来! 课程设计的总结报告篇一首先我们由衷的感谢老师提供给我们这样一个锻炼自己的机会,经过这四周的学习,本次课程设计即将结束,总的来说,经过这门课的学习收获还是相当大的。回顾这段时间的课程设计,至今我仍感慨万分。的确,从选材到开始制作,从理论到实践,在四周的实训日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我们都更加懂得并亲身体会到了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到很多问题,可以说是困难重重,并且在设计的过程中发现了自己的很多不足之处,发现自己对之前所学过的知识理解得不够深刻,掌握得不够牢固,有待加强。 生活就是这样,汗水预示着结果但是也见证着收获,劳动是人类生存、生活永恒不变的话题,通过实训,我才真正领略到“艰苦奋斗”这一词的真正含义。我想说,设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以。而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少欢乐在这里洒下。我想说,之前的时间确实很累,但当我们看到自己所做的劳动成果时,心中也不免产生兴奋。也许有人不喜欢这类的工作,也许有人认为编程的工作有些枯燥,但我们认为无论干什么,只要人生活的有意义就够了,而且这也是最主要的,社会需要我们,我们也可以为社会而工作。 我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神,某个人的离群都可能导致整项工作的失败。实训中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个项目失败,团结协作是我们实训成功的一项非常重要的保证。而这次实

dsp课程设计心得体会

dsp课程设计心得体会 篇一:DSP课程设计报告 JIU JIANG UNIVERSITY DSP应用课程设计报告 题目利用按键任意输入一个数值控制的转动角度院系电子工程学院 专业电子信息工程 姓名 班级1211 学号35 日期 - I - 内容提要 步进电机作为一种电脉冲—角位移的转换元件,由于具有价格低廉、易于控制、无积累误差和计算机接口方便等优点,在机械、仪表、工业控制等领域中获得了广泛的应用。通过DSP对步进电机的控制可以实现系统实时、精确、高效、安全的设计要求,从而实现了自动化生产过程。作为重要部件的DSP是否实现控制要求是应用系统能否可靠工作的关键。 许多研究机构和电机生产厂家对于用单片机和用功率器件来设计步进电机驱动系统作了大量的研究,如把MCS-51系列的8031单片机、美国Microchip公司的PIC系列的

PIC16C5X、各类PLC和VMOS管等功率器件作为控制系统都是比较成熟的。这些方面的资料和经验对于将更高速的DSP 器件用在驱动系统上都是很有帮助的。现在流行的方法是将一系列外围设备如数模转换器(A/D)、脉宽调制发生器(PWM)和数字信号处理器(DSP)内核集成在一起,就获得一个强大又非常经济的电机控制专用的的DSP。许多厂家开发出了电机专用的DSP器件和支持各种通用算法的模拟软件。不仅芯片的运算速度越来越快,且软件中集成和固化在硬件中的算法模块越来越多,使得实现各种功能和进行电机性能研究变得现实和容易,能够实现更加理想的控制要求,随着对步进电机的研究更加深入与芯片价格的降低和功能的增加以及随着半导体工艺,尤其是高密度CMOS工艺的发展和进步,芯片的价格日益下降,而性能却不断提高,软件和开发工具越来越多,越来越好,应用范围日益广泛。DSP作为一种高速处理器件在驱动系统中的应用也会更加广泛和普及,研究DSP在控制领域中的应用也有着重大现实意义。 目录 一课程设计要求 ................................................ .. (4) 二总体方案 ................................................

DSP课设论文

课程设计说明书(2011/2012学年第一学期) 课程名称:DSP控制器及其应用 题目:分频发生器 专业班级:通信工程 学生姓名: 学号: 指导教师: 设计周数:2周 设计成绩: 2012年1月5日

一、课程设计目的 通过本次的课程设计使学生增进对DSP的认识,加深对单DSP理论方面的理解, 使学生掌握DSP在实际生活中的应用。使学生了解和掌握用DSP实现分频发生器的设计方法、过程,为以后更多的设计打下良好基础,并且通过这次设计使我们对DSP应用的基本操作方法有了一定的了解,对于以后的发展打下了基础,所以本次课程设计对于学生的动手能力的提高有着很大的帮助并达到以下目的: (1)使学生增进对DSP F2812电路的感性认识,加深对理论方面的理解。 (2)使学生掌握软硬件的有关知识等。 (3)让同学们认识分频器器的工作原理和方法 (4)使学生了解和掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。 (5)通过简单课题的设计练习,可使学生了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。 二、课程设计正文 2.1系统分析 2.1.1设计任务 本次设计名为分频发生器,也可以称为键盘输入分频输出装置,要求用9个按键,组成3行3列键盘,采用扫描按键的方法控制蜂鸣器发出对应的声音从而实现按键控制蜂鸣器发出不同频率的声音。 2.1.2性能指标 硬件部分: 1、按照系统设计要求绘制(3行3列按键及分明器)电路图。 2、按照电路图统筹安排各元器件在电路板上的分布,并焊接电路板。 3、了解各引脚功能,将电路板与TMS320F2812相关引脚相连接。 软件部分: 1、搞清楚各个引脚功能,调入引脚头文件。 2、了解了各引脚控制的行列后,编写键盘扫描程序。 3、编写延时程序,实现按键去抖。 最终实现键盘输入分频输出,并由蜂鸣器发出不同频率的响声。 2.2系统整体设计 2.2.1硬件设计组成框图

DSP实验学习心得

DSP实验学习心得 论DSP发展前景

DSP 即为数字信号处理器(Digital Signal Processing),是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器(Digital Signal Processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成功应用。DSP 数字信号处理器DSP 芯片采用了数据总线和程序总线分离的 哈佛结构及改进的哈佛结构,较传统处理器的冯?诺依曼结构具有更高的指令执行速度。其处理速度比最快的CPU 快10-50 倍。在当今数字化时代背景下,DSP 已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的“旗手”。 最初的DSP 器件只是被设计成用以完成复杂数字信号处理的算法。DSP 器件紧随着数字信号理论的发展而不断发展。DSP发展最快,现在的DSP 属于第五代产品,它与第四代相比,系统集成度更高,将DSP 芯核及外围组件综合集成在单一芯片上。这种集成度极高的DSP 芯片不仅在通信、计算机领域大显身手,而且逐渐渗透到人们日常消费领域,前景十分可观。近年来,随着通信技术的飞速发展,DSP已经成为信号与信息处理领域里一门十分重要的新兴学科,它代表着当今无线系统的主流发展方向。现在,通信领域中许多产品

都与DSP 密切联系,例如,Modem、数据加密、扩频通信、可视电话等。而寻找DSP 芯片来实现算法最开始的目标是在可以接受的时间内对算法做仿真,随后是将波形存储起来,然后再加以处理。 在短短的十多年时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前, DSP 芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP 芯片的应用主要有:(1)信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。(2)通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。(3)语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。(4)图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。(5)军事--如保密通信、雷达处理、声纳处理、导航等。(6)仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。(7)自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。(8)医疗--如助听、超声设备、诊断工具、病人监护等。(9)家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字电话/电视等DSP 的发展前景DSP 的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比微控制器做得更好而且价格更便宜,许多家电用第二代DSP 来控制大功率电机就是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用DSP 系统。数码相机、IP 电话和手持电子设备的热销带来了对DSP 芯片的巨大需求。而手机、

DSP28335汇编教程

DSP28335汇编教程 当硬件执行指令时,寻找指令所指定的参与运算飞操作数的方式——寻址方式。根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。汇编指令是可执行指令,每一条指令对应一条机器码,用来控制处理器仲的执行部分进行各种操作。在本章节当中将主要以基于C28x的DSP芯片为例,为读者讲解DSP的寻址方式和汇编指令系统,其中大部分内容也可适用于其他Ti公司的DSP产品。 6.1汇编语言指令集概述 在学习C28x系列DSP的寻址方式和汇编指令指令之前,先来对一些基础的知识进行讲解一下先,在汇编程序当中开发人员会常常使用到许多的特殊符号和标志,它们都具有特殊的含义,在学习汇编之前读者们必须先理解这些符号和标志含义,在这里会对其中最常用最重要的操作数符号和寄存器经行详细说明。 在进行汇编讲解之前先来了解一下开发的核心——CPU。在TMS320C2000系列中,CPU 内核为: C20x/C24x/C240x:C2xLP: C27x/C28x:C27x、C28x 这些CPU的硬件结构有一定差别,指令集也不相同,但是,在C28x芯片中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLPCPU具有最佳兼容性。可通过状寄存器STl的位OBJMODE和位AMODE的组合,选定模式。 C28x芯片具有3种操作模式: 1.C28x模式:在该模式中,用户可以使用C28x的所有有效特性、寻址方式和指令系统, 因此,一般应使C28x芯片工作于该种模式。 2.C27x目标——兼容模式:在复位时,C28x的CPU处于C27x目标-兼容模式。在该模式 下,目标码与C27xCPU完全兼容,且它的循环—计数也与C27xCPU兼容。 3.C2xLP源——兼容模式:该模式允许用户运行C2xLP的源代码,这些源代码是用C28x 代码生成工具编译生成的。 在下面的讲解当中会牵涉到模式的转换,希望读者要搞清楚每一个模式的对应关系。 本节假设条件为芯片工作于C28x模式(OBJMODE=1,AMODE=0)。复位后,通过执行指令C28OBJ或者SETC OBJMODE将ST1中的OBJMODE位置1,芯片即可工作于C28x模式。 6.1.1 DSP中的操作数 汇编语言离不开操作符和操作数,操作符可以认为就是CPU的指令或者编译器上的伪指令,操作数是指令执行过程中的参与者,也可以说操作数就是指令所控制的对象。 如表6-1,表6-2和表6-3对指令中常用到的一些操作数符号进行说明

dsp实习心得体会

dsp实习心得体会 DSP大家注意和传统的概念区分一下,传统我们经常说的DSP(Digital Signal Processing(数字信号处理))的缩写也就是说是一些功能算法,这里的DSP是指(Digital Signal Process(数字信号处理器))的缩写,也就是说他是一个集成一些外设的一个芯片,类似我们的单片机。我们通过程序实现一些特定的功能。 和传统单片机比较的区别? DSP功能比普通单片机高出很多,当然价格也比较高。所以直接用DSP和单片机比较是不合适的。我们这里比较不是从他的应用领域来比较,我们是从开发的角度来比较,为了是使那些熟练使用单片机的朋友可以很快上手。当然我的主要目的的大家可以比较学习,达到 熟悉一种CPU其他就可以很快上手。下面从几个方面比较一下 1,硬件上比较 从硬件上比较DSP和传统的单片机主要有几个方面不一样,很多DSP电源系统比传统的复杂,但是这个并不影响我们因为如TI的DSP都提供相关的测试电路。开始的时候大家可以完全按照他来设计。调试方式上有很大不同,DSP一

般通过JTAG来进行仿真和烧写的,而单片机是通过直接仿真器来仿真的(这里讲的单片机是比较早的,现在的单片机也有很多采用JTAG调试方式)。其他设计比如重要的时序设计所以CPU系统是一样的只要满足时序就可以达到目标。 2,软件上比较 相比硬件软件应该是DSP差别比较大的DSP的软件需要CMD文件,一般的单片机编译器编译以后就可以了不需要。并且CMD也是DSP学习过程中比较困难的一个方面。后面我们简单说明一下。 dsp实习心得体会(二) 小系统的是任何DSP系统开发前必须要完成的,你可以从一下几个方面获得小系统。一、购买一个市场上比较成熟的小系统产品;二、自己动手设计一个小系统。我们这里主要告诉大家怎么自己设计一个最小系统。 首先我给最小系统一个定义,我按照我个人的习惯把最小系统分成2个方面 1,狭义的最小系统 所谓狭义最小系统是指就是能够完成一个独立功能,并且方便观察的一个系统。比如我们常见的通过DSP控制一个LCD灯让它闪起来。完成这个功能我们可以认为狭义的最小系统完成。 独立完成功能,我们很容易想到要一个系统能够独立完

dsp汇编指令系统介绍(精)

汇编指令集 本节根据指令的功能来分,提供六张表来说明指令集的概况: 累加器、算数和逻辑指令(表2); 辅助寄存器和数据页指针指令(表3); TREG、PREG和乘法指令(表4); 转移指令(表5); 控制指令(表6); I/O和存储器操作(表7)。 在每张表中,指令按字母顺序排列。执行每条指令所需要的周期数在表中给出,所有指令都假设从内部程序存储器和内部数据存储器中执行,指令的周期数适用于单指令执行,不适用于重复方式。编程时,用户必须对每条指令的寻址方式了解清楚,因此这里也在表中给出了每条指令的寻址方式。由于指令的操作码对用户编程没有多大指导意义,在这里就没有列出来。 为了参照起见,我们先定义这六张概述表的符号意义: ACC 累加器。 AR BITX CM 辅助寄存器。 4位数值,用于指定数据存储器数值中的哪一位将被BIT指令所测试。 2位数值,CMPR指令执行CM值所声明的比较: 若CM=00,测试当前AR=AR0否; 若CM=01,测试当前ARAR0否; 若CM=11,测试当前AR≠AR0否。 Shift TP 4位右移量。用于条件执行指令的2位数值,代表如下4种条件:若BIO引脚为低, TP=00;若TC位=1,TP=01;若TC位=0,TP=10;无条件TP=11。 ARX 用于LAR和SAR指令的3位数据值,指定被操作的辅助寄存器。 52 表2 累加器、算数和逻辑指令 ABS 周期 |(ACC)|→ACC 1 (ACC)+(数据存储器地址)×1 2shift→ACC (ACC)+(数据存储器地址)×

216→ACC 1(ACC)+k→ACC 1 shift (ACC)+lk×2→ACC 2 指令功能 (ACC)+(数据存储器地址)+(C)→ ACC 寻址方式 直接/间接 直接/间接短立即数长立即数 指令说明 ACC取绝对值 移位时低位填0,若SXM=1,高位用符号扩展;若SXM=0,高位填0;结果存在ACC中,该指令使C=0。寻址短立即数时,加操作不受SXM的影响,且不能重复执行。 ADD ADDC 1 直接/间接该指令抑制符号扩展 该指令抑制符号扩展;无论SXM为何值,数据均作无符号16位数看待。当SXM=0和 直接/间接 移位次数等于0时,ADDS与ADD指令结果相同。 被寻址的数据寄存器单元的内容左移并加 直接/间接到ACC,移位次数由TREG的低4位确定, SXM位的值控制移位时是否作符号扩展。 使用直接/间接寻址,ACC的低位字与数据直接/间接存储器单元的值作与运算,结果存在ACC 的低字,ACC的高位字清0。使用立即数寻 址,长立即数可以左移,移位时,32位中长立即数未被长立即操作数填充的位均被清零。 长立即数累加器中的内容用其逻辑反取代指定的数据存储器单元的内容或16位常数直接/间接左移并加载到ACC,低位填0,若SXM= 1,高位用符号位扩展;若SXM=0,则填直接/间接0。 长立即数 指定的数据存储器单元的内容或用0扩展

相关文档
最新文档