ASIC实验报告-帧同步检测_第1页
ASIC实验报告-帧同步检测_第2页
ASIC实验报告-帧同步检测_第3页
ASIC实验报告-帧同步检测_第4页
ASIC实验报告-帧同步检测_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、许金良 电子院10级04班 1321784084 目录1. 前言22. 实验目的23. 实验任务24. 帧同步系统实现原理24.1帧结构24.2帧同步的原理45. 帧同步电路模块设计55.1模块外部管脚55.2设计思路56. 帧同步检测模块设计67. 仿真、测试、综合与分析88. 实验总结与心得119. Verilog代码139.1主模块代码139.2测试模块代码151 前言两个工作站之间以报文分组为单位传输信息时,必须将线路上的数据流划分成报文分组规程的帧,以帧的格式进行传送。帧的帧标识位用来标识帧的开始和结束。通信开通时,当检测到帧标识,即认为是帧的开始,然后在数据传输过程中一旦检测到帧标

2、识F即表示帧结束。之所以要把比特组合成以帧为单位传送,是为了在出错时,可只将有错的帧重发,而不必将全部数据重新发送,从而提高了效率。帧同步指的是接收方应当能从接收到的二进制比特流中区分出帧的起始与终止。本文中在linux操作系统下,用具有强大的行为描述能力和丰富的仿真语句的verilog HDL语言来描述PCM帧同步检测及告警系统,并用大型EDA软件cadence对其进行仿真、综合和逻辑验证。2 实验目的1. 掌握利用Verilog进行专用集成电路设计的流程和方法。2. 学习用cadence软件进行EDA设计综合的方法。3. 提高用书本知识解决实际问题的能力。3 实验任务1. 画出电路实现帧同

3、步、失步的检测流程。2. 用verilog HDL 进 行frame电路的描述。3. 写出正确的测试文件,测试文件必须包括从“帧同步”到“帧同步”再到“帧同步”的状态转变过程。4. 在linux环境下使用Verilog XL模拟器进行verilog语言文件进行仿真测试,测试无误后进行电路综合。 4 帧同步系统实现原理 4.1 帧结构编码数字信号是一个无头无尾的数码流,尽管其中含有大量的信息,但若不能分辨一个样值所对应的码子,将无法进行正确的译码。在时分多路通信中,若不能判定各话路的序号,将无法进行准确的通信。所谓帧结构,就是一种按时隙分配的重复性图案。在PCM基群设备中是以帧结构为准则,将各种

4、信息规律性地相互交叉汇总后形成高速码流。对于数码率为 2048 kb/s 的设备而言,由于取样频率为 8 kHz,每个样值编 8 位码,则应能传输 32 路 64 kb/s 信息码。为了保证收、发双方步调一致地工作,有必要在信息码流中插入一些完成同步功能的同步码、对告码以及每个话路的随路信令等非语声信息,其传输速率之和为 128kbs ,即占用了两个话路。因此,PCM 基群的话路数只有 30 个,故称为PCM3032 路系统。为了扩大通信容量,高次群复接设备均以这种系统为基本复接单元。因此,将PCM 30/32 路系统称为基群(或一次群)。基群的帧结构如下图。在PCM 3032 路制式中,取样

5、周期为125us(1800OHz),每个样值编8 位码,称一个码字。为了保全码字,避免译码差错,在基群中是按码字复接的,那么,只要在125us 的时间内将32 路信号(32 个码字)在时间上排开就组成了一帧。每传一个码字的时间称为一个时隙(Time slot),以TSi(i= 0,1,31)表示,并规定TS0 时隙为同步时隙,作为一帧的开始,在这个时隙中传送帧同步码(同步码型为x0011011)和对告码(A1)。图表 1 帧结构示意图在TSo 时隙中,同步码和对告码交替传送,常将传送同步码的那一帧称为偶帧,传送对告码的一帧称为奇帧。TSo 时隙的第一位码留给国际通信使用,也可用于CRC 校验等

6、,不用时发“1”。TSl6 时隙为信令时隙,主要传送30 个话路的信令码(占用、拨号、挂机等)。每个话路的信令有四位,分别记为a、b、c、d,其中b、c、d 不用时固定发“101”。由于一帧内的TS16 时隙中只能传送两个话路的信令码,将30 个话路的信令码各传输一次需要15 帧的时间,各帧的TS16 时隙中前4 位码传送第115 路的信令码,后4 位码传送第1630 路的信令码。为了正确分离信令码,并传送复帧对告信号,需要插入复帧同步码及复帧对告码,故将16 帧组成一个复帧,一个复帧内的各帧记为Fi(i=0,1,15)。在F0 帧的TSl6 时隙内传送复帧同步码(其码型为“0 0 0 0”)

