㈠ 基于图结构应用《编码,译码器》的设计与实现 这个毕业设计应该从什么思路下手啊~~计算机专高手请指点
兄弟你这个论文有点难度了。不是随便拉拉就行了。得找专业书籍慢慢找和高人指导了。
我查到点不指导有没有用。
Turbo卷积码(TCC)是3G无线系统中所采用的前向错误校正(FEC)机制的整体部分。然而,Turbo译码器所带来的计算负担非常重,并不太适合采用传统DSP或RISC处理器实现。由于现场可编程逻辑阵列(FPGA)内在的并行结构,FPGA为解决3G基站收发器中所需要的符号速率FEC和其它计算密集的任务提供了一个高性能信号处理平台基础。
Turbo 编码
级联码方案(Concatenated coding schemes)是为了通过结合两个或更多相对简单的分量或构造模块码来获得较高的编码增益。Turbo码认为是对级联码结构的一种改进,其中采用迭代算法对相关的码序列进行译码。Turbo码是通过将两个或更多分量码应用到同一数据序列的不同交织版本上构成的。对于任何传统单分量编码,译码器的最后一级生成的都是硬判决译码数据位。为了使象Turbo码这样的级联码方案工作得更好,译码算法不应被限制为只能在译码器间传递硬判决。为最好地利用每个译码器获得的信息,译码算法必须可以实现软判决交换,而不是采用硬判决。对于采用两个分量码的系统,译码的概念是指将来自一个译码器的软判决输入到另一个译码器的输入,并将此过程重复几次以获得更好的判决,如图1所示 。
3GPP Turbo 编码器
图2为3GPP编码器。
输入数据流输入到RSC1,它为每个输入比特生成一个对等比特(Parity Bit)。输入数据还经过交织后由RSC2处理生成第二个对等比特流。
3GPP标准定义,输入块的长度在40至5114 位之间。编码器生成一个速率为1/3的包括原始输入位和两个对等位的系统码。通过打孔方法可以获得1/2编码速度的编码。递归系统编码器的实现比较直接,然而交织器则不那么简单,要比标准的卷积或块交织器复杂。
一旦将输入数据块长度K 提供给编码器以后,编码器将计算交织矩阵行数R和列数 C,并创建相应的交织数据结构。R 和 C 是数据块长度K的函数。在输入符号被加载到交织矩阵以后,那么将根据一定的顺序进行行间交换和列间交换。交换模式是根据块长度K选择的(即依赖于K)。行和列交换完成后,通过逐列读出交织矩阵数据就可以得到最终的交织序列。在数据读出时需要进行删减操作,以保证在输出中只有正确的输入符号,请注意,交织阵列包含的数据位通常比K个原始输入符号要多 ,因为R C>K。然后,新的序列经过RSC2编码生成第二个对等位流。
实现交织器的一种方法是在存储器中存储完整的交换序列。即,一旦K 给定,即调用一个初始化例程(运行在处理器上的软件例程或利用FPGA中的功能单元)生成相应的交换序列,然后将这一信息存储在存储器中。然而,这一方法需要大量的存储器。利用Virtex -E FPGA 技术提供的 4096位每块的片上存储器,将需要[5114 13/4096]=17个存储器块。
在我们的方法中,采用一个预处理引擎生成一个序列值(存储),这一序列值被存储起来,交织器地址发生器将使用这些序列值。这一硬件单元采用几个小型数据结构(素数表)来计算所需要的序列。这一准备过程需要的时钟周期数与信息块的长度成比例。例如,对于K=40的块需要280时钟周期,而对于最大块长度K=5114,则需要 5290个时钟周期。该过程只需要在块长度变化时进行。地址发生器利用这些更为紧凑的数据结构来实时生成交织地址。
3GPP Turbo 译码器
译码器包括两个MAP(最大后验概率)译码器和几个交织器。Turbo算法的优良的性能源于可以在两个MAP译码器间共享可靠性信息(extrinsic data,外数据,或称先验数据)。
在我们的设计中,MAP译码器采用的是Bahl, Cocke, Jelinek 和 Rajiv (BCJR) 算法。BCJR算法计算每个符号的最大后验对数似然率,并且是一种真正的软判决算法。考虑到数据是以块的形式传输的,因此可以在时间维中前向或反向搜索一个符号序列。对于任一序列,其出现概率都是单独符号出现概率的乘积。由于问题是线性的,因此序列概述可以利用概率的对数和来代替。
为了与一般文献中的习惯一致,我们将译码迭代的前向和反向状态概率分别利用 和 来表示。通常,BCJR算法要求在接收到整个信息后才开始解码。对于实时应用,这一限制可能太严格了。例如,3GPP Turbo译码器将需要大量存储器存储一个5114符号信息块的完全状态结构(state trellis)。对于单片FPGA设计来说,这需要的存储资源太多了。与维特比(Vitebi)算法类似,我们可以先从全零向量 O和数据{yk}(k 从 n 到 n-L) 开始反向迭代。L次反向迭代可获得非常好的 n-L近似值。只要L选择合适,最终的状态标志(state metric)就是正确的。可以利用这一性质在信息结束前就开始进行有效的位译码。
L 被称为收敛长度。其典型值大约是译码器约束长度的数倍(通常为5至10倍),并随着信噪比的降低而增加。
通常,Turbo译码算法将计算所有的 (对整块信息),将这些数值存储起来,然后在反向迭代中与反向状态概率一起用来计算新的外信息(extrinsic information,或称先验信息)。我们的设计中采用了窗口化方法。
译码过程以一个前向迭代开始,计算包含L 个接收符号的块i的 值。同时,对未来(i+1)块进行一个反向迭代(标号 )。对块i+1的反向迭代结束时,就获得了开始对块i 进行反向迭代所需要的正确的 初始向量。 与此同时对数似然函数(Lall)也在进行。 每一 和 处理过程都需要8个max* 操作 - 每个针对状态结构(tellis)中的8个结点之一。最终的对数似然计算需要14个并行max* 运算符。为了提供可接受的译码速率,在设计中采用了38个max* 功能单元。
从 C描述到FPGA设计
FPGA Turbo 编码译码器设计是利用基于C的设计和验证方法进行的,如图3所示。
算法开发阶段采用具有定点C类型的Art Library 来对定点计算的位真(bit-true)效应进行准确建模。在这一阶段考察了几种可能算法的定点性能。一旦选定正确的量化算法,就可利用A|rtDesignerPro创建一个专用DSP架构。A|rtDesignerPro的一个最强大的功能之一是可以插入和利用专用的数据通道核心(称为专用单元,ASU)。利用这些ASU加速器核心可以使我们处理Turbo译码器算法内在的计算复杂性。
A|rtDesignerPro可自动完成寄存器分配、调度和控制器生成。在Turbo编码译码器设计中, A|rtDesignerr的自动循环合并可获得最佳的;任务调度,MAP译码步骤的内部循环都只有一个周期长。
A|rtDesignerPro生成的最终结果是可综合的寄存器级(RT-level) VHDL或Verilog 描述。基于C的工具流支持FPGA专用功能。例如,可利用BlockRAM自动构造RAM,而寄存器文件也可利用分布式存储器而不是触发器来实现 。
最后,逻辑综合和Xilinx实施工具套件将RTL HDL 转换为 FPGA 配置位流。
FPGA Turbo 编码译码器实现
A|rtDesigner创建的Turbo编码器和译码器核心硬件结构包含许多专用ASU加速器。其中最重要的一个加速器完成max* 操作。max* 运算符根据下式计算两个幂值a 和 b:
max* (a,b)=ln(expc(a)+expc(b))。
如 图4所示, max* 运算是通过选择(a,b)最大值,并应用一个存储在查找表(LUT)中的校正因子近似进行的。这一近似算法非常适合利用Xilinx FPGA 实现,其中LUT是其最终基本构造单元。
结果
Turbo译码算法硬件字长的选择极大地影响总体性能。利用C-to-FPGA设计流程,这一定点分析是完全在C环境中完成的。结果示于图 5。
上图显示出了我们的浮点Turbo译码器算法和对应的定点算法之间的性能差别。仿真是在5114块长度、5次译码迭代和AWGN信道模型情况下进行的。结果清晰明显出性能的损失是非常小的。
我们的Turbo译码器的定点性能做为译码器迭代次数的函数 ,对于1.5 dB SNR,位错率为10-6。
译码器功能的实现非常具有挑战性,我们同时针对Virtex-E和 Virtex-II 器件进行了适配。Virtex-II 器件实施是采用运行在1.85 speedfile数据库上的Xilinx 4.1i 实施工具集完成的。利用XC2V1000BG575-5 FPGA实现的最终设计,达到了66 MHz 的时钟性能,消耗了3,060个逻辑片 和 16个块RAM。对于从40至 5114符号长度的块,采用5次译码迭代循环的情况下,译码器达到了2 至6.5 百万符号每秒(Msym/s)的吞吐量。编码器占用了903个逻辑片、3个块RAM并支持83 MHz时钟频率。对于从40至5114位的块长度,速率可达到9 至20 Msym/s。
能用上就好了,用不上别怪我。对不起哈~祝福你~
㈡ pcm 编译码芯片中的用到哪些滤波器这些滤波器的带宽设置是如何考虑 的
1. 点到点PCM多路电话通信原理
脉冲编码调制(PCM)技术与增量调制(ΔM)技术已经在数字通信系统中得到广泛应用。当信道噪声比较小时一般用PCM,否则一般用ΔM。目前速率在155MB以下的准同步数字系列(PDH)中,国际上存在A解和μ律两种PCM编译码标准系列,在155MB以上的同步数字系列(SDH)中,将这两个系列统一起来,在同一个等级上两个系列的码速率相同。而ΔM在国际上无统一标准,但它在通信环境比较恶劣时显示了巨大的优越性。
点到点PCM多路电话通信原理可用图9-1表示。对于基带通信系统,广义信道包括传输媒质、收滤波器、发滤波器等。对于频带系统,广义信道包括传输媒质、调制器、解调器、发滤波器、收滤波器等。
本实验模块可以传输两路话音信号。采用TP3057编译器,它包括了图9-1中的收、发低通滤波器及PCM编译码器。编码器输入信号可以是本实验模块内部产生的正弦信号,也可以是外部信号源的正弦信号或电话信号。本实验模块中不含电话机和混合电路,广义信道是理想的,即将复接器输出的PCM信号直接送给分接器。
2. PCM编译码模块原理
本模块的原理方框图图9-2所示,电原理图如图9-3所示(见附录),模块内部使用+5V和-5V电压,其中-5V电压由-12V电源经7905变换得到。
图9-2 PCM编译码原理方框图
该模块上有以下测试点和输入点:
• BS PCM基群时钟信号(位同步信号)测试点
• SL0 PCM基群第0个时隙同步信号
• SLA 信号A的抽样信号及时隙同步信号测试点
• SLB 信号B的抽样信号及时隙同步信号测试点
• SRB 信号B译码输出信号测试点
• STA 输入到编码器A的信号测试点
• SRA 信号A译码输出信号测试点
• STB 输入到编码器B的信号测试点
• PCM PCM基群信号测试点
• PCM-A 信号A编码结果测试点
• PCM-B 信号B编码结果测试点
• STA-IN 外部音频信号A输入点
• STB-IN 外部音频信号B输入点
本模块上有三个开关K5、K6和K8,K5、K6用来选择两个编码器的输入信号,开关手柄处于左边(STA-IN、STB-IN)时选择外部信号、处于右边(STA-S、STB-S)时选择模块内部音频正弦信号。K8用来选择SLB信号为时隙同步信号SL1、SL2、SL5、SL7中的某一个。
图9-2各单元与电路板上元器件之间的对应关系如下:
•晶振 U75:非门74LS04;CRY1:4096KHz晶体
•分频器1 U78:A:U78:D:触发器74LS74;U79:计数器74LS193
•分频器2 U80:计数器74LS193;U78:B:U78:D:触发器74LS74
•抽样信号产生器 U81:单稳74LS123;U76:移位寄存器74LS164
•PCM编译码器A U82:PCM编译码集成电路TP3057(CD22357)
•PCM编译码器B U83:PCM编译码集成电路TP3057(CD22357)
•帧同步信号产生器 U77:8位数据产生器74HC151;U86:A:与门7408
•正弦信号源A U87:运放UA741
•正弦信号源B U88:运放UA741
•复接器 U85:或门74LS32
晶振、分频器1、分频器2及抽样信号(时隙同步信号)产生器构成一个定时器,为两个PCM编译码器提供2.048MHz的时钟信号和8KHz的时隙同步信号。在实际通信系统中,译码器的时钟信号(即位同步信号)及时隙同步信号(即帧同步信号)应从接收到的数据流中提取,方法如实验五及实验六所述。此处将同步器产生的时钟信号及时隙同步信号直接送给译码器。
由于时钟频率为2.048MHz,抽样信号频率为8KHz,故PCM-A及PCM-B的码速率都是2.048MB,一帧中有32个时隙,其中1个时隙为PCM编码数据,另外31个时隙都是空时隙。
PCM信号码速率也是2.048MB,一帧中的32个时隙中有29个是空时隙,第0时隙为帧同步码(×1110010)时隙,第2时隙为信号A的时隙,第1(或第5、或第7 —由开关K8控制)时隙为信号B的时隙。
本实验产生的PCM信号类似于PCM基群信号,但第16个时隙没有信令信号,第0时隙中的信号与PCM基群的第0时隙的信号也不完全相同。
由于两个PCM编译码器用同一个时钟信号,因而可以对它们进行同步复接(即不需要进行码速调整)。又由于两个编码器输出数据处于不同时隙,故可对PCM-A和PCM-B进行线或。本模块中用或门74LS32对PCM-A、PCM-B及帧同步信号进行复接。在译码之前,不需要对PCM进行分接处理,译码器的时隙同步信号实际上起到了对信号分路的作用。
3. TP3057简介
本模块的核心器件是A律PCM编译码集成电路TP3057,它是CMOS工艺制造的专用大规模集成电路,片内带有输出输入话路滤波器,其引脚及内部框图如图9-4、图9-5所示。引脚功能如下:
图9-4 TP3057引脚图
(1) V一 接-5V电源。
(2) GND 接地。
(3) VFRO 接收部分滤波器模拟信号输出端。
(4) V+ 接+5V电源。
(5) FSR 接收部分帧同信号输入端,此信号为8KHz脉冲序列。
(6) DR 接收部分PCM码流输入端。
(7) BCLKR/CLKSEL 接收部分位时钟(同步)信号输入端,此信号将PCM码流在FSR上升沿后逐位移入DR端。位时钟可以为64KHz到2.048MHz的任意频率,或者输入逻辑“1”或“0”电平器以选择1.536MHz、1.544MHz或2.048MHz用作同步模式的主时钟,此时发时钟信号BCLKX同时作为发时钟和收时钟。
(8) MCLKR/PDN 接收部分主时钟信号输入端,此信号频率必须为1.536MHz、1.544MHz或2.048MHz。可以和MCLKX异步,但是同步工作时可达到最佳状态。当此端接低电平时,所有的内部定时信号都选择MCLKX信号,当此端接高电平时,器件处于省电状态。
(9) MCLKX 发送部分主时钟信号输入端,此信号频率必须为1.536MHz、1.544MHz或2.048MHz。可以和MCLKR异步,但是同步工作时可达到最佳状态。
(10) BCLKX 发送部分位时钟输入端,此信号将PCM码流在FSX信号上升沿后逐位移出DX端,频率可以为64KHz到2.04MHz的任意频率,但必须与MCLKX同步。
图9-5 TP3057内部方框图
(11) DX 发送部分PCM码流三态门输出端。
(12) FSX 发送部分帧同步信号输入端,此信号为8KHz脉冲序列。
(13) TSX 漏极开路输出端,在编码时隙输出低电平。
(14) GSX 发送部分增益调整信号输入端。
(15) VFXi- 发送部分放大器反向输入端。
(16) VFXi+ 发送部分放大器正向输入端。
TP3057由发送和接收两部分组成,其功能简述如下。
发送部分:
包括可调增益放大器、抗混淆滤波器、低通滤波器、高通滤波器、压缩A/D转换器。抗混淆滤波器对采样频率提供30dB以上的衰减从而避免了任何片外滤波器的加入。低通滤波器是5阶的、时钟频率为128MHz。高通滤波器是3阶的、时钟频率为32KHz。高通滤波器的输出信号送给阶梯波产生器(采样频率为8KHz)。阶梯波产生器、逐次逼近寄存器(S•A•R)、比较器以及符号比特提取单元等4个部分共同组成一个压缩式A/D转换器。S•A•R输出的并行码经并/串转换后成PCM信号。参考信号源提供各种精确的基准电压,允许编码输入电压最大幅度为5VP-P。
发帧同步信号FSX为采样信号。每个采样脉冲都使编码器进行两项工作:在8比特位同步信号BCLKX的作用下,将采样值进行8位编码并存入逐次逼近寄存器;将前一采样值的编码结果通过输出端DX输出。在8比特位同步信号以后,DX端处于高阻状态。
接收部分:
包括扩张D/A转换器和低通滤波器。低通滤波器符合AT&T D3/D4标准和CCITT建议。D/A转换器由串/并变换、D/A寄存器组成、D/A阶梯波形成等部分构成。在收帧同步脉冲FSR上升沿及其之后的8个位同步脉冲BCLKR作用下,8比特PCM数据进入接收数据寄存器(即D/A寄存器),D/A阶梯波单元对8比特PCM数据进行D/A变换并保持变换后的信号形成阶梯波信号。此信号被送到时钟频率为128KHz的开关电容低通滤波器,此低通滤波器对阶梯波进行平滑滤波并对孔径失真(sinx)/x进行补尝。
在通信工程中,主要用动态范围和频率特性来说明PCM编译码器的性能。
动态范围的定义是译码器输出信噪比大于25dB时允许编码器输入信号幅度的变化范围。PCM编译码器的动态范围应大于图9-6所示的CCITT建议框架(样板值)。
当编码器输入信号幅度超过其动态范围时,出现过载噪声,故编码输入信号幅度过大时量化信噪比急剧下降。TP3057编译码系统不过载输入信号的最大幅度为5VP-P。
由于采用对数压扩技术,PCM编译码系统可以改善小信号的量化信噪比,TP3057采用A律13折线对信号进行压扩。当信号处于某一段落时,量化噪声不变(因在此段落内对信号进行均匀量化),因此在同一段落内量化信噪比随信号幅度减小而下降。13折线压扩特性曲线将正负信号各分为8段,第1段信号最小,第8段信号最大。当信号处于第一、二段时,量化噪声不随信号幅度变化,因此当信号太小时,量化信噪比会小于25dB,这就是动态范围的下限。TP3057编译码系统动态范围内的输入信号最小幅度约为0.025Vp-p。
常用1KHz的正弦信号作为输入信号来测量PCM编译码器的动态范围。
图9-6 PCM编译码系统动态范围样板值
语音信号的抽样信号频率为8KHz,为了不发生频谱混叠,常将语音信号经截止频率为3.4KHz的低通滤波器处理后再进行A/D处理。语音信号的最低频率一般为300Hz。TP3057编码器的低通滤波器和高通滤波器决定了编译码系统的频率特性,当输入信号频率超过这两个滤波器的频率范围时,译码输出信号幅度迅速下降。这就是PCM编译码系统频率特性的含义。
四、实验步骤
1. 熟悉PCM编译码单元工作原理,开关K9接通8KHz(置为1000状态),开关K8置为SL1(或SL5、SL7),开关K5、K6分别置于STA-S、STB-S端,接通实验箱电源。
2. 用示波器观察STA、STB,调节电位器R19(对应STA)、R20(对应STB),使正弦信号STA、STB波形不失真(峰峰值小于5V)。
3. 用示波器观察PCM编码输出信号。
示波器CH1接SL0,(调整示波器扫描周期以显示至少两个SL0脉冲,从而可以观察完整的一帧信号)CH2分别接SLA、PCM-A、SLB、PCM-B以及PCM,观察编码后的数据所处时隙位置与时隙同步信号的关系以及PCM信号的帧结构(注意:本实验的帧结构中有29个时隙是空时隙,SL0、SLA及SLB的脉冲宽度等于一个时隙宽度)。
开关K8分别接通SL1、SL2、SL5、SL7,观察PCM基群帧结构的变化情况。
4. 用示波器观察PCM译码输出信号
示波器的CH1接STA,CH2接SRA,观察这两个信号波形是否相同(有相位差)。
5. 用示波器定性观察PCM编译码器的动态范围。
开关K5置于STA-IN端,将低失真低频信号发生器输出的1KHz正弦信号从STA-IN输入到TP3057(U82)编码器。示波器的CH1接STA(编码输入),CH2接SRA(译码输出)。将信号幅度分别调至大于5VP-P、等于5VP-P,观察过载和满载时的译码输出波形。再将信号幅度分别衰减10dB、20dB、30dB、40dB、45dB、50dB,观察译码输出波形(当衰减45dB以上时,译码输出信号波形上叠加有较明显的噪声)。
也可以用本模块上的正弦信号源来观察PCM编译码系统的过载噪声(只要将STA-S或STB-S信号幅度调至5VP-P以上即可),但必须用专门的信号源才能较方便地观察到动态范围。