欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数字基带信号HDB3码的编码器设计与建模.doc

    • 资源ID:3018918       资源大小:487.13KB        全文页数:20页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数字基带信号HDB3码的编码器设计与建模.doc

    课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目:数字基带信号HDB3码的编码器设计与建模 初始条件:(1)MAX PLUSII 10.02 以上版本软件;(2)课程设计辅导书:通信原理课程设计指导(3)先修课程:数字电子技术、模拟电子技术、电子设计EDA、通信原理。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)课程设计时间:1周;(2)课程设计题目:根据指导老师给定的六套题目选择其中二套完成;(3)本课程设计统一技术要求:按照要求对选定的设计题目进行逻辑分析,掌握HDB3码的编码原理,了解各模块电路的逻辑功能,设计通信系统框图,画出实现电路原理图,编写VHDL语言程序,上机调试、仿真,记录实验结果波形,对实验结果进行分析; (4)课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,并标明参考文献至少5篇;(5)写出本次课程设计的心得体会(至少500字)。时间安排:第19周参考文献: 江国强.EDA技术与应用. 北京:电子工业出版社,2010 John G. Proakis.Digital Communications. 北京:电子工业出版社,2011指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日摘 要 本课程设计概括了HDB3数字编码器的研究背景、意义,同时对EDA技术和编码技术作了简要的说明。设计方面包括规划基于VHDL的HDB3编码器设计的总体方案;基于VHDL的HDB3编码器的软件实现。其中HDB3码的编码程序设计是在Quartus软件环境下进行的,首先在Quartus软件环境下建立一个工程,工程名和程序的实体名一致,并将其作为该工程的设计文件。然后在VHDL文本编辑窗中输入设计的VHDL源程序,进行编译。程序编译成功后要进行时序仿真,这一部分同样是在Quartus软件环境下完成的。关键词:HDB3;建模;VHDL;编码;QUARTUS目 录1 Quartus 简介12 VHDL语言的介绍33 HDB3码编码器的建模与实现43.1 HDB3码的编码规则43.2 基于VHDL的编码器的建模及实现53.2.1 编码器的VHDL建模5 3.2.2 基于VHDL编码器的实现63.3编码中单/双极性转换的实现83.3.1单/双极性转换的流程图84 HDB3码编码器完整源程序95 HDB3码编码器的波形仿真及分析136 总结与心得157 参考文献161 Quartus 简介Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。 此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。 Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。 Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。图1 Quartus 操作界面2 VHDL语言的介绍常用的硬件描述性语言有VHDL、Verilog和ABEL语言。VHDL语言起源于美国国防部的VHSIC,VHDL是一种高级描述语言,适用于行为级和RTL级的描述相对与Verilog语言和ABEL语言这些较低一级的适合描述门级电路的描述性语言而言,其具有以下的优点:设计方法灵活、支持广泛系统硬件描述能力强VHDL语言描述与工艺不发生关系VHDL语言标准、规范,易于共享和复用基于上述的特点,可知VHDL语言可读性好,又能被计算机识别。VHDL语言中设计实体、程序包、设计库,为设计人员重复利用已有的设计提供了诸多技术手段。可重复利用他人的IP模块和软核也是VHDL的另一特色,许多设计不必每次都从头再来,只要在更高层次上把IP模块组合起来,就能达到事半功倍的效果。这样,设计人员自行开发的IP模块在集成电路设计中占有重要的地位。因此本课程设计采用VHDL语言设计一个完善的HDB3码编码器。3 HDB3码编码器的建模与实现3.1 HDB3码的编码规则在基带传输中,常用的码型有AMI码、HDB3码、4B/3T码、CMI码、以及双相码等。其中,AMI码是将输入单极性波形的所有正脉冲变为适合于在信道传输的正负极性交替的脉冲,而HDB3码则是在AMI码基础上改进的一种双极性归零码,它除具有AMI码功率谱中无直流分量,可进行差错自检等优点外,还克服了AMI码当信息中出现连“0” 码时定时提取困难的缺点,同时HDB3码频谱能量主要集中在基波频率以下,占用频带较窄,因此被广泛用作PCM线路传输码型,因此要了解HDB3码的编码规则,首先要知道AMI码的构成规则,AMI码就是把单极性脉冲序列中相邻的“1”码变为极性交替的正、负脉冲。将“0”码保持不变,把“1”码变为+1、-1交替的脉冲。如:信息序列:10011010111100001AMI码:+100-1+10-10+1-1+1-10000+1HDB3码是一种AMI码的改进型,它的编码过程为:没有4个或4个连“0”串时,HDB3编码规律与AMI码相同,即“1”码变为“+1”、 “-1”交替脉冲。当代码序列中出现4个或4个以上连“0”串时,则将每4个连“0”小段即“0000”的第4个0变换成与前一非“0”符号同极性的符号,用破坏符号V表示。为了使附加V符号后的序列不破坏“极性交替反转”造成的无直流特性,还必须保证相邻V符号也应极性交替。这一点,当相邻V符号之间有奇数个非0符号时,则是能得到保证,当有偶数个非0符号时,则就得不到保证,这时再将该小段的第一个0变换成+B或-B,B符号的极性与前一非0符号的极性相反,并让后面的非0符号从V符号开始再交替变换。举例如下:信码 1 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 HDB3码 +1 0 -1 0 +1 -1 0 0 0 -1 0 +1 -1 +1 0 0 +1 -1V、B -V +B +VHDB3码的特点如下:(1)基带信号无直流成分,且只有很小的低频成分;(2)连0串符号最多只有3个,利于定时信息的提取;(3)不受信源统计特性的影响。图2 各个数字基带信号编码间关系3.2 基于VHDL的编码器的建模及实现3.2.1 编码器的VHDL建模图3 HDB3码编码器模型HDB3 编码器建模的难点之一是判断插“B”,实现中可利用寄存器,首先把信码存入寄存器,同时设置一个计数器计两个“V”之间“1”的个数,经过 4 个码元后,由判偶电路给寄存器发送是否插“B”的信号,实现插入“B”的功能。 本设计思想不需要首先把消息代码变换为 AMI 码,然后进行 V 符号和 B 符号的操作,而是按照 HDB3 编码规则直接对消息代码进行插入“V”符号和“B”符号的操作,后再实现单极性变双极性的信号输出,这样可以减少寄存器的数量。如图所示:整个HDB3码的编码器包括3个功能部分:添加破坏符号“V”、添加符号“B”和单极性码转变成双极性码,各部分之间采用同步时钟作用,并且带有一个异步的复位(清零)端口。3.2.2 基于VHDL编码器的实现1. 添加破坏符号“V”的实现 添加破坏符号“V”模块的功能实际上就是对消息代码里的四个连0串的检测,即当出现四个连0串的时候,把第四个“0”变换成符号“V”,而在其他的情况下,则保持消息代码的原样输出,同时为了区别代码“1”、 “V”和“0”,在添加破坏符号“V”时,用“11”标识符号“V”,用“01”标识符号“1”,用“00”标识符号“0”。因此,添加破坏符号“V”的设计思想如下:首先判断输入的代码是什么,如果输入的符号是“0”码,则接着判断这是第几个“0”码,如果是第四个“0”码,则把这个“0”码变换成“V”码。在其他的情况下,让原码照常输出。程序流程图如图3.2所示:图4 添加破坏符号“V”符号流程图假设输入某信息序列,根据设计思想,输入代码一添加破坏符号“V”后的关系如下:信息序列: 10000100001100011添加破坏符号V后:01000000110100000011010100000001012.添加符号“B”的实现根据HDB3码的编码规则可知:添加破坏符号“V”模块的功能是为了保证附加“V”符号后的序列不破坏“极性交替反转”造成的无直流特性,即当相邻“V”符号之间有偶数个非0符号的时候,把后一小段的第一个“0”变换成一个非破坏符号“B”符号。如图3.3所示。其中: FIRSTV作为前面是否出现“11”即符号“V”的标志位,其中0表示前面没有出现V,1表示前面已经出现过符号V。 COUNT1作为记非0符号的奇偶数,其中0表示为偶数,1表示为奇数。 FIRST_1遇1状态寄存器,1表示前面遇到过1,0表示没有遇到过。 在本程序中用“10”来标识符号“B”。 在本程序中用“01”来标识符号“1”。 在本程序中用“00”来标识符号“0”。 在本程序中用“11”来标识符号“V”。图5 添加符号“B”符号流程图插“B”模块是这个设计的一个难点,因为它涉及到一个由现在事件的状态决定过去事件状态的问题。其次还有如何确定是“1”,还是“V”的问题。处理难点的思路是:首先把码元(经插“V”处理过的)放入一个 4 位的移位寄存器里,在同步时钟的作用下,同时进行是否插“B”的判决,等到码元从移位寄存器里出来的时候,就可以决定是应该变换成“B”符号,还是照原码输出。因此,在程序的结构中可进行元件声明,调用库里的 D 触发器来实现延迟作用。 3.3编码中单/双极性转换的实现3.3.1单/双极性转换的流程图根据HDB3码的编码规则,可知 “V”的极性是正负交替变换的,而余下的“1”和“B”本设计把其看成为一体且是正负交替变换的,同时满足“V”的极性与前面的非零码极性一致。由此本设计就把“1”和“B”看成一组,而“V”单独作为一组来做正负交替变换。同时,已知“1”、 “V”,“B”已经分别用双相码“01”,“11”,“10”标识,所以对“1”,“V”, “B”的正负交替变换很容易实现。图6单双极性变换控制的程序流程图“01”和“10”部分其中在图中:以01表示+1。以10表示-1。以00表示0。仿真软件无法识别“-1”,因此采用双相码来分别表示“1”,“+1”和“0”,要想得到所需要的结果,仅仅在后加一个硬件(如四选一数字开关 CC4052),就可以将程序中所定义的“00”、“01”和“11”分别转换成 0、+1 和-1,从而达到设计所需结果4 HDB3码编码器完整源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY HDB3 IS PORT (CODEIN:IN STD_LOGIC;CLK: IN STD_LOGIC;CLR: IN STD_LOGIC;CODEOUT:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END HDB3;ARCHITECTURE BEHAVE OF HDB3 ISSIGNAL CNT0:INTEGER:=0;SIGNAL FLAG0 :INTEGER RANGE 1 DOWNTO 0:=0;SIGNAL FLAG1 :INTEGER RANGE 1 DOWNTO 0:=0;SIGNAL FLAG2 :INTEGER RANGE 1 DOWNTO 0:=1;SIGNAL FLAG3 :INTEGER RANGE 1 DOWNTO 0:=0;SIGNAL FIRSTV :INTEGER RANGE 1 DOWNTO 0:=0;SIGNAL CODEOUTV:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL S0:STD_LOGIC_VECTOR(4 DOWNTO 0):="00000"SIGNAL CODEOUTB:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL S1:STD_LOGIC_VECTOR(4 DOWNTO 0):="00000"SIGNAL CLKB :STD_LOGIC;SIGNAL CLKV :STD_LOGIC;SIGNAL CLKOUT:STD_LOGIC;SIGNAL S2:STD_LOGIC_VECTOR(4 DOWNTO 0):="00000"SIGNAL S3:STD_LOGIC_VECTOR(2 DOWNTO 0);COMPONENT DFF PORT ( D :IN STD_LOGIC; CLK:IN STD_LOGIC; Q :OUT STD_LOGIC);END COMPONENT;BEGIN VCLK:CLKV<=CLK AFTER 10 NS;ADD_V: PROCESS(CLK,CLR) BEGIN IF CLKEVENT AND CLK=1 THEN IF CLR=1 THEN CODEOUTV<="000" CNT0<=0; ELSE CASE CODEIN IS WHEN1=> CNT0<=0; IF (FLAG0=0) THEN CODEOUTV<="110" FLAG0<=1; ELSE CODEOUTV<="010" FLAG0<=0; END IF; WHEN 0=> IF CNT0=3 THEN IF FIRSTV=0 THEN IF FLAG0=0 THEN CODEOUTV<="011" FLAG1<=0; ELSE CODEOUTV<="111" FLAG1<=1; END IF; FIRSTV<=1; ELSE IF FLAG1=0 THEN CODEOUTV<="111" FLAG1<=1; FLAG0<=1; ELSE CODEOUTV<="011" FLAG1<=0; FLAG0<=0; END IF; END IF; CNT0<=0; ELSE CNT0<=CNT0+1; CODEOUTV<="000" END IF; WHEN OTHERS=> CODEOUTV<="000" CNT0<=CNT0;END CASE; END IF;END IF;END PROCESS ADD_V; S0(0)<=CODEOUTV(0); S1(0)<=CODEOUTV(1); S2(0)<=CODEOUTV(2);DS21:DFF PORT MAP(S2(0),CLK,S2(1);DS11:DFF PORT MAP(S1(0),CLK,S1(1);DS01:DFF PORT MAP(S0(0),CLK,S0(1);DS22:DFF PORT MAP(S2(1),CLK,S2(2);DS12:DFF PORT MAP(S1(1),CLK,S1(2);DS02:DFF PORT MAP(S0(1),CLK,S0 (2);DS23:DFF PORT MAP(S2(2),CLK,S2(3);DS13:DFF PORT MAP(S1(2),CLK,S1(3);DS03:DFF PORT MAP(S0(2),CLK,S0 (3);BCLK:CLKB<=NOT CLK;ADD_B:PROCESS(CLKB) BEGIN IF CLKBEVENT AND CLKB=1 THEN CASE CODEOUTV IS WHEN "110"=> FLAG3<=1; S2(4)<=S2(3); S1(4)<=S1(3); S0(4)<=S0(3); WHEN "010" => FLAG3<=0; S2(4)<=S2(3); S1(4)<=S1(3); S0(4)<=S0(3); WHEN "111"=> IF FLAG3=0 THEN S2(4)<=1; S1(4)<=0; S0(4)<=1; FLAG3<=1; ELSE S2(4)<=S2(3); S1(4)<=S1(3); S0(4)<=S0(3); END IF; FLAG2<=1; WHEN "011"=> IF FLAG3=0 THEN S2(4)<=S2(3); S1(4)<=S1(3); S0(4)<=S0(3); ELSE S2(4)<=0; S1(4)<=0; S0(4)<=1; FLAG3<=0 ; END IF; FLAG2<=0; WHEN OTHERS=> S2(4)<=S2(3); S1(4)<=S1(3); S0(4)<=S0(3); END CASE; CODEOUTB<=S2(4)&S1(4)&S0(4); END IF; END PROCESS ADD_B; OUTCLK:CLKOUT<=CLK AFTER 5 NS; OUTPUT:PROCESS(CLKOUT) BEGIN IF CLKOUTEVENT AND CLKOUT=1 THEN IF CODEOUTB="000"THEN CODEOUT<="00" ELSIFCODEOUTB="001"ORCODEOUTB="010"OR CODEOUTB="011" THEN CODEOUT<="01" ELSE CODEOUT<="10" END IF; END IF; END PROCESS OUTPUT; END BEHAVE;5 HDB3码编码器的波形仿真及分析图7 输入全 “0”时编码输出输入全0码时输出为B00V,且正负交替符合编码规则。图8 输入全“1”时编码输出输入全为1时,为+1,-1交替,图中波形为01,11交替,符合HDB3编码规则。图9 输入“100001000011000011” 时编码输出输入为100001000011000011时,输出为10 00 00 00 10 01 00 00 00 01 10 01 10 00 00 10 01 10,其中01和10代表+1和-1;+v和-v;+B和-B.通过Minusout和Plusout来判断极性,plusout为1表示出现了“+1”,minusout为1表示出现了“-1”, 当plusout和minusout应为交替出现的,如果有连续出现两个高电平时,则后一个一定是 V 脉冲,并且输出波形有一定的延时。6 总结与心得本次课程设计内容丰富,涉及的知识面较广。在设计前期,通过查找资料为设计准备,使我对所学专业方面的许多知识又温习了一遍,许多以前很模糊、很孤立的部分知识通过这次设计得以贯穿,而且掌握得更加地稳固了;此外,通过这次课程设计,在软件编程方面,使我了解到了自己的许多不足之处,通过查找参考资料和指导老师耐心的辅导,使我对使用VHDL语言有了一定的掌握。但在设计过程中也出现了不少问题,设计前期在利用quartus软件工具对HDB3数字编码器的程序进行编译时,由于工程名和实体名不一致使得编译无法进行。通过这次课程设计,我不仅加深了对通信原理理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。7 参考文献1 樊昌信,张甫翎,徐炳祥,吴成柯通信原理 国防工业出版社,2005.52王虹.通信系统原理 国防工业出版社,2014.83 谭会生,张昌凡EDA技术及应用 西安科技大学出版社,200444 段吉海,黄智伟基于CPLD/FPGA的数字通信系统建模与实现 电子工业出版社,200455 王乐毅EDA设计技术与方法PLD与EDA工具 青岛化工学院学报,20016 林敏,方颖立VHDL数字系统设计与高层次综合 信息时代,2002

    注意事项

    本文(数字基带信号HDB3码的编码器设计与建模.doc)为本站会员(小**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开