7、和复帧对告(A2)码,并以F0 帧作为一个复帧的开始。其他15 帧的TSl6 时隙内传送30 个话路的信令码,其中F1 帧TSl6 时隙传送第1 路、第16 路的信令码,F2 帧TSl6 时隙传送第2 路,第17 路的信令码,依次类推。帧结构中的基本参数:数码率:32×8kHz×8b2048kbs一帧的比特数:32×8b256b帧周期:18000Hz125us每时隙的时间:125us÷323.9us每位码的时间:3.9us÷8488ns复帧周期:125us×l62ms4.2 帧同步的原理帧同步系统是保证收、发双方同步工作的重要单元。从

8、基群的帧结构中可知,同步时隙TS0是奇、偶帧两种形式的图案交替,即偶帧TS0时隙的D2D8为帧同步码“0011011”,奇帧TS0时隙的D2固定为“1”。为了提供防止伪帧定位的附加保护措施和提高比特五码检测能力,TS0时隙中的第一位码作为循环冗余校验CRC码。在帧失步的情况下,帧定位恢复的判定依据为: 第一次检测到正确的偶帧定位信号(0011011); 核实下一奇帧TS0时隙中第二比特为“1”; 再下一帧第二次出现正确的帧定位信号(0011011)。以上三条必须都满足,缺一不可。在帧同步的情况下,帧定位失步的判定依据为: 第一次检测不到正确的偶帧定位信号(0011011); 核实下一奇帧TS0

9、时隙中第二比特不为“1”; 再下一帧第二次不出现正确的帧定位信号(0011011)。以上三条必须都满足时,系统立即进入失步状态。信号在传输过程中不可避免地存在误码,因此,要求帧同步系统具有一定的稳定性,才能抵御误码对同步的影响。具体地说,如果同步码由于误码产生差错,不应该使系统脱离同步态,这就要求同步电路具有前方保护的功能,即应该满足帧失步的判据。当确认系统已经失步时,应立即捕捉同步码。当系统工作在同步态时,由于帧同步码插在偶帧的ST0 时隙,因此,每两帧进行一次同步检出。当系统失步后,为了尽快从信码中捕捉到帧同步码组,电路由按帧检测转为按位检测。由于信码中可能出现与帧同步码型完全相同的码字,

10、因此,当电路捕捉到同步码型时,并不一定是帧同步码,必须进行校核,以防止伪帧同步。校核的方法是:一旦捕捉到同步码字,电路立即由按位检测改为按帧检测(每帧检测一次)。由于TS0 时隙中,偶帧总是帧同步码,奇帧的第二比特一定为“1”,其出现是有规律的,而信码中混入与同步码相同的码字时,其出现将是无规律的。校核电路正是利用这一特点来检查被捕捉的同步码型的真假。具体地说,当电路捕捉到同步码型之后,还需检查下一帧TS0 时隙第二位码是否为“1”,若不是“1”,则上次捕捉到的是假同步码,电路重新按位捕捉,直到捕捉到另一个同步码型后再转入按帧检测,如果奇帧TS0 时隙的第二位码是“1”,也不能保证上次捕捉到的

11、一定是同步码,还要进一步检测再下一帧的内容。如果第一次捕捉到的是假同步码,两帧后又出现一次假同步码的可能性很小,若捕捉到的是真同步码,那么,两帧后同步码还会出现。因此,只有在第三帧又捕捉到了同步码,系统才由捕捉态重新进入同步态。这种多次进行校核以确认同步的过程称为后方保护。CCITT 建议基群的前、后方保护次数均为3次。5 帧同步电路模块设计5.1模块外部管脚图表 2 帧同步模块示意图各管脚的功能说明如下:pcm:输入的大量编码数字信号。clk:与编码信号同步的时钟信号。rst:复位信号,异步上升沿复位,rst出现上升沿后,系统恢复到最开始的失步状态。lfa:当帧失步时,lfa输出1,当帧同步

