曼彻斯特编解码器
一种基于时钟提取的曼彻斯特编解码设计

interference power. In this paper,through the analysis of the traditional decoding scheme,a Manchester
code decoder based on clock extraction scheme is proposed to eliminate the phase accumulation error of the
SONG Yi⁃ding1,WANG Zhen⁃hua1,TIAN Qiao⁃hong2,MA Zhi⁃min1
(1. Software Company of Xuji Electric Co.,Ltd.,Xuchang 461000,China;2. Henan Mobile Xuchang
Branch,Xuchang 461000,China)
位误差且会不断的累积。文中提出的一种基于时钟提
线路编码格式,其通过高低脉冲的方式进行二进制
取的编解码设计,可以有效的从曼彻斯特码流中提取
编码的传输,可以有效地消除直流成分,同时提供了
同步时钟,结构灵活、性能稳定,取得了良好的效果。
一种同步机制,保证了发送端与接收端信号的同步,
1 曼彻斯特码工作原理
具有时钟恢复和抗干扰性强的特点,广泛应用于各
clock system. The structure is flexible and the performance is stable. At the same time,the whole emus
design is simulated with the ISIM software of XILINX Company,and the feasibility and correctness of
基于CPLD的曼彻斯特编码技术_王奇

语 言进 行设 计 , 使 用 , 仿真 图形
是 发送端 的并行 信 号 的 时钟 信 号 , 在 切 的 二倍 频 时 钟 信 可 以看 出 ,
进行 仿真 , 仿 真 的数 据编 码速 率设 为
以 是 由外 部提供 的 中进 行 分频 , 产生需要的 号
在 倍频时钟的 几 升沿
几 分频 频 位 计数 器
曼彻 斯特码
在曼 彻斯 特编码 〔 '一 冲 , 每一 位 的中间 有一 个跳 变 ,
位 中间 的跳变 既作 时钟信 号 , 又 作数 据信 号 。 从 高 到低 跳变 表示 “ ” , 从低 到高 跳变表 示 “ ” 。
从 曼 彻 斯特 码 的特 点 可 以看 出曼彻 斯 特 码 是一 种
间节 点更 加可靠 , 进 而通 信成 功的概 率不 断地提 高 。 本文 提 出 了一 种基 于反 馈评 价 信任 机制 的模 型 , 通
' , 一
过 节点 间在通 信 结 束后 互 相反 馈 信任 信 息来 计 算 节 点
的信 任 度 , 同时也 考 虑 到节 点 的信 任 率 , 通 过 仿 真试 验 看 出 , 信 任机 制模 型通信 成功 的概 率还 是很 高 的 。 相 较 于改 进前 的模 型 , 系统在 抑制 恶意 节点 的效 率也 有所 提 高 。 参考 文献
N 6t w or k
and C O m m u ni Ca t i on
基于
的曼彻斯特编码技术
王 奇 , 王英 民 , 牛 奕龙 , 陶林 伟
西北 工 业 大 学 , 陕西 西 安
摘 要
研 究 了曼彻 斯 特 编 解码 方 法 , 采 用
语 言在
上 实现 了编 解 码 , 使 系统 的功 能 高 仿真 了 速 率 下 的编 解 码 , 结果 和
用FPGA实现曼彻斯特编解码_林艺文

