欢迎来到天天文库
浏览记录
ID:11174576
大小:3.48 MB
页数:33页
时间:2018-07-10
《cpld上五种密勒码基带码型变换方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基带码型变换设计密勒码码型变换1技术指标1)设计密勒码的编译码电路。2)输入信号为24位的周期NRZ码。3)编译码延时小于3个码元宽度。2基本原理我的课程设计选题是《基带码型变换设计——密勒码码型变换》,也就是设计电路实现密勒码的编码、解码过程。电路设计的重点在于按照密勒码的编码规则实现基带码,也就是信源码的逻辑变换。为了达到这个过程,我们需要先分析清楚密勒码的特点。故基本原理这一部分我分为两部分进行阐述,分别是2.1密勒码原理分析;2.2编、解码设想及思路。2.1密勒码原理分析查阅《通信原理》(樊昌信著
2、国防工业出版社第6版)可知密勒码相关信息如下:“MILLER码又称延迟调制码。其编码规则是二进制信息“1”码用码元间隔中心点出现跃变表示,即用“10”或“01”表示;二进制信息“0”码有两种情况:单个“0”时,在码元间隔内不出现电平跃变,且与相邻码元的边界处也不跃变;在连“0”时,在两个“0”码的边界处出现电平跃变,即“00”与“11”交替。MILLER码最初用于气象卫星和磁记录,现在也用于低速基带数传机。”分析可知,其编码规则可以整理如下表1:表1.密勒码的编码规则33由编码规则,我们可以绘出密勒码的波
3、形。在此参照教材上给的提示,我们也画出双相BPH码的波形,分析NRZ码,密勒码,BPH码之间的关系。此处的BPH用‘01’表示数字信号‘0’;用‘10’表示数字信号‘1’。绘制波形如图1,原始NRZ码为‘111001010000’。图1.对应NRZ码的密勒码波形图分析波形我们可以发现,BPH码的下跳沿对应着密勒码的跳变沿。参考教材所给的提示,我们可以用BPH码下跳沿去触发双稳态电路,即可输出密勒码。3设计方案功能分析及其比较结合本次的设计内容为了方便阐述,在整理所有的设计方案后,我将码型转换的原理分为5种
4、。下面分别阐述其原理及设计的想法来源。3.1方案一方案一核心思想史以VHDL的穷举编程实现密勒码的编解码,也是我最早得出的设计。顾名思义,就是在程序中利用各种顺序语句罗列出编码时可能碰到的所有的情形,并给出对应的编码解。所以,找到那几个条件因子是这种方法最核心的地方。分析密勒码的编码规则我们可以发现以下规则:1)密勒码用‘10’和‘01’表示信号‘1’,用‘00’和‘11’表示信号‘0’。2)两个信源码之间对应的密勒码没有跳变,也就是说当前码的编码到底是哪一个,需要考虑前一个码的情况。33综合以上两条,设
5、计出以下判断逻辑:信号输入为DATA,简称D。信号输入时刻前一位为Sav1简写为S1,对应的密勒码输出为Sav2简写为S2。输出为Do。程序流程图如图2。图2.VHDL穷举法程序流程图即当前输入信号D有0,1两种可能;前一密勒输出有00,11,01,10四种情况;综合起来就是8种情况,以D及S2为条件因子,作为顺序语句的条件。对应此逻辑以“IFTHENELSIF”语句编写了如下程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsig
6、ned.all;entitymiller_encoderisport(datain:instd_logic;en:instd_logic;clk:instd_logic;encodeout:outstd_logic_vector(1downto0)33);end;architecturefuncofmiller_encoderisbeginprocess(en,clk,datain)variablesav1:std_logic:='1';variablesav2:std_logic_vector(1dow
7、nto0):="01";beginif(en='0')thenencodeout<="00";elseif(clk'eventandclk='0')thenif(datain='1'andsav1='1'andsav2="01")thenencodeout<="10";sav2:="10";sav1:='1';elsif(datain='1'andsav1='1'andsav2="10")thenencodeout<="01";sav2:="01";sav1:='1';elsif(datain='0'an
8、dsav1='1'andsav2="01")thenencodeout<="11";sav2:="11";sav1:='0';elsif(datain='0'andsav1='1'andsav2="10")thenencodeout<="00";sav2:="00";sav1:='0';33elsif(datain='0'andsav1='0'andsav2="00")thenencodeout<="11";sav2:="11
此文档下载收益归作者所有