当前位置:文档之家› DSP实验手册 实验六 音频的输入与输出实验

DSP实验手册 实验六 音频的输入与输出实验

DSP实验手册 实验六 音频的输入与输出实验
DSP实验手册 实验六 音频的输入与输出实验

实验六音频的输入与输出实验

一.实验目的:

1.了解CODEC工作的基本原理,了解编码与解码的过程;

2.理解DSP的MCBSP的工作原理,了解SPI方式;

3.熟悉DSP与CODEC(TLV320AIC23B)的控制与数据传输的过程。

4.熟悉宏函数实现对MCBSP的设置;

5.掌据FLASH的操作过程;

二.实验内容:

1. DSP的初始设置;

2. DSP中断项量表的建立;

3.异步通讯;

4. CODEC的输入与输出;

5. FLASH的操作;

三.实验背景知识:

LV320AIC23B的介绍:

TLV320AIC23B(以下简称AIC23)是TI推出的一款高性能的立体声音频Codec芯片,内置耳机输出放大器,支持MIC和LINE IN两种输入方式(二选一),且对输入和输出都具有可编程增益调节。AIC23的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigma-delta过采样技术,可以在8K到96K的频率范围内提供16bit、20bit、24bit和32bit的采样,ADC和DAC的输出信噪比分别可以达到90dB和100dB。与此同时,AIC23还具有很低的能耗,回放模式下功率仅为23mW,省电模式下更是小于15uW。AIC23的管脚和内部结构框图如下:

1.音频接口:

主要连接为:

BCLK:数字音频接口时钟信号(bit时钟),AIC23工作在主模式,该时钟由AIC23产生;

LRCIN:数字音频接口DAC方向的帧信号;

LRCOUT:数字音频接口ADC方向的帧信号;

DIN:数字音频接口DAC方向的数据输入;

DOUT:数字音频接口ADC方向的数据输出;

这部分可以和DSP的McBSP(Multi-channel buffered serial port,多通道缓存串口)无缝连接,唯一要注意的地方是McBSP的接收时钟和AIC23的BCLK都由AIC23来提供,连接示意图如下:

2.麦克风输入接口:

主要管脚为

MICBIAS:提供麦克风偏压,通常是3/4 AVDD

MICIN-麦克风输入,由AIC结构框图可以看出放大器默认是5倍增益

连接示意图如下:

3. LINE IN输入接口:

主要管脚为:

LLINEIN:左声道LINE IN输入;

RLINEIN:右声道LINE IN输入;

连接示意图如下:

4.耳机输出接口:

主要管脚为

LHPOUT:左声道耳机放大输出

RHPOUT:右声道耳机放大输出

LOUT:左声道输出

ROUT:右声道输出

从框图可以看出,LOUT和ROUT没有经过内部放大器,所以设计中常用LHPOUT 和RHPOUT,连接示意图如下:

5.配置接口:

主要管脚为

SDIN:配置数据输入

SCLK:配置时钟

DSP通过该部分配置AIC23的内部寄存器,每个word的前7bit为寄存器地址,后9bit为寄存器内容。具体方法和寄存器具体内容见后。

6.其他:

主要管脚为

MCLK:芯片时钟输入(12M)

VMID:半压输入,通常由一个10U和一个0.1U电容并联接地

MODE:芯片工作模式选择,Master CS-片选信号(配置时有效)

CLKOUT:时钟输出,可以为MCLK或者MCLK/2(详见寄存器配置)

7.与AIC23配置接口的连接

AIC23的配置采用SPI模式。通常比较简单的办法是利用DSP的一个McBSP用SPI模式跟AIC23连接。SPI时序图如下:

8. DSP与AIC23的连接采用DSP模式,帧信号宽度为一个bit长,比如在字长16bit (即左右声道的采样各为16bit),帧长为32bit的情况下,采用DSP Mode帧信

号宽度1bit即可。

四.实验程序功能与结构说明:

在音频输入与输出实验中,主要包含以下文件:

1. audiorec.c:这是实验的主程序,包含了系统的初始化,主要是异步串口的初始化、MCBSP的初始化、以及系统时钟的设置;与SEED-MMI5402系统的异步通讯、

对CODEC、FLASH的操作。

2. dec5416.c:对SEED-DEC5416各项资源的操作的函数集,主要包含了对UART 的操作的各个函数,对CODEC的各个控制函数。以及对系统各项的初始化函数。

3. boot.asm:C环境的引导程序;

4. memory.asm:包含了对FLASH的各项操作、程序空间MEMORY的读写。

5. sysreg.asm:包含了对DSP的各项控制,像中断的设置、系统时钟设置、及各项寄存器的操作。

6. uart.asm:对异步串口的寄存器的读与写。

7. vector.asm:包含了VC5416的中断向量表。

8. dec5416.cmd:声明了系统的存贮器配置与程序各段的连接关系。

9. vc54x.inc: 声明了VC54x系列DSP的片内寄存器的地址与设置的常量定义。

10.d ec5416.inc:定义了SEED-DEC5416模板上资源的地址与设置的常量定义。

11.*.h:各子函数的头文件。

在音频输入与输出实验中实现如下功能:

程序运行后,经过DSP与异步串口初始化及CODEC初始化后,系统查询主机的命令。当系统发送试听命令时,SEED-DEC5416将CODEC的输入采样后的数据,发送到音频输出。当系统发送CODEC设置命令时,SEED-DEC5416进行CODEC的设置。当系统发送录音命令时,首先将存贮音频部分的FLASH空间先进行块擦除,然后将输入采样的数据一一写入到FLASH中。当系统发送回放功能命令时,SEED-DEC5416将FLASH中的音频

数据进行循环回放。以及处理系统复位命令与通讯出错的故障。

五.实验程序流程图:

以下是音频实验的程序框图。