12、时,lfa输出0。5.2 设计思路帧同步检测电路的设计用状态机来实现,设定各状态标示符及其含义如下。表格 1 状态标示符S0initial stateS1syn_confirm1S2syn_confirm2S3syn_holdS4loss_confirm1S5loss_confirm2另外我们再定义两个变量even和odd,其中even置“1”,表示偶帧检测到子帧同步码;odd置“1”,表示奇帧检测到同步标志位。在此基础上,做系统状态转移图如下:图表 3 状态转移图系统开机后,首先进入子帧同步搜索状态S0,在接收时钟clk的作用下,将接收码流存入移位寄存器shift_reg8,当shift_r

13、eg8=0011011时,even置“1”,表示检测到奇帧同步位,系统进入后方保护状态S1;NUM从0开始计数,当NUM=248时,如果接收的码位为“1”,则将odd置“1”,表示接收到的第2帧的TSO时隙内无帧同步码,且第2比特为“1”,系统进入S2,否则返回S0;当NUM=511时,若even=1,则表示接着来的帧内的TS0时隙出现正确的帧同步码,系统进入子帧同步保持状态S3并置lfa=0,否则返回S0。进入S3后,NUM从0开始计数,当NUM=511时,若果接收到偶帧同步码,则仍 处于S3;否则进入前方保护状态S4;进入S4,NUM从0开始计数,当NUM=511时,若接收到正确的偶帧同步

14、码则返回S3,否则进入S5;进入S5,NUM从0开始计数,当NUM=511时,若接收到正确的偶帧同步码则返回S3,否则进入S6并复位lfa,系统失去同步。之所以S4状态仍检测偶帧同步码而非奇帧同步位,也是出于减小误判概率的缘故。6 帧同步测试模块设计 #0 rst=1; #2 rst=0; /give reset signal #7 rst=1; #2 rst=0;如上面几行代码所示,测试文件首先给出稳定的clk时钟信号,然后给出复位信号rst,利用其上升沿对所有的信号复位。之后给出大量的pcm码输入信号进行测试。可以设定一个计数器计算正确的次数。每一帧的信号输入后,都检测一次电路的输出,每次

15、当电路的输出与所期望的值完全一致时,计数器加1。如果所有帧的输入得到的结果都是正确的,即可说明电路的设计是正确的。下面的代码的功能是以循环嵌套的方式输入pcm值。 for(frame_num=1;frame_num<=20;frame_num=frame_num+1) /帧循环,一共二十帧 for(bit_num=0;bit_num<=255;bit_num=bit_num+1)/帧内循环,一共256bit #2 pcm=row_pcm5375-bit_num-256*frame_num;/输入值为了尽可能地让测试文件完整,并能够涵盖几乎所有的状态跳转的情况,本测试程序使用了20帧

16、的输入信号对设计的电路进行测试。这20帧信号的帧头部和期望的测试结果如下:表格 2输入帧数据帧数帧头部内容输出信号(lfa)1正确的偶帧定位信号12奇帧第二位为113正确的偶帧定位信号04奇帧第二位为105正确的偶帧定位信号06奇帧第二位为107错误的偶帧定位信号08奇帧第二位为109正确的偶帧定位信号010奇帧第二位为1011错误的偶帧定位信号012奇帧第二位为0013正确的偶帧定位信号014奇帧第二位为0015错误的偶帧定位信号016奇帧第二位为0017错误的偶帧定位信号018错误的偶帧定位信号019奇帧第二位为1120错误的偶帧定位信号1其中第1帧信号是从任意的时间开始输入的,仔细分析以

17、上20帧信号可知,以上20帧信号包括了所有6种状态互相跳转的情况。用上表的20帧数据进行测试结果如果正确,则可以保证电路的设计是完全正确的。且由上表可以看出,整个测试过程中lfa先是1、后变成0、之后再变成1,也即整个系统的过程是失步状态同步状态失步状态。由于数据量非常大,故在程序中设定一个很长的一维数组row_pcm,在初始化的时候将20帧信号存入存储器。再根据时钟信号按位输出波形。除了同步码之外pcm信号中还存在大量额外数据,在实际应用中这些数据是实际传输的有用数据。本系统是具有一定的系统漏洞的。例如从帧失步到帧同步状态的判定过程中,就忽略了小概率事件。因为要传输的有用数据可能恰好也符合判

