DSP实验基于CCS报告

DSP实验基于CCS报告
DSP实验基于CCS报告

《DSP与嵌入式系统》实验报告

目录

目录......................................................

实验一 IO端口实验 .......................................

实验二定时器实验........................................

实验三 AD实验 ...........................................

实验四 DA实验 ...........................................

实验五信号过滤波器实验..................................

实验一 IO端口实验

一、实验目的

1.1 了解 ICETEK-VC5416-A板在TMS320VC5416DSP在IO空间上的扩展。

1.2 了解 ICETEK-VC5416-A板上指示灯扩展原理。

1.3 学习在C 语言中使用扩展的控制寄存器的方法。

二、实验原理

2.1 I/O 空间的扩展及使用:

C54x DSP 的 I/O 空间被保留用于外部扩展。由于在程序中访问 I/O 空间的语句只有 in 和out 指令,所以在扩展时一般将带有控制能的寄存器或分离地址访问的存储单元的地址映射到 I/O 空间,访问这部分的单元又称 I/O 端口访问。例如:可将控制指示灯组的寄存器或锁存器映射到一个 I/O 端口地址上;A/D、D/A 等专用芯片控制端和状态寄存器也常映射到 I/O 端口上。总之,在 I/O 空间中扩展的设备一般重点用于控制,而使用大片连续存储空间的存储器单元一般映射到数据空间。ICETEK-VC5416-A 板将指示

灯、DIP 开关、A/D、D/A、异步串行通信接口和 WatchDog的控制端等映射在 I/O 空间。

0001-0001h:WatchDog 控制寄存器

3006-3006h:A/D 转换控制寄存器

1000-1001h:D/A 转换控制寄存器

2000-2007h:异步串口通信控制寄存器

3002-3002h:板上指示灯控制寄存器

3003-3003h:板上 DIP 拨动开关控制寄存器

ICETEK-VC5416-A 实验箱上控制模块也使用 I/O 端口控制大部分设备:

8001-8001h:读-键盘扫描值,写-液晶控制寄存器

8002-8002h:液晶控制寄存器

8003-8004h:液晶显示数据寄存器

8005-8005h:发光二极管显示阵列控制寄存器

8006-8006h:保留

8007-8007h:发光二极管显示阵列控制寄存器

8008-9FFFh:保留

在程序中,访问 I/O 端口的语句较为简单。对于汇编语言程序,可用 PORTR 和 PORTW 指令,例如,从端口0008h读入一个字到变量 x 的指令为 portr 8,x,而向端口 000Ch 输出x变量的值的指令为 portw #0Ch,x;在 C 语言中访问 I/O 端口则必须首先声明 I/O 端口的类型,然后才能访问,以下语句仍完成上面汇编语言所完成的功能:

ioport unsigned int port0008;

ioport unsigned int port000C;

x = port0008;

1.2 指示灯扩展原理

详见上图,其中 7 个指示灯是 D3-D9;D10 在硬件上没做控制扩展。

1.3 实验程序流程图

三、实验代码

/////////////////////////////////////////////////// // Example For ICETEK-VC5416-EDU //

// CTR Version : V4 //

// File name: LED.c //

// Project : LED.pjt //

// Version : 2.00 //

// Write by: Daniel Hawk //

// Company : Realtimedsp Co.Ltd //

// //

// All Rights opened & no Onus 2005.06 //

////////////////////////////////////////////////// ioport unsigned int port3002;

#define LBDS port3002

void Delay(int nDelay);

void ShiftToLeftAndRight(unsigned int nInit);

main()

{

unsigned int uLED[4]={1,2,4,8};

int i;

for(;;)

{

for ( i=0;i<4;i++ )

{

LBDS=~uLED[i];

Delay(64);

}

for ( i=3;i>=0;i-- )

{

LBDS=~uLED[i];

Delay(64);

}

}

}

void Delay(int nDelay)