六.实验要求:

通过音频输入与输出实验,了解对VC5416的MCBSP的设置;掌握CODEC的各个寄存器的设置;掌握对FLASH的读写操作。

七.实验步骤:

1.实验的演示:

在脱机(不接CCS)的情况下,可以首先进行实验的演示。在SEED-DTK5416的实验选项的菜单下,选择音频实验一项。等待装载程序后,可按菜单操作,完

成音频实验的演示。

2.实验的调试:

1) 将DSP仿真器与计算机连接好;

2) 将DSP仿真器的JTAG插头与SEED-DEC54xx单元的J8相连接;

3) 启动计算机,当计算机启动后,打开SEED-DTK5416的电源。观察DTK-IO

单元的+5V、+3.3V、+15V、-15V的电源指示灯是否均亮;若有不亮的,

请断开电源,检查电源。

4) 等待LCD显示器上出现“音频实验程序引导完成。”之后,打开CCS,进入

CCS的操作环境。

5) 装入DTK-REV.wks调试环境,进行调试。注意观察定时器的三个寄存器的

变化。与中断的运行情况。

实验四 输入输出流程序设计

C++面向对象程序设计课程实验报告 课程名称C++面向对象程序设计班级实验日期2014.5.16-2012 .5.23 姓名学号实验成绩实验名称实验四输入输出流程序设计 实验目的及要求1.理解输入输出流的基本概念,明确流是一个类 2.了解输入输出流类库基本结构和主要类,掌握主要层次,其中重 点理解fstream,iostream和iomanip 3.理解流缓冲区类的派生关系以及设备缓冲、文件缓冲和流缓冲 4.熟悉格式化的输入和输出,记住主要的常用的操作符,以及各种 应用(对齐) 掌握文件的输入和输出,区别C语言中的文件写入、打开等操作,会对一个文件进行I/O操作 实验环境硬件平台:普通的PC机 软件平台:Windows 操作系统编程环境:VisualC++ 6.0 实验内容1.文件数据的读取。编制一程序来显示并保存[2,1000]内的所有素数。显示、保存素数的格式为:每行10个素数,每一个素数占7个字符,右对齐,最后一行不足10个素数时按一行输出 2.编写一个单向链表的类模板,分别实现增加、删除、查找和打印操作 算法描述及实验步骤1、这个题主要考察了文件中数据的读取,还包括数据格式化输入输出。首先定义一个ofstream类的对象output,在main函数中打开文件后,再分别编写判断素数、每行输出10个数以及使辖域为7的代码,最后关闭文件。 2 这个题是C++与数据结构的结合,实现单向链表内各种功能。首先定义一个类ListNode,然后利用前插入法初始化链表,编写类模板的成员函数,再分别进行增加、删除和查找的操作

调试过程及实验结果 总结1.一旦文件被打开,文件中的文本数据信息的读/写操作与控制台文件信息的输入/输出操作就完全一致 2.定义ifstream、ofstream、fstream流类对象时,应用对象名替代控制台文本信息输入/输出使用的输入流类对象(如cin)和输出流类对象(如cout)

微机原理简单输入输出实验报告

东南大学 《微机实验及课程设计》 实验报告 实验四(1)简单输入输出 一. 实验目的与内容 (一)实验目的 1)进一步掌握TPC实验装置的基本原理和组成结构; 2)掌握利用I/O指令单步调试检查硬件接口功能,学会利用示波器检测I/O指令执行时总线情况; 3)掌握简单并行输入输出接口的工作原理及使用方法,进一步熟悉掌握输入输出单元的功能

和使用。 (二)实验内容及要求 1、输出接口输出,根据8个发光二极管发光的情况验证编程从键盘输入一个字符或数字,将其ASCII码通过正确性。(输出端口实验必做) 2、用逻辑电平开关预置某个字母的ASCII码,编程输入这个ASCII码,并将其对应字母在屏幕上显示出来。(输入端口实验必做) 3、利用基本实验(1)中的输出锁存电路,设计L0~L7为流水灯,流水间隔时间由软件产生。(输出端口实验) 4、利用基本实验(2)中的输入电路,监测逻辑电平开关K0~K7的变换,当开关状态为全开时,在屏幕上显示提示信息并结束程序。(输入端口实验) 要求: 1、输入输出端口应该可以响应外设的连续变化。 2、输出按ESC键退出;输入按任意键退出。 3、内容3、4比做一题,选做一题 二. 实验基本原理 (一)基本原理 简单并行输出实验:八D触发器74LS273的八个输入端接数据总线D0~D7,从键盘输入一个字符或数字,通过2A8H~输出接口输出该字符或者数字代表的ASCII码,再通过8个发光二极管发光显示二进制数码,从而验证编程以及电路的正确性。 简单并行输入实验:八缓冲器74LS244的八个输出端接数据总线D0~D7,8个输入端分别接逻辑电平开关K0~K7,在逻辑电平开关上预置任意字符的ASCII码,编程将此ASCII码通过2A0H~输入,ASCII码对应字符显示在屏幕上,从而验证编程及电路的正确性。 (二)实验接线图

数字信号处理实验一