18、定帧同步的要求,这是系统就判定其为同步,而是事实上此时系统并未同步。我们可以计算误判的概率。我们假设要传输的数据中出现0和出现1的概率均为, 则由帧失步到帧同步状态转换时误判的概率=可见这个误判的概率是很小的,如果系统要求不高,这种概率可以忽略。假如我们判断帧同步是在此基础上再增加一个奇帧和一个偶帧,那么错判的概率变为=由此可见增加判断的帧数对降低误判率的作用是多么的显著。但是这种误判率的降低以延时的增加为代价,在实际应用中应综合考虑系统对延时的要求、对误判率的要求以及数据流中0和1出现的概率这3中情况来选择最佳策略。7 仿真、测试、综合与分析图表 4 控制台输出上图最左边的数据代表是第几帧信

19、号,lfa是电路的输出值,而lfa_e是期望的正确输出值,最右边给出对每一帧结果的判断。判断完所有的输出后给出最终的判断结果。可以看出,该电路的设计完全正确。由于该测试文件的数据量比较大,对波形的分析不太方便,所以主要根据控制台的输出信息进行正误的判断。这里仅给出对部分波形的分析。图表 5 整体波形图(注意第二个波形为输出)上面的波形是20帧信号的全部工作过程。可以看到,在激励pcm信号的作用下,lfa(从上面看第二行)由1变为0,再由0变为1,系统由失步状态变成同步状态,之后又变成失步状态。我把移位寄存器的波形删掉了,很遗憾。图表 6 由失步到同步上图体现了从失步状态到同步状态的跳变,lfa

20、由1变为0。可以分析出该过程的时序是完全正确的。图表 7 由同步到失步上图体现了从同步状态到失步状态的跳变。可以分析出该过程的时序是完全正确的。图表 8 综合所得到的门级电路1图表 9 综合所得到的门级电路2 图表8和图表9是综合后得到的门级电路,可以看到门级电路由与非门,非门,寄存器和连线等构成。8 实验总结与心得为期4周的ASIC实验,对我而言那是一段难忘的经历。还记得,课上请教韩老师的谆谆教导;还记得,与同学争论一个小问题时的唾沫纷飞;还记得,午夜在自习室敲代码的数个日夜;还记得,一朝功成的喜上眉梢。有喜有忧,有汗有泪,一次ASIC实验,就像一颗碎石丢进静谧的湖水,为这平凡的大三下学期激

21、起层层涟漪。通过这次实验,我学习并巩固了verilog编程这一部分课堂内容,这不仅有助于完成本次试验,也将使我在期末考试中获益,何乐而不为呢?一方面,我陈列一下我这几周我对verilog 硬件描述语言的点点总结。对于组合逻辑,敏感变量必须包含逻辑门所有的输入变量。always模块敏感表不完备是综合前后仿真结果不一致的原因之一。避免锁存器的产生。每一个if都应对应一个else;每一个case都应对应一个default; Ifelse语句与case语句。对于组合逻辑,采用ifelse或case语句,其综合的结果有所不同。如果电路不需要有优先级的设计,则应优先采用case语句;因为在一般情况下,ca

22、se语句实现的设计路径延迟要小于ifelse语句实现的电路。避免在设计中既用时钟的上升沿又用下降沿。尽可能将上升沿和下降沿触发的触发器分别放到不同的模块中实现保持良好地代码风格。一个好的设计代码不仅要有正确的逻辑表达,还要有良好的代码风格。比如说在代码中有必要的注释、在程序的头部写上作者、时间、版本等信息,这样才能增强代码的可读性。而写代码的习惯,需要在平时的练习中严格要求自己。另一方面,在整个实验过程中柳暗花明时喜滋滋的感觉是那样的让人难以忘怀。在第一此实验课前,我从网上查了与帧同步相关的不少资料,尽管我是怀着找现成的verilog代码的美好愿望去的,但是现实是残酷的,我的希望很快破灭了。我

23、只好从老师之前给的实验相关资料中学习帧同步的基本知识,尽量从中挖掘与可以写成代码的东西。一个下午加一个晚上,在加上之前学过的状态转移图的相关知识,我竟然谢了200行的代码出来。尽管后来发现那个代码不但很冗长,而且方法有点蠢,最重要的是仿真输出的结果严重不合要求。虽然当时程序烂成这样,但是很有成就感,现在想想,那时的路是需要的。第二次课上我从别人那儿阅读了前人的很类似的代码,那套代码对我启发很大,它的代码量如此至少也让我很吃惊。晚上回去后我在自习室加班加点忙活了几个小时,终于得到了相当满意的结果。虽然不能保证在cadence下编译综合通过,但至少在modelsim下是完全没问题的。然后我做了很多

