基于FPGA的曼切斯特编码的设计--毕业论文.doc_第1页
基于FPGA的曼切斯特编码的设计--毕业论文.doc_第2页
基于FPGA的曼切斯特编码的设计--毕业论文.doc_第3页
基于FPGA的曼切斯特编码的设计--毕业论文.doc_第4页
基于FPGA的曼切斯特编码的设计--毕业论文.doc_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

xx 大学继续教育学院毕业设计(论文) 毕毕业业设设计计 (论论 文文) GRADUATE DESIGN (THESIS) 设计(论文)题目设计(论文)题目 基于基于 FPGA 的曼切斯特编码的设计的曼切斯特编码的设计 学学 生生 学习中心学习中心 专专 业业 电气工程及其自动化 指导教师指导教师 x x x x 大大 学学 毕毕 业业 设设 计计 ( 论论 文文 ) x x x x 大大 学学 继继 续续 教教 育育 学学 院院 教教 务务 处处 xx 大学继续教育学院毕业设计(论文) I 摘摘 要要 在电信领域,曼彻斯特码是一种数据通讯线性码,它的每一 个数据比特都是由至少一次电压转换的形式所表示的。它是一种 超越传统数字传输的信道编码技术,同时被认为是一种自定时码。 自定时就意味着完全可以实现数据流的精确同步。每一个比特都 准确的在一个预先定义时期的时间中被传送。曼彻斯特编码已经 被许多高效率且被广泛使用的电信标准所采用,例如以太网电讯 标准。曼彻斯特编码具有隐含时钟、去除了零频率信号的特性, 使得它在石油勘探测井中得到广泛的应用1。 本文对曼彻斯特编码相关原理和 FPGA 进行概述,介绍了其编 解码规则。对其特点和应用范围进行了说明。提出了曼彻斯特编 解码方案,重点运用 Verilog HDL 语言对其编解码的描述。最后 讲述该系统在 Quartus 软件下的运行和仿真。 关键词:关键词:FPGA;曼彻斯特编解码;Verilog HDL 语言 xx 大学继续教育学院毕业设计(论文) II 目 录 1.曼彻斯特码概述 1 1.1 曼彻斯特码简介.1 1.2 曼彻斯特码原理.1 1.3 曼彻斯特编解码 .2 1.3.1 编码 .3 1.3.2 解码 .5 2.曼彻斯特编解码实现方法比较 6 2.1 集成方法实现.6 2.2 软件编解码.7 2.2.1 单片机实现7 2.2.2 FPGA/CPLD 实现8 2.2.3 方案选择 .8 3.FPGA 原理及平台简介8 3.1 FPGA 原理与特点 10 3.2 QUARTUS II 及 HDL 语言 13 3.2.1 基于 QUARTUS II 的 FPGA 设计 13 xx 大学继续教育学院毕业设计(论文) III 3.2.2 VERILOG HDL 简介.16 4.系统总体设计 .19 4.1 编码器.19 4.2 解码器 23 4.3 时钟模块 .27 5.系统测试与仿真 .28 5.1 曼彻斯特编码仿真28 5.1.1 编码分析 34 5.2 曼彻斯特解码仿真35 5.2.1 解码分析 36 6.结论及展望 .37 参考文献 .38 附录 .40 xx 大学继续教育学院毕业设计(论文) 1.1.曼彻斯特码曼彻斯特码概述概述 1.1 曼彻斯特码简介 在电信领域,曼彻斯特码 (也称作相位码或者 PE)是一种数 据通讯线性码,它的每一个数据比特都是由至少一次电压转换的 形式所表示。曼彻斯特编码因此被认为是一种自定时码。自定时 意味着是可以实现数据流的精确同步。每一个比特都准确的在一 预先定义时间时期的时间中被传送2。 曼彻斯特码又称双向码。它是对每个二进制代码分别利用两 个具有两个不同相位的二进制新码去取代的码。 双向码的特点是只用两个电平。与用高、低电平表示 0, 1 的非归零二进制码相比,在连 0 或连 1 的情况下,更易于提取同 步时钟信息,又无直流漂移,编、译码过程比较简单,且有强的 抗干扰能力。 1.2 曼彻斯特码原理 曼彻斯特码是一种常用的用于数字基带传输的码型。它是一 种用跳变沿(而非电平)来表示要传输的二进制信息(0 或 1) , xx 大学继续教育学院毕业设计(论文) 1 一般规定在位元中间用向下跳变表示“1” ,用向上跳变表示“0” 。 曼彻斯特编码提供了一种简单的方法在长时间段内没有 电平跳变的情况下,仍然能够对任意的二进制序列进行编码,并 且防止低通模拟电路中低频直流飘移所引起的比特错误以及防止 在这种情况下同步时钟信号的丢失3。如果保证传送的编码交流 信号的直流分量为零并且能够防止中继信号的基线漂移,那么很 容易实现信号的恢复和防止能量的浪费。所以曼彻斯特码具有丰 富的位定时信息。 同时,有许许多多的复杂的编码方法中,在达到同等目的情况 下只需要减少带宽负荷并且只有减少的同步信号相位。二进制码 与曼彻斯特码波形的对比关系如图 1-1。 NRZ数据 时钟信号 曼彻斯特 110010 110010 图 1-1 二进制码与曼彻斯特码波形 xx 大学继续教育学院毕业设计(论文) 2 1.3 曼彻斯特编解码 本次论文曼彻斯特编解码由编码模块和解码模块二个部分组 成。编码模块提供时钟源,并且对输入的待传送原码进行编码, 将其转换成曼彻斯特码并发送。解码模块用则是将曼彻斯特码整 形后利用同步时钟模块提供的同步信号把它转换成原码输出。二 个相对独立的模块相互协同工作共同完成曼彻斯特编解码工作。 1.3.1 编码 曼彻斯特编码是一种自同步的编码方式,即时钟同步信号就 隐藏在数据波形中。曼彻斯特编码电平跳变的规则是:低电平的 中间时刻跳变表示为0 ,用高电平中间时刻的跳变表示为1 , 如下图 1-2 所示。因而这样防止时钟同步的丢失,或来自低频率 位移在贫乏补偿的模拟链接位错误,在这个技术下,实际上的二 进制数据被传输通过这个电缆,不是作为一个序列的逻辑 1 或 0 来发送的。它具有自同步能力和良好的抗干扰性能。但每一个码 元都被调成两个电平,所以数据传输速率只有调制速率的 1/2。 下跳1 上跳0 xx 大学继续教育学院毕业设计(论文) 3 图 1-2 曼彻斯特编码 下面是一段数据串行信号“110110001” ,在上图中可以看出 曼彻斯特编码信号的跳变都发生在中间时刻,它按照曼彻斯特的 编码规则,可以表示“110110001”,如图 3-3 所示。 1 1 0 1 1 0 0 0 1 基带数字信号 曼彻斯特信号 图 3-3 信号的曼彻斯特编码 曼彻斯特编码,常用于局域网传输。在曼彻斯特编码中,编 码简单的二进制序列时,长周期没有转换级别因而导致时钟同步 的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误,根据 这样的情况,曼彻斯特编码提供了一个简单的方式。而在这中技 术下,二进制数据被传输通过这个电缆,不是作为一个序列的逻 辑 1 或 0 来发送的。相反地,这些位被转换为一个稍微不同的格 式,这样使用直接的二进制编码有很多的优点。 在曼彻斯特编码中,用电压跳变的相位不同来区分 1 和 0,即 用正的电压跳变表示 0,用负的电压跳变表示 1。因此,这种编码 也称为相应编码。由于跳变都发生在每一个码元的中间,接收端 xx 大学继续教育学院毕业设计(论文) 4 可以方便地利用它作为位同步时钟,因此,这种编码也称为自同 步编码。所以,每一位的中间有一跳变,位中间的跳变既作为时 钟信号,又作为数据信号;从高到向低跳变表示“1” ,从低到向 高跳变表示“0” 。还有一种是差分曼彻斯特编码,每位中间的跳 变仅提供时钟定时,而用每位开始时有无跳变表示“0”或“1” , 有跳变为“0” ,无跳变为“1” 。 曼彻斯特码由于其特殊的性能,被广泛应用于小功率无线传 输系统中4。曼彻斯特编码最大的优点是:数据和同步时钟统一 编码,曼码中含有丰富的时钟信号,直流分量基本为零,接收器 能够比较容易恢复同步时钟,并同步解调出信号,具有很好的抗 干扰性能,这使他更适合信道传输。 1.3.2 解码 解码器需要将收到的曼彻斯特码解码,得出 16 位并行数据, 并给出各种校验结果。解码过程为: 1、同步头检测,当检测到同步头后触发整个解码过程开始, 并给出同步头类型。 2、检测到同步头后,计数器 cnt 开始计数,在 cnt 的控制下 进行解码。包括码型转换与移位操作,同步头类型输出、曼彻斯 xx 大学继续教育学院毕业设计(论文) 5 特码型校验、奇偶校验、字连续性校验等。 3、当码的串并转换以及各种校验都完成后,给出并行数据和 校验结果信号,在 cnt 的控制下最终给出数据有效信号 read。协 议模块可在该信号有效(高电平)时检测其他校验信号,并决定是 否取走并行数据。 解码器一直监视数据输入线,当接收到有效的同步头和两个 有效的曼彻斯特码数据位后,便开始输出。 2.2.曼彻斯特编解码实现方法曼彻斯特编解码实现方法比较比较 2.1 集成方法实现 集成方法实现曼彻斯特数据的编解码功能,一般采用专用的 曼彻斯特编码译码器,如 HD15530 或 HD6408,数据的串并转 换与信号合成都通过数字电路完成。但这种方法存在许多不足之 处:第一,在利用集成芯片方法实现曼彻斯特编解码传输时,对 编解码器时序要求很高,使得上下位机同步比较困难;第二,这 种方法会导致硬件电路过于庞大、复杂,而且也增加了系统调试 的难度5。 xx 大学继续教育学院毕业设计(论文) 6 2.2 软件编解码 软件方法实现曼彻斯特编解码主要有高速单片机实现和 FPGA/CPLD 实现两种。 2.2.1 单片机实现 单片机实现曼彻斯特编解码功能,是比较常见的。一般AVR单 片机实现曼彻斯特编解码中接受监视器的单片机程序需要完成数 据接收、曼彻斯特编解码、数据处理、显示、异常情况报警等任 务。在接收数据时,因为小功率无线传输通道干扰比较严重,单 片机又对所有的ICP1引脚跳变沿都响应,它的中断级别又比较高。 这些都很大程度上加大了单片机的负担,严重时会造成单片机的 其它任务得不到执行。而且在利用单片机或专用芯片进行编解码 时,对传输的数据只能进行奇偶校验,在条件比较恶劣的场合, 特别是在无线通信,数据极易出错,奇偶校验不能检测出这类突 发性错误;再者单片机的串口通信和专用芯片在传输速率和每帧 的有效数据位数等方面都作了严格的限制。因此,还有在要求高 速传输速率的场合,单片机和专用芯片都难以实现6。 xx 大学继续教育学院毕业设计(论文) 7 2.2.2 FPGA/CPLD 实现 在现代电子设计领域,VHDL 和现场可编程逻辑器件的广泛应 用使数字系统设计更为灵活,大大缩短了开发周期。现场可编程 逻辑门阵列(Field Programmable Gate Array: FPGA)是新型的 高密度可编程逻辑器件。它是可编程阵列逻辑(PAL) ,门阵列逻 辑(GAL)等逻辑器件的基础上发展起来的,同以往的 PAL,GAL 想比较,FPGA 的规模较大,适合于时序、组合等逻辑电路应用场 合,它可以替代几十甚至上百块通用 ASIC 芯片,这种芯片具有可 编程性和实现方案可重构的特点。FPGA 器件的主要优点:功能集 成度高,系统设计快,设计灵活,可靠性高,费用低。 2.2.3 方案选择 综上所述,本设计采用基于FPGA的设计方案,充分利用FPGA 功能集成度高,系统设计快,设计灵活等优越性,大大提高设计 的周期,减少PCB面积。 3.FPGA3.FPGA 原理及原理及平台简介平台简介 目前以硬件描述语言(Verilog HDL或VHDL)所完成的电路设 xx 大学继续教育学院毕业设计(论文) 8 计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测 试,是现代 IC 设计验证的技术主流。这些可编辑器件可以被用 来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更 复杂一些的功能电路,比如解码器或数学方程式。在大多数的 FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器 (Flipflop)或者其他更加完整的记忆块。FPGA采用了逻辑单 元阵列LCA(Logic Cell Array)模型,内部包括可配置逻辑模块 CLB(Configurable Logic Block) 、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分7,图3-1 是FPGA的结构图。 xx 大学继续教育学院毕业设计(论文) 9 图3 -1 FPGA结构图 3.1 FPGA 原理与特点 大部分 FPGA 器件采用了查找表结构,查找表的原理类似于 ROM,其物理结构是静态储存器(SRAM) ,N 个输入项的逻辑函数可 以由一个 2N位容量的 SRAM 来实现,函数值存放在 SRAM 中,SRMA 的地址线起输入线作用,地址即输入变量值,SRMA 的输出为逻辑 函数值,由连线开过实现与其他功能的连接。而实际上 FPGA 器件 的查找表的输入项一般不超过 5 个,多于 5 个输入变量的逻辑函 数由多个查找表组合或级联实现。 FPGA 利用小型查找表(161RAM)来实现组合逻辑,每个查 布线资源可编程逻辑块 开关矩阵 I/O块 xx 大学继续教育学院毕业设计(论文) 10 找表连接到一个 D 触发器的输入端,触发器再来驱动其他逻辑电 路或驱动 I/O,由此构成了既可实现组合逻辑功能又可实现时序逻 辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接 或连接到 I/O 模块。FPGA 的逻辑是通过向内部静态存储单元加载 编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的 逻辑功能以及各模块之间或模块与 I/O 间的连接方式,并最终决 定了 FPGA 所能实现的功能,FPGA 可以进行数十万次的编程。 用户可对 FPGA 内部的逻辑模块和 I/O 模块重新配置,以实现 用户的逻辑,因而也被用于对 CPU 的模拟。用户对 FPGA 的编程数 据放在 Flash 芯片中,通过上电加载到 FPGA 中,对其进行初始化。 也可在线对其编程,实现系统在线重构,这一特性可以构建一个 根据计算任务不同而实时定制的 CPU,这是当今研究的热门领域。 和其他可编程逻辑器件一样,FPGA 也由未完成的逻辑阵列所 组成,通过将这些逻辑阵列连接到一起来完成一定的功能。像 PAL 一样,各个阵列单元之间的互连是可以编程的。 FPGA采用了逻辑单元阵列结构,内部包括可配置逻辑模块 CLB、输出输入模块IOB和内部连线三个部分。FPGA的基本特点主 要有: xx 大学继续教育学院毕业设计(论文) 11 1、采用FPGA设计ASIC电路,用户不需要投片生产,就能得到 合用的芯片。 2、FPGA可做其它全定制或半定制ASIC电路的中试样片。 3、FPGA内部有丰富的触发器和I/O引脚。 4、FPGA是ASIC电路中设计周期最短、开发费用最低、风险最 小的器件之一。 5、FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平 兼容。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此, 工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式, 采用不同的编程方式。加电时,FPGA芯片将EEPROM中数据读入片 内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢 复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。这样, 同一片FPGA不同的编程数据可以产生不同的电路功能,因此FPGA 的使用非常灵活。 FPGA提供了一种“自顶向下“的全新的设计方法。这种设计方 法首先从系统设计入手,在顶层进行功能方框图的划分和结构设 计,再对图表进行仿真、纠错,并用硬件描述语言对高层次的系 xx 大学继续教育学院毕业设计(论文) 12 统行为进行描述,在系统级进行验证。然后用综合优化工具生成 具体门电路的网表,其对应的物理实现级可以是印刷电路板或专 用集成电路。由于设计的主要仿真和调试过程是在高层次上完成 的,这不仅有利于早期发现结构设计上的错误,避免设计工作的 浪费,而且也减少了逻辑功能仿真的工作量,有效降低设计风险。 3.2 Quartus II 及 HDL 语言 Quartus II 是 Altera 公司的 CPLD/FPGA 集成开发软件,具 有完善的可视化设计环境,并具有标准的 EDA 工具接口。它支持 原理图、VHDL、VerilogHDL 以及 AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合 器以及仿真器,可以完成从设计输入到硬件配置的完整 PLD 设计 流程9。 3.2.1 基于 Quartus II 的 FPGA 设计 Quartus II 为硬件电路的设计提供了很大的方便。FPGA 之 所以能够广泛应用于电路设计中,就是因为它们有使用相当方便 xx 大学继续教育学院毕业设计(论文) 13 的开发软件工具包,通过编程工具和软件的配合使用,对器件芯 片可以进行流畅的开发、校验。FPGA 特别适用于正向设计,即从 电路原理图或各种硬件描述语言到芯片成品的设计,在这些设计 流程中,设计人员对特别底层的硬件知识并不需要特别的了解和 掌握,完全可以从功能应用出发,根据任务需求,自顶向下地进 行电路设计,图 3-2 为 Quartus II 设计开发流程图,具体如下: 1、设计输入(Design Entry) 运用电路原理图输入、HDL文本输入等方式,表达设计思想, 指定所用HIGA器件的型号,分配其外部管脚。包括原理图输入、 HDL文本输入、EDIF网表输入及波形输入等几种方式。 2、编译(Compilation) 先根据设计要求设定编译方式和编译策略,如器件选择、逻 辑综合方式的选择等。然后根据设定的参数和策略对设计项目进 行网表提取、逻辑综合、器件适配,并产生报告文件、延时信息 文件以及编程文件,供分析、仿真和编程使用。 3、仿真(Simulation) 仿真包括功能仿真、时序仿真和定时分析,用以验证设计项 目的逻辑功能和时序关系的正确性。功能仿真验证电路功能是否 xx 大学继续教育学院毕业设计(论文) 14 符合设计要求;时序仿真包含了延时信息,能较好反映芯片的实 际工作情况。 仿真一般按如下步骤进行: (1)新建波形编辑文件; (2)设置仿真时间区域;保存文件; (3)导入欲观察的信号节点;编辑激励信号; (4)设置数据格式;设置仿真器参数; (5)启动仿真和观察仿真结果。 4、编程与验证(Program and Verification) 成功编译后,将生成的编程文件下载到目标 FPGA 系统中调试; 调试成功后,烧写到 FPGA 的配置芯片中。用得到的编程文件通过 编程电缆配置 PLD,加入实际激励,进行在线测试。 设计过程中,如果出现错误,这需要重新回到设计输入阶段, 改正错误或调整电路后重复上述过程。 图 3-2 Quartus II 设计开发流程 3.2.2 Verilog HDL 简介 Verilog HDL 是在用途极为广泛的 C 语言的基础上发展起来 xx 大学继续教育学院毕业设计(论文) 15 的一种硬件描述语言,它是由 GDA(Gateway Design Automation) 公司的 PhilMoorby 在 1983 年末首创的,最初只设计了一个仿真 与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。 1985 年 Moorby 推出它的第三个商用仿真器 Verilog-XL,获得了巨 大的成功,从而使得 Verilog HDL 迅速得到推广应用。1989 年 Cadence 公司收购了 GDA 公司,使得 VerilogHDL 成为了该公司的 独家专利。1990 年 CADENCE 公司公开发表了 Verilog HDL,并成立 LVI 组织以促进 Verilog HDL 成为 IEEE 标准,即 IEEE Standard 1364-1995. Verilog HDL 的最大特点就是易学易用,如果有 C 语言的编程 经验,可以在一个较短的时间内很快的学习和掌握。 Verilog HDL主要特性: 基本逻辑门,例如 and、or 和 nand 等都内置在语言中。开 关级基本结构模型,例如 PMOS 和 NMOS 等也被内置在语言 中。 用户定义原语(UDP)创建的灵活性。用户定义的原语既可 以是组合逻辑原语,也可以是时序逻辑原语。 时延描述:提供显式语言结构指定设计中的端口到端口的 xx 大学继续教育学院毕业设计(论文) 16 时延及路径时延和设计的时序检查。 描述方式:可采用三种不同方式或混合方式对设计建模。 这些方式包括:行为描述方式使用过程化结构建模;数 据流方式使用连续赋值语句方式建模;结构化方式使 用门和模块实例语句描述建模。在行为级描述中, Verilog HDL 不仅能够在 RTL 级上进行设计描述,而且能 够在体系结构级描述及其算法级行为上进行设计描述。同 时,Verilog HDL 支持混合方式建模,即在一个设计中每 个模块均可以在不同设计层次上建模。 数据类型:Verilog HDL 中有两类数据类型:线网数据类 型和寄存器数据类型。线网类型表示构件间的物理连线, 而寄存器类型表示抽象的数据存储元件。 层次设计:能够描述层次设计,可使用模块实例结构描述 任何层次,设计能够在多个层次上加以描述,从开关级、 门级、寄存器传送级(RTL)到算法级,包括进程和队列级, 能够使用内置开关级原语在开关级对设计完整建模。能够 使用门和模块实例化语句在结构级进行结构描述。Verilog HDL 不再是某些公司的专有语言而是 IEEE 标准。设计的规 xx 大学继续教育学院毕业设计(论文) 17 模可以是任意的;语言不对设计的规模(大小)施加任何 限制。 功能扩展:Verilog HDL 语言的描述能力能够通过使用编 程语言接口(PLI)机制进一步扩展。PLI 是允许外部函数 访问 Verilog 模块内信息、允许设计者与模拟器交互的例 程集合。 测试仿真:可用于生成模拟激励和指定测试的验证约束条 件,例如输入值的指定。Verilog HDL 能够监控模拟验证 的执行,即模拟验证执行过程中设计的值能够被监控和显 示。这些值也能够用于与期望值比较,在不匹配的情况下, 打印报告消息。 4.4.系统总体设计系统总体设计 基于现场可编程门阵列(FPGA) ,研究曼彻斯特编解码器的实 现,采用 Verilog HDL 硬件描述语言进行电路建模并测试。本设 计包含编码和解码两个模块。曼彻斯特的编码一次发送 11 位数据, 其中编码头 3 位,为 111,8 位有效数据,奇校验 1 位;曼彻斯特 解码一次接收 11 位数据,其中编码头 3 位,为 111,有效码 8 位, xx 大学继续教育学院毕业设计(论文) 18 奇校验位 1 位。 4.1 编码器 编码过程可分为三部分:1)检测编码周期是否开始,产生同 步字头;2)进行输入数据的曼彻斯特编码;3)产生奇偶校验位 并对其进行编码,编码周期结束。下面是曼彻斯特编码结构图。 由于曼彻斯特编码是将NRZ 普通二进制数据与其位率时钟信 号相异或而得,因此,首先要产生位率时钟信号,同时,要解决 位率时钟与NRZ 码的同步问题,保证NRZ 每个码元宽度占用一个 周期的位率时钟信号,并且保证NRZ 码元输入时,立即产生位率 时钟,这样就可以保证位率时钟与NRZ 码的同步。保证了位率时 钟与NRZ 码同步, 然后将NRZ 码与位率时钟异或,便可以得到最 终的曼彻斯特编码。本设计是在第一个位率时钟下降沿开始产生 曼彻斯特编码, 在位率时钟出现下降沿时,将NRZ 码与位率时钟 异或,相当于与“0”异或,在位率时钟出项上升沿时,将NRZ 码 与位率时钟异或,相当于与“1”,输入8 位NRZ 码,产生16 位 曼彻斯特编码,最终输出转换完成标志位10。 xx 大学继续教育学院毕业设计(论文) 19 发送信号电平沿 检测模块 时钟分频模块 数据位发送 计数模块 曼彻斯特 编码模块 mdata7:0 mout mfs clk16x clk1x 图 4-1 曼彻斯特编码 编码过程包含了发送信号电平沿检测模块、曼彻斯特编码模 块、时钟分频模块和数据位发送技术模块。编码电路模块提供时 钟源,并且对输入的待传送原码进行编码,将其转换成曼彻斯特 码并发送。 发送信号电平沿检测模块主要功能就是检测 mfs 信号上升 沿,当检测到 mfs 上升沿后使能时钟信号 clk1x_en。程序如下: always (posedge clk16x or negedge rst) begin if(!rst) begin mfs1 =4b0010 /generate manchest endmodule 2、解码程序 /*程序名:manch_rxd *描 述:曼彻斯特解码程序 *功 能:曼彻斯特解码,一次接收11位数据, * 其中编码头3位,为111,有效码8位 * 奇校验位1位 */ module manch_rxd( input rst, /复位 input clk16x, /16倍时钟 input min, /曼彻斯特接收端 output reg rdy, /接收完毕标志 xx 大学继续教育学院毕业设计(论文) 48 output 7:0 mdata /接收解码数据并行输出端 ); wire clk1x; /单倍时钟 reg clk1x_en; /时钟使能,高电平有效 reg 3:0 clkdiv; /时钟分频计数器,将16倍时钟分 为单倍时钟 reg mjs1; /状态寄存器 reg mjs2; /状态寄存器 reg odd; /奇校验位 reg nrz; /曼彻斯特解码二进制码 reg 7:0 mbuf; /数据接收缓存 reg 3:0 next; /下一个状态标志 reg 3:0 current; /当前状态标志 reg ztj1; /状态机标志 reg ztj2; /状态机标志 wire cyd; /检测标志 xx 大学继续教育学院毕业设计(论文) 49 /检测min上升沿 always (posedge clk16x or negedge rst) begin if(!rst) begin mjs2 = 1b0; mjs1 = 1b0; end else begin mjs2 = mjs1; mjs1 = min; end end /时钟分频使能位使能 always (posedge clk16x or negedge rst) begin xx 大学继续教育学院毕业设计(论文) 50 if(!rst) clk1x_en = 1b0; else if(mjs2=1b0 else if(ztj2=1b1) clk1x_en = 1b0; end /16分频 always (posedge clk16x or negedge rst) begin if(!rst) clkdiv = 4h0; else if(clk1x_en=1b1) clkdiv = clkdiv + 1b1; else clkdiv = 4h0; end xx 大学继续教育学院毕业设计(论文) 51 assign clk1x = clkdiv3; /得到单倍频率 assign cyd = clkdiv=4h3|clkdiv=4hc; /当分频值 位3和12时检测min信号 /曼彻斯特解码 always (posedge clk16x or negedge rs

温馨提示

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

评论

0/150

提交评论