PCM编解码芯片控制

更新时间:2023-08-15 10:25:01 阅读量: 人文社科 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VHDL课程设计

黑龙江科技学院

课程设计任务书

一、设计题目:

二、设计的主要内容:

指导教师:日 期:

教师评语:

评阅成绩:

评 阅 人:

VHDL课程设计

日 期:摘 要

根据设计需求选用了TP3067芯片作为PCM编译码器,它把编译码器(Codec)和滤波器(Filter)集成在一个芯片上,功能比较强。TP3067具有完整的话音到PCM和PCM到话音的A律压扩编解码功能。它的编码和解码工作既可同时进行,也可异步进行。编译码器的工作是由时序电路控制的。在编码电路中,进行取样、量化、编码,译码电路经过译码低通、放大后输出模拟信号,这两部分集成在一个芯片上就是一个单路编译码器。在一个PCM帧里,它的译码电路也只能在一个由它自己的时序里,从外部接收8位PCM码。单路编译码器的发送时序和接收时序可由外部电路来控制。该设计的核心语言是VHDL,采用MAX+pusⅡ为仿真工具,分别仿真出帧同步、某一编码时隙、某一解码时隙的帧同步、帧同步码不匹配、编解码过程的波形。

关键词:编译码器,时序电路,编码时隙,帧同步

VHDL课程设计

第1章 PCM编解码芯片控制概述 脉冲编码调制是把模拟信号数字化传输的基本方法之一,本设计采用了TP3067作为PCM编解码芯片,利用它的编解码功能,实现信号的转换。

1.1 设计背景和目的意义

VHDL语言主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的基本特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。 PCM编解码芯片TP3067是设计无线对讲系统中的一部分,实现语音信号的编码与解码,使其在可编程逻辑器件生成的时序控制下实现编译码。

通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,使学生具有一定的实践操作能力,为学生完成毕业设计任务打下基础。

本课程设计中,通过VHDL语言的描述,使TP3067编解码芯片产生时序信号,完成编码和解码的过程。它具有很重要的意义,他实现了VHDL语言对语音信号编码和解码这一问题的完成,而且VHDL语言设计更加使程序简洁,易懂,明了,程序简练。这是它的优点。同时该程序还利用MAX+PLUSⅡ进行了仿真,仿真波形简单、易懂,具有很强的说服能力。

1.2 设计主要实现的功能

利用VHDL设计pcm编码芯片的控制,生成时钟信号,发送时添加帧同步码,解码时检测帧同步码。以控制编解码的时序实现编解码功能。 本系统中所有的时隙都是从频率为8.102MHz的外部时钟信号频后得到2.048MHz的码同步时钟,再经分频分相后得到8KHz的帧同步时钟。

通过时钟信号的抽样、量化、编码和经过信道后的再生、解码和解调实现语音信号的编码和解码。

VHDL课程设计

第2章 PCM编解码芯片控制设计思想 本课程设计研究了PCM系统和单片PCM编译码器TP3067,其中PCM系统包括PCM系统的工作原理和组成;单片PCM编译码器TP3067包括芯片内部结构和外部接口两部分。并通过VHDL硬件描述语言对TP3067进行描述,并用MAX+PLUSⅡ仿真出波形。

2.1 PCM系统

2.1.1PCM系统工作原理

脉冲编码调制是把模拟信号数字化传输的基本方法之一,它通过抽样、量化和编码,把一个时间连续、取值连续的模拟信号变换成时间离散、取值离散的数字信号,然后在信道中进行传输。接收机将收到的数字信号经再生、译码、平滑后恢复出原始的模拟信号。话音信号先经过防混叠低通滤波器,得到限带信号,进行脉冲抽样,变成8KHz重复频率的抽样信号,然后将幅度连续的PAM信号用“四舍五入”办法量化为有限个幅度取值的信号,再经编码,转换成二进制码。考虑到系统时钟频率较高,本系统利用VHDL设计pcm编码芯片的控制,生成时钟信号,发送时添加帧同步码,解码时检测帧同步码。以控制编解码的时序实现编解码功能。

2.1.2 PCM系统的组成

PCM系统由话音输入、低通滤波、抽样、量化、编码、信道、再生、解码、解调、低通滤波、语音输出组成。其组成框图如图1所示:

图1 PCM组成框图

VHDL课程设计

2.2 单片PCM编译码器TP3067

2.2.1 芯片TP3067简介