实验一 离散时间信号分析 班级 信息131班 学号 201312030103 姓名 陈娇 日期 一、实验目的 掌握两个序列的相加、相乘、移位、反褶、卷积等基本运算。 二、实验原理 1.序列的基本概念 离散时间信号在数学上可用时间序列)}({n x 来表示,其中)(n x 代表序列的第n 个数字,n 代表时间的序列,n 的取值范围为+∞<<∞-n 的整数,n 取其它值)(n x 没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号)(t x a 进行等间隔采样,采样间隔为T ,得到)}({nT x a 一个有序的数字序列就是离散时间信号,简称序列。 2.常用序列 常用序列有:单位脉冲序列(单位抽样)) (n δ、单位阶跃序列)(n u 、矩形序列)(n R N 、实指数序列、复指数序列、正弦型序列等。 3.序列的基本运算 序列的运算包括移位、反褶、和、积、标乘、累加、差分运算等。 4.序列的卷积运算 ∑∞ -∞==-= m n h n x m n h m x n y )(*)()()()( 上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。 (1)反褶:先将)(n x 和)(n h 的变量n 换成m ,变成)(m x 和)(m h ,再将)(m h 以纵轴为对称轴反褶成)(m h -。

(2)移位:将)(m h -移位n ,得)(m n h -。当n 为正数时,右移n 位;当n 为负数时,左移n 位。 (3)相乘:将)(m n h -和)(m x 的对应点值相乘。 (4)求和:将以上所有对应点的乘积累加起来,即得)(n y 。 三、主要实验仪器及材料 微型计算机、Matlab6.5 教学版、TC 编程环境。 四、实验内容 (1)用Matlab 或C 语言编制两个序列的相加、相乘、移位、反褶、卷积等的程序; (2)画出两个序列运算以后的图形; (3)对结果进行分析; (4)完成实验报告。 五、实验结果 六、实验总结

数字信号处理实验一

一、实验目的 1. 通过本次实验回忆并熟悉MATLAB这个软件。 2. 通过本次实验学会如何利用MATLAB进行序列的简单运算。 3. 通过本次实验深刻理解理论课上的数字信号处理的一个常见方法——对时刻n的样本附近的一些样本求平均,产生所需的输出信号。 3. 通过振幅调制信号的产生来理解载波信号与调制信号之间的关系。 二、实验内容 1. 编写程序在MATLAB中实现从被加性噪声污染的信号中移除噪声的算法,本次试验采用三点滑动平均算法,可直接输入程序P1.5。 2. 通过运行程序得出的结果回答习题Q1.31-Q1.33的问题,加深对算法思想的理解。 3. 编写程序在MATLAB中实现振幅调制信号产生的算法,可直接输入程序P1.6。 4. 通过运行程序得出的结果回答习题Q1.34-Q1.35的问题,加深对算法思想的理解。 三、主要算法与程序 1. 三点滑动平均算法的核心程序: %程序P1.5 %通过平均的信号平滑 clf; R=51; d=0.8*(rand(R,1)-0.5);%产生随噪声 m=0:R-1; s=2*m.*(0.9.^m);%产生为污染的信号 x=s+d';%产生被噪音污染的信号 subplot(2,1,1); plot(m,d','r-',m,s,'g--',m,x,'b-.');

xlabel('时间序号n');ylabel('振幅'); legend('d[n]','s[n]','x[n]'); x1=[0 0 x];x2=[0 x 0];x3=[x 0 0]; y=(x1+x2+x3)/3; subplot(2,1,2); plot(m,y(2:R+1),'r-',m,s,'g--'); legend('y[n]','s[n]'); xlabel('时间序号n');ylabel('振幅'); 2. 振幅调制信号的产生核心程序:(由于要几个结果,因此利用subplot函数画图) %程序P1.6 %振幅调制信号的产生 n=0:100; m=0.1;fH=0.1;fL=0.01; m1=0.3;fH1=0.3;fL1=0.03; xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n); y=(1+m*xL).*xH; xH1=sin(2*pi*fH1*n); xL1=sin(2*pi*fL1*n); y1=(1+m1*xL).*xH; y2=(1+m*xL).*xH1; y3=(1+m*xL1).*xH; subplot(2,2,1); stem(n,y); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.1;fH=0.1;fL=0.01;'); subplot(2,2,2); stem(n,y1); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.1;fL=0.01;'); subplot(2,2,3); stem(n,y2); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.3;fL=0.01;'); subplot(2,2,4); stem(n,y3); grid;

实验04Java输入输出流报告材料

实验四 Java 输入输出流 1.实验目的 (1) 掌握输入输出流的总体结构; (2) 掌握流的概念; (3) 了解各种流(包括文件流、过滤流、对象的序列化、随机访问)的使用。2.实验内容 实验题1 编写一个Java Application程序,打印命令行输入的所有参数。 [基本要求] 编写完整程序。 运行结果: 代码如下: import java.util.Scanner; public class CommandOutPut { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Please input :"); Scanner in = new Scanner(System.in);

String str = in.nextLine(); System.out.println("The output results :"); System.out.println(str); in.close(); } } 实验题2 通过键盘输入路径,搜索指定路径下的全部内容。 运行结果: 代码如下: package https://www.doczj.com/doc/d27698350.html,.output; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class Output { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String fileName = "d:\\xxx.txt"; File file = new File(fileName); byte[] b=new byte[(int)file.length()]; FileInputStream out=new FileInputStream(file);

单片机数字量输入输出实验