收稿日期:2003210207作者简介:林艺文(1979~),男,福建东山人,硕士研究生.基金项目:汕头大学基金会课题(NO 1140-934046)用FPG A 实现曼彻斯特编解码林艺文,方展伟(汕头大学电子信息工程系,汕头 515063)摘 要:使用M AXP LUS Ⅱ和FPG A C om piler Ⅱ软件及VH D L 硬件描述语言,采用自顶向下设计方法设计曼彻斯特编解码器,每帧数据包括同步字、有效数据和冗余校验位三部分,最终在Altera 公司的FPG A 芯片EPF10K 10LC8424进行验证.实验结果表明,FPG A 能很好地实现曼彻斯特编解码器,而且该编解码方式具有抗干扰能力强,传输速率高等优点.关键词:FPG A ;曼彻斯特码;VH D L ;CRC中图分类号:T N915105 文献标识码:A 文章编号:100124217(2004)022*******0 引 言由于曼彻斯特编码的每个码元的中心部分都存在电平跳变,而且方波周期内正、负电平各占一半,因此在频谱中存在很强的定时分量,不存在直流分量,在“以太网”和短距离无线通信等数据传输系统中得到广泛的应用.通常采用的办法是用单片机的串行I/O 口或者专用的曼彻斯特编码译码器H D15530来完成曼彻斯特的编解码,但这两种方法都有许多不足之处:第一、在利用单片机或专用芯片进行编解码时,对传输的数据只能进行奇偶校验,在条件比较恶劣的场合,特别是在无线通信,数据极易出错,奇偶校验不能检测出这类突发性错误;第二、单片机的串口通信和专用芯片在传输速率和每帧的有效数据位数等方面都作了严格的限制;第三、在要求高速的传输速率的场合,单片机和专业芯片都难以实现[1,2].在现代电子设计领域,VH D L 和现场可编程逻辑器件的广泛应用使数字系统设计更为灵活,大大缩短了开发周期[3].本文用VH D L 实现曼彻斯特编解码.设计中使用Al 2tera 公司开发的MAXP LUS Ⅱ进行仿真和布线,而使用Synopsys 公司的FPG A C om piler Ⅱ进行综合.1 编译码设计思想本文的设计即采用的编译码规则是根据H D 215530曼彻斯特编解码器进行改进的[2].假设传输的数据精度为12位,以98BH 为例,其码型结构如图1所示,数据0用01(零相位的一个周期的方波)表示,1则用10(π相位的一个周期的方波).2004年5月M ay 2004汕头大学学报(自然科学版)Journal of Sh antou U niversity (N atural Science)第19卷 第2期V ol 119N o 12图1 曼彻斯特编码的码型结构图其中,同步字有两种类型:低电平在先高电平在后为命令同步;高电平在先低电平在后为数据同步.高低电平的宽度均为115位,因此同步字宽度为3位由于每个数据位的中点都存在跳变,编码器需要大于或等于二倍频于所传数据速率的系统时钟.为了减少功耗和提高电路的可实现性,本文采用二倍频的时钟和单极性曼彻斯特编码.由图1可看到每帧的最后四位为校验位.为了提高系统的检错/纠错能力本文采用循环冗余校验.循环冗余码(CRC )是在严密的代数学理论基础上建立的,它特别适合于检测和纠错错误,一则因为它有很强的检测能力,二则是因为编码器及错误检测纠错电路都很容易实现.根据CRC 的编码思想[4,5],对于(16,12)码,可由x 16+1确定生成多项式为G (x )=x 4+1.2 编码器时序及结构当系统时钟(C LK )的上升沿到来时,如果编码使能(E NABLE )为高,编码周期将开始并持续一个帧长或20个编码时钟(即40个系统时钟)周期.同时,如果同步选择(SY N SE LECT )为高时,产生一个数据同步字;为低时,产生一个命令同步字.当编码器准备好接收数据时,发送数据(SE ND DAT A )变为高电平,并保持12个编码时钟周期.在编码时钟的上升沿对串行数据输入(DAT AI N )进行抽样和编码.根据上面的编码规则和时序说明,电路设计使用硬件描述语言(VH D L )来实现,并用Altera 公司的FPG A 芯片进行验证.设计中采用自顶向下的设计方法,将整个编码系统分成各个模块,编码总体模块框图如图2所示.图2 曼彻斯特编码总体框图46汕头大学学报(自然科学版)第19卷由于数据是串行输入的,因此上图中的CRCC 采用串行CRC 编码方法.通常,串行CRC 的编码可由线性反馈移位寄存器(LFSR )来实现.LFSR 使用异或运算及移位除法运算来产生CRC 校验码.现以本文所用到的CRC 码为例来说明串行CRCC 的VH D L 的实现.主要程序节录如下:BEGI NPROCESS (clk )BEGI NIF rst =′1′THE Nreg crc α″0000″;E LSIF clk ′event AND clk =′1′THE NIF enable =′1′THE Nreg crc (0)αtem p x ;reg crc (1)αreg crc (0);reg crc (2)αreg crc (1);reg crc (3)αreg crc (2);E LSEreg crc α″0000″;E DN IF ;E ND IF ;E ND PROCESS ;tem p x αreg crc (3)X OR datain ;crcout αreg crc (3);E ND behave ;3 解码器时序及结构解码器不停地检测输入信号.当检测到同步字,开始解码周期并判断是数据同步字(C OM DAT A 为1)还是命令同步字(C OM DAT A 为0).随后输出数据(DAT AOUT ),同时使接收数据(T AKE DAT A )为高电平,并持续12个解码时钟(即96个系统时钟)周期.在接收数据和进行CRC 时,有效字(VA LI D W ORD )保持低电平,如果传输无出错,有效字(VA LI D W ORD )变为高电平.检测输入信号值的方法:根据曼彻斯特编码的原理,也需要大于或等于二倍频于所传数据速率的解码时钟.为了提高解码的准确性,本文采用八倍频于数据速率的时钟,因此可以采用“测四取三”的方法,即对每个编码的前半部分进行四次采样,取其大于等于三的相同值作为测量值.如果没有三个相同的值,解码器不作响应,如表1所示(其中“x ”表示“0”或“1”).这种判定方法具有一定的滤波功能,提高了准确度.1)同步字的判定检测同步字是解码的关键.只有检测到同步字,才开始解码周期,因此解码器要不停地监视是否有同步字出现.56第2期林艺文等:用FPG A 实现曼彻斯特编解码2)解码在同步字出现后,采用上面“测四取三”的判定方法进行解码,获得有效数据和冗余码.3)循环冗余码校验将解码得到的有效数据和冗余码(共16位)进行循环冗余校验.如果余数为零,则认为传输中无数据出错,否则输出出错信号,以便进行出错处理.表1 信号值的判定采样1采样2采样3采样4信号值111x1110111011101111000x000100010010000“测四取三”和同步字判定各自采用一组移位寄存器来实现.在每个系统时钟的上升沿进行采样,并放入移位寄存器再根据表1判定信号值.将使用“测四取三”方法检测到的信号值放入另一组寄存器.由寄存器的前9位判定同步字,如表2所示.表2 同步字的判定寄存器的前9位同步字类型000111000数据同步字000111xxx命令同步字(xxx不全为零)表1和表2的VH D L描述是比较容易的.本文采用Case2When语句实现.解码器的总体模块框图如图3所示.图3 曼彻斯特解码总体框图4 仿真及FPG A实现为了优化结果,在进行复杂H D L设计时,基本上都会使用专业的逻辑综合软件,而不使用P LD/FPG A厂家的集成开发软件中自带的逻辑综合功能.这里使用FPG A C om pilerⅡ进行综合,输出ed f文件,导往MAXP LUSⅡ进行仿真和布线.并在FPG A芯片EPF10K10LC8424上实现,其时序仿真波形如图4和图5.图4是编码仿真.由于syn select为高表示数据同步字(即111000),如果syn select为低则为命令同步字(即000111).此时输入数据为98BH.图5是解码仿真.由于采用“测四取三”的方法,可以看到即使输入信号有小的毛刺也能正确解码,得到的数据也为98BH,而且valid w ord变为高表示传输不出错.66汕头大学学报(自然科学版)第19卷图4 编码仿真图图5 解码仿真图5 结束语对于数字处理技术来讲,软件和硬件各有特点,比如硬件在实时性要求很高的场合就比软件要好.本文的设计能很好地解决单片机编解码系统和专用芯片的问题,使传输速率和数据格式的灵活性得到提高.随着可编程器件和E DA 工具的发展,相信采用硬件描述语言设计硬件系统将会越来越方便,愈来愈受到广大电子设计人员的喜欢.参考文献:[1]何立民.单片机高级教程[M].北京:北京航空大学出版社,2000.[2]H D15530Datasheet[DB/0L ].http ://w w w 121ic 1com.[3]卢毅,赖杰.VH D L 与数字电路设计[M].北京:科学出版社,2001. 4.76第2期林艺文等:用FPG A 实现曼彻斯特编解码86汕头大学学报(自然科学版)第19卷[4]王耿,姜智忠.用H D L语言实现循环冗余校验[J].微电子学与计算机,2002,5:4~6.[5]曹志刚,钱亚生.现代通信原理[M].北京:清华大学出版社,1992.The Implementation of Manchester E ncoder andDecoder U tilizing FPGALIN Yi2wen,F ANG Zhan2wei(Department of E lectronic Engineering,Shantou University,Shantou 515063,China)Abstract:A Manchester C oder2Decoder is designed using the s oftware MAXP LUSⅡ, FPG A C om pilerⅡand the hardware descriptive language VH D L in line with the top2down method, to be im plemented in an EPF10K10LC8424chip of PFG A type manu factured by Altera C o..De2 coding process included synchronous head,data bits determination and CRC checking.The experi2 ment results have proved that FPG A can im plement Manchester C oding2Decoding and this kind of C oding2Decoding method has many advantages such as strong anti2interference ability and the high data transmission rate,etc.K ey w ords:FPG A;Manchester;VH D L;CRC。
基于FPGA的曼彻斯特码编解码器的实现