{

int i,j,k;

k=0;

for ( i=0;i

for ( j=0;j<1024;j++ )

k++;

}

四、代码分析

// 为LED声明IO端口

ioport unsigned int port3002; // LED 宏定义

#define LBDS port3002

// 延时和移位子函数声明

void Delay(int nDelay); //延时调用函数申明

void ShiftToLeftAndRight(unsigned int nInit);//移位主函数申明

main()

{

unsigned int uLED[4]={1,2,4,8}; // 控制字,逐位置1: 0001B 0010B 0100B 1000B,分别表示第1,2,3,4盏灯点亮

int i;

//3位流水灯循环移位

for(;;)

{

for ( i=0;i<4;i++ ) //4盏灯正向流水作业点亮

{

LBDS=~uLED[i]; // 正向顺序送控制字

Delay(64); // 调用延时函数,每次灯闪后延时的时间长度

}

for ( i=3;i>=0;i-- ) //4盏灯反向流水作业点亮

{

LBDS=~uLED[i]; // 反向顺序送控制字

Delay(64); // 调用延时函数,每次灯闪后延时的时间长度

}

}

}

//这里nDelay=64,延时总长=64*1024*T(T指系统单脉冲周期)

void Delay(int nDelay)

{

int i,j,k;

k=0;

for ( i=0;i

for ( j=0;j<1024;j++ )

k++;

}

五、实验结果

可以看到 D3-D6 这4盏指示灯循环移位闪烁。

通过实验可知:映射在 IO 空间地址上的指示灯寄存器在设置时是低有效的,数据的最低位(0001B)对应指示灯 D3,次低位(0010B)对应 D4,...依次类推。

实验二定时器实验

一、实验目的

1.1.通过实验熟悉 VC5416A 的定时器;

1.2.掌握 VC5416A 定时器的控制方法;

1.3.掌握 VC5416A 的中断结构和对中断的处理流程;

1.4.学会 C 语言中断程序设计,以及运用中断程序控制程序流程。

二、实验原理

2.1.通用定时器介绍及其控制方法

片内定时器是一个软件可编程定时器,可以用来产生周期的中断信号。定时器主要由 3 个寄存器所组成:定时器寄存器(TIM)、定时器周期寄存器(PRD)和定时器控制寄存器(TCR)。这 3 个寄存器都有映象寄存器,它们在数据存储器中的地址分别为 24H、25H 和 26H。TIM 是一个递减计数器;PRD 中存放计数值;TCR 中有定时器的控制位和状态位:

15—12 保留

11--10 soft free

9—6 PSC 定时器预定标计数器

5 TRB 定时器重新加载位,用来复位片内定时器

4 TSS 定时器停止状态位,用于停止或启动定时器

3—0 TDDR 定时器分频系数

在正常工作情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。复位后,定时器控制寄存器(TCR)的停止状态位 TSS=0,定时器启动工作,时钟信号CLKOUT加到预定标计数器 PSC。PSC也是一个递减计数器,每当复位或其减到0后,自动地将定时器分频系数TDDR加载到PSC。PSC在CLKOUT作用下,作减1计数。当PSC减到0,产生一个借位信号,令TIM作减1计数。TIM减到0后,产生定时器中断信号TINT,传送到CPU和定时器输出引TOUT。

定时器中断的周期为:CLKOUT×(TDDR+1)×(PRD+1)

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

对定时器初始化的步骤如下:

⑴先将TCR中的TSS位置1,关闭定时器。

⑵加载PRD。

⑶重新加载TCR(使TDDR初始化;令TSS位=0,以接通CLKOUT;TRB位值1,以使TIM减到0后重新加载定时器时间常数),启动定时器。

- 对中断的处理:

⑴设置 INTM=1

⑵将 IFR中的TINT位置 1,清除尚未处理完的定时器中断。

⑶将 IMR中的TINT位置 1,开放定时器中断。

⑷将 ST1中的INTM位请 0,开放所有可屏蔽中断。

2.2. TMS320VC5416 中断结构

以下是 5416 的 IMR 和 IFR 寄存器的结构,其中包含了可响应的中断:

2.3.中断响应过程

外设事件要引起 CPU 中断,必须保证:IMR 相应位被使能(置 1),ST1 寄存器中的 INTM 使能(置 0)。当 CPU 响应中断时,PC 指针指向中断向量表中对应中断的地址,进入中断服务子程序。中断向量表是 DSP 存放中断服务程序的一段内存区域,大小为 80H。在中断向量表中,每一个中断占用 4 个字的空间,一般情况是将一条跳转或延时跳转指令存放于此。中断向量表的位置是可以改变的,修改 PMST 寄存器中的中断向量表基地址可以实现这一点。

2.4.中断程序设计

程序中应包含中断向量表,5416 默认向量表从程序区 FF80 地址开始存放。向量表中每项为 4 个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址;第一个向量表的首项为复位向量,即 CPU 复位操作完成后自动进入执行的程序入口;程序中包含相应的中断服务程序,应将其入口地址加入相应中断向量表中。

2.5.实验程序分析

本实验设计的程序是在上一个实验基础上修改得来,由于上一实验控制指示灯闪烁的延时控制是用循环计算方法得到的,延时不精确也不均匀,采用中断方式可以实现指示灯的定时闪烁,时间更加准确。对于定时器的周期寄存器为计数f423H,分频系数定为 15,即 1,000,000 个 CPU 时钟计数一次,由于 DSP 工作在 8MHz 主频(ICETEK-VC5416-A 板上 DIP 开关 U2 的 CLKMD1-3 均为 OFF 时),正好是 125ms 中断一次,所以在中断服务程序中计算中断 4 次时改变指示灯状态,实现指示灯亮 0.5 秒再灭 0.5 秒,即每秒闪烁 1 次。实验程序的工程中包含了两种源代码,主程序采用 C 语言编制利于控制,中断向量表在vector.asm 汇编语言文件中,利于直观地控制存储区分配。在工程中只需将它们添加进来即可,编译系统会自动识别分别处理完成整合工作。实验程序的 C 语言主程序中包含了内嵌汇编语句,提供一种在需要更直接控制 DSP 状态的

方法,同样的方法也能提高 C 语言部分程序的计算效率。

2.6.程序流程图

主程序流程图中断服务程序流程图如下:

三、实验代码

/////////////////////////////////////////////////

// Example For ICETEK-VC5416-EDU //

// CTR Version : V4 //

// File name: Timer.c //

// Project : Timer.pjt //

// Version : 2.00 //

// Write by: Daniel Hawk //

// Company : Realtimedsp Co.Ltd //

// //

// All Rights opened & no Onus 2005.06 //

///////////////////////////////////////////////// #define TIM *(int *)0x24

#define PRD *(int *)0x25

#define TCR *(int *)0x26

#define IMR *(int *)0x0

#define IFR *(int *)0x1

#define PMST *(int *)0x1d

ioport unsigned int port3002,port3003;

#define DIP port3003

#define LED port3002

void interrupt time(void);

unsigned int nCount,uWork;

main()

{

nCount=uWork=0;

asm(" ssbx INTM");

uWork=PMST;

PMST =uWork&0xff;

IMR = 0x8;

TCR = 0x41F;

TIM = 0;

PRD = 0x0f423;

TCR = 0x42f;

IFR = 0x100;

asm("rsbx INTM");

LED=0xff;

while ( 1 )

{

}

}

void interrupt time(void)

{

nCount++;

if ( nCount>=4 )

{

LED^=0x55;

nCount=0;

}

}

四、代码分析

//宏定义

#define TIM *(int *)0x24 //TIM寄存器在数据存储器中的地址是0x24

#define PRD *(int *)0x25 //PRD寄存器在数据存储器中的地址是0x25

#define TCR *(int *)0x26 //TCR寄存器在数据存储器中的地址是0x26

#define IMR *(int *)0x0 //将IMR中的TINT位置1,开放定时器中断

#define IFR *(int *)0x1 //将IFR中的TINT位置1,清除尚未处理完的定时器中断

#define PMST *(int *)0x1d // PMST 寄存器中的中断向量表基地址

ioport unsigned int port3002,port3003; //访问I/O端口

#define DIP port3003 //DIP开关的接口为 port3003

#define LED port3002 //LED开关的接口为 port3002

void interrupt time(void); //中断调用函数申明

unsigned int nCount,uWork; //定时主函数申明

main()

{

nCount=uWork=0; //初始状态

asm("ssbxINTM"); // 关中断,进行关键设置时不许打扰

// 设置通用定时器

uWork=PMST; // 设置PMST寄存器

PMST =uWork&0xff; // 中断向量表起始地址=80H

IMR = 0x8; // 使能TINT

TCR = 0x41F; // 控制字为0000 0100 0001 1111B,预分频系数为8

TIM = 0; // 时钟计数器清0

PRD = 0x0f423; // 周期寄存器为0f423H

TCR = 0x42f; // 控制字为0000 0100 0010 1111B,复位片内定时器、启动定时器

IFR = 0x100; // 清中断标志位

asm(" rsbx INTM"); // 开中断

LED=0xff;

while ( 1 )

{

}

}

void interrupt time(void) //中断调用函数

{

nCount++; //计数

if ( nCount>=4 )

{

LED^=0x55; // 中断4次时设置指示灯状态

nCount=0;

}

}

五、实验结果

- 指示灯在定时器的定时中断中按照设计定时闪烁,改变分频计数器和时钟计数器的计数大小可以调整定时长短。

- 使用定时器和中断服务程序可以完成许多需要定时完成的任务,比如 DSP 定时启动A/D转换,日常生活中的计时器计数、空调的定时启动和关闭等。

- 在调试程序时,有时需要指示程序工作的状态,可以利用指示灯的闪烁来达到指示灯灵活的闪烁方式可表达多种状态信息。

实验三 AD实验

一、实验目的

1.1 掌握ADC芯片的使用方法

1.2 掌握DSP控制ADC芯片以及通过端口采集数据的方法

1.3 利用定时器中断控制采样的间隔

二、实验原理

2.1. TLV0832 模数转换模块特性

带内置采样和保持的 8 位模数转换模块 ADC,最小转换时间为 500us。2 个的模拟输入通道(ADIN2—ADIN3)。

2.2.模数转换工作过程

模数转换模块接到启动转换信号后,开始转换第一个通道的数据;经过一个采样时间的延迟后,将采样结果放入转换结果寄存器保存;转换结束,设置标志,也可发出中断;如果为连续转换方式则从新开始转换过程;否则等待下一个启动信号。

2.3.模数转换的程序控制

模数转换相对于计算机来说是一个较为缓慢的过程。一般采用中断方式启动转换或保存结果,这样在 CPU 忙于其他工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。由于 TLV0832 芯片内的 A/D 转换精度是 8 位的,转换结果为 16 位数据,中间 8 位是有效值,所以应将读回的数据右移 4 位后再将高 8 位清零。

2.4.程序流程图

注意:

TCR 中有定时器的控制位和状态位:

15—12 保留

11--10 soft free

9—6 PSC 定时器预定标计数器

5 TRB 定时器重新加载位,用来复位片内定时器

4 TSS 定时器停止状态位,用于停止或启动定时器

3—0 TDDR 定时器分频系数

以下是 5416 的 IMR 和 IFR 寄存器的结构,其中包含了可响应的中断:三、实验代码

///////////////////////////////////////////////////

// Example For ICETEK-VC5416-EDU //

// CTR Version : V4 //

// Filename: ADC.c //

// Project : ADC.pjt //

// Version : 2.00 //

// Write by: Daniel Hawk //

// Company : Realtimedsp Co.Ltd //

// //

// All Rights opened & no Onus 2005.06 //

///////////////////////////////////////////////////

#include "c5416regs.h"

#define TIM *(int *)0x24

#define PRD *(int *)0x25

#define TCR *(int *)0x26

#define REGISTERCLKMD *(int *)0x58

ioport unsigned int port3006;

void interrupt time(void);

void initMcBSP2( void );

unsigned int nCount;

int flage;

int uWork;

int inp[256];

int length;

int channel;

main()

{

int j;

asm("ssbxINTM");

*(int *)0x58=0x0; j= PMST;

PMST = j&0xff;

IMR = 0x8;

TCR = 0x417;

TIM = 8;

PRD = 0x157;

TCR = 0x427;

IFR = 0x100;

flage=0;

channel=0;

port3006=1;

*(int *)0x58=0x2004;

initMcBSP2();

asm("rsbxINTM");

while ( 1 );

}

// 定时器中断服务程序,完成:保存转换结果、启动下次转换

void interrupt time(void)

{

if(channel)

{

DXR12=0xe000;

}

else

{

DXR12=0xc000;

}

/*DXR12=0xe000;*/

uWork=DRR12;

uWork=uWork>>4;

uWork&=0xff;

inp[length]=uWork;

length++;

length%=256;

if(length==0)

{

asm(" nop");

}

}

void initMcBSP2( void ) /*configuation the McBSP1 as SPI mode*/

{

SPSA2=SPCR1;

SPSD2=0;

SPSA2=SPCR2;

SPSD2=0;

SPSA2=RCR1;

SPSD2=0x40;

SPSA2=RCR2;

SPSD2=0x01;

SPSA2=XCR1;

SPSD2=0x40;

SPSA2=XCR2;

SPSD2=0x01;

SPSA2=SRGR1;

SPSD2=0x83;

SPSA2=SRGR2;

SPSD2=0x2000;

SPSA2=PCR;

SPSD2=0xA08;

SPSA2=SPCR1;

SPSD2=0x5801; SPSA2=SPCR2;

SPSD2=0xc1;

}

四、代码分析

#include "c5416regs.h" // 使用工具包c5416regs.h

//宏定义

#define TIM *(int *)0x24 // TIM寄存器在数据存储器中的地址是0x24 #define PRD *(int *)0x25 // PRD寄存器在数据存储器中的地址是0x25 #define TCR *(int *)0x26 // TCR寄存器在数据存储器中的地址是0x26 #define REGISTERCLKMD *(int *)0x58 //REGISTERCLKMD存放在地址0x58中

//I/O接口接入

ioport unsigned int port3006;

void interrupt time(void); //中断调用函数申明

void initMcBSP2( void );

unsigned int nCount;

int flage;

int uWork;

int inp[256]; //定义数组空间

int length;

int channel;

main()

{

int j;

asm("ssbxINTM"); // 关闭可屏蔽中断

*(int *)0x58=0x0; //REGISTERCLKMD初始状态

j= PMST; // 设置PMST寄存器

PMST = j&0xff; //中断向量表起始地址=80H

IMR = 0x8; //使能TINT

TCR = 0x417; // 计数器分频系数=8

TIM = 8; //时钟计时器值=8

PRD = 0x157; //周期寄存器为0x157

TCR = 0x427; // 控制字为0000 1000 0010 0111B,为复位片内定时器IFR = 0x100; // 其中,时钟周期为8MHz

flage=0;

channel=0;

port3006=1;

*(int *)0x58=0x2004; //REGISTERCLKMD为2004H

initMcBSP2(); //调用 initMcBSP2

asm("rsbxINTM"); // 开中断进行转换

while ( 1 ); //不断循环

}

// 定时器中断服务程序,完成:保存转换结果、启动下次转换

void interrupt time(void)

{

if(channel)

{

DXR12=0xe000; //如果channel=1,则保存转换结果

}

else

{

DXR12=0xc000; //否则启动下次转换

}

/*DXR12=0xe000;*/

uWork=DRR12;

uWork=uWork>>4;

uWork&=0xff; //

inp[length]=uWork;

length++;

length%=256;

if(length==0)

{

asm(" nop"); //等待响应,延时

}

}

void initMcBSP2( void ) /*配制McBSP1作为SPI模式*/ {

SPSA2=SPCR1;

SPSD2=0;

SPSA2=SPCR2;

SPSD2=0;

SPSA2=RCR1;

SPSD2=0x40;

SPSA2=RCR2;

SPSD2=0x01;

SPSA2=XCR1;

生物化学实验六——酵母RNA的提取与含量测定 山东大学实验报告

实验六——酵母RNA的提取与含量测定 13生物基地 201300140059 刘洋 2015-05-10 同组者:张奕 一、实验目的 1.掌握稀碱法提取酵母RNA的原理和方法。 2.掌握紫外分光光度计的使用。 3.了解和掌握紫外吸收法测定RNA浓度的原理。 二、实验原理 酵母核酸中RNA含量较多,DNA则少于2%。RNA可溶于碱性溶液,当碱被中和后,可加乙醇使其沉淀,由此即可得到RNA制品。但是用碱液提取的RNA有不同的降解。 核酸及其衍生物,核苷酸、核苷、嘌呤和嘧啶有吸收紫外光的性质,其吸收高峰在260nm 左右,且一定浓度范围内其浓度与吸光度成正比(浓度为5μg/ml—45μg/ml吸光度与浓度成正比),利用此性质,可用RNA标准液绘制RNA吸光标准曲线(标准曲线的斜率为0.022-0.024左右),测定样品RNA浓度。由于蛋白质在280nm的光吸收,对核酸测定有一定的干扰作用,最大吸收峰在280nm处,原因是蛋白质组成中常含有酪氨酸和色氨酸等芳香族氨基酸。所以如果有蛋白质的干扰必须得先测260nm处的吸光度,再测280nm处的吸光度,通过计算消除其对核酸的影响。 三、实验器材 干酵母粉 电子天平 量筒 容量瓶100ml 磁力搅拌器 试管 100℃水浴锅pH试纸(pH1-14)烧杯 离心机 722型分光光度计锥形瓶 离心管 四、实验试剂 0.2%氢氧化钠溶液95%乙醇 无水乙醚酸性乙醇(5ml浓Hcl加入到500ml95%乙醇中混匀)RNA标准蛋白溶液(200μg/ml)

1.RNA的提取 (1)称取4g干酵母粉,放入200ml锥形瓶中,加入40ml0.2%的氢氧化钠溶液混匀,在沸水浴中煮沸30min中并冷却; (2)冷却后,把液体倒入离心管中,在4000r/min的条件下离心15min; (3)离心后留上清液加入95%的酸性乙醇40ml,边加边搅拌,静置5min左右,再4000r/min的条件下离心5min; (4)离心后保留沉淀,用20ml 95%乙醇分两次洗涤沉淀,每次洗后在3000r/min的条件下离心5min; (5)离心后的沉淀再用无水乙醇10ml洗涤两次,每次用3000r/min离心5min; (6)离心结束后,收集沉淀与滤纸上,称重备用。 2.RNA样液的配制 (1)取粗RNA0.2-0.25g与烧杯中,加入5mlNaOH溶液,搅拌,溶解,调成糊状。 (2)再加入蒸馏水40ml,搅拌混匀,调PH至7.0后,放入100ml容量瓶中定容。 (3)再分3-4次分别取2ml定容后溶液于100ml容量瓶中继续定容待测,并且把容量瓶依次编号为A、B、C。 3.RNA标准曲线的绘制 (1)取洁净的试管,依次标号为1-10、A、B、C后,按照下表分别往各试管中加所需液体,并用磁力搅拌器混匀。 (2)混匀后以0号试管为参比液,在260nm下测各试管的吸光度A,并根据0-9试管的吸光值绘制出RNA标准曲线,并最终得出样品的浓度。 六、注意事项 1.离心机的使用,使用前一定要将两离心液(包括外壳)在天平上调平,对称放置在离 心机上,防止力臂不对称而损坏离心机。 2.紫外分光光度计的使用,要先预热10分钟,往比色皿中到液体只需到三分之二即可, 防止液体溢出腐蚀仪器,爱护仪器。

DSP实验报告

一、综合实验内容和目的 1、实验目的 (1) 通过实验学习掌握TMS320F28335的浮点处理; (2) 学习并掌握A/D模块的使用方法; (3) 学习并掌握中断方式和查询方式的相关知识及其相互之间的转换; (4) 学习信号时域分析的方法,了解相关电量参数的计算方法; (5) 了解数字滤波的一些基本方法。 2、实验内容 要求1:对给定的波形信号,采用TMS320F28335的浮点功能计算该信号的以下时域参数:信号的周期T,信号的均方根大小V rms、平均值V avg、峰-峰值V pp。 其中,均方根V rms的计算公式如下: V= rms 式中N为采样点数,()u i为采样序列中的第i个采样点。 要求2:所设计软件需要计算采样的波形周期个数,并控制采样点数大于1个波形周期,且小于3个波形周期大小。 要求3:对采集的数据需要加一定的数字滤波。 二、硬件电路 相关硬件:TMS320F28335DSP实验箱,仿真器。

硬件结构图 三、程序流程图 1、主程序流程图 程序的主流程图2、子程序流程图

参数计算的流程图 四、实验结果和分析 1、实验过程分析 (1) 使用的函数原型声明 对ADC模件相关参数进行定义:ADC时钟预定标,使外设时钟HSPCLK 为25MHz,ADC模块时钟为12.5MHz,采样保持周期为16个ADC时钟。 (2) 定义全局变量 根据程序需要,定义相关变量。主要有:ConversionCount、Voltage[1024]、Voltage1[1024]、Voltage2[1024]、filter_buf[N]、filter_i、Max、Min、T、temp、temp1、temp2、temp3、Num、V、Vav、Vpp、Vrm、fre。这些变量的声明请见报告后所附的源程序。 (3) 编写主函数 完成系统寄存器及GPIO初始化;清除所有中断,初始化PIE向量表,将程

山东大学操作系统实验报告4进程同步实验

山东大学操作系统实验报告4进程同步实验

计算机科学与技术学院实验报告 实验题目:实验四、进程同步实验学号: 日期:20120409 班级:计基地12 姓名: 实验目的: 加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥 操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。了解 Linux 系统中 IPC 进程同步工具的用法,练习并发协作进程的同步与互斥操作的编程与调试技术。 实验内容: 抽烟者问题。假设一个系统中有三个抽烟者进程,每个抽烟者不断地卷烟并抽烟。抽烟者卷起并抽掉一颗烟需要有三种材料:烟草、纸和胶水。一个抽烟者有烟草,一个有纸,另一个有胶水。系统中还有两个供应者进程,它们无限地供应所有三种材料,但每次仅轮流提供三种材料中的两种。得到缺失的两种材料的抽烟者在卷起并抽掉一颗烟后会发信号通知供应者,让它继续提供另外的两种材料。这一过程重复进行。请用以上介绍的 IPC 同步机制编程,实现该问题要求的功能。 硬件环境: 处理器:Intel? Core?i3-2350M CPU @ 2.30GHz ×4 图形:Intel? Sandybridge Mobile x86/MMX/SSE2 内存:4G 操作系统:32位 磁盘:20.1 GB 软件环境: ubuntu13.04 实验步骤: (1)新建定义了producer和consumer共用的IPC函数原型和变量的ipc.h文件。

(2)新建ipc.c文件,编写producer和consumer 共用的IPC的具体相应函数。 (3)新建Producer文件,首先定义producer 的一些行为,利用系统调用,建立共享内存区域,设定其长度并获取共享内存的首地址。然后设定生产者互斥与同步的信号灯,并为他们设置相应的初值。当有生产者进程在运行而其他生产者请求时,相应的信号灯就会阻止他,当共享内存区域已满时,信号等也会提示生产者不能再往共享内存中放入内容。 (4)新建Consumer文件,定义consumer的一些行为,利用系统调用来创建共享内存区域,并设定他的长度并获取共享内存的首地址。然后设定消费者互斥与同步的信号灯,并为他们设置相应的初值。当有消费进程在运行而其他消费者请求时,相应的信号灯就会阻止它,当共享内存区域已空时,信号等也会提示生产者不能再从共享内存中取出相应的内容。 运行的消费者应该与相应的生产者对应起来,只有这样运行结果才会正确。

DSP实验报告

东南大学自动化学院 实验报告 课程名称: DSP技术及课程设计 实验名称:直流无刷电机控制综合实验 院(系):自动化专业:自动化 姓名:ssb 学号:08011 实验室:304 实验组别: 同组人员:ssb1 ssb2 实验时间:2014年 6 月 5 日评定成绩:审阅教师:

目录 1.实验目的和要求 (3) 1.1 实验目的 (3) 1.2 实验要求 (3) 1.2.1 基本功能 (3) 1.2.2 提高功能 (3) 2.实验设备与器材配置 (3) 3.实验原理 (3) 3.1 直流无刷电动机 (3) 3.2 电机驱动与控制 (5) 3.3 中断模块 (7) 3.3.1 通用定时器介绍及其控制方法 (7) 3.3.2 中断响应过程 (7) 3.4 AD模块 (8) 3.4.1 TMS320F28335A 芯片自带模数转换模块特性 (8) 3.4.2 模数模块介绍 (8) 3.4.3 模数转换的程序控制 (8) 4.实验方案与实验步骤 (8) 4.1 准备实验1:霍尔传感器捕获 (8) 4.1.1 实验目的 (8) 4.1.2 实验内容 (9) 4.1.2.1 准备 (9) 4.1.2.2 霍尔传感器捕获 (9) 4.2 准备实验2:直流无刷电机(BLDC)控制 (10) 4.2.1 程序框架原理 (10) 4.2.1.1 理解程序框架 (10) 4.2.1.2 基于drvlib281x库的PWM波形产生 (11) 4.2.2 根据捕获状态驱动电机运转 (12) 4.2.2.1 目的 (12) 4.2.2.2 分析 (12) 4.3 考核实验:直流无刷电机调速控制系统 (13) 4.3.1 初始化工作 (13) 4.3.2 初始化定时器0.... . (13) 4.3.3初始化IO口 (13) 4.3.4中断模块.... (13) 4.3.5 AD模块 (14) 4.3.6在液晶屏显示 (15) 4.3.7电机控制 (17) 4.3.7.1 控制速度方式选择 (17) 4.3.7.2 控制速度和转向 (18) 4.3.8延时子函数 (19) 4.3.9闭环PID调速 (19)

山东大学信息安全实验报告

山东大学软件学院 信息安全导论课程实验报告 学号:201300301385 姓名:周强班级: 2013级八班 实验题目:缓冲区溢出实验 实验学时:日期: 实验目的: (1)了解缓冲区溢出的原理 (2)利用缓冲区溢出现象构造攻击场景 (3)进一步思考如何防范基于缓冲区溢出的攻击 硬件环境: 软件环境: WindowsXP操作系统 VS2008 实验步骤与内容: (1)了解缓冲区溢出的原理 缓冲区溢出简单来说就是计算机对接收的输入数据没有进行有效的检测(理情况下是程序检测数据长度并不允许输入超过缓冲区长度的字符),向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。 看一个代码实例,程序如下: void function(char *str) { char buffer[16]; strcpy(buffer,str); } 上面的strcpy()将直接把str中的内容copy到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。

(2)利用缓冲区溢出现象构造攻击场景 首先打开Microsoft Visual C++,新建工程和cpp文件,复制实验指导书的代码进行编译连接: 单击运行按钮,然后第1次输入“zhouqianga”,第2次输入2个“ga”,即可看到输出“correct”。

按F10开始进行逐步调试: 当第一次执行gets()函数之前,内存情况如下图所示

在最新的版本中gets被认为是不安全的,gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。现在都被要求改为get_s。来防止溢出。 如下图所示。 (3)学习例子程序2:数据被执行 在xp系统下,直接运行Exploit-1.1.exe,如下图所示:

DSP实验报告

实验0 实验设备安装才CCS调试环境 实验目的: 按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。 实验步骤: 以演示实验一为例: 1.使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源; 2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStart\sinewave\”下打开工程文件sinewave.pjt,然后点击主菜单“Project->Build”编译,然后点击主菜单“File->Load Program”装载debug目录下的程序sinewave.out; 3.打开源文件exer3.asm,在注释行“set breakpoint in CCS !!!”语句的NOP处单击右键弹出菜单,选择“Toggle breakpoint”加入红色的断点,如下图所示; 4.点击主菜单“View->Graph->Time/Frequency…”,屏幕会出现图形窗口设置对话框 5.双击Start Address,将其改为y0;双击Acquisition Buffer Size,将其改为1; DSP Data Type设置成16-bit signed integer,如下图所示; 6.点击主菜单“Windows->Tile Horizontally”,排列好窗口,便于观察 7.点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果: 心得体会: 通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。熟悉了DSP实验箱基本模块。让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。

山东大学-中间件实验报告

山东大学软件学院 中间件技术课程实验报告

onResize(); }, error : function(e) { alert('初始化数据错误!'); } }); }); 并从bootstrap上找一些已经写好的布局,作为参考。加入到网页的界面中。 一、数据库操作的封装 1、AutoCreateDB——自动创建数据库 (1)可以根据下列query的结果判断数据库是否存在: Object obj = dao.QueryOnly("SELECT COUNT(*) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=?",new Object[] { DATABASE }); 不存在则创建数据库,则执行executeCreate方法。 (2)AutoCreateDB自动创建数据库的表 遍历表,对于数据库中的每一个表,都执行“检测、若不存在则创建”操作,可以根据该query的结果判断数据库的表是否存在,不存在则创建数据库表,则执行executeCreate方法。 2、JdbcDao数据库相关操作 (1)在JdbcDao 中定义应用与数据库建立连接,其相关参数从 config.properties中获取: /**获取Connection连接*/ public Connection getConnection(){ Connection conn = null; System.out.println(JDBC_URL); System.out.println(USER_NAME); System.out.println(USER_PWD); try { conn = DriverManager.getConnection(JDBC_URL,USER_NAME,USER_PWD);

dsp实验报告

DSP 实验课大作业实验报告 题目:在DSP 上实现线性调频信号的脉冲压缩,动目标显示和动目标检测 (一)实验目的: (1)了解线性调频信号的脉冲压缩、动目标显示和动目标检测的原理,及其DSP 实现的整个流程; (2)掌握C 语言与汇编语言混合编程的基本方法。 (3)使用MATLAB 进行性能仿真,并将DSP 的处理结果与MATLAB 的仿真结果进行比较。 (二)实验内容: 1. MATLAB 仿真 设定信号带宽为B= 62*10,脉宽-6=42.0*10τ,采样频率为62*10Fs =,脉冲重复周期为-4T=2.4*10,用MATLAB 产生16个脉冲的线性调频信号,每个脉冲包含三个目标,速度和距离如下表: 对回波信号进行脉冲压缩,MTI ,MTD 。并且将回波数据和频域脉压系数保存供DSP 使用。 2.DSP 实现 在Visual Dsp 中,经MATLAB 保存的回波数据和脉压系数进行脉压,MTI 和MTD 。 (三)实验原理 1.脉冲压缩原理 在雷达系统中,人们一直希望提高雷达的距离分辨力,而距离分辨力定义为:22c c R B τ?==。其中,τ表示脉冲时宽,B 表示脉冲带宽。从上式中我们可以看

出高的雷达分辨率要求时宽τ小,而要求带宽B大。但是时宽τ越小雷达的平均发射功率就会很小,这样就大大降低了雷达的作用距离。因此雷达作用距离和雷达分辨力这两个重要的指标变得矛盾起来。然而通过脉冲压缩技术就可以解决这个矛盾。脉冲压缩技术能够保持雷达拥有较高平均发射功率的同时获得良好的距离分辨力。 在本实验中,雷达发射波形采用线性调频脉冲信号(LFM),其中频率与时延成正比关系,因此我们就可以将信号通过一个滤波器,该滤波器满足频率与时延成反比关系。那么输入信号的低频分量就会得到一个较大的时延,而输入信号的高频分量就会得到一个较小的时延,中频分量就会按比例获得相应的时延,信号就被压缩成脉冲宽度为1/B的窄脉冲。 从以上原理我们可以看出,通过使用一个与输入信号时延频率特性规律相反的滤波器我们可以实现脉冲压缩,即该滤波器的相频特性与发射信号时共轭匹配的。所以说脉冲压缩滤波器就是一个匹配滤波器。从而我们可以在时域和频域两个方向进行脉冲压缩。 滤波器的输出() h n= y n为输入信号() x n与匹配滤波器的系统函数() *(1) y n x n s N n =--。转换到频域就是--卷积的结果:* ()()*(1) s N n =。因此我们可以将输入信号和系统函数分别转化到频域:Y k X k H k ()()( Y k,然后将结果再转化到时域, h n H k →,进行频域相乘得() ()() x t X k →,()() 就可以得到滤波器输出:()() →。我们可用FFT和IFFT来实现作用域的 Y k y n 转换。原理图如下: 图1.脉冲压缩原理框图 2.MTI原理 动目标显示(MTI)技术是用来抑制各种杂波,来实现检测或者显示运动目标的技术。利用它可以抑制固定目标的信号,显示运动目标的信号。以线性调频

山东大学软件测试实验报告

实验一。黑盒测试 一、等价类划分 电话号码问题某城市电话号码由三部分组成。它们的名称和内容分别是: (1)地区码:空白或三位数字; (2)前缀:非'0'或'1'的三位数字; (3)后缀:4 位数字。 假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。 根据题目,分别将地区码、前缀、后缀进行分类,分析结果如下: 输入有效等价类编号无效等价类编号 地区码空白 1 包含其他字符 3 三位数字 2 少于三位 4 多于三位 5 前缀非0或 非1的三位数6 包含其他字符8 包含0的三位数9 包含1的三位数10 少于三位数11 多于三位数12 后缀四位数字7 包含其他字符13 少于四位数14 多于四位数15 根据上图的分析,可的测试用例 测试数据预期结果覆盖类地区码前缀后缀 空白555 4344 接受(有效)1、6、7 232545 4343 接受(有效)2、6、7 A23 322 4343 拒绝(无效) 3 21322 4343 拒绝(无效) 4 2323322 4343 拒绝(无效) 5 232 32A4343 拒绝(无效)8 232 208 4343 拒绝(无效)9 232 1114343 拒绝(无效)10

232 32 4343 拒绝(无效)11 232 322224343 拒绝(无效)12 232 322 4AS2 拒绝(无效)13 232 322 434拒绝(无效)14 232 322 434311拒绝(无效)15 三角形问题根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个程序要打印出信息,说明不是三角形、三角形是三边不等的、是等腰的、还是等边的。 分析题目中给出和隐含的对输入条件的要求: (1)整数(2)三个数(3)非零数(4)正数 (5)两边之和大于第三边(6)等腰(7)等边 如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一: 1)如果不满足条件(5),则程序输出为 " 非三角形 " 。 2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。 3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。 4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。 列出等价类表并编号

DSP运行实验报告

DSP运行实验报告 一、实验目的 熟悉CCS软件仿真下,DSP程序的下载和运行;熟悉借助单片机的DSP程序下载和运行; 熟悉借助仿真器的DSP程序下载和运行;熟悉与DSP程序下载运行相关的CCS编程环境。 二、实验原理 CCS软件仿真下,借用计算机的资源仿真DSP的内部结构,可以模拟DSP程序的下载和运行。 如果要让程序在实验板的DSP中运行、调试和仿真,可以用仿真器进行DSP程序下载和运行。初学者也可以不用仿真器来使用这款实验板,只是不能进行程序调试和仿真。 在本实验板的作用中,单片机既是串口下载程序的载体,又是充当DSP 的片外存储器(相对于FLASH),用于固化程序。 三、实验设备、仪器及材料 安装有WINDOWS XP操作系统和CCS3.3的计算机。 四、实验步骤(按照实际操作过程) 1、CCS软件仿真下,DSP程序的下载和运行。 第一步:安装CCS,如果不使用仿真器,CCS 的运行环境要设置成一个模拟仿真器(软仿真)。

第二步:运行CCS,进入CCS 开发环境。 第三步:打开一个工程。 将实验目录下的EXP01目录拷到D:\shiyan下(目录路径不能有中文),用[Project]\[Open]菜单打开工程,在“Project Open”对话框中选 EXP01\CPUtimer\CpuTimer.pjt,选“打开”, 第四步:编译工程。 在[Project]菜单中选“Rebuild All”,生成CpuTimer.out文件。 第五步:装载程序。 用[File]\[Load Program]菜单装载第四步生成CpuTimer.out文件,在当前工程目录中的Debug 文件夹中找到CpuTimer.out文件,选中,鼠标左键单击“打开”。

小鼠脾脏细胞原代培养及观察计数实验报告-山东大学

小鼠脾脏细胞原代培养及观察计数 【实验目的】 1.学习掌握细胞培养的基本原理以及具体方法,并对小鼠脾细胞进行原代培养; 2.掌握无菌操作的具体过程及无菌操作台的使用; 3.学习掌握染色法鉴别细胞的生死状态的原理及方法; 4.学习使用血球计数板对细胞总数及活细胞数进行计数; 【实验原理】 1.细胞培养 细胞培养指的是在无菌条件下,把动、植物细胞从组织中取出,在体外模拟体的生理环境,使离体的细胞在体外生长和繁殖,并且维持其结构和功能的一种培养技术。动物细胞培养可分为原代培养和传代培养。从供体获得组织细胞,在无菌条件下,用胰蛋白酶消化或机械分散等方法,将动物组织分散成单个细胞开始首次培养长出单层细胞的方法称为细胞的原代培养。当培养的动物细胞生长增殖达到一定密度,形成致密的单层细胞时,用胰蛋白酶将细胞消化分散成单细胞,从一个容器中以1:2或其他比例转移到另一个容器中扩大培养的方法,称为细胞的传代培养。传代培养的累计次数就是细胞的培养代数。 高等生物是由多细胞构成的整体,在整体条件下要研究单个细胞或某一群细胞在体的功能活动是十分困难的。但如果把活细胞拿到体外培养、增殖并进行观察和研究,则要方便和简单得多。被培养的动物细胞是非常好的实验对象和实验研究材料,对体外培养的活细胞进行研究可以帮助人类揭开生、老、病、死的规律,探索优生、抗衰老和防治各种疾病的途径和机制,也可以人为地诱导和改变细胞的遗传性状和特性,使其向有利于人类健康长寿的方向发展。因此动物细胞体外培养技术是研究细胞分子机制非常重要的实验手段,被广泛应用于医学、生物技术、基因工程等研究领域。 细胞培养的意义:具有其他生物技术无可比拟的优点;培养条件易改变和控制,便于单因子分析;便于人们直接对细胞结构、细胞生长及发育等过程的观察;在生物学的各个领域(如分子生物学、细胞生物学、遗传学、免疫学、肿瘤学及病毒学等)已被广泛应用。 细胞培养的局限性:在脱离机体复杂环境下,细胞培养条件与躯体环境有一定距离;观察到的结果有时难以正确反映机体的状况;细胞培养得到的产物少。 培养细胞的条件有水的质量、无菌环境,最适温度、渗透压、气体条件、最适PH、营养条件和培养基质等。 2.细胞死活鉴定 细胞生死状态的鉴别方法主要是化学染色法和荧光染色法。 活细胞和死亡细胞在生理技能和性质上主要存在一下差异: ①细胞膜通透性的差异:活细胞的细胞膜是一种选择性膜,对细胞起保护和屏障作用,只允许物质选择性地通过;而细胞死后,细胞膜受损,其通透性增加。基于此,发展出了以台盼蓝、伊红、苯胺黑、赤藓红、甲基蓝以及荧光染料碘化丙啶或溴化乙啶等为染料鉴别细胞生死状态的方法,上述染料能使死亡细胞着色,而活细胞不被着色。此外,应用植物质壁分离的性质也可鉴定植物细胞的生死状态。活细胞的原生质具有选择透过性,死细胞因其原生质的选择透过性已遭破坏,故与高渗透压溶液接触时不产生质壁分离。 ②代上的差异:活细胞中新代作用强,细胞的酶具有较强的活性和还原能力。基于此,发展处了以荧光素二乙酸酯(FDA)、荧光素二丙酸酯、荧光素二丁酸酯或荧光素二苯甲酰酯等酯化的荧光素鉴别细胞生死状态的方法,上述酯化的荧光素亲脂性提高,容易被细胞吸收进入,活细胞的酯酶具有较强的活性,可将酯化的荧光素分解而释放出能发荧光的荧光素,该物质不能自由透过活的细胞膜,积累在细胞,荧光显微镜下显示有明亮的绿色或黄绿色荧光;而死亡细胞的酯酶因失去活性,不能分解酯化的荧光素,荧光显微镜下显示不发光。另外,可用亚甲基蓝为染料鉴定酵母细胞的生死状态。亚甲基蓝是一无毒染料,氧化型为蓝色,还原型为无色。活细胞因具有较强的还原能力,能使亚甲蓝从蓝色的氧化型变成无色的还原型,故活的酵母细胞在用亚甲基蓝染色后显示无色;死亡酵母细胞或代缓慢的衰老酵母细胞,因无还原能力或还原能力极弱,使亚甲蓝仍处于氧化态,故呈现蓝色或淡蓝色。 3.血球计数板的使用

山东大学计算机网络实验报告

计算机网络试验报告 学院:计算机科学与技术学院 班级:13计基地

目录 一、实验简述 (3) 二、实验内容 (3) 实验一:双队列模型 (3) 一、实验模型 (3) 二、具体实现 (3) 三、结果展示 (4) 实验二:802.11 无线竞争模型 (6) 一、实验模型 (6) 二、具体实现 (6) 三、实验结果 (6) 1.图表结果 (6) 2.数据结果 (8) 三、实验感想 (8) 一、双队列单服务器 (8) 二、802.11无限竞争模型 (8)

一、实验简述 实验一要求采用尽量公平的调度算法,实现一个服务器服务2个队列的功能。且满足以下条件:到达包数是泊松过程(Poisson process);服务时间是指数分布(exponentially distributed);只有一部服务器(server);队列长度无限制;可加入队列的包数为无限。 实验二基于802.11协议采用二进制指数回退算法,没有中央控制器的调度算法实现对五个站的调度机制。要求尽可能达到公平。 二、实验内容 实验一:双队列模型 一、实验模型 本次计算机网络实验主要是关于服务器处理包的过程模拟,其中一个重要的基础排队模型是M/M/1 排队模型。M/M/1排队模型是一种单一服务器(single-server)的排队模型,有以下主要特点: 1.到达人数是泊松过程(Poisson process) 2.服务时间是指数分布(exponentially distributed) 3.只有一台服务器(server) 4.队列长度无限制 5.可加入队列的人数为无限 M/M/1排队模型在任何状态下,只有两种事情可能发生: 1.有人加入队列。如果模型在状态k,它会以速率λ进入状态k + 1 2.有人离开队列。如果模型在状态k(k不等于0),它会以速率μ进入状 态k -1 二、具体实现 1.赤字轮询算法 赤字轮询算法引入赤字的概念, 即在较长时间统计平均意义上平衡各条流所获得的吞吐量。因为各流之间不同业务造成的数据包大小的差异以及各流内部数据包大小的不同都可能造成在一个轮询周期内各虚拟队列所发送的字节数具有较大偏差。 DRR算法为每个虚拟队列维护一个赤字字节数, 使得本次轮询未能发送的字节会在下一次甚至下几次轮询过程中得到补偿。具体过程如下:将有

东南大学信息学院DSP课程第二次实验报告

数字信号处理第二次实验报告 --------IIR 数字滤波器的设计 姓名:印友进 学号:04012540 一、实验目的 (1)掌握双线形变换法及脉冲响应不变法设计IIR 数字滤波器的具体设计方法及其原理,熟悉用双线形变换法及脉冲响应不变法设计低通,高通和带通IIR 数字滤波器的计算机编程。 (2)观察双线形变换法及脉冲响应不变法设计的滤波器的频域特性,了解双线形变换法及脉冲响应不变法的特点。 (3)熟悉巴特沃思滤波器,切比雪夫滤波器和椭圆滤波器的频率特性。 二、实验原理 (1)脉冲响应不变法 用数字滤波器的单位脉冲响应序列()h n 模仿模拟滤波器的冲激响应()a h n ,让()h n 正好等于()a h n 的采样值,即()()a h n h n =,其中T 为采样间隔,如果以()a H n 及()H z 分别表示()a h n 的拉式变换及()h n 的Z 变换,则有 ) 2(1)(m T j s H T z H m a e z sT ∑∞-∞==+=π (2)双线性变换法 S 平面与z 平面之间满足以下映射关系: 1 1 1212,112 T s z s z T T z s --+ -=?= +- s 平面的虚轴单值地映射于z 平面的单位圆上,s 平面的左半平面完全映射到z 平面的单位圆内。 双线性变换不存在混叠问题。双线性变换是一种非线性变换(tan 2 2 T ω Ω= ),这种非线性引起的幅频特性畸变可通过预畸而得到校正。 IIR 低通、高通、带通数字滤波器设计采用双线性原型变换公式:

(3)实验中有关变量的定义 c r s f f At f T δ通带边界频率阻带边界频率通带波动 最小阻带衰减采样频率采样周期 (4)设计一个数字滤波器一般包括以下两步 a. 按照任务要求,确定滤波器性能指标 b. 用一个因果稳定的离散时不变系统的系统函数去逼近这一性能要求 (5)数字滤波器的实现 对于IIR 滤波器,其逼近问题就是寻找滤波器的各项系数,使其系统函数逼近一个所要求的特性。先设计一个合适的模拟滤波器,然后变换成满足约定指标的数字滤波器。 用双线形变换法设计IIR 数字滤波器的过程: a. 将设计性能指标中的关键频率点进行“预畸” b. 利用“预畸”得到的频率点设计一个模拟滤波器。 c. 双线形变换,确定系统函数 三、实验内容 (1)fc=0.3kHz ,δ=0.8dB ,fr=0.2kHz ,At=20dB ,T=1ms ;设计一切比雪夫高通滤波器,观察其通带损耗和阻带衰减是否满足要求。 源程序: clc,clear; % 预畸变,W=2/T*tan(w/2) % w 为数字角频率,w=2*pi*fc/fs

山东大学嵌入式实验报告

嵌入式实验报告 班级:电信工X班姓名:XXX 学号:20120012XXXX 实验一、ARM汇编指令实验-简单数据搬移实验 实验目的: 熟悉实验开发环境,掌握简单ARM汇编的使用方法 实验内容 熟悉开发环境并使用LDR/STR,MOV等指令访问寄存器或存储单元; 使用ADS/SUB/LSL/LSR/AND/ORR等指令完成基本数学/逻辑运算。 实验要求 (1)按照前面叙述介绍的方法,在ADS下创建一个工程asmlabl,定义两个变量x,y和堆栈地址0x1000,将变量x的内容存到堆栈顶,然后计算x+y,并将和存到堆栈的下一个单元。通过AXD查看寄存器和memory和寄存器中数据的变化。 (2)在指令后面加上适当注释,说明指令功能。 (3)指出程序执行后各相关寄存器及存储器单元的具体内容。 程序代码截图如下: 程序运行结果截图:

由实验结果可知堆栈的第二个单元中存放了x+y的值6D 练习题 编写程序实现对一段数据的最大值和最小值搜索,最大值存在于max变量之中,最小值存在于min变量之中。提示:数据的定义采用伪指令:DCD来实现。 基本思路:利用R0做基地址,将R1,R2分别放入第一单元的内容,利用R3做循环计数,利用R4遍历读取第2至最后一个数据,如果R1的数据小于新读入的R4数据则将R4的内容存入R1,如果R2的内容大于R4的内容则将R4的内容存入R2,。遍历完成之后,R1将存放最大数据,R2将存放最小数据。 程序代码截图如下: 程序运行结果截图:

实验二ARM汇编指令实验2-字符串拷贝实验 实验目的 通过实验掌握使用LDB/STB,b等指令完成较为复杂的存储区访问和程序分支,学会使用条件码。 实验内容

DSP实验报告

数字信号处理课程实验报告 题目:P30-2-6和P63-3-22-d 信道编码 专业:xxx 学号:xxx 姓名:xx

一、书上习题运算 一、实验内容 2.6一个特定的线性和时不变系统,描述它的差分方程如下:y(n)+0.1y(n-1)-0.06y(n-2) = x(n)-2x(n-1)求系统脉冲响应的前10个样本。 如果此系统输入为x(n)=[5+3cos(0.2πn)+4sin(0.6πn)]μ(n),在0≤n≤20求出y(n)的响应。 3.22计算下列序列的N点循环卷积z(n)。 D x1(n)=nR N(n);x2=(N-n)R N(n);N=10 二、实验程序代码 2.6程序: function[x,n]=impseq(np,ns,nf) if ns>np|ns>nf|np>nf error('输入位置参数不满足ns<=np<=nf') else n=[ns:nf]; x=[(n-np)==0]; end a=[1,0.1,0.06];b=[1-2]; x=impseq(0,0,20); h=filter(b,a,x); n=0:20; x=5+3*cos(0.2*pi*n)+4*sin(0.6*pi*n); y=conv(h,x) stem(y) 3.22程序: function y=circonvt(x1,x2,N) x1=[x1,zeros(1,N-length(x1))]; x2=[x2,zeros(1,N-length(x2))]; m=[0:N-1]; x2m=x2(mod(-m,N)+1); H=toeplitz(x2m,[0,x2(2:N)]); y=x1*H; n=0:9; x1=n; x2=10-n; y=circonvt(x1,x2,10) stem(y) 三、实验结果 2.6

山东大学微生物生理生化反应实验报告

山东大学实验报告2015年 12 月 7日 姓名黄新迪系年级2014级生科3班组别5 同组者高岩、国文洁、梁萧 科目微生物学实验题目微生物的生理生化反应 微生物的生理生化反应 一、【实验目的】 1. 证明不同微生物对各种有机大分子物质的水解能力不同,从而说明不同微生物有着不同的酶系统。 2.掌握进行微生物大分子物质水解试验的原理和方法。 3.了解糖发酵的原理和在肠细菌坚定中的重要作用。 4.掌握通过糖发酵鉴别不同微生物的方法。 5. 了解吲哚和甲基红试验的原理以及其在肠道细菌鉴定中的意义和方法。 二、【实验仪器与试剂】 菌种:枯草芽孢杆菌、大肠杆菌、铜绿假单胞菌、普通变形杆菌、产气肠杆菌 培养基:培养基:固体淀粉培养基、固体油脂培养基(大分子水解试验);葡萄糖发酵培养基、乳糖发酵培养基(内装有倒置的德汉氏小管)(糖发酵试验);蛋白胨水培养基(吲哚试验);葡萄 糖蛋白胨水培养基; 试剂:卢戈氏碘液、乙醚、吲哚试剂、甲基红试剂、蒸馏水、 仪器:酒精灯、接种针、培养皿、试管、试管架、烧杯、量筒、德汉氏小管 三、【实验原理】 1.在所有生活细胞中存在的全部生物化学反应称之为代谢,代谢过程主要是酶促反应过程,由于各种 微生物具有不同的酶系统,所以他们能利用的底物不同,或虽利用相同的底物但产生的代谢产物却不同,因此可以利用各种生理生化反应来鉴别不同的细菌,尤其是在肠杆菌科细菌的鉴定中,生理生化试验占有重要的地位。

2.淀粉的水解:由于微生物对淀粉这种大分子物质不能直接利用,必须靠产生的胞外酶将大分子物质 分解才能被微生物吸收利用.胞外酶主要为水解酶,通过加水裂解大的物质为较小的化合物,使其能被运输至细胞内.如淀粉酶水解淀粉为小分子的糊精,双糖和单糖;而淀粉遇碘液会产生蓝色,因此能分泌胞外淀粉酶的微生物,则能利用其周围的淀粉,在淀粉培养基上培养用碘处理其菌落周围不呈蓝色,而是无色透明圈,据此可分辨微生物能否产生淀粉酶。 3.油脂的水解:在油脂培养基上接种细菌,培养一段时间后观察菌苔的颜色,若出现红色斑点,则说 明此中菌可产生分解油脂的酶。 4. 糖发酵试验:糖发酵试验是常用的鉴别微生物的生化反应,在肠道细菌的鉴定上尤为重要.绝大多数 细菌都能利用糖类作为碳源和能源,但是它们在分解糖类物质的能力上有很大的差异.有些细菌能分解某种糖产生有机酸(如乳酸,醋酸,丙酸等)和气体(如氢气,甲烷,二氧化碳等);有些细菌只产酸不产气. 例如大肠杆菌能分解乳糖和葡萄糖产酸并产气。产酸后再加入溴甲酚指示剂后会使溶液呈黄色,且德汉氏小管中会收集到一部分气体。若细菌不能使糖产酸产气,则最后溶液为指示剂的紫色,且德汉氏小管中无气体。 5.IMVC实验主要用于快速鉴别大肠杆菌和产气肠杆菌。 (1)吲哚试验:是用来检测吲哚的产生,在蛋白胨培养基中,若细菌能产生色氨酸酶,则可将蛋白胨中的色氨酸分解为丙酮酸和吲哚,吲哚与对二甲基苯甲醛反应生成玫瑰色的玫瑰吲哚。但并 非所有的微生物都具有分解色氨酸产生吲哚的能力,所以吲哚实验可以作为一个生物化学检测 的指标。大肠杆菌吲哚反应阳性,产气肠杆菌为阴性。 (2)甲基红试验(MR):某些细菌在糖代谢过程中分解葡萄糖生成丙酮酸,后者进而被分解产生甲酸,乙酸和乳酸等多种有机酸,培养基就会变酸,使加入培养基中的甲基红指示剂由橙黄色转 变为红色,即甲基红反应。大肠杆菌为阳性,产气肠杆菌为阴性。 四、【实验步骤】

DSP实验报告

实验一 离散系统的时域分析 一、实验目的 1、掌握离散时间信号的MATLAB 表示; 2、信号运算; 3、差分方程的求解; 4、离散时间信号的卷积运算。 二、实验原理 1、离散时间信号 离散时间信号只在某些离散的瞬时给出函数值,而在其他时刻无定义。它是时间上不连续按一定先后次序排列的一组数的集合,称为时间序列,用x(n)表示,n 取整数代表时间的离散时刻。 在matlab 中用向量来表示一个有限长度的序列。 2、序列的类型 为了分析的方便,在数字信号处理中规定了一些基本的序列。 a) 单位采样序列 function [x,n]=impseq(n1,n2,n0) n=[n1:n2]; x=[(n-n0)==0]; 调用该函数 [x,n]=impseq(-2,8,2); stem(n,x) 0010()001()0n n n n n n n n n δδ =?=? ≠? =?-? ≠?

单位采样序列的另一种生成方法 n0=-2; n=[-10:10]; nc=length(n); x=zeros(1,nc); for i=1:nc if n(i)==n0 x(i)=1 end end stem(n,x) b) 单位阶跃序列 function [x,n]=stepseq(n1,n2,n0) n=[n1:n2]; x=[(n-n0)>=0]; 调用该函数 [x,n]=stepseq(-2,8,2); stem(n,x) 000 10()001()0n n n n n n n n n εε >=?=? =?-?

