通信原理实验——PCM编译码
PCM编译码
-
实验目的
- 理解PCM编译码原理及PCM编译码性能
- 熟悉PCM编译码专用集成芯片的功能和使用方法及各种时钟关系
- 熟悉语音数字化技术的主要指标及测量方法
- 主要仪器设备及软件
硬件:多功能实验箱、示波器、导线
软件:无
-
实验原理
1. 抽样信号的量化原理
抽样信号的量化是将连续的模拟信号转换为离散的数字信号的过程。其原理如下:
- 将连续的模拟信号进行采样,得到一系列的采样值。
- 将采样值映射为离散的数字量。具体地,将采样值划分为若干个离散的量化级别,每个量化级别对应一个数字量。例如,将采样值划分为256个量化级别,每个量化级别对应一个8位二进制数字量。
- 将每个采样值映射为其所在的量化级别对应的数字量。具体地,将采样值与量化级别进行比较,确定其所在的量化级别,并将该量化级别对应的数字量作为该采样值的量化结果。
- 将量化结果编码为数字信号。具体地,将每个量化结果转换为对应的二进制数字,并将这些二进制数字组合为数字信号输出。
2PSK调制具有简单、易实现的优点,但由于只有两个相位角度,传输速率较低,且对于噪声和干扰的抵抗能力较弱。因此,在实际应用中,通常采用更高阶的PSK调制方式来提高传输速率和抗干扰性能。
抽样信号的量化可以分为两种方式:均匀量化和非均匀量化。
1、均匀量化
均匀量化是将量化区间等分为若干个等宽的子区间,每个子区间代表一个量化级别。在均匀量化中,量化器的精度由量化区间的数量来决定。均匀量化的优点是实现简单、易于理解和计算,但是在量化低幅度信号时,存在量化误差较大的问题。
2、非均匀量化
非均匀量化是将量化区间划分为不等宽的子区间,每个子区间代表一个量化级别。在非均匀量化中,量化器的精度由量化区间的宽度来决定。非均匀量化的优点是可以在低幅度信号处提供更高的精度,从而减小量化误差。非均匀量化的常见方法包括:
自适应量化:根据信号的幅度动态调整量化区间的宽度,以提高量化精度。
微分量化:在量化之前,先对信号进行微分,再进行均匀量化,从而在低幅度信号处提供更高的精度。
对数量化:将信号转换为对数形式,再进行均匀量化,从而在低幅度信号处提供更高的精度。
总的来说,非均匀量化相对于均匀量化来说可以提供更高的量化精度,但是实现复杂度较高,需要更多的硬件资源。在实际应用中需要根据具体情况选择合适的量化方式。
2. 脉冲编码调制的基本原理
脉冲编码调制(PCM)是一种将模拟信号转换为数字信号的技术,其基本原理如下:
- 采样:对模拟信号进行采样,将连续的模拟信号转换为一系列的离散样本。
- 量化:将采样值映射为离散的数字量。具体地,将采样值划分为若干个离散的量化级别,每个量化级别对应一个数字量。例如,将采样值划分为256个量化级别,每个量化级别对应一个8位二进制数字量。
- 编码:将每个采样值映射为其所在的量化级别对应的数字量。具体地,将采样值与量化级别进行比较,确定其所在的量化级别,并将该量化级别对应的数字量作为该采样值的量化结果。
- 调制:将数字量转换为脉冲信号。具体地,将每个数字量转换为对应的二进制数字,并将这些二进制数字组合为脉冲信号输出。常见的调制方式包括脉冲振幅调制(PAM)、脉冲宽度调制(PWM)和脉冲位置调制(PPM)等。
3. PCM编码硬件实现
PCM编码的硬件实现通常包括以下几个模块:
- 采样模块:采样模块通常由模拟信号输入、采样电路和采样保持电路组成。模拟信号通过输入端口进入采样电路,经过采样电路将模拟信号转换为模拟电压值,然后通过采样保持电路将采样值保持在一个电容器或者保持电路中,以便后续的量化和编码处理。
- 量化模块:量化模块通常由比较器、参考电压源和编码器组成。比较器将采样值与参考电压进行比较,确定其所在的量化级别,并将该量化级别对应的数字量输出。编码器将数字量转换为二进制数字,并输出到调制模块。
- 调制模块:调制模块通常由时钟、计数器、寄存器和输出缓冲器组成。时钟提供时序信号,计数器计算时钟的周期数,寄存器存储采样值的二进制数字,输出缓冲器将二进制数字转换为脉冲信号输出。
- 控制模块:控制模块通常由微处理器、控制逻辑和时序控制电路组成。微处理器负责控制整个PCM编码系统的工作流程,控制逻辑负责控制各个模块的工作状态,时序控制电路负责控制时序信号的生成和分配。
这里我们使用TP3057实现PCM编译码。TP3057是一种集成了PCM编码与解码功能的芯片,被广泛应用于计算机音频、数码音频、语音存储、数字通信和音频播放等领域。它内部集成了采样、量化、编码和调制等各种模块,能够实现高质量的数字信号处理。
下面是TP3057实现PCM编码的主要步骤
- 采样电路:TP3057内部集成了采样电路,用于对输入的模拟信号进行采样。采样电路的工作频率可通过外部晶振进行设置,通常为8kHz。采样值将被传输到量化模块进行处理。
- 量化模块:TP3057内部的量化模块使用了24位的宽动态范围ΔΣ模数转换器。该模块首先将采样值限制到一个固定的量化范围内,然后使用ΔΣ调制算法将其编码成数字信号。ΔΣ调制算法使用高速脉冲序列来表示数字信号,通过计算这些脉冲的密度来提高编码的精度。
- 调制器:TP3057内部的调制器使用了PLL锁相环技术生成高精度的时钟信号,并将数字信号转换为高速序列脉冲,输出到输出缓冲器中。
- 输出缓冲器:TP3057内部的输出缓冲器负责将二进制码流转换成可输出的数字信号,并提供电平调制信号。将该信号输入到数字信号解调器中将其转换回模拟信号。
此外,TP3057还支持数字信号的解码,可以将数字信号转换成模拟信号。通过相应的接口,TP3057可以方便地与其他数字电路、计算机或音频系统连接起来,实现高质量、可靠的数字信号处理。
-
实验电路图
节点说明
1.DDS1:模拟信号输出
2.P04:扬声器输入
3.3P1:原始信号的输入铆孔
4.3P3:带限输出铆孔
5.3P4:编码输出
6.3P5:PCM译码输入
7.3P6:模拟信号恢复输出
8.3P7:抽样脉冲
9.3P8:线路时钟
-
实验步骤和实验结果
1.设置有关实验模块
打开多功能实验箱,了解基础操作,设置实验模块。实验内容选择:实验项目->原理实验->信源编译码实验->PCM编译码原理。
2.导线连接
使用信号连接线按照实验电路图进行连接。
3. 接入示波器
打开示波器开关,将导线接入实验箱的对应要测量的节点。
4. PCM译码观测
用导线连接3P4和 3P5,此时将PCM输出编码数据直接送入本地译码器,构成自环。用示波器同时观测输入模拟信号3TP1和译码器输出信号3TP6,观测信号时以3TP1做同步。定性的观测解码信号与输入信号(1000HZ、2Vpp)的关系:质量、电平、延时。4.PCM频率响应测量
将测试信号电平固定在2Vp-p,调整测试信号频率,定性的观测译码恢复出的模拟信号电平。观测输出信号信电平相对变化随输入信号频率变化的相对关系。用点频法测量。测量频率范围:200Hz~~4000Hz。
5. PCM译码失真测量
将测试信号频率固定在1000Hz,改变测试信号电平(输入信号的最大幅度为5Vp-p),用示波器定性的观测译码恢复出的模拟信号质量(通过示波器对比编码前和译码后信号波形平滑度)。
使用双踪示波器分别观察2P1和2P3,点击“基带设置”按钮,设置基带速率为“15-PN”“64K”,点击“设置”进行修改。观察示波器观测波形的变化,理解并掌握基带数据设置的基本方法。
6. PCM编译码系统增益测量
DDS1产生一个频率为100OHz、电平为2Vp-p的正弦波测试信号送入信号测试端口3P1。用示波器(或电平表)测输出信号端口(3TP6)的电平。将收发电平的倍数(增益)换算为dB表示。
7.关机拆线
实验结束,关闭电源,拆除导线,还原实验箱。
-
实验成果
1.定性描述PCM编译码的特性、编码规则,并填下表
频率:1kHZ 幅度:2Vpp | 样点1 | 样点2 | 样点3 | 样点4 | 样点5 | 样点6 | 样点7 | 样点8 |
量化值 | 466 | -269 | -860 | -951 | -492 | 269 | 860 | 951 |
编码值 | 11011 110 | 01010 001 | 01101 011 | 01101 110 | 01011 111 | 11010 001 | 11101 011 | 11101 110 |
2.描述PCM编码串行同步接口的时序关系
PCM编码串行同步接口的时序关系如下:
1. 主机向PCM编码器发送同步信号,使其处于同步状态。
2. 主机发送时钟信号,使PCM编码器按照指定的采样率进行采样。
3. PCM编码器将采样到的模拟信号转换为数字信号,并将其编码为PCM码。
4. PCM编码器将编码后的PCM码按照位序列的顺序,依次输出到串行数据线上。
5. 主机在时钟信号的边沿上读取串行数据线上的数据,并进行解码和处理。
6. 主机发送同步信号,使PCM编码器进入下一个采样周期,重复以上步骤。
3.填下下表,并画出 PCM的频响特性
输入频率(Hz) | 200 | 500 | 800 | 1000 | 2000 | 3000 | 3400 | 3600 |
输出幅度(V) | 3 | 5 | 6 | 10 | 12 | 13 | 16 | 19 |
4.填下下表,并画出PCM的动态范围:输入幅度(V)
输入幅度(V) | 1 | 1.5 | 2 | 2.5 | 3 | 3.5 | 4 | 5 |
输出幅度 | 2 | 2.4 | 3 | 3.5 | 4 | 5.1 | 6 | 9 |
-
实验小结
通过本次实验理解PCM编译码原理及PCM编译码性能;熟悉PCM编译码专用集成芯片的功能和使用方法及各种时钟间的关系;熟悉语音数字化技术的主要指标及测量方法;PCM编码原理验证,理解带限滤波器作用、A律编码规则;PCM编译码性能测量,观测编译码电路频响、时延、失真、增益等。
相关文章:

通信原理实验——PCM编译码
PCM编译码 实验目的 理解PCM编译码原理及PCM编译码性能熟悉PCM编译码专用集成芯片的功能和使用方法及各种时钟关系熟悉语音数字化技术的主要指标及测量方法 主要仪器设备及软件 硬件:多功能实验箱、示波器、导线 软件:无 实验原理 1. 抽样信号的量…...

matlab的strel()函数的使用方法(OK)
这个函数 是形态学的结构元素 使用方法如下 SE strel(nhood) SE strel("diamond",r) SE strel("disk",r) SE strel("disk",r,n) SE strel("octagon",r) SE strel("line",len,deg) SE strel("rectangle",…...

Linux:Linux权限解析
一、Linux下的用户分类 在Linux下,有两种用户,一种是超级用户,一种是普通用户 超级用户:可以再linux系统下做任何事情,不受权限限制(制定规则,但不需要遵守规则) 普通用户࿱…...

Spring面试篇章——IOC
IOC概念和原理 IOC概念 IOC就是控制反射,把对象创建和对象之间的调用过程,交给Spring进行管理使用IOC的目的:降低耦合度 IOC底层原理 xml解析、工厂模式、反射 图解: 原始模式 耦合度太高了,即当dao改了…...

适合制造业的项目管理软件都有哪些?
项目管理软件涉及进度、预算成本、资源、开发、流程、质量、风险、工时、知识文档、商务等各个方面,是企业项目管理领域的重要辅助工具,能够帮助组织提高项目管理水平与质量,确保项目顺利进行。 一、 奥博思 PowerProject 项目管理系统 Pow…...

微应用(Micro-Applications)、微前端(Micro Frontend)、Qiankun 框架之间的区别和联系
简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo :联系我们:VX :tja6288 / EMAIL: 347969164@qq.com 文章目录 微应用(Micro-Applications)、微…...

String的底层构造
1.String类对象的构造(后面有每一个接口的实现) #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #include<iostream> #include<assert.h> using namespace std;namespace bit {class string{public:typedef char* iterator;typedef const…...

Binder机制的原理
Binder机制是Android系统中用于进程间通信(IPC)的核心机制,它基于C/S(客户端-服务端)模型,允许不同进程间进行高效的通信和数据交换。以下是对Binder机制原理的详细解析: 1. Binder架构 Binde…...

JavaScript输出数据的方法?
在JavaScript中,输出数据有以下几种方法: 使用console.log()函数:使用console.log()函数可以将数据输出到浏览器的控制台,例如: console.log("Hello, World!");使用alert()函数:使用alert()函数…...

Redis学习笔记——第19章 事务
第19章 事务 19.1 事务的实现 19.1.1 事务开始 使用multi命令开启一个事务 通过修改客户端的flags字段为REDIS_MULTI 19.1.2 命令入队 当开启事务之后,exec、discard、watch、multi命令立即执行,而其他命令会放入一个队列中,并返回Queue…...

元太电磁膜SUDE-10S19MI-01X驱动适配
屏规格书: dts配置: 首先要确保CONFIG_I2C_HID宏打开,i2c-hid-core.c 文件才能编译进去代码。规格书vendor product 分别为0x2d1f 和0x0165 来区别,不至于影响到整体的hid其他设备。 i2c-hid-dev10 { compatible "hid-…...

C#数据类型 全局变量 类型转换方法(汇总)
1、C#和S7-1200PLC S7.NET通信 C#和S7-1200PLC S7.NET通信-CSDN博客文章浏览阅读98次。一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客这篇博客作为C#的基础系列,和大家分享如何一步步建立一个C#项目完成对S7-1200PLC数据的连续读取。首先…...

HCIP重修总笔记(中)
第八节 BGP基础 一、BGP产生背景 BGPBorder Gateway Protocol,边界网关协议)是一种用于自治系统间的动态路出协议,是一种外部网关协议。 自治系统AS:一组同一个管理机构进行管理,对外呈现统一选路策略的路由器的集合。 自治系统编号: …...

图片搜索网站,有大量高清图片,避免版权纠纷
一、简介 1、一个图片搜索网站,所有图片均遵循CC0协议,用户可以免费用于商业用途而无需标注来源。网站上有大量高清图片,基本可以满足用户的各种需求,同时避免了法律风险。提供强大的筛选功能,用户可以按图片方向、尺寸…...

设计学习笔记8:在设计模式中,状态模式和策略模式有什么区别,它们各自适用于什么场景?
基本介绍 状态模式(State Pattern)和策略模式(Strategy Pattern)都是行为型设计模式,它们用于处理不同的情景和需求,以下是它们的主要区别和适用场景: 状态模式(State Pattern&…...

Android 10.0 系统默认蓝牙打开状态栏显示蓝牙图标功能实现
1.前言 在10.0的系统rom定制化开发过程中,在默认系统中,打开蓝牙开关的时候不会状态栏不会显示蓝牙图标,而只有 蓝牙连接成功后会显示蓝牙图标,客户开发需要要求在蓝牙打开的时候在状态栏就显示蓝牙图标,接下来分析下 相关的状态栏图标显示流程,然后实现相关功能 2.系统…...

在git中如何忽略.vscode目录?
在Git中,如果你想忽略某个特定的文件或目录(比如.vscode目录),你可以通过以下步骤来实现: 创建或编辑.gitignore文件 在项目的根目录下,如果还没有.gitignore文件,你需要创建一个。如果已经有了…...

分布式系统
分布式系统是一种由多个相互连接的计算机组成的系统,这些计算机通过网络互相通信并协调行动来完成共同的任务。在分布式系统中,没有单一的物理实体可以控制整个系统;相反,各个节点(即计算机)独立运行&#…...

【Material-UI】Autocomplete 组件中的事件处理(Events)详解
文章目录 一、事件处理概述二、自定义按键行为代码详解 三、其他常见事件1. onChange 事件2. onInputChange 事件3. onFocus 和 onBlur 事件 四、实用场景1. 自定义提交行为2. 实现快捷键功能3. 动态提示 五、总结 在 Web 开发中,事件处理是实现用户交互的重要一环。…...

【51单片机仿真】基于51单片机设计的钟表定时闹钟系统仿真源码设计文档演示视频——完整资料下载
演示视频 设计内容 (1)使用 DS1302 结合字符型 LCD12864 显示器设计一个简易的定时闹钟 LCD 时钟。程序执行后 LCD 显示“00:00:00” (2)K1—设置现在的时间,年闪烁,再按 K1 键月闪…...

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-7-元素基础定位方式-下篇 (详细教程)
软件测试微信群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 上一篇主要是讲解我们日常工作中在使用Playwright进行元素定位的一些比较常用的基础定位方式的理论基础知识以及在什么情况下推荐使用。今天这一篇讲解和分享一下剩下部分的基…...
[Day 44] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
生成对抗网络(Generative Adversarial Networks,GANs)是一种由Ian Goodfellow等人在2014年提出的深度学习模型,广泛用于图像生成、图像超分辨率、图像修复等领域。GAN由一个生成器(Generator)和一个判别器&…...

【Redis】 Redis 列表指令指南
这是我父亲 日记里的文字 这是他的生命 留下留下来的散文诗 几十年后 我看着泪流不止 可我的父亲已经 老得像一个影子 🎵 许飞《父亲写的散文诗》 Redis 是一个开源的内存数据库,支持多种数据结构,其中列表(…...

设计测试用例的具体方法
一.等价类 等价类分为: 1.有效等价类 [6~15] 2.无效等价类 :小于6位,大于15位(不在数据范围内) 组合规则: 有效等价类组合的时候,尽可能一条测试用例尽可能多的覆盖有效等价类 无效等价类组合的时候,一条测试点,之恶能覆盖一个无效等价类 二.边界值 1.上点,离点,内点 上…...

GPT-4o mini(假设模型)概览
开篇背景: 近年来,随着计算能力的提升和大数据的积累,大型语言模型(LLMs)如GPT系列取得了显著进展。这些模型不仅能够理解复杂的自然语言文本,还能生成流畅、连贯的回复,甚至展现出一定程度的创…...

抽象代数精解【9】
文章目录 置换密码密码体制加解密过程置换置换运算定义置换运算的例子集合与置换置换规则两行表示法轮换表示法置换运算的结果置换的性质注意事项 分组加解密 理论基础1. 准备工作2. 置换过程3. 置换密码的具体实现方式4. 安全性分析5. 置换密码的应用代换密码代换密码的工作原…...

熟悉简单测试面经
SQL语句中增、删、查、改的关键字 MySQL中SQL语句删除语句有哪些?区别是啥。 “”和equals的区别 “String s "1"”与“String s new String("1")”中的s一样吗? StringBuilder与StringBuffer的区别 洗牌问题 HTTP、HTTPS、U…...

IoTDB 入门教程 实战篇④——C#示例(开源)
文章目录 一、前文二、新建C#项目三、NuGet安装四、示例源码五、查询数据六、参考 一、前文 IoTDB入门教程——导读 本文详细阐述了如何通过一个C#项目成功连接到IoTDB时序数据库,进而展示了如何向该数据库高效地写入数据以及执行精确的数据查询操作。 此示例旨在为…...

STL-vector容器
目录 一、常见接口 1.1 构造函数 1.2 访问与遍历 1.3 容量操作 1.4 增删查改 二、模拟实现 2.1 迭代器失效 2.2 源代码 一、常见接口 vector数据结构实际上是顺序表 详细解释与使用请参见官方网站:vector - C Reference (cplusplus.com) 1.1 构造函数 函…...

python字符串与变量名互相转换,字典,list操作
locals是python的内置函数,他可以以字典的方式去访问局部和全局变量 vars()本函数是实现返回对象object的属性和属性值的字典对象 eval()将字符串str当成有效的表达式来求值并返回计算结果 #!/usr/bin/python3 #-*- coding uft-8 -*- guo 666 str1 "guo&qu…...