一、实验目的 1.熟悉教学板电路及其结构。 2.掌握利用μVision C51 软件编辑、调试(包括仿真调试、单步调试)、运行单片机程序的步骤和方法,掌握利用STC-ISP V39软件和下载线将程序写入单片机的方 法。 3.通过实验熟悉51单片机的并行I/O口,并掌握它们的应用。 4.掌握矩阵键盘、LED动态显示的工作原理。 二、实验设备 PC机一台、实验教学板一块。 三、实验内容 1.实验线路如附图所示,51单片机的P0口输出接8个发光二极管的阴极,P 2.4经NPN 三极管9011控制发光管的阳极。P3口支持一个8位行列式键盘,其中P 3.4~P3.7供键盘扫描输出,P3.2、P3.3作键盘扫描输入。 实验要求:编程实现键盘对发光二极管的控制,每按一个按键,使对应的二极管点亮。 2.51单片机P0口输出同时接4个数码管的阴极,P2.0~P2.3,经NPN三极管9011接数码管的阳极,该端口用于分别控制相应数码管的导通。 实验要求:编程实现对任意按键动作的次数进行计数(最大99次),同时将计数值实时显示。 四、实验步骤 1.将实验板与PC机通过COM口连接。启动PC机,进入μVision软件环境,选择建立 新工程文件,即可开始输入源程序。 2.完成汇编、编译、连接,若有错误,则修改源程序,直至编译、连接通过为止。 3.接上实验板上的电源。 4.运行“STC-ISP V39.EXE”,将程序代码下载到实验板的单片机中。操作的顺序是:1)选择单片机(MCU TYPE)型号。 如:“STC89C51RC”要与实验板上所装单片机的型号一至。 2)打开文件(Open File)。 即把要下载到单片机的程序文件(已通过编译了的机器码文件——二进制(.Bin)或十六进制(.Hex)的)调到“文件缓冲区”,这时可看到右边的“文件缓冲区”有数字变化。 3)选择串行通信口。 选对时,软件上的小灯会变绿。否则小灯是灰色。且在左下窗口提示“出错信息”。 4)下载:按“Download/下载”按键下载。 5)把实验板上的供电的直流电源拔掉或关掉3秒钟再插入或打开电源(为单片机上电复位)。 5.观察单片机运行情况,验证程序是否能完成题目给出的控制要求,若不能达到要求,分析原因、查找错误,修改源程序,再次汇编、连接,重新下载、运行,直至达到题目的控制要求。 五、遇到的问题及原因: 1.实验一,把程序烧进单片机后,发现按键时,LED灯乱亮,经检查是LED等亮的数

数字信号处理实验