c) 实数指数序列 x(n)=an (运算符“.^”) n=[0:10]; x=0.9.^n; stem(n,x) d) 复数指数序列 n=[-10:10]; alpha=-0.1+0.3*j; x=exp(alpha*n); real_x=real(x); image_x=imag(x); mag_x=abs(x); phase_x=angle(x); subplot(2,2,1); stem(n,real_x) subplot(2,2,2); stem(n,image_x) subplot(2,2,3); stem(n,mag_x) subplot(2,2,4); stem(n,phase_x) ()()j n x n e αω+=(0.1j0.3)n x(n)e (10n 10) -+= -<<

山东大学嵌入式实验报告

嵌入式实验报告 班级:电信工X班姓名:XXX 学号:20120012XXXX 实验一、ARM汇编指令实验-简单数据搬移实验 实验目的: 熟悉实验开发环境,掌握简单ARM汇编的使用方法 实验内容 熟悉开发环境并使用LDR/STR,MOV等指令访问寄存器或存储单元; 使用ADS/SUB/LSL/LSR/AND/ORR等指令完成基本数学/逻辑运算。 实验要求 (1)按照前面叙述介绍的方法,在ADS下创建一个工程asmlabl,定义两个变量x,y和堆栈地址0x1000,将变量x的内容存到堆栈顶,然后计算x+y,并将和存到堆栈的下一个单元。通过AXD查看寄存器和memory和寄存器中数据的变化。 (2)在指令后面加上适当注释,说明指令功能。 (3)指出程序执行后各相关寄存器及存储器单元的具体内容。 程序代码截图如下: 程序运行结果截图:

由实验结果可知堆栈的第二个单元中存放了x+y的值6D 练习题 编写程序实现对一段数据的最大值和最小值搜索,最大值存在于max变量之中,最小值存在于min变量之中。提示:数据的定义采用伪指令:DCD来实现。 基本思路:利用R0做基地址,将R1,R2分别放入第一单元的内容,利用R3做循环计数,利用R4遍历读取第2至最后一个数据,如果R1的数据小于新读入的R4数据则将R4的内容存入R1,如果R2的内容大于R4的内容则将R4的内容存入R2,。遍历完成之后,R1将存放最大数据,R2将存放最小数据。 程序代码截图如下: 程序运行结果截图:

实验二 ARM 汇编指令实验2-字符串拷贝实验 实验目的 通过实验掌握使用LDB/STB ,b 等指令完成较为复杂的存储区访问和程序分支,学会使用条件码。 实验内容

相关文档
最新文档