本课程设计选择了TP3067芯片作为PCM编译码器,它把编译码器(Codec)和滤波器(Filter)集成在一个芯片上,功能比较强,它既可以进行A律变换,也可以进行u律变换,它的数据既可用固定速率传送,也可用变速率传送,它既可以传输信令帧也可以选择它传送无信令帧,并且还可以控制它处于低功耗备用状态,到底使用它的什么功能可由用户通过一些控制来选择。TP3067可以组成模拟用户线与程控交换设备间的接口,包含有话音A律编解码器。自调零逻辑。话音输入放大器、RC滤波器、开关电容低通滤波器、话音推挽功放等功能单元。TP3067具有完整的话音到PCM和PCM到话音的A律压扩编解码功能。它的编码和解码工作既可同时进行,也可异步进行。

2.2.2 芯片TP3067工作原理

编译码器的工作是由时序电路控制的。在编码电路中,进行取样、量化、编码,译码电路经过译码低通、放大后输出模拟信号,把这两部分集成在一个芯片上就是一个单路编译码器。单路编译码器变换后的8位PCM码字是在一个时隙中被发送出去,这个时序号是由A/D控制电路来决定的,而在其它时隙时编码器是没有输出的。同样在一个PCM帧里,它的译码电路也只能在一个由它自己的时序里,从外部接收8位PCM码。单路编译码器的发送时序和接收时序可由外部电路来控制。只要向A/D控制电路或D/A控制电路发某种命令即可控制单路编译码器的发送时序和接收时序号,从而也可以达到总线交换的目的。不同的单路编译码器对其发送时序和接收时序的控制方式都有所不同。

编译码器一般都有一个PDN降功耗控制端,PDN=l时,编译码能正常工作,PDN=0时,编译码器处于低功耗状态,这时编译码器其它功能都不起作用。

VHDL课程设计

第3章 PCM编解码芯片控制详细设计 本章中主要介绍芯片TP3067内部结构,外部接口和各管脚的说明。同时介绍了程序中的输入输出端口和设置的信号量,并通过MAX+PLUSⅡ仿真得到波形。

3.1芯片TP3067的结构

3.1.1 芯片TP3067的内部结构

芯片TP3067的内部结构有发送和接收两大部分组成,其具体结构如图2所示:

DxDrVCCVBBGNDAMCLKxPDNBCLKx/CLKSELFSxFSR

图2 TP3067内部结构框图

3.1.2 芯片TP3067的外部接口

芯片TP3067的外部接口可分两部分:一部分是模拟接口电路,它与编译码器中的Filter发生联系,这一部分可控制模拟信号的放大倍数,另一部分是与处理系统和交换网络的数字接口,它与编译码器中的Codec发生联系,通过这些数字接口线来实现对编译码器的控制。其管脚排列如图3所示:

VPO+GNDAVPO-VPIVFROVCCFSRDr

BCLKR/CLKSEL

MCLKR/PDN1234567891020191817161514131211VBBVFxI+VFxI-GSxANLBTSxFSxDxBCLKxMCLKx

图3 TP3067管脚排列图

VHDL课程设计

各管脚的说明如表1所示:

表1:管脚说明

VHDL课程设计

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芯片的代码输出脚将锁定在高阻状态,为了避免不定状态引入后级,控制芯片也将输出锁定在高阻态。当然,为了避免给调制部分引入噪声也可以锁定在低电平。某一编

VHDL课程设计

码时隙仿真波形如图5所示:

图5某一编码时隙

某一解码时隙帧同步中,解码部分主要由移位寄存器和同步码检测,时序控制部分组成。收到的pcm波在系统时钟的控制下逐位移入移位寄存器,并随时和设定的帧同步码相比较,当两者相同时输出帧同步信号,并且把随后的8位数据输入到pcm编解码芯片。为了防止编解码芯片误解码,未检测到帧同步码时输出为高阻。某一解码帧同步仿真波形如图6所示:

图6某一解码时隙的帧同步过程

编解码过程中,Pcm波帧同步码和编解码过程其实是两个相互独立的过程,可以同时进行也可以不同时,主要看系统的设计。仿真时只是为了方便,把编码身成的pcm波复制到解码输入端作为仿真输入。编解码过程仿真波形如图7所示:

图7编解码过程

VHDL课程设计

参考文献

[l] Richard A.Poisel 《现代通信原理干扰原理与技术》电子工业出版社 2005

[2] 潘松 王国栋《VHDL实用教程》电子科技大学出版社 2003

[3]郭学理《网络程序设计》武汉大学出版社 2004