24、精简代码的工作,最终把代码量压缩到令我自己都觉得吃惊的少。cadence不能编译二维数组,而modelsim则没有这个限制,这个差异是我最先怀疑并验证的。这个由于仿真平台性能的差异让很多同学很头疼。cadence默认的时钟是1ns,在本实验中,时钟周期不宜过大,因为这会让你看波形的时候很头疼,因为鼠标移动了好久波形仍不变化,甚至会让你怀疑波形是错误的。代码量少不见得代码的复杂度低。一味的压缩代码可能是以代码性能的牺牲为代价。cadence平台不允许在声明变量时赋值,而这在modelsim那儿是没问题的。在cadence平台必须在initial块里初始化。本次试验的不足之处是有一些的,其中一个是

25、没有彻底综合成功,因为综合过程产生的文件framre_syn.sdf文件是空白的,也就是说根本没有综合成功。由于学期末时间紧张而且实验室条件原因,没能继续做下去。或许离终极的成功只隔着一层窗户纸,也可能距离还很遥远,我大概没机会知道了。希望后继有人,就像2013年的我们,把它做得更完善。最后感谢韩可老师一路上不厌其烦地指导,感谢两位学长兼助教的无私帮助。9 Verilog代码 9.1 主模块代码/*/ File: frame_syn.v / Author: Xu Jinliang/ Class: 2010211204/ Number: 10210929/ Create Date: 06/21/

26、2013 / Version: Cadence 16.5 / Port Description: / frame/ -/ clk->| |/ | |/ pcm->| |->lfa/ | |/ rst->| |/ -/*/module frame_syn(lfa,pcm,clk,rst); input pcm,clk,rst; /define 3 inputs output lfa; /define output reg lfa; reg8:0 NUM; /counter reg7:0 shift_reg8; /8 bit shift register, store re

27、cent PCM codes reg6:0 even_head7; reg5:0 state; /define state, Distinguish between different state parameter S0=6'b000001,/initial state S1=6'b000010,/syn_confirm1 S2=6'b000100,/syn_confirm2 S3=6'b001000,/syn_hold S4=6'b010000,/loss_confirm1 S5=6'b100000;/loss_confirm2 always

28、 (posedge clk or posedge rst) begin if(rst=1) /reset all signals begin shift_reg8<=0; state<=S0; NUM<=0; lfa<=1; end else if(clk=1) begin shift_reg8<=shift_reg86:0,pcm; even_head7<=shift_reg85:0,pcm; NUM<=NUM+1; case(state) S0:if(even_head7=7'b0011011) begin state<=S1; NU

29、M<=0; /first time find the framing signal(even), state=1 end S1:if(NUM=248) if(pcm=1) /second time find the framing signal(odd), state=2 begin state<=S2; NUM<=0; end else state<=S0; /else: out of frame S2:if(NUM=262) if(even_head7=7'b0011011) begin lfa<=0; state<=S3; NUM<=0;

30、 /third time find the framing signal(even), state=3 end else state<=S0; /else: out of frame S3:if(NUM=511) if(even_head7=7'b0011011) begin state<=S3; NUM<=0; /check every two frames end else begin state<=S4; NUM<=0; /can not find the framing signal, state=4 end S4:if(NUM=511) if(e

31、ven_head7=7'b0011011) begin state<=S3; NUM<=0; /find the next framing signal(even) end else state<=S5; /can not find, state=5 S5:if(NUM=511) if(even_head7=7'b0011011) begin state<=S3; /find the next framing signal(even) NUM<=0; end else begin state<=S0; /can not find, out o

32、f frame, state=0 lfa<=1; end endcase end end endmodule9.2 测试模块代码/*/ File: frame_syn_test.v / Author: Xu Jinliang/ Class: 2010211204/ Number: 10210929/ Create Date: 06/21/2013 / Version: Cadence 16.5 / Description: Use 20 frames signal/ to test whether your/ design is correct!/*/module frame_syn_t

33、est; reg pcm=1'b0,clk=1'b1,rst=1'b0; /test signal wire lfa; /test signal reg1:20 lfa_e=20'b11000000000000000011; /correct receipt signal reg5:0 right_num=0; /store correct times reg yes_no=1'b0; reg7:0 head=8'b10011011; /correct even framing signal reg7:0 odd1=8'b11011111; /correct odd framing signal reg7:0 odd2=8'b01010101; /random signal (8 bits) reg247:0 data=318'b01010101; /random

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论