编码 过程具 体可 分 为三部 分 :1 检测 编码周 期 是 ()
否 开始 , 辨别 同步 头信 号 ( 令/ 据 ) 生相 应 的同 并 命 数 产 步信 号 ;2 对 1 数 据进 行 编 码 ;3 附加 奇 偶 校 验 () 6位 ()
1 Vei gHDL硬 件 描 述 语 言 r o l
V ro D ei gH L是 目前 应 用最 为广 泛 的 硬 件 描 述 语 l
图 1 曼彻 斯 特 码 Ⅱ编 码 的码 型 结 构
2 1 编 码设 计与 实现 .
言 , 以在算 法级 、 可 门级 到 开关级 的多 种抽 象设 计层 次
O 引 言
在油 田测 井 中 , 多 种 仪 器 都 采用 曼 彻 斯 特 码 将 很 所采 集 的大 量信 息传送 给 地面测 井 系统 。曼彻 斯特 编
码是 串行数 据传 输 的一 种 重 要 的 编码 方 式 , 有 很 好 具 的抗 干 扰性 能 , 常情况 下 通过 HD15 0曼 彻斯 特 码 通 3 5
不必 过 多考 虑 门级及 工 艺 实 现 的具 体 细 节 , 只需 根 据 系统 设计 的要 求施 加 不 同的 约束 条 件 , 可设 计 出 实 即
际 电路 J 。
2 曼 彻 斯 特 码 编解 码 器 的 总体 设 计
图 2 编 码 状 态 转 换 图
本文 的设 计遵 循 曼 彻 斯 特码 编 译 码 规 则 , 现 了 实
编译 码器 来 实 现 。利 用 F G P A来 实 现 H 5 3 D1 5 0的 功
变 原来通 讯 电路 的情 况 下 , 将该 模 块 与 脉 冲 中子 能 谱 测 井仪通 讯 系统 对 接 , 现 了用 F G 实 P A替 代 HD 53 150
Verilog_VHDL_曼彻斯特编码器