实验一 离散傅里叶变换(DFT )对确定信号进行谱分析 一.实验目的 1.加深对DFT 算法原理和基本性质的理解。 2.熟悉DFT 算法和原理的编程方法。 3.学习用DFT 对信号进行谱分析的方法,了解可能出现的误差及其原因,以便在实际中正确利用。 二.实验原理 一个连续信号)(t x a 的频谱可以用其傅里叶变换表示,即 dt e t x j X t j a a Ω-∞ ∞ -? = Ω)()( 若对)(t x a 进行理想采样可得采样序列 )(|)()(nT x t x n x a nT t a === 对)(n x 进行DTFT ,可得其频谱为: ∑∞ -∞ =-= n n j j e n x e X ωω )()( 其中数字频率ω与模拟频率Ω的关系为: s f T Ω = Ω=ω )(n x 的DFT 为∑∞ -∞ =-= n nk N j e n x k X π 2)()( 若)(t x a 是限带信号,且在满足采样定理的条件下,)(ω j e X 是)(Ωj X a 的周期延拓, )(k X 是)(ωj e X 在单位圆上的等间隔采样值,即k N j e X k X πωω2| )()(= =。 为在计算机上分析计算方便,常用)(k X 来近似)(ω j e X ,这样对于长度为N 的有限 长序列(无限长序列也可用有限长序列来逼近),便可通过DFT 求其离散频谱。 三.实验内容 1.用DFT 对下列序列进行谱分析。 (1))()04.0sin(3)(100n R n n x π=

1 (2)]0,0,0,0,0,0,0,0,1,1,1,1[)(=n x 2.为了说明高密度频谱和高分辨率频谱之间的区别,考察序列 )52.0cos()48.0cos()(n n n x ππ+= (1)当0≤n ≤10时,确定并画出x(n)的离散傅里叶变换。 (2)当0≤n ≤100时,确定并画出x(n)的离散傅里叶变换。 四.实验结果 1. (1) (2)

数字信号处理实验作业

实验6 数字滤波器的网络结构 一、实验目的: 1、加深对数字滤波器分类与结构的了解。 2、明确数字滤波器的基本结构及其相互间的转换方法。 3、掌握用MA TLAB 语言进行数字滤波器结构间相互转换的子函数及程序编写方法。 二、实验原理: 1、数字滤波器的分类 离散LSI 系统对信号的响应过程实际上就是对信号进行滤波的过程。因此,离散LSI 系统又称为数字滤波器。 数字滤波器从滤波功能上可以分为低通、高通、带通、带阻以及全通滤波器;根据单位脉冲响应的特性,又可以分为有限长单位脉冲响应滤波器(FIR )和无限长单位脉冲响应滤波器(IIR )。 一个离散LSI 系统可以用系统函数来表示: M -m -1-2-m m m=0 012m N -1-2-k -k 12k k k=1 b z b +b z +b z ++b z Y(z)b(z)H(z)=== =X(z)a(z) 1+a z +a z ++a z 1+a z ∑∑ 也可以用差分方程来表示: N M k m k=1 m=0 y(n)+a y(n-k)=b x(n-m)∑∑ 以上两个公式中,当a k 至少有一个不为0时,则在有限Z 平面上存在极点,表达的是以一个IIR 数字滤波器;当a k 全都为0时,系统不存在极点,表达的是一个FIR 数字滤波器。FIR 数字滤波器可以看成是IIR 数字滤波器的a k 全都为0时的一个特例。 IIR 数字滤波器的基本结构分为直接Ⅰ型、直接Ⅱ型、直接Ⅲ型、级联型和并联型。 FIR 数字滤波器的基本结构分为横截型(又称直接型或卷积型)、级联型、线性相位型及频率采样型等。本实验对线性相位型及频率采样型不做讨论,见实验10、12。 另外,滤波器的一种新型结构——格型结构也逐步投入应用,有全零点FIR 系统格型结构、全极点IIR 系统格型结构以及全零极点IIR 系统格型结构。 2、IIR 数字滤波器的基本结构与实现 (1)直接型与级联型、并联型的转换 例6-1 已知一个系统的传递函数为 -1-2-3 -1-2-3 8-4z +11z -2z H(z)=1-1.25z +0.75z -0.125z 将其从直接型(其信号流图如图6-1所示)转换为级联型和并联型。

C++输入输出流实验报告

深圳大学实验报告 实验课程名称:程序设计实验与课程设计 实验项目名称:实验10 C++流输入与流输出 学院:计软专业:计科 报告人:学号:班级: 3 同组人:无 指导教师:朱安民 实验时间:2014年6月16日提交时间:2014年6月16 声明: 本次实验内容由报告人和同组人独立完成,所有涉及到他人的工作均已说明。报告人和同组人均同意教师及学校为教学活动而引用本实验的内容,且无需事先征得同意和特别说明。 教务处制

一、实验目的 1.掌握标准输入输出(iostream库中标准对象cin、cout)的使用 2.掌握IO流类成员函数输入输出(cin.get, cin.getline, cin.read; cout.put, cout.write)的使用 3.掌握输出格式(标准控制符、IO流类成员函数、iomanip头文件中的控制符)控制方法 4.掌握磁盘文件的输入输出方法 二、实验说明和实验环境 1.在奥特曼类的基础上,编写一个程序,重载运算符“》”和“《”,使得用户可以直接(格式化)输出奥特曼的状态。在主程序中输入若干个(3个)奥特曼的状态,并分别将它们保存到文件RecordU.txt中。然后读取并显示文件中的内容。 2.奥特曼和怪物都具有属性:等级, 生命, 攻击, 经验, 金钱,都具有方法:初始化initial和显示状态display 在奥特曼的初始化中,需要接受外来等级参数,生命, 攻击的数值初始化为等级的10倍,金钱为等级的100倍,经验恒为0 在怪兽的初始化中,需要接受外来等级参数,生命, 攻击的数值初始化为等级的8倍,经验为等级的80倍,金钱为等级的800倍 对怪兽和奥特曼的状态输出采用运算符《重载的方法,并结合display方法使用,注意本题目要求怪兽和奥特曼的状态输出必须使用重载运算符《,不能直接使用display方法。 注意:为了实现运算符《重载,需要包含头文件 经常天降怪石会砸中奥特曼或怪兽,如果被幸运石砸中,就会处于“鸿运当头”状态,被砸对象除等级外其它属性全部翻倍;如果被厄运石砸中,就会陷入“倒霉透顶”状态,被砸对象除等级外其它属性全部减半。把“鸿运当头”封装成操作,并用重载运算符++来实现;“倒霉透顶”封装成操作,并用重载运算符--来实现。两个重载都需要用友元方法。 3.奥特曼和怪物经过一番战斗斗,需要中场休息,休息时把各自的属性值存放到一个文件中,休息结束时需要从文件中读取之前的状态继续战斗。 奥特曼和怪物都具有属性:等级, 生命, 攻击, 经验, 金钱,都具有方法:初始化initial和显示状态display 奥特曼和怪兽的属性值均来自于文件(文件的第一行是奥特曼的数据,初始状态为:等级是8,生命, 攻击的数值初始化为等级的10倍,金钱为等级的100倍,经验恒为0,文件的第二行是怪兽的数据,初始状态为等级是4,生命, 攻击的数值初始化为等级的8倍,经验为等级的80倍,金钱为等级的800倍)对怪兽和奥特曼的状态输出采用运算符《重载的方法,并结合display方法使用,注意本题目要求怪兽和奥特曼的状态输出必须使用重载运算符《,不能直接使用display方法。 把信息直接从文件读出来并赋值给奥特曼和怪兽,需要重载》运算符作为友元; 把奥特曼和怪兽的值写入文件,要求重载《运算符作为友元

实验四:串行接口输入输出实验

实验四串行接口输入输出实验 一、实验目的 1、学习TEC-2000教学计算机I/O接口扩展的方法; 2、学习串行通信的基本知识,掌握串行通信接口的设置和使用方法。 二、实验说明 1、TEC-2000教学机配置了两个串行接口COM1和COM2,其中COM1口是系统默认的串行接口,上电复位后,监控程序对其进行初始化,并通过COM1与PC机终端相连,监控程序负责对COM1进行管理。COM2口预留给实验者扩展使用,监控程序不对COM2进行任何处理,实验者需要对COM2进行初始化、使用和管理。 2、实验前查阅有关资料,了解可编程串行通信接口芯片8251的工作原理,了解8251复位、初始化、数据传输过程控制等方面的知识。注意,①每次对8251复位后(即按了“RESET”键),都需要对其进行初始化,然后再进行正常的数据传输;②每次复位后,只能对8251进行1次初始化,多次初始化将导致串口工作不正常。 3、在使用COM2口时,需要将两片8251芯片之间的跳线短接(缺省状态),以便为COM2正常工作提供所需的控制信号和数据;此外,还需要为其分配端口地址。教学机已将COM2口的C/(/D)与地址总线的最低位A0相连,但片选信号/CS未连,只引出1个插孔,实验时,应将该插孔与标有“I/O /CS”的7个插孔中的1个相连。 三、实验内容 1、为扩展I/O口选择一个地址,即将8251的/CS与标有I/O /CS的一排插孔中的一个相连。 2、将COM2口与终端或另一台运行有PCEC16的PC机的串口相连。 3、用监控程序的A命令,编写一段小程序,先初始化COM2口,再向COM2口发送一些字符,也可从COM2口接收一些字符,或实现两个串口的通信。 四、实验要求 应了解监控程序的A命令只支持基本指令,扩展指令应用E命令将指令代码写入到相应的存储单元中。 五、实验步骤 1、为扩展I/O接口选择一个地址,将8251的/CS与标有I/O /CS的插孔中地址为90~9F的插孔相连; 2、将教学机COM1口与微机PC1相连,在PC1上运行PCEC16.EXE,进入联机状态后保持PCEC的运行状态; 3、断开教学机COM1与PC1的串口线,将其连接到另一台微机PC2的串口上,在PC2上运行PCEC16.EXE联机; 4、用另一条串口线将PC1与教学机的COM2接口相连。 5、与COM1相连的PC2作为主PC,在主PC2上输入程序,和COM2连接的从PC1只作数据输入输出; 6、在主PC上用A、E命令编程对实验机的COM2口进行操作。 1)程序1:初始化COM2口 主PCEC在命令行提示符状态下输入: A 2000 从2000H单元开始输入下面的程序: 2000:MVRD R0,004E ;给R0赋值004E(8251模式寄存器参数) 2002:OUT 91 ;将R0的值输出到COM2口中8251的模式寄存器(地址为0091H) 2003:MVRD R0,0037 ;给R0赋值0037(8251控制寄存器参数) 2005:OUT 91 ;将R0的值输出到COM2口中8251的控制寄存器(地址同为0091H) 2006:RET 在命令行提示符状态下输入G 2000运行初始化程序,完成对COM2口的初始化。注意:每次按“RESET”按键后,在对COM2进行读写操作之前,都应运行该程序。注意,按一次“RESET”按键后,只能对COM2口进行一次初始化操作。 2)程序2:从与COM2口相连的PC输入字符串,在与COM1口相连的PC上显示该字符串。 主PCEC在命令行提示符状态下输入:

