PCM编解码芯片控制Word文档格式.docx
《PCM编解码芯片控制Word文档格式.docx》由会员分享,可在线阅读,更多相关《PCM编解码芯片控制Word文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
这是它的优点。
同时该程序还利用MAX+PLUSⅡ进行了仿真,仿真波形简单、易懂,具有很强的说服能力。
1.2设计主要实现的功能
利用VHDL设计pcm编码芯片的控制,生成时钟信号,发送时添加帧同步码,解码时检测帧同步码。
以控制编解码的时序实现编解码功能。
本系统中所有的时隙都是从频率为8.102MHz的外部时钟信号频后得到2.048MHz的码同步时钟,再经分频分相后得到8KHz的帧同步时钟。
通过时钟信号的抽样、量化、编码和经过信道后的再生、解码和解调实现语音信号的编码和解码。
第2章PCM编解码芯片控制设计思想
本课程设计研究了PCM系统和单片PCM编译码器TP3067,其中PCM系统包括PCM系统的工作原理和组成;
单片PCM编译码器TP3067包括芯片内部结构和外部接口两部分。
并通过VHDL硬件描述语言对TP3067进行描述,并用MAX+PLUSⅡ仿真出波形。
2.1PCM系统
2.1.1PCM系统工作原理
脉冲编码调制是把模拟信号数字化传输的基本方法之一,它通过抽样、量化和编码,把一个时间连续、取值连续的模拟信号变换成时间离散、取值离散的数字信号,然后在信道中进行传输。
接收机将收到的数字信号经再生、译码、平滑后恢复出原始的模拟信号。
话音信号先经过防混叠低通滤波器,得到限带信号,进行脉冲抽样,变成8KHz重复频率的抽样信号,然后将幅度连续的PAM信号用“四舍五入”办法量化为有限个幅度取值的信号,再经编码,转换成二进制码。
考虑到系统时钟频率较高,本系统利用VHDL设计pcm编码芯片的控制,生成时钟信号,发送时添加帧同步码,解码时检测帧同步码。
2.1.2PCM系统的组成
图1PCM组成框图
PCM系统由话音输入、低通滤波、抽样、量化、编码、信道、再生、解码、解调、低通滤波、语音输出组成。
其组成框图如图1所示:
2.2单片PCM编译码器TP3067
2.2.1芯片TP3067简介
本课程设计选择了TP3067芯片作为PCM编译码器,它把编译码器(Codec)和滤波器(Filter)集成在一个芯片上,功能比较强,它既可以进行A律变换,也可以进行u律变换,它的数据既可用固定速率传送,也可用变速率传送,它既可以传输信令帧也可以选择它传送无信令帧,并且还可以控制它处于低功耗备用状态,到底使用它的什么功能可由用户通过一些控制来选择。
TP3067可以组成模拟用户线与程控交换设备间的接口,包含有话音A律编解码器。
自调零逻辑。
话音输入放大器、RC滤波器、开关电容低通滤波器、话音推挽功放等功能单元。
2.2.2芯片TP3067工作原理
在编码电路中,进行取样、量化、编码,译码电路经过译码低通、放大后输出模拟信号,把这两部分集成在一个芯片上就是一个单路编译码器。
单路编译码器变换后的8位PCM码字是在一个时隙中被发送出去,这个时序号是由A/D控制电路来决定的,而在其它时隙时编码器是没有输出的。
同样在一个PCM帧里,它的译码电路也只能在一个由它自己的时序里,从外部接收8位PCM码。
只要向A/D控制电路或D/A控制电路发某种命令即可控制单路编译码器的发送时序和接收时序号,从而也可以达到总线交换的目的。
不同的单路编译码器对其发送时序和接收时序的控制方式都有所不同。
编译码器一般都有一个PDN降功耗控制端,PDN=l时,编译码能正常工作,PDN=0时,编译码器处于低功耗状态,这时编译码器其它功能都不起作用。
第3章PCM编解码芯片控制详细设计
本章中主要介绍芯片TP3067内部结构,外部接口和各管脚的说明。
同时介绍了程序中的输入输出端口和设置的信号量,并通过MAX+PLUSⅡ仿真得到波形。
3.1芯片TP3067的结构
3.1.1芯片TP3067的内部结构
芯片TP3067的内部结构有发送和接收两大部分组成,其具体结构如图2所示:
图2TP3067内部结构框图
3.1.2芯片TP3067的外部接口
芯片TP3067的外部接口可分两部分:
一部分是模拟接口电路,它与编译码器中的Filter发生联系,这一部分可控制模拟信号的放大倍数,另一部分是与处理系统和交换网络的数字接口,它与编译码器中的Codec发生联系,通过这些数字接口线来实现对编译码器的控制。
其管脚排列如图3所示:
图3TP3067管脚排列图
各管脚的说明如表1所示:
表1:
管脚说明
号
符号
功能
1
VPO+
接收功率放大器非倒相输出
2
GNDA
模拟地
3
VPO-
接收功率放大器倒相输出
4
VPI
接收功率放大器倒相输入
5
VFRO
接收滤波器的模拟输出
6
VCC
正电源引脚,Vcc=+5V±
5℅
7
FSR
接收的帧同步脉冲,它启动BCLKR。
8
Dr
接收帧数据输入,PCM数据随着FSR前沿移入Dr。
9
BCLKR\
CLKSEL
在FSR的前沿后把数据移入Dr的位时钟,其频率可从64KHz到2.048MHz。
10
MCLKR/
PDN
接收主时钟。
当MCLKR连续联在低电位时,MCLKx被选用为所有内部定时,当MCLKR连续工作在高电位时,器件就处于掉电模式。
11
MCLKx
发送主时钟,它允许与MCLKR异步,同步工作能实现最佳性能。
12
BCLKx
把PCM数据从Dx上移出的位时钟,其频率可从64KHz变至2.048MHz,但必须与MCLKx同步。
13
Dx
由FSx启动的三态PCM数据输出
14
FSx
发送帧同步脉冲输入,它启动BCLKx,并使Dx上PCM数据移出。
15
TSx
开漏输出,在编码器时隙内为低电平脉冲。
16
ANLB
模拟环回路控制输入,在正常工作时必须置为逻辑“0”,当拉到逻辑“1”时,发送滤波器和发送前置放大器输出的连接线被断开,而改为和接收功率放大器的VPO+输出连接。
17
GSx
发送输入放大器的模拟输出。
用来在外部调节增益。
18
VFxI-
发送输入放大器的倒相输入。
19
VFxI+
发送输入放大器的非倒相输入。
20
VBB
负电源引脚,VBB=-5V±
3.2程序中端口和信号量设置
输入端口有:
CLK为时钟输入,pcm_in为pcm波输入接收通道,to_Dx接3067编码输出端,incode_en为编码允许信号,decode_en为解码允许信号,code_in为设定编码帧同步码,code_de为设定解码帧同步码。
输出端口有:
cp_out为2.045MHz时钟输出,pcm_out为pcm波输出发送同道,to_Dr接3067解码输入端,incode为8KHz编码帧同步信号。
Decode为8KHz解码帧同步信号。
设置的信号量有:
clk_sys为系统内部时钟信号,sreg为8位移位寄存器。
3.3程序的仿真结果
帧同步时,8.102MHz的外部时钟信号clk分频后得到2.048MHz的码同步时钟cp_out,再经分频分相后得到8KHz的帧同步时钟。
Incode信号每256个系统时钟周期(cp_out)出现一次脉冲,启动编码过程。
帧同步仿真波形如图4所示:
图4帧同步波形
某一编码时隙时,当编码时序参量tim计数到0时开始编码过程。
编码时隙中,先逐位输出8位的帧同步码;
随后输出编码输出允许信号,使pcm编码芯片输出pcm波,控制芯片取得pcm波后直接输出。
当然这个时序也可以根据芯片的实际速率做适当的修改。
边码结束后pcm芯片的代码输出脚将锁定在高阻状态,为了避免不定状态引入后级,控制芯片也将输出锁定在高阻态。
当然,为了避免给调制部分引入噪声也可以锁定在低电平。
某一编码时隙仿真波形如图5所示:
图5某一编码时隙
某一解码时隙帧同步中,解码部分主要由移位寄存器和同步码检测,时序控制部分组成。
收到的pcm波在系统时钟的控制下逐位移入移位寄存器,并随时和设定的帧同步码相比较,当两者相同时输出帧同步信号,并且把随后的8位数据输入到pcm编解码芯片。
为了防止编解码芯片误解码,未检测到帧同步码时输出为高阻。
某一解码帧同步仿真波形如图6所示:
图6某一解码时隙的帧同步过程
编解码过程中,Pcm波帧同步码和编解码过程其实是两个相互独立的过程,可以同时进行也可以不同时,主要看系统的设计。
仿真时只是为了方便,把编码身成的pcm波复制到解码输入端作为仿真输入。
编解码过程仿真波形如图7所示:
图7编解码过程
参考文献
[l]RichardA.Poisel《现代通信原理干扰原理与技术》电子工业出版社2005
[2]潘松王国栋《VHDL实用教程》电子科技大学出版社2003
[3]郭学理《网络程序设计》武汉大学出版社2004
[4]殷肖川《网络编程与开发技术》西安交通大学出版社2005
[5]齐洪喜陆颖《VHDL电路设计实用教程》清华大学出版社2003
程序代码:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entitypcm_conis
Port(clk:
instd_logic;
--8.192MHz时钟输入--
cp_out:
outstd_logic;
--2.045MHz时钟输出--
pcm_in:
--pcm波输入接收通道--
pcm_out:
--pcm波输出发送同道--
to_Dx:
--接3067编码输出端--
to_Dr:
--接3067解码输入端--
incode:
--8KHz编码帧同步信号--
decode:
--8KHz解码帧同步信号--
incode_en:
--编码允许信号--
decode_en:
--解码允许信号--
code_in:
instd_logic_vector(7downto0);
--编码帧同步码--
code_de:
instd_logic_vector(7downto0));
--解码帧同步码--
--为避免系统误解码,提高抗干扰能力可以增加帧同步码位数--
endpcm_con;
architectureBehavioralofpcm_conis
signalclk_sys:
std_logic;
--系统内部时钟信号--
signalsreg:
STD_LOGIC_vector(7downto0);
--8位移位寄存器--
begin
cp_out<
=clk_sys;
--2.045MHz时钟信号输出--
PROCESS(clk)--2.045MHz系统时钟进程--
VARIABLEtem:
INTEGERRANGE0TO1;
BEGIN
IF(clk'
EVENTANDclk='
1'
)THEN
iftem=1then
tem:
=0;
else
clk_sys<
=notclk_sys;
=tem+1;
endif;
ENDPROCESS;
--时钟信号=1/4外部时钟--
PROCESS(clk_sys)--编码进程--
VARIABLEtim:
INTEGERRANGE0TO255;
--时钟参量--
BEGIN
IF(clk_sys'
EVENTANDclk_sys='
IF(incode_en='
IF(tim=255)THEN
tim:
=0;
ELSE
tim:
=tim+1;
ENDIF;
--帧同步时钟=系统时钟/256--
IF(incode_en='
)THEN--编码允许信号控制--
IF(tim=7)THEN
incode<
='
;
--编码同步脉冲输出--
ELSE
0'
--生成8KHz编码同步脉冲--
ENDIF;
IF(tim=0)THEN--根据内部时钟参量生成串行的帧同步码--
pcm_out<
=code_in(7);
elsif(tim=1)THEN
=code_in(6);
elsif(tim=2)THEN
=code_in(5);
elsif(tim=3)THEN
=code_in(4);
elsif(tim=4)THEN
=code_in(3);
elsif(tim=5)THEN
=code_in
(2);
elsif(tim=6)THEN
=code_in
(1);
elsif(tim=7)THEN
=code_in(0);
--帧同步码结束--
elsif(tim>
7andtim<
16)THEN
=to_Dx;
--根据内部时钟参量发送八位pcm码--
Z'
--其他时隙输出为高阻状态--
ENDPROCESS;
PROCESS(clk_sys)--解码进程--
VARIABLEcnt:
INTEGERRANGE0TO8;
--解码时序参量--
if(clk_sys'
eventandclk_sys='
)then
ifdecode_en='
then--解码允许信号控制--
sreg(7downto1)<
=sreg(6downto0);
--移位寄存器描述--
sreg(0)<
=pcm_in;
--通过移位寄存器把串行pcm码转换成并行码--
if(cnt<
8)then
cnt:
=cnt+1;
--解码时序参量自增--
else--只输出8位防止信道噪声被误解码--
cnt:
=8;
--输出8位pcm码后解码时序停止--
if(sreg=code_de)then--检测帧同步码--
decode<
--检测到帧同步码时输出帧同步脉冲--
else
decode<
if(cnt>
7)then
to_Dr<
--解码时序到来前输出高阻--
=pcm_in;
--在解码时序中输出pcm波到解码芯片--
endBehavioral;