1.5.什么叫“综合”?一般“综合”包含哪些过程?答:在电子设计领域中“综合”的概念可以表示为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。
综合包含的过程:对VHDL或Verilog HDL进行处理分析,并将其转换成电路结构或模块,这时不考虑实际器件实现,即完全与硬件无关,这个过程是一个通用电路原理图形成的过程:第2步,对实际实现目标器件的结构进行优化,并使之满足各种约束条件,优化关键路径,等等。
2.10 使用Quartus II的 Mega Wizard Plug-In Manager宏功能模块中的PLL设计一个能实现图题2.10波形的电路元件(包括一个VHDL文件和一个*.bsf原理图图标)。
其中:inclk0为电路的主频输入端,频率为50MHz;areset为异步置位端,c2和主频inclk0同频率。
c1为主频inclk0的倍频输出信号。
C0为c2的反相信号。
Locked为相位控制信号,也是输出使能控制信号。
( 2014am)3.20 试用VHDL 语言设计一个曼彻斯特编码器。
已知有时钟信号clk_d、时钟的倍频信号clk及时钟的反相信号clk_dn。
串行数据输入为data_s,编码输出为mcode_out,输出使能信号为clk_lock_in,高电平有效(2012am)(2013am)(2014am)提示:曼彻斯特码(Manchester Code)又称为数字双相码或分相码(Split-phase Code)。
它的编码规则是:用分别持续半个码元周期的正(高)、负(低)电平组合表示信码“1”;用分别持续半个码元周期的负(低)、正(高)电平组合表示信码“0”。
图题3.20 用倍频时钟设计Manchester Code图题3.20 用双时钟设计Manchester Code 的仿真结果hsu_manchester_code_vmodule hsu_manchester_code_v ( clk,clk_d,clk_dn,data_s,clk_lock_in,mcode_out); input clk,clk_d,clk_dn,data_s,clk_lock_in;output mcode_out;reg mcode_out;reg temp_mcode_out;reg temp_mcode_out_ddn;always ( posedge clk or posedge clk_lock_in )beginif (clk_lock_in==1'b1)if (data_s==1'b1)temp_mcode_out<=clk_d;elsetemp_mcode_out<=1'b0;elsetemp_mcode_out=1'b0;endalways ( posedge clk or posedge clk_lock_in )beginif (clk_lock_in==1'b1)if (data_s==1'b0)temp_mcode_out_ddn<=clk_dn;elsetemp_mcode_out_ddn<=1'b0;elsetemp_mcode_out_ddn=1'b0;Endalways ( posedge clk or posedge clk_lock_in )beginif (clk_lock_in==1'b1)mcode_out<=temp_mcode_out;temp_mcode_out_ddn;elsemcode_out<=1'b0;endendmodule3.21 试用VHDL 语言设计一个求两个数中最大值的程序,要求用函数调用的方法设计。
曼彻斯特编码的FPGA设计方案

曼彻斯特编码的FPGA设计方案1 绪论1.1 背景及目的意义曼彻斯特编码是一种自同步的编码方式,即时钟同步信号就隐藏在数据波形中。
在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;从高到低跳变表示"1",从低到高跳变表示"0"。
还有一种是差分曼彻斯特编码,每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示"0"或"1",有跳变为"0",无跳变为"1"。
在曼彻斯特编码中,用电压跳变的相位不同来区分1和0,即用正的电压跳变表示0,用负的电压跳变表示1。
因此,这种编码也称为相应编码。
由于跳变都发生在每一个码元的中间,接收端可以方便地利用它作为位同步时钟[1]。
由于技术的发展,现代通信体现出了越来越高的要求:1.能有效实现各子系统之间的数据传输,且满足特定的通信特性;2.通信子系统相对独立地工作,对应用软件尽可能透明,且占用主机的时间尽可能少;3.通信系统灵活,易于修改;4.通信子系统具有较强的抗干扰能力。
在数据通信领域,开发一个数据通信系统,选择一种好的数据编码方式是非常重要的,关系到整个系统的可行性、稳定性、通信质量以及以后系统的工作效率等方面。
如何实现开发出更高可行性、可靠性及稳定性的通信系统,这正是研究曼彻斯特码的目的和意义所在。
1.2 国外研究现状曼彻斯特码采用跳变沿来表示0或1,与二进制码相比,具有如下优点:1.波形在每一位元中间都有跳变,因此具有丰富的定时信息,便于接收端提取定时信号。
若采用二进制传输,当出现连续的0或1时,则无法区分两位元之间的边界;2.由于曼彻斯特码在每一位元中都有电平的转变,因此,传输时无直流分量,可降低系统的功耗。
而对于二进制波形,当出现连续的1时,将有直流分量的产生;3.曼彻斯特码传输方式非常适合于多路数据的快速切换。
曼彻斯特编解码电路设计毕业设计

毕业设计(论文)题目名称:曼彻斯特编解码电路设计学生姓名:院(系):电子信息学院专业班级:电气10602指导教师:辅导教师:时间:2010年3月15日至2010年6月10日目录毕业设计(论文)开题报告 (V)曼彻斯特编解码电路设计 (12)Manchester encoding and decoding circuit (13)前言 0曼彻斯特编解码电路设计 (1)1 选题背景 (1)普通NRZ码存在的问题 (1)应用背景 (1)2 方案论证 0曼彻斯特码简介 0曼彻斯特编解码解析 0曼彻斯特编解码具体实现方式 (1)方案选择 (2)3 硬件电路设计 (5)系统实物照片展示 (5)系统的硬件框图 (6)AT89S52单片机简介 (7)单片机外围电路 (9)信号调理电路 (13)4 软件设计 (16)资源利用 (16)曼彻斯特码编解码方式分析 (18)程序流程图 (19)编码实现 (21)改良方向 (24)参考文献 (26)致谢 (27)附录1:地下液位测量系统实物照片 (28)长江大学毕业设计(论文)任务书学院(系)电子信息学院专业电气工程及自动化班级电气10602学生姓名熊香春指导教师/职称吴爱平/讲师1.毕业设计(论文)题目曼彻斯特编解码电路设计2.毕业设计(论文)起止时刻:2010年3月15日-2010年6月10日3.毕业设计(论文)所需资料及原始数据(指导教师选定部份)所需资料:(1)《MCS-51单片机原理与应用》(2)《单片机的C语言编程》(3) 通信原理原始数据传输速度为20Kb/S,一帧数据有16个字节,一帧的命令有2个字节。
4.毕业设计(论文)应完成的主要内容(1)利用C语言编程实现曼彻斯特编码、解码模块,并在PROTUES软件中仿真;(2)设计曼彻斯特信号调理电路;(3)毕业论文中必需包括如下内容:大体原理介绍、整体框图、软件流程图、软件原理介绍、源程序清单。
5.毕业设计(论文)的目标及具体要求利用单片机和C语言编程实现曼彻斯特编码、解码模块,并在PROTUES软件中仿真通过;通过单片机最小系统,辅之外围电路,能够实现编解码。
超大规模集成电路论文

课程论文(超大规模集成电路设计)题目基于CPLD的曼彻斯特编解码器设计专业学生姓名学号得分基于CPLD的曼彻斯特编解码器设计引言虽然计算机通信的方法和手段多种多样,但都必须依靠数据通信技术。
数据通信就是将数据信号加到数据传输信道上进行传输,并在接收点将原始发送的数据正确地恢复过来。
由于计算机产生的一般都是数字信号,因此计算机之间的通信实际上都属于数据通信。
曼彻斯特码编解码器是1553B总线接口中不可缺少的重要组成部分,曼彻斯特码编解码器设计的好坏直接影响总线接口的性能,在数控测井系统和无线监控等领域,曼彻斯特码编解码器都有广泛应用。
1 数据通信系统结构图1所示是数据通信系统的基本构成。
在计算机通信中,通信双方传递的信息必须进行量化并以某种形式进行编码后才能进行传输。
机内信号不论采用哪一种编码方法,它们的基本信号都是脉冲信号,为了减少信号在传输媒质上的通信带宽限制,以及噪音、衰减、时延等影响,也由于同步技术的需要,操作时都需要对简单的脉冲信号进行一些不同的变换,以适合传输的需要。
这样就会产生许多不同的代码,通常有不归零电平(NRZ-L)码,逢“1”反转(NRZ-1)码,曼彻斯特码和差分曼彻斯特等。
图2所示是部分编码方式的波形图。
由图2可知,不归零码的制码原理是用负电平表示“0”,正电平表示“1”,其缺点是难以分辨一位的结束和另一位的开始;发送方和接收方必须有时钟同步;若信号中“0”或“1”连续出现,信号直流分量将累加,这样就容易产生传播错误。
曼彻斯特码(Manchester)的原理是每一位中间都有一个跳变,从低跳到高表示“0”,从高跳到低表示“1”。
这种编码方式克服了NRZ码的不足。
每位中间的跳变即可作为数据,又可作为时钟,因而能够自同步。
曼彻斯特编码特点是每传输一位数据都对应一次跳变,因而利于同步信号的提取,而且直流分量恒定不变。
缺点是数据编码后,脉冲频率为数据传输速度的2倍。
差分曼彻斯特码(Differential Manchester)的原理是每一位中间都有一个跳变,每位开始时有跳变表示“0”,无跳变表示“1”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工具软件实训报告项目名称:曼彻斯特编解码器指导老师:系科:专业:姓名:学号:目录:一:实训要求 (3)二:实训原理 (3)三:实训思路 (4)四:实训步骤 (4)五:原理图、仿真结果图以及结论分析 (5)1.曼彻斯特编解码器(实现16bit数据的编解码) (5)1.1曼彻斯特编解码器电路原理图: (5)1.2模块详解 (6)1.3仿真图以及分析 (10)六:个人总结 (11)一:实训要求(1)通过学习原理图输入设计的方法掌握使用工具软件Quartus Ⅱ设计小型数字电路;(2)查阅文献,了解曼彻斯特编解码器的基本原理,并提出在Quartus Ⅱ软件环境下用VHDL进行仿真的方案。
(3)完成设计对编码器的要求:能够对输入的16bit数据进行曼彻斯特编码,输入有时钟、使能、16bit并行数据、写信号等;输出有编码结束和曼彻斯特编码信号(都为1位信号)等。
(4)完成设计对解码器要求:能够把输入的串行曼彻斯特码解码成原先的并行数据,输入有时钟、曼彻斯特码输入(1bit)、使能信号等,输出有提取的同步时钟信号、解码完成(1bit),并行数据(16bit)等。
二:实训原理曼彻斯特编码,也叫做相位编码(PE),是一个同步时钟编码技术,在以太网媒介系统中,被物理层使用来编码一个同步位流的时钟和数据。
它的每一个数据比特都是由至少一次电压转换的形式所表示的。
在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作为时钟信号,又作为数据信号。
按照曼彻斯特码在IEEE 802.4(令牌总线)以及IEEE 802.3 (以太网)中的规定,本次实训将从高电平到低电平的跳变表示“0”,从低电平到高电平的跳变表示“1”。
三:实训思路以下为曼彻斯特编解码器的实现框图:有上图可知,此次的曼彻斯特编解码电路包括三个部分:信号产生部分、编码电路部分和解码电路部分。
其中,信号产生部分用来产生一个循环的16位二进制数据编码作为普通的信号输入;编码部分则将输入的信号编码为曼彻斯特码,然后输出显示;解码部分负责将获得的曼彻斯特码解码成普通的二进制数据编码。
三个相对独立的模块相互协同工作,共同完成曼彻斯特编解码的工作。
四:实训步骤(1)建立工程;(2)编写VHDL文件,建立目标器件;(3)绘制电路原理图并编译;(4)进行仿真以及分析仿真后的波形文件;(5)完成实训报告。
五:原理图、仿真结果图以及结论分析1.曼彻斯特编解码器(实现16bit数据的编解码)1.1曼彻斯特编解码器电路原理图:1.2模块详解1.2.1分频器模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clks isport(clk:in std_logic; --基准时钟clk0,clk1,clk2:buffer std_logic); --分频出的三个时钟,分别输入循环编--码模块、曼彻斯特编码模块、曼彻斯特解码模块end clks;architecture behav of clks issignal a:integer:=0;signal b:integer:=0;beginprocess(clk)beginclk0<=clk;end process;process(clk)beginif clk'event and clk='1' thenif a=2 thena<=0;clk1<='1';elsea<=a+1;clk1<='0';end if;end if;end process;process(clk)beginif clk'event and clk='1' thenif b=5 thenb<=0;clk2<='1';elseb<=b+1;clk2<='0';end if;end if;end process;end behav;1.2.2循环编码模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity recycle isport(clk2:in std_logic;datain:out std_logic);end recycle;architecture behav of recycle issignal i:integer:=0;beginprocess(clk2)beginif clk2'event and clk2='1' thenif i=15 theni<=0;elsei<=i+1;end if;end if;end process;process(clk2)beginif clk2'event and clk2='1' thencase i iswhen 0 => datain<='1';when 1 => datain<='0';when 2 => datain<='1';when 3 => datain<='1';when 4 => datain<='0';when 5 => datain<='1';when 6 => datain<='0';when 7 => datain<='0';when 8 => datain<='0';when 9 => datain<='0';when 10 => datain<='1';when 11 => datain<='1';when 12 => datain<='0';when 13 => datain<='1';when 14 => datain<='0';when 15 => datain<='0';when others => datain<=null;end case;end if;end process;end behav;1.2.3曼彻斯特编码模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mcode isport(clk1: in std_logic;datain: in std_logic;dataout: out std_logic);end mcode;architecture behav of mcode issignal con:std_logic_vector(1 downto 0);signal s:std_logic;beginprocess(clk1)beginif clk1'event and clk1='1' thenif datain='1' thencon<="01"; --上升沿表示'1'elsecon<="10"; --下降沿表示'0'end if;end if;end process;process(clk1)Beginif clk1'event and clk1='1' thenif s='1' thendataout<=con(1);s<=not s;elsedataout<=con(0);s<=not s;end if;end if;end process;end behav;说明:曼彻斯特码是用“01”和“10”来表示普通二进制数据中的“1”和“0”的,因此在实际电路设计中,我们很容易产生一个和数据信号具有相同频率的检测时钟,用来对传入的数据信号进行检测。
当检测信号检测到输入信号是“1”时,选择器就输出“01”给寄存器,由寄存器完成并串转化功能,然后再将串行数据输出;当输入信号是“0”时,选择器就输出“10”给寄存器由寄存器完成并串转化功能,然后再将串行数据输出,这样,输出的串行数据就是曼彻斯特码。
1.2.4曼彻斯特解码模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mdecode isport(clk0:in std_logic;dedatain: in std_logic;dedataout:out std_logic;count: buffer std_logic_vector(2 downto 0));end mdecode;architecture behav of mdecode issignal con:std_logic_vector(1 downto 0);beginprocess(clk0)beginif clk0'event and clk0='1' thenif count=5 thencount<="000";elsecount<=count+1;end if;end if;end process;process(clk0)beginif clk0'event and clk0='1' thencon(1)<=con(0);con(0)<=dedatain;end if;end process;process(clk0)beginif clk0'event and clk0='1' thenif count=4 thenif con="10" thendedataout<='0';elsif con="01" thendedataout<='1';end if;end if;end if;end process;end behav;说明:曼彻斯特解码电路设计的关键是如何准确地从曼彻斯特码的数据流中提取出“10”和“01”信号,并且把它们转换成普通二进制编码中的“0”和“1”。