数字信号处理实验答案完整版

数字信号处理实验答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

实验一熟悉Matlab环境 一、实验目的 1.熟悉MATLAB的主要操作命令。 2.学会简单的矩阵输入和数据读写。 3.掌握简单的绘图命令。 4.用MATLAB编程并学会创建函数。 5.观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 clear all; a=[1 2 3 4]; b=[3 4 5 6]; c=a+b; d=a-b; e=a.*b; f=a./b; g=a.^b; n=1:4; subplot(4,2,1);stem(n,a); xlabel('n');xlim([0 5]);ylabel('A'); subplot(4,2,2);stem(n,b); xlabel('n');xlim([0 5]);ylabel('B'); subplot(4,2,3);stem(n,c); xlabel('n');xlim([0 5]);ylabel('C'); subplot(4,2,4);stem(n,d); xlabel('n');xlim([0 5]);ylabel('D'); subplot(4,2,5);stem(n,e); xlabel('n');xlim([0 5]);ylabel('E'); subplot(4,2,6);stem(n,f); xlabel('n');xlim([0 5]);ylabel('F'); subplot(4,2,7);stem(n,g); xlabel('n');xlim([0 5]);ylabel('G'); (2)用MATLAB实现下列序列: a) x(n)= 0≤n≤15 b) x(n)=e+3j)n 0≤n≤15 c) x(n)=3cosπn+π)+2sinπn+π) 0≤n≤15 d) 将c)中的x(n)扩展为以16为周期的函数x(n)=x(n+16),绘出四个周期。

数字信号处理实验4-6

实验4 离散系统的变换域分析 一、实验目的 1、熟悉对离散系统的频率响应分析方法; 2、加深对零、极点分布的概念理解。 二、实验原理 离散系统的时域方程为 其变换域分析方法如下: 频域: 系统的频率响应为: Z域: 系统的转移函数为:

分解因式: , 其中和称为零、极点。 三、预习要求 1.在MATLAB中,熟悉函数tf2zp、zplane、freqz、residuez、zp2sos的使用,其中:[z, p,K]=tf2zp(num,den)求得有理分式形式的系统转移函数的零、极点;zplane(z,p)绘制零、极点分布图;h=freqz(num,den,w)求系统的单位频率响应;[r,p,k]=residuez (num,den)完成部分分式展开计算;sos=zp2sos(z,p,K)完成将高阶系统分解为2阶系统的串联。 2.阅读扩展练习中的实例,学习频率分析法在MATLAB中的实现; 3.编程实现系统参数输入,绘出幅度频率响应和相位响应曲线和零、极点分布图。 四、实验内容 求系统 的零、极点和幅度频率响应和相位响应。 解析: 【代码】 num=[0.0528 0.0797 0.1295 0.1295 0.797 0.0528]; den=[1 -1.8107 2.4947 -1.8801 0.9537 -0.2336]; [z,p,k]=tf2zp(num,den); disp('零点');disp(z); disp('极点');disp(p); disp('增益系数');disp(k); figure(1) zplane(num,den)

figure(2) freqz(num,den,128) 【图形】 -2 -1.5 -1 -0.500.5 1 1.5 -1.5 -1 -0.5 0.51 1.5 Real Part I m a g i n a r y P a r t 0.1 0.2 0.30.40.50.60.70.80.9 1 -800 -600-400-2000 Normalized Frequency (?π rad/sample) P h a s e (d e g r e e s ) 0.1 0.2 0.30.40.50.60.70.80.9 1 -40-2002040Normalized Frequency (?π rad/sample) M a g n i t u d e (d B ) 【结果】 零点 -1.5870 + 1.4470i

实验七输入输出流