[4] 殷肖川《网络编程与开发技术》西安交通大学出版社 2005

[5] 齐洪喜 陆颖《VHDL电路设计实用教程》清华大学出版社2003

VHDL课程设计

程序代码:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity pcm_con is

Port ( clk : in std_logic; --8.192MHz时钟输入--

cp_out : out std_logic; --2.045MHz时钟输出--

pcm_in : in std_logic; --pcm波输入 接收通道-- pcm_out : out std_logic; --pcm波输出 发送同道-- to_Dx : in std_logic; --接3067 编码输出端--

to_Dr : out std_logic; --接3067 解码输入端--

incode : out std_logic; --8KHz编码帧同步信号-- decode : out std_logic; --8KHz解码帧同步信号-- incode_en : in std_logic; --编码允许信号--

decode_en : in std_logic; --解码允许信号--

code_in : in std_logic_vector(7 downto 0);--编码帧同步码-- code_de : in std_logic_vector(7 downto 0)); --解码帧同步码-- --为避免系统误解码,提高抗干扰能力可以增加帧同步码位数-- end pcm_con;

architecture Behavioral of pcm_con is

signal clk_sys : std_logic; --系统内部时钟信号--

signal sreg: STD_LOGIC_vector(7 downto 0);--8位移位寄存器-- begin

cp_out <= clk_sys; --2.045MHz时钟信号输出-- PROCESS (clk) --2.045MHz系统时钟进程-- VARIABLE tem : INTEGER RANGE 0 TO 1;

BEGIN

IF (clk'EVENT AND clk = '1') THEN

if tem =1 then

tem := 0;

else

VHDL课程设计

clk_sys <= not clk_sys;

tem := tem + 1;

end if;

end if;

END PROCESS; --时钟信号= 1/4 外部时钟-- PROCESS (clk_sys) --编码进程--

VARIABLE tim : INTEGER RANGE 0 TO 255; --时钟参量-- BEGIN

IF (clk_sys'EVENT AND clk_sys = '1') THEN

IF(incode_en = '1') THEN

IF (tim =255) THEN

tim:=0;

ELSE

tim := tim + 1;

END IF;

END IF; --帧同步时钟 = 系统时钟/256-- IF (incode_en = '1') THEN --编码允许信号控制--

IF (tim=7) THEN

incode <= '1'; --编码同步脉冲输出--

ELSE

incode <= '0'; --生成8KHz编码同步脉冲-- END IF;

END IF;

END IF;

IF (tim=0) THEN --根据内部时钟参量 生成串行的帧同步码-- pcm_out <= code_in(7);

elsif (tim=1) THEN

pcm_out <= code_in(6);

elsif (tim=2) THEN

pcm_out <= code_in(5);

elsif (tim=3) THEN

pcm_out <= code_in(4);

VHDL课程设计

elsif (tim=4) THEN

pcm_out <= code_in(3);

elsif (tim=5) THEN

pcm_out <= code_in(2);

elsif (tim=6) THEN

pcm_out <= code_in(1);

elsif (tim=7) THEN

pcm_out <= code_in(0); --帧同步码结束--

elsif (tim>7 and tim<16) THEN

pcm_out <= to_Dx; --根据内部时钟参量 发送八位pcm码--

else

pcm_out <= 'Z'; -- 其他时隙输出为高阻状态-- end if;

END PROCESS;

PROCESS (clk_sys) --解码进程-- VARIABLE cnt : INTEGER RANGE 0 TO 8; --解码时序参量-- begin

if (clk_sys'event and clk_sys='1') then

if decode_en ='1' then --解码允许信号控制-- sreg(7 downto 1)<=sreg(6 downto 0); --移位寄存器描述--

sreg(0)<=pcm_in;--通过移位寄存器把串行pcm码转换成并行码-- end if;

if (cnt<8) then

cnt:=cnt + 1; --解码时序参量自增--

else --只输出8位防止信道噪声被误解码-- cnt := 8; --输出8位pcm码后解码时序停止-- end if;

if (sreg = code_de) then --检测帧同步码--

decode <= '1'; --检测到帧同步码时输出帧同步脉冲-- cnt:=0;

else

VHDL课程设计

decode <= '0';

end if;

end if;

if (cnt>7) then

to_Dr <= 'Z'; --解码时序到来前输出高阻-- else

to_Dr <= pcm_in; --在解码时序中输出pcm波到解码芯片-- end if;

END PROCESS;

end Behavioral;

本文来源:https://www.bwwdw.com/article/gnxj.html

Top