《通信原理课程设计基于FPGA的时分多路数字基带传输系统的设计与开发.doc》由会员分享,可在线阅读,更多相关《通信原理课程设计基于FPGA的时分多路数字基带传输系统的设计与开发.doc(40页珍藏版)》请在三一办公上搜索。
1、通信系统课程设计基于FPGA的时分多路数字基带传输系统的设计与开发 指导老师:戴慧洁 武卫华 班级:通信102班 组长: 组员:2013年7月5日通信系统课程设计目录1.通信系统课程设计目的、内容、要求1.1 课程设计目的1.2 课程设计内容1.3 课程设计要求2.通信系统课程设计选题及小组划分2.1课程设计选题2.2 小组划分3.通信系统课程设计系统框图及各模块参数指标3.1 系统框图3.2 各模块参数指标4. 通信系统课程设计各模块原理与思路4.1 PCM编译码4.2 HDB3编译码4.3 一次群时分复用与分接4.4 同步5.通信系统课程设计各模块编程与波形仿真(含代码)5.1 PCM编译
2、码5.2 HDB3编译码5.3 一次群时分复用与分接5.4 同步6. 通信系统课程设计心得体会1.通信系统课程设计目的、内容、要求及相关工具1.1 课程设计目的 通信系统课程设计是一门综合设计性实践课程。使大家在综合已学现代通信系统理论知识的基础上,借助可编程逻辑器件及EDA技术的灵活性和可编程性,充分发挥自主创新意识,在规定时间内完成符合实际需求的通信系统电路设计与调试任务。本次课程设计选题为数字基带传输系统。数字通信系统是利用数字信号来传输信息的通信系统,传输的对象通常是二元数字信息,它可能来自计算机等其他数字设备的各种数字代码,也可能来自数字电话终端的脉冲编码,其包括数字基带传输和数字频
3、带传输。数字基带传输就是不经过调制而直接传送的方式,即发送端不使用调制器,接收端也不使用解调器。和频带传输相比,基带传输的优点是:设备简单,易做成“一机多速率”,适应性强。而对于时分多路技术,其具有十分优越的特点。其便于实现数字通信,易于制造,适于采用集成电路实现,成本较低,因此在数字信号传输中得到了广泛的应用。它不仅能够提高大家对所学理论知识的理解能力,更重要的是能够提高和挖掘大家对所学知识的实际运用能力,为将来进入社会从事相关工作奠定较好的“能力”基础。 1.2 课程设计内容(可选)A)时分多路数字电话基带传输系统的设计与开发B)时分多路数字电话基带传输系统的设计与开发1.3 课程设计要求
4、A)64Kb/S的A律PCM数字话音编译码器的开发设计B)PCM 30/32一次群时分复接与分接器的开发设计C)数字基带编码HDB3编译码器的开发设计D)正交相对四相移相键控QDPSK调制器的开发设计(可选)E)同步(帧、位、载波同步(可选)电路的开发设计根据给定的设计指标,要求能综合运用通信原理理论所学知识,借助可编程逻辑器件,灵活使用EDA开发工具平台Quartus,独立进行时分多路数字电话基带传输系统初步方案设计、单元电路设计、VHDL程序设计、程序调试等工作。附 工具 : quartus 6.0 、 FPGA 、 VHDL语言本次课程设计使用的软件是EDA开发工具平台Quartus6.
5、0,Quartus 是Altera公司提供的可编程逻辑器件的集成开发软件,可编程逻辑器件开发的所有过程为:设计输入、综合、布局和布线、验证和仿真以及可编程逻辑器件的编程或配置。使用的芯片是EP1C6Q240C8。VHDL的全名是very-high-speed integrated circuit hardware description language,VHDL主要用于描述数字系统的结构,行为,功能和接口。FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC
6、)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。2课程设计选题、小组划分 2.1选题:时分多路数字电话基带传输系统的设计与开发 2.2 模块划分(A) 负责 64Kb/S的A律PCM数字话音编码器的开发设计(B)负责 64Kb/S的A律PCM数字话音译码器的开发设计 ( C)负责 数字基带编码HDB3编码器的开发设计 ( D) 负责 数字基带编码HDB3译码器的开发设计(E) 负责 PCM 30/32一次群时分复接器的开发设计(F)负责 PCM 30/32一次群时分分接器的开发设计(G) 负责 同步(帧、位同步)电路的开发设计3. 通信系统课
7、程设计系统框图及各模块技术指标3.1系统框图PCM时分复用数字基带传输,是各路信号在同一信道上占有不同的时间间隙进行通信。它把模拟信号通过抽样、量化、编码转变为数字信号,这些都靠编码器来实现,然后在位同步和帧同步信号的控制下通过复接器实现复接,复接后的信号通过信道传输,分接器在同步信号的作用下把接收到的信号进行分路,分路后的信号通过PCM译码、低通滤波器还原出输入的模拟语音信号。同步技术是时分复用数字通信的又一个重要特点。 位同步是最基本的同步,是实现帧同步的前提。它的基本含义是收、发两端机的时钟频率必须同频、同相,这样接收端才能正确判断和接收发送端送来的每一个码元。帧同步是为了保证收、发各对
8、应的话路在时间上保持一致,这样接收端就能正确接收发送端送来的每一个话路信号。 图3.1 时分多路数字基带传输系统框图3.2各模块技术指标3.2.1 PCM编码器参数指标(符合ITU-T G.711建议) (1)PCM编码器输入信号为: 一个13位逻辑矢量的均匀量化值:D0,D1D12其中:D0为极性位,取值范围在-4096+4096之间;一个占空比为1/32的8K/S的取样时钟信号;一个占空比为50%的2.048Mb/S的合路时钟信号; (2)PCM编码器输出信号为: 一个8位逻辑矢量的13折线非均匀量化值:C0,C1C7其中:C0为极性位.C0=1为正,C0=0为负;一个占空比为1/32的8
9、K/S的取样时钟信号;一个占空比为50%的2.048Mb/S的合路时钟信号;(3) PCM编码规则 图3.2.1 PCM编码规则3.2.2 PCM译码器参数指标(符合ITU-T G.711建议)(1)PCM译码器输入信号为: 一个8位逻辑矢量的13折线非均匀量化值:C0,C1C7其中:C0为极性位.C0=1为正,C0=0为负;一个占空比为1/32的8K/S的取样时钟信号;一个占空比为50%的2.048KB/S的合路时钟信号; (2)PCM译码器输出信号为: 一个13位逻辑矢量的均匀量化值:D0,D1D12其中:D0为极性位,取值范围在-4096+4096之间;一个占空比为1/32的8K/S的取
10、样时钟信号;一个占空比为50%的2.048Mb/S的合路时钟信号;(3)PCM译码规则 图 3.2.2 PCM译码规则3.2.3 HDB3编码器参数指标 (符合ITU-T G.703建议) (1)HDB3编码器输入信号为: 一路串行2.048Mb/S合路数据流 一路2.048Mb/S位同步时钟脉冲(2)HDB3编码器输出信号为: 一路串行2.048Mb/S合路HDB3编码的正极性数据流H+ 一路串行2.048Mb/S合路HDB3编码的负极性数据流H- 一路2.048Mb/S位同步时钟脉冲3.2.4 HDB3译码器参数指标 (符合ITU-T G.703建议)(1)HDB3译码器输入信号为: 一路
11、串行2.048Mb/S合路HDB3编码的正极性数据流H+ 一路串行2.048Mb/S合路HDB3编码的负极性数据流H- 一路2.048Mb/S位同步时钟脉冲(2)HDB3译码器输出信号为: 一路串行2.048Mb/S合路数据流 一路2.048Mb/S位同步时钟脉冲3.2.5 一次群时分复接器参数指标()(1)一次群时分复接器输入信号为: 一个8位数据总线D7D0 一个一次群串行位同步时钟2.048Mb/S信号;(2)一次群时分复接器输出信号为: 一个一次群串行合路数据流2.048Mb/S信号 一个一次群串行位同步时钟2.048Mb/S信号 一个5位时隙地址总线信号3.2.6 一次群时分接器参数
12、指标(1)一次群时分分接器输入信号为: 一个一次群串行合路数据流2.048Mb/S信号 一个一次群串行位同步时钟2.048Mb/S信号(2)一次群时分分接器输出信号为: 一个一次群串行合路数据流2.048Mb/S信号 一个30位逻辑矢量时隙脉冲信号 一个一次群串行位同步时钟2.048Mb/S信号3.2.6相关帧结构图3.2.7 同步的参数指标 同步主要是进行帧同步与位同步,具体设计体现在一次群时 分分接器设计,还有提供各模块的时钟。4 通信系统课程设计各模块原理与思路4.1PCM编码器原理4.1.1 PCM编码器分析脉冲编码调制(PCM,Pulse Code Modulation)在通信系统中
13、完成将语音信号数字化功能。是一种对模拟信号数字化的取样技术,将模拟信号变换为数字信号的编码方式,特别是对于音频信号。PCM 对信号每秒钟取样 8000 次;每次取样为8个位,总共64kbps。PCM的实现主要包括三个步骤完成:抽样、量化、编码。分别完成时间上离散、幅度上离散、及量化信号的二进制表示。根据CCITT的建议,为改善小信号量化性能,采用压扩非均匀量化,有两种建议方式,分别为A律和律方式,本设计采用了A律方式。 在13折线法中,无论输入信号是正是负,均按8段折线(8个段落)进行编码。若用8位折叠二进制码来表示输入信号的抽样量化值,其中用第一位表示量化值的极性,其余七位(第二位至第八位)
14、则表示抽样量化值的绝对大小。具体的做法是:用第二至第四位表示段落码,它的8种可能状态来分别代表8个段落的起点电平。其它四位表示段内码,它的16种可能状态来分别代表每一段落的16个均匀划分的量化级。这样处理的结果,8个段落被划分成128个量化级。段落码和8个段落之间的关系如表1所示;段内码与16个量化级之间的关系见表4.1.2所示。4.1.2PCM编码规则表1 段落码 表2 段内码段落序号段落码段落范围量化间隔段内码量化间隔段内码81112048-40961511117011171101024-2048141110601106101512-1024131101501015100256-51212
15、1100401004011128-25611101130011301064-12810101020010200132-64910011000110000-328100000000 4.1.3流程图如下 图 4.1.3 PCM编码器流程图4.2 PCM译码器原理4.2.1 PCM译码分析PCM译码是PCM编码的逆过程。通过对PCM编码的分析,可以进行8位PCM编码到13位A率13折线的转换,具体转换见下译码规则图。其中注意,在译码时的13位码是对应段的中间值,既所得的编码应加上对应段量化值的一半。4.2.2 PCM译码规则 图 4.2.2 PCM译码规则4.2.3流程图如下 图 4.2.3 PC
16、M译码流程图4.3 HDB3编码器原理4.3.1 HDB3编码规则分析: 1)对输入为1码元交替翻转编码,即依次在H+和H-端口输出1 2)对输入为0码元同时在H+和H-端口输出0 3)当连续输入4个0码元,且与上一个连续0码元之间1码元为 奇数个时,第四个0码元改为1码元,且与之前1码元的最后一 个1码元同极性,即:在同端口输出 4)当连续输入4个0码元,且与上一个连续4个0码元之间1码 元为偶数个时,第一个0码元改为1码元,与之前1码元的最 后一个1码元反极性,即:在不同端口输出,第四个0码元改为 1码元,且与之前1码元的最后一个1码元同极性,即:在同端 口输出 4.3.2HDB3编码VH
17、DL语言设计 1)逐位处理输入输出数据,即:每输入一比特数据就判断处理, 并在H+和H-端口同时输出一位比特脉冲. 2)为了能修改含本时钟之前4个时钟周期的输出比特,建立一 个4位移位寄存器保存输入数据temp;3)输出“1”时,确定下次1码元输出端口的确定,即极性是+ 或-;每输入一个“1”,极性反转一次,记录信息county; 4)检测当前是否为连续“0000”,记当前零个数count0; 5)记录两个连续“0000”之前连续1的个数记数count1,(即 奇偶数)。 6)更新“B00V”“000V”时,更新信息count0,count1,county;4.3.3流程图如下:源码10000
18、1000011000000001HDB3码+1000+1-1000-1+1-1+100-1+100-1+1H+100010000010100010001H-0000010001010001000104.4 HDB3译码器原理 4.4.1HDB3译码规则分析 将编码修改过的0码元恢复,并将双极性交替1脉冲改为单 极性1脉冲 4.4.2 HDB3译码VHDL语言设计 对输入的H+和H-分别设立一个五级缓存移位寄存器,每一拍 都判断是否存在10001,或1001X;若存在分别改成10000, 或0000X。再将H+和H-相或输出。 4.4.3流程图如下:4.5 一次群时分复接器原理 复接器的功能是将
19、30路PCM信号与帧同步和勤务信号综合成一路2.048Mb/s的串行合路输出,并包括生成时隙地址信号。其中主要包括多路数据选择器,串并转换器,计数器等。4.6 一次群时分分接器原理 分接器的功能是将32路合路的2.048Mb/s的信号分成32路64K/S的分路信号,同时生成32路时隙脉冲。其中主要是帧同步与位同步的捕捉与确定。4.7 同步模块原理 在数字通信系统中,同步包括载波同步,码元同步(位同步),群同步(帧同步),网同步四种,本课程设计主要用到帧同步与位同步。 1)帧同步是为接收信号而使给定数字信道的接收端与发送端的相应信道对齐的过程,帧同步码有集中插入和分散插入两种插入方法,此课程设计
20、中主要研究集中插入帧同步法,详细设计可见一次群时分分接。 2)位同步是为了在准确的时刻对接收码元进行判决,以及对接收码元能量正确积分,它是从接收码元的起止时刻产生一个码元同步脉冲序列。位同步可分为外同步法和自同步法。外同步法是一种利用辅助信息同步的方法,需要在信号中另外加入包含码元定时信息的导频或数据序列。自同步法不需要辅助同步信息,直接从信息码元中提取出码元定时信息,这种方法要求在信息码元序列中含有码元定时信息,在此课程设计中,用数字锁相环法实现码元的自同步。位同步原理图:相位比较PCC数字滤波DLE受控分频DCOData_InPhaseerrorInsertsignalReducesign
21、alClk_EstClk5通信系统课程设计各模块编程与上机实现5.1 PCM编码程序与仿真图-PCM编码,符合ITU-T G.711建议-一个输入为13位逻辑矢量的均匀量化值,一个8000HZ占空比为1/32的取样脉冲-输出为八位逻辑矢量的A律PCM编码,和一个8000HZ的时钟-虽然设计要求输入输出2.048MB/S时钟,个人觉得用不上,故舍去了-quartus软件是以下标大的位为高位,所以十三位输入采用D(12)为符号位library ieee;-程序调用的库是IEEE库use ieee.std_logic_1164.all;-定义了std_logic,std_logic_vector类型
22、entity PCMencode is port(clkin :in std_logic;-输入时钟8000HZ D :in std_logic_vector(12 downto 0);-std_logic_vector全拼standard_logic标准逻辑矢量 C :out std_logic_vector(7 downto 0); clkout:out std_logic );end PCMencode;architecture behavior of PCMencode isbeginprocess(clkin,D)beginif clkinevent and clkin=1 then
23、 if D(11)=1 then C=D(12)&1&1&1&D(10)&D(9)&D(8)&D(7); elsif D(10)=1 then C=D(12)&1&1&0&D(9)&D(8)&D(7)&D(6); elsif D(9)=1 then C=D(12)&1&0&1&D(8)&D(7)&D(6)&D(5); elsif D(8)=1 then C=D(12)&1&0&0&D(7)&D(6)&D(5)&D(4); elsif D(7)=1 then C=D(12)&0&1&1&D(6)&D(5)&D(4)&D(3); elsif D(6)=1 then C=D(12)&0&1&0&D(
24、5)&D(4)&D(3)&D(2); elsif D(5)=1 then C=D(12)&0&0&1&D(4)&D(3)&D(2)&D(1); else C=D(12)&0&0&0&D(4)&D(3)&D(2)&D(1); end if;end if;end process;clkout=clkin;end behavior;仿真图:5.2 PCM译码程序与仿真图-PCM译码-输入A律八位PCM编码,占空比为1/32的8000HZ的去取样时钟-输出为十三位逻辑矢量均匀量化值,占空比为1/32的8000HZ的去取样时钟library ieee;use ieee.std_logic_1164.al
25、l;entity PCMdecode isport( clkin:in std_logic; C:in std_logic_vector(7 downto 0); D:out std_logic_vector(12 downto 0); clkout:out std_logic); end PCMdecode;architecture behavior of PCMdecode issignal temp:std_logic_vector(2 downto 0);begin temp DDDDDDDDD=null; end case; end if; end process; clkout=c
26、lkin;end behavior;仿真图:5.3 HDB3编码器程序与仿真图-HDB3编码-输入2.048Mb/s数据流,占空比为50%的2.048MHZ的去取样时钟-输出为两路双极性2.048Mb/s数据流,占空比为50%的2.048MHZ的去取样时钟library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std;use ieee.std_logic_arith;entity hdbnecode isport(clkin:in std_logic; datain:in std_logic; dataouthh:out std_lo
27、gic; dataouthl:out std_logic; clkout:out std_logic); end hdbnecode;architecture behavior of hdbnecode isbegin process(clkin)variable count0,count1:integer:=0 ;variable county:boolean;variable temp:std_logic_vector(3 downto 0);beginif clkinevent and clkin=0 then if datain=1 then-输入为1时处理4位寄存器 count0:=
28、0; temp(0):=datain; count1:=count1+1; if temp(3)=0 then-首位0 处理 输出 dataouthh=0; dataouthl=0; else if county then-首位1处理 输出 dataouthh=1; dataouthl=0; county:=not county; else dataouthh=0; dataouthl=1; county:=not county; end if; end if;else temp(0):=datain;-输入为0时处理4位寄存器 count0:=count0+1; if count0=4 th
29、en-检测到0000,处理 4位寄存器 count0:=0; count1:=(count1 rem 2);-两个四连零 间 1 的 奇偶 if count1=1 then-两个四连零 间 1 的 奇偶 count1:=0; temp:=0001; dataouthh=0;dataouthl=0;county:=not county;else count1:=0; -两个四连零 间 1 的 偶 temp:=1001; if county then dataouthh=1; dataouthl=0; else dataouthh=0; dataouthl=1; end if; end if; e
30、lse if temp(3)=0 then-未检测到0000 处理输出 dataouthh=0; dataouthl=0; else if county then dataouthh=1; dataouthl=0; county:=not county; else dataouthh=0; dataouthl=1; county:=not county; end if; end if; end if; end if; end if;temp(3 downto 1):= temp(2 downto 0);end process;clkout=clkin;end behavior;仿真图:5.4
31、HDB3译码器程序与仿真图-输入为两路双极性2.048Mb/s数据流,占空比为50%的2.048MHZ的去取样时钟-输出为一路单极性2.048Mb/s数据流,占空比为50%的2.048MHZ的去取样时钟library ieee;use ieee.std_logic_1164.all;entity hdbdecode isport( clkin:in std_logic; datainhh:in std_logic; datainhl:in std_logic; dataout:out std_logic; clkout:out std_logic); end hdbdecode;archite
32、cture behavior of hdbdecode is signal hh,hl:std_logic_vector(4 downto 0); signal temp:std_logic;begin AHH:process(clkin) variable temphh:std_logic_vector(4 downto 0); begin if clkinevent and clkin=0 then temphh(0):=datainhh; if temphh=10001 then temphh:=10000; elsif (temphh=10010 or temphh=10011) th
33、en temphh:=0000&datainhh; end if; end if; hh=temphh; temphh(4 downto 1):=temphh(3 downto 0); end process; AHL:process(clkin) variable temphl:std_logic_vector(4 downto 0); begin if clkinevent and clkin=0 then temphl(0):=datainhl; if temphl=10001 then temphl:=10000; elsif (temphl=10010 or temphl=10011
34、) then temphl:=0000&datainhl; end if; end if; hl=temphl; temphl(4 downto 1):=temphl(3 downto 0); end process; emp=(hh(4)or hl(4); dataout=temp; clkout=clkin;end behavior; 仿真图:5.5 一次群复接器程序与仿真图-时分复接器-输入一个8位数据总线(即30路PCM话音并行数据共用总线),-输入一个一次群串行位同步时钟2.048MB/S信号-输出一个一次群串行合路数据流2.048MB/S信号;一个一次群串行位同步时钟2.048MB
35、/S信号-一个5位时隙地址总线信号(即30路PCM话音并行地址总线)-(其说明当前输入的数据总线上是哪个时隙数据)-此程序要特别注意器件的选择,该程序选择cyclone系列EP1C6Q240C8时得到所期望的结果-若选用其他器件譬如Stratix II系列的器件会丢失第一路信息library ieee;-程序所调用的库是IEEE库use ieee.std_logic_1164.all;-定义了std_logic,std_logic_vector类型use ieee.std_logic_unsigned.all;-用到基于std_logic,std_logic_vector类型的-无符号的算术运
36、算entity fujieqi isport (clkin: in std_logic; datain: in std_logic_vector(7 downto 0);-30路语音信号输入 dataout:out std_logic; -输出串行数据流 ads:out std_logic_vector(4 downto 0);-五位时隙总线信号 clkout:out std_logic);-输出时钟end fujieqi;architecture behav of fujieqi isshared variable tscount:std_logic_vector(8 downto 0);-
37、时隙计数器shared variable bitcount:std_logic_vector(2 downto 0);-位计数器beginp1:process(clkin)-位时钟和时隙计数beginif clkinevent and clkin=1 then if bitcount=111 then bitcount:=000; tscount:=tscount+1; else bitcount:=bitcount+1; end if;end if;end process p1;p2:process(clkin)variable regester:std_logic_vector(7 downto 0);-定义一个内部的寄存器,-用于寄存输入的八位数据variable temp:std_logic_vector(7 downto 0);-定义一个中间变量,用于数据的串行输出beginif clkinevent and clkin=1 then ads=tscount(4 downto 0);-记录当前输出的是第几路信号 if bitcount=000 then if tscount(5 downto 0)=000000 then regester:=10011011; -双帧计数为0时传帧同码 elsif tscount(5 downto 0)=10000