实验七输入输出流 一、实验目的 (1)了解流式输入输出的基本概念; (2)熟悉Java.io包中常用的基本输入输出类; (3)掌握程序与文件之间的基本输入输出操作; 二、实验内容 1) 把字符串“20102324,张三,男,25,软件工程”,保存到文件”d:\\a.txt”中, 并读取打印a.txt文件中的内容。 2) 把我们在聊天界面中发送的消息保存到日志文件里面,在界面上添加一个历史按钮,当点击历史按钮时读取日志文件内容。 三、实验步骤 1)把字符串“20102324,张三,男,25,软件工程”,保存到文件”d:\\a.txt”中,并读取打印a.txt文件中的内容。 (1) 定义变量message,值为“20102324,张三,男,25,软件工程”; (2) 创建指向”D:\\a.txt”的文件对象 (3) 创建输出流 (4) 把message写入流(文件)中 (5) 关闭输出流 (6) 创建输入流 (7) 读取文件内容 (8) 打印文件内容 (9) 关闭输入流 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileIO { public static void main(String[] args) { String message = "20102324,张三,男,25,软件工程"; File myFile=new File("D:\\a.txt"); //写文件 try { FileOutputStream fout = new FileOutputStream(myFile,true);//不覆盖 try { fout.write(message.getBytes()); } catch (IOException e) { e.printStackTrace(); }finally{ try { fout.close(); } catch (IOException e) { e.printStackTrace();}} } catch (FileNotFoundException e) { e.printStackTrace(); } //读文件 try { FileInputStream fint = new FileInputStream(myFile); byte b[] = new byte[(int) myFile.length()]; try { fint.read(b); String s = new String(b); System.out.println(s); } catch (IOException e) {

实验四:输入输出实验

课程名称:计算机组成原理 实验项目:输入输出实验 姓名:李翠超 专业:计算机科学与技术 班级:计算机6班 学号:1609040307 计算机科学与技术学院 实验教学中心 2017年12 月13 日

实验项目名称:输入输出实验 一、实验目的 1、掌握计算机的I/O端口原理,注意实践观察 2、掌握程序编制及指令格式 二、实验内容 1、移位实验 2、数据传送实验/输入输出实验 三、实验原理及接线 1、COP2000 中有7 个寄存器可以向数据总线输出数据, 但在某一特定时刻只能有一个寄存器输出数据. 由X2,X1,X0 决定那一个寄存器输出数据. 图1 数据输出选择器原理图 表1 连接线表

置下表的控制信号, 检验输出结果

2、移位实验 ALU直接输出和零标志位产生原理图 ALU左移输出原理图

ALU右移输出原理图 直通门将运算器的结果不移位送总线。当X2X1X0=100时运算器结果通过直通门送到数据 总线。同时,直通门上还有判0电路,当运算器的结果为全0时,Z=1 右移门将运算器的结果右移一位送总线。当X2X1X0=101时运算器结果通过右通门送到数 据总线。具体连线是: Cy与CN-->DBUS7 ALU7-->DBUS6 ALU6-->DBUSS ALUS-->DBUS4 ALU4-->DBUS3 ALU3-->DBUS2 ALU2-->DBUS 1 ALU1-->DBUSO Cy与CN-->DBUS7 当不带进位移位时(CN=0): 0-->DBUS7 当带进位移位时(CN=1): Cy-->DBUS7 左移门将运算器的结果左移一位送总线。当X2X1X0=110时运算器结果通过左通门送到数据总线。具体连线是: ALU6-->DBUS7 ALUS-->DBUS6 ALU4-->DBUSS ALU3-->DBUS4 ALU2-->DBUS3 ALU1-->DBUS2 ALUO-->DBUS 1 当不带进位移位时(CN=0): 0-->DBUSO 当带进位移位时(CN=1): Cy-->DBUSO 3、在综合实验中,模型机作为一个整体来工作的,所有微程序的控制信号由微程序存储器uM输出,而不是由开关输出。在做综合实验之前,先用8芯电缆连接J1和J2,这样实验 仪的监控系统会自动打开uM的输出允许,微程序的各控制信号就会接到各寄存器、运算器 的控制端口。此综合实验使用的指令是模型机的缺省指令/微指令系统。等做完木综合实验, 熟悉了此套指令/微指令后,用户可以自己设计的指令/微指令系统,有关自己设计指令/微指 令系统的说明在下一章介绍。 在做综合实验时,可以用COP2000计算机组成原理实验软件输入、修改程序,汇编成机

数字信号处理实验三

实验三:离散LSI 系统的频域分析 一、实验内容 2、求以下各序列的z 变换: 12030() ()sin() ()sin()n an x n na x n n x n e n ωω-=== 程序清单如下: syms w0 n z a; x1=n*a^n;X1=ztrans(x1) x2=sin(w0*n);X2=ztrans(x2) x3= exp(-a*n)*sin(w0*n);X3=ztrans(x3) 程序运行结果如下: X1 =z/(a*(z/a - 1)^2) X2 =(z*sin(w0))/(z^2 - 2*cos(w0)*z + 1) X3 =(z*exp(a)*sin(w0))/(exp(2*a)*z^2 - 2*exp(a)*cos(w0)*z + 1) 3、求下列函数的逆z 变换 0 312342 1 1() () () ()() 1j z z z z X z X z X z X z z a z a z e z ω---= = = = ---- 程序清单如下: syms w0 n z a; X1=z/(z-a);x1=iztrans(X1) X2= z/(a-z)^2;x2=iztrans(X2) X3=z/ z-exp(j*w0);x3=iztrans(X3) X4=(1-z^-3)/(1-z^-1);x4=iztrans(X4) 程序运行结果如下: x1 =a^n x2 =n*a^n/a 课程名称 数字信号 实验成绩 指导教师 实 验 报 告 院系 信息工程学院 班级 学号 姓名 日期

x3 =charfcn[0](n)-iztrans(exp(i*w0),w0,n) x4 =charfcn[2](n)+charfcn[1](n)+charfcn[0](n) 4、求一下系统函数所描述的离散系统的零极点分布图,并判断系统的稳定性 (1) (0.3)()(1)(1) z z H z z j z j -= +-++ z1=[0,0.3]';p1=[-1+j,-1-j]';k=1; [b1,a1]=zp2tf(z1,p1,k); subplot(1,2,1);zplane(z1,p1); title('极点在单位圆外); subplot(1,2,2);impz(b1,a1,20); 由图可见:当极点位于单位圆内,系统的单位序列响应随着频率的增大而收敛;当极点位于单位圆上,系统的单位序列响应为等幅振荡;当极点位于单位圆外,系统的单位序列响应随着频率的增大而发散。由此可知系统为不稳定系统。 -1 -0.5 00.51 -2 -1.5-1-0.500.511.5 2Real Part I m a g i n a r y P a r t 极点在单位圆外 n (samples) A m p l i t u d e Impulse Response

输入输出流实验

深圳大学 实验报告 课程名称: Java 实验序号:上机实践9 实验名称:统计英文单词&读取Zip文件 班级:计算机3 姓名:卢志敏 同组人:实验日期: 2008 年 12 月 29 日 教师签字:

一、实验目的 掌握RandomAccessFile类的使用。 掌握ZipInputStream流的使用。 二、实验环境 WinXp SP 3 三、实验要求 实验1 使用RandomAccessFile流统计一篇英文中的单词,要求如下: (1)一共出现了多少个英文单词。 (2)有多少个互不相同的单词。 (3)给出每个单词出现的频率,并将这些单词按频率大小顺序显示在一个Text--Area中。 实验2 读取,并将中含有的文件重新存放到当前目录中的book文件夹中,即将的内容解压到book文件夹中。 四、实验步骤和内容 实验1 源代码: import .*; import class WordStatistic

{ Vector allWords,noSameWord; WordStatistic() { allWords=new Vector(); noSameWord=new Vector(); } public void wordStatistic(File file) {try { RandomAccessFile inOne=new RandomAccessFile(file,"rw");; import class StatisticFrame extends Frame implements ActionListener { WordStatistic statistic; TextArea showMessage; Button openFile; FileDialog openFileDialog; Vector allWord,noSameWord; public StatisticFrame() { statistic=new WordStatistic(); showMessage=new TextArea(); openFile=new Button("Open File"); (this); add(openFile,; add(showMessage,;

数字信号处理实验4

数字信号处理实验四 第一题结果: (1)没有增加过渡点 源码如下: N = 15; H = [1 1 1 0.5 zeros(1,7) 0.5 1 1 1]; %确定抽样点的幅度大小 %H(3,13) = 0.75;H(5,11) = 0.25; %设置过渡点 k = 0:N-1; A = exp(-j*pi*k*(N-1)/N); %抽样点相位大小 HK = H.*A; %求抽样点的H(k) hn = ifft(HK,N); %求出FIR的单位冲激响应h(n) freqz(hn,1,256); %画出幅频相频曲线figure(2); stem(real(hn),'.'); %绘制单位冲激响应的实部 line([0,35],[0,0]);xlabel('n');ylabel('Real(h(n))'); 单位脉冲响应曲线 幅频和相频特性曲线

(2)增加过渡点 源码如下: N = 15; H = [1 1 1 0.5 zeros(1,7) 0.5 1 1 1]; %确定抽样点的幅度大小 H(3) = 0.75;H(13) = 0.75;H(5) = 0.25;H(11) = 0.25; %设置过渡点 k = 0:N-1; A = exp(-j*pi*k*(N-1)/N); %抽样点相位大小 HK = H.*A; %求抽样点的H(k) hn = ifft(HK,N); %求出FIR的单位冲激响应h(n) freqz(hn,1,256); %画出幅频相频曲线figure(2); stem(real(hn),'.'); %绘制单位冲激响应的实部 line([0,35],[0,0]);xlabel('n');ylabel('Real(h(n))'); 单位脉冲响应曲线 幅频和相频特性曲线 第二题结果:

数字信号处理实验六-时域采样与信号的重建

实验目的: 1.了解用MATLAB语言进行时域抽样与信号重建的方法 2.进一步加深对时域信号抽样与恢复的基本原理的理解 3.掌握采样频率的确定方法和内插公式的编程方法。 二.实验内容 1认真阅读并输入实验原理与方法中介绍的例子,观察输出波形曲线,理解每一条语句的含义。. 2.已知一个连续时间信号f(t)=sinc(t)。取最高有限带宽频率fm=1Hz。(1)分别显示原连续时间信号波形和Fm=fm、Fm=2fm、Fm=3fm三种情况下抽样信号的波形。 实验程序: dt=0.1; f0=1; T0=1/f0; fm=f0; Tm=1/fm; t=-2:dt:2; f=sinc(t); subplot(4,1,1),plot(t,f,'k'); axis([min(t) max(t) 1.1*min(f) 1.1*max(f)]); title('原连续信号和抽样信号'); for i=1:3; fs=i*fm; Ts=1/fs;

n=-2:Ts:2; f=sinc(n); subplot(4,1,i+1),stem(n,f,'filled','k'); axis([min(n) max(n) 1.1*min(f) 1.1*max(f)]); end 实验截图: (2)求解原连续信号波形和抽样信号所对应的幅度谱。实验程序: dt=0.1;t=-4:dt:4;

N=length(t);f=sinc(t);Tm=1;fm=1/Tm; wm=2*pi*fm;k=1:N; w1=k*wm/N; F1=f*exp(-j*t'*w1)*dt; subplot(4,1,1),plot(w1/(2*pi),abs(F1));grid axis([0 max(4*fm) 1.1*min(F1) 1.1*max(F1)]); for i=1:3; if i<= 2 c=0 ,else c=0.2,end fs=(4-i+c)*fm; Ts=1/fs; n=-4:Ts:4; f=sinc(n); N=length(n); wm=2*pi*fs; k=1:N; w=k*wm/N; F=f*exp(-j*n'*w)*Ts; subplot(4,1,5-i),plot(w/(2*pi),abs(F),'k');grid axis([0 max(4*fm) 1.1*min(F) 1.1*max(F)]); end 实验截图:

相关主题
文本预览
相关文档 最新文档