




免费预览已结束,剩余32页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本本科科毕毕业业设设计计 论论文文 题目 基于 FPGA 的 UART 模块设计 学 院 物理与电子工程学院 年 级 06 专 业 电子科学与技术 班 级 电子 1 班 学 号 050206110 学生姓名 倪海日 指导教师 潘启勇 职 称 讲师 论文提交日期 2010 5 19 常熟理工学院本科毕业设计 论文 诚信承诺书 本人郑重声明 所呈交的本科毕业设计 论文 是本人在导师的指导下 独立进行研究工作所取得的成果 除文中已经注明引用的内容外 本论文不 含任何其他个人或集体已经发表或撰写过的作品成果 对本文的研究做出重 要贡献的个人和集体 均已在文中以明确方式标明 本人完全意识到本声明 的法律结果由本人承担 本人签名 日期 常熟理工学院本科毕业设计 论文 使用授权说明 本人完全了解常熟理工学院有关收集 保留和使用毕业设计 论文 的规 定 即 本科生在校期间进行毕业设计 论文 工作的知识产权单位属常熟理 工学院 学校有权保留并向国家有关部门或机构送交论文的复印件和电子版 允许毕业设计 论文 被查阅和借阅 学校可以将毕业设计 论文 的全部或部分 内容编入有关数据库进行检索 可以采用影印 缩印或扫描等复制手段保存 汇编毕业设计 论文 并且本人电子文档和纸质论文的内容相一致 保密的毕业设计 论文 在解密后遵守此规定 本人签名 日期 导师签名 日期 常熟理工学院毕业设计 论文 I 基于 FPGA 的 UART 模块设计 摘 要 通用异步收发器 Universal Asynchronous Receiver Transmitter UART 是一种广 泛应用于短距离 低速 低成本通信的串行传输接口 UART允许在串行链路上进行全双 工通信 常见的串行接口芯片能够实现比较全面的串行通信功能 而在实际应用中 我 们往往并不需要如此完整的功能 从而会造成资源的浪费和成本的提高 由于常用UART 芯片比较复杂且移植性差 本文提出一种采用可编程器件FPGA实现UART功能的方法 采 用TOP DOWN设计方法 对系统划分模块以及各个模块的信号连接 然后进行模块设计 并用VHDL语言编写代码来实现各模块功能 从而简化了电路 减小了体积 提高了系统 的可靠性 使用Quartus自带的仿真器对各模块进行功能仿真和时序仿真 实现了发送 接收等功能 验证了结果 表明设计正确 功能良好 符合设计要求 关键词关键词 FPGA VHDL UART 有限状态机 常熟理工学院毕业设计 论文 II The Design of Universal Asynchronous Receiver Transmitter Based on FPGA Abstract UART Universal Asynchronous Receiver Transmitter is a widely used for short range low speed low cost serial communication transmission interface UART allow full duplex communication on serial links Common serial interface chips can realize comprehensive serial communication function In practice we often did not need such a complete feature which will result in waste of resources and higher costs As the UART chips used more complex and it s transplantation is poor this paper presents a method that a implementation of UART based on programmable devices FPGA TOP DOWN design method is used the system is divided into modules and signal connections of each module the module function is designed in VHDL language In this way the design can simplifies the circuit reduces the volume improves the reliability of the system Using Quartus simulator for each module function simulation and temporal simulation this designing has realized send receive and other functions Verifing the results suggests that the design comply with the design requirements Key Words FPGA VHDL UART FSM 常熟理工学院毕业设计 论文 III 目 录 第一章 绪论 1 1 1 课题背景与现实意义 1 1 2 课题研究的现状及相关技术的介绍 1 1 2 1 UART 芯片的性能指标 1 1 2 2 FPGA 的发展历程和结构介绍 2 1 2 3 FPGA 的设计方法及软件平台 3 1 2 4 VHDL 语言简介 4 1 3 本文的研究内容 5 1 4 本文的内容结构 6 1 5 小节 6 第二章 UART 理论基础 7 2 1 UART 原理 7 2 2 串行通信基础知识 8 2 2 1 串行通信工作方式 9 2 2 2 串行异步通信 9 2 2 3 串行同步通信 11 2 3 小节 11 第三章 UART 的设计实现 12 3 1 UART 的设计分析 12 3 1 1 UART 设计概述 12 3 1 2 UART 设计整体结构 12 3 2 UART 模块设计 13 3 2 1 顶层模块设计 13 3 2 2 波特率发生模块设计 13 3 2 3 接收模块设计 14 3 2 4 发送模块设计 16 常熟理工学院毕业设计 论文 IV 3 3 小节 17 第四章 UART 设计的仿真与验证 18 4 1 顶层模块仿真 18 4 2 波特率发生模块仿真 19 4 3 接收模块仿真 19 4 4 发送模块仿真 20 4 5 FPGA 开发版下载验证 21 4 6 小节 22 结语 23 致谢 25 参考文献 26 附录 部分程序代码 27 常熟理工学院毕业设计 论文 1 第一章 绪 论 1 11 1 课题背景与现实意义课题背景与现实意义 通用异步收发器 Universal Asynchronous Receiver Transmitter UART 是一种广 泛应用于短距离 低速 低成本通信的串行传输接口 是计算机中最普遍的一部分 异 步串行通信接口具有传输线少 成本低 可靠性高 实现简单等优点 广泛应用于微机 和外设的数据交换 如和鼠标 键盘 调制解调器 打印机之间以及微机与微机之间的 串行数据传输 l 同时在当今的嵌入式微处理器芯片的设计中 UART接口已成为标准配 置 通用异步收发器主要实现功能是接收外设传送的串行数据转换为并行数据同时校验该 数据 然后将并行数据提供给处理器处理 或者将处理器发送来的并行数据转换成串行 数据同时根据串行通信协议附加上起始位 奇偶校验位以及停止位 然后从串行数据输 出端发送出去 2 3 用UART来实现传输数据的串 并转换或者并 串转换 目前大部分处理器芯片中都集成 了UART功能 但是在FPGA芯片中一般没有集成UART 这增加了FPGA芯片与其它处理器间 数据交换的复杂性 为提高FPGA设计的灵活性 我们可以用硬件描述语言编写一个具有 UART功能的模块 然后把这个模块配置到FPGA芯片中 由于FPGA的功能日益强大 开发 周期短 现场可编程等一系列优点也越来越明显 将需要的UART功能集成到FPGA内部 利用VHDL语言将UART的核心功能集成 去掉一些不必要的管脚 这样既可简化电路又能 提高系统可靠性以及稳定性并可以方便地对芯片进行升级或内嵌到各种不同的FPGA芯片 中 方便快捷 使整个设计更加紧凑 稳定 可靠 因此利用FPGA自身的优点来设计设 备间串行通信接口 具有较高的实用价值和重大意义 4 1 21 2 课题研究的现状及相关技术的课题研究的现状及相关技术的介绍介绍 1 2 1 UART 芯片的性能指标 自第一个大规模集成电路芯片发明以后 在上世纪70年代UART就得到了广泛的应用 经过几十年的发展 UART芯片的管脚名称 管脚功能以及整体的操作模式几乎没有太大 的改变 现在的一些基于CMOS工艺的UART芯片诸如NSl6650的原型可以追溯到早期的一些 经典接口器件像Intel8250 5 这些年来因一些高速Modem以及一些软件 例如Laplink 要 求更高速的数据传输速率 UART内部的基本构架已经得到了扩展 常熟理工学院毕业设计 论文 2 衡量UART的性能指标主要有 主机接口性能 数据缓冲寄存器的深度 波特率等等 在主机接口方面 被称为VLIO 可变延迟I O 的新型接口现在得到了采用 此外新一代 1 8V UART设计成可以与总线无缝连接 现代工艺的进一步发展推动了新一代具有灵活性 主机接口的高性能UART的出现 这些UART工作在低电压低功耗下 能够提供较高的数据 传输速率来满足蓝牙EDR等新连接标准的要求 UART传输数据所需的CPU开销直接受UART 内部的FIFO深度影响 FIFO的深度越深 每次中断时就可以传输更多数据 这大大提高 了数据的吞吐量 6 从而减少CPU的开销 提高了系统的运行效率 因此对UART性能方面 的提高主要是对数据缓冲寄存器方面进一步的优化 接下来UART芯片的发展将会以智能 化通信协调处理器的形式出现 这类设备已经在一些PC机的插件上应用了 4 1 2 2 FPGA 的发展历程和结构介绍 当今社会是数字化的社会 是数字集成电路广泛应用的社会 数字集成电路本身在不 断地进行更新换代 随着微电子设计技术与工艺的发展 数字集成电路从电子管 晶体 管 中小规模集成电路 超大规模集成电路 VLSIC 逐步发展到专用集成电路 ASIC 但 是ASIC因其设计周期长 不可移植性 灵活性差等缺陷制约着它的应用范围 现场可编 程逻辑器件的出现使ASIC的设计周期大大缩短 在设计初期就能设计出合适的ASIC芯片 并且立即投入实际应用之中 其中应用最广泛的当属现场可编程门阵列FPGA Field Programmable Gate Array 和复杂可编程逻辑器件CPLD Complex Programmable Logic Device FPGA与CPLD都是可编程逻辑器件 它们是在PAL 可编程阵列逻辑 以及随后出现的 PLA 可编程逻辑阵列 等逻辑器件的基础上发展起来的 PAL PLA的区别就是与门和或门 的结构不同 到了80年代初期在PLD的输出端口附加上了新的输出逻辑宏单元 这时候就 发展成为GAL 通用阵列逻辑 随后出现的一些尖端的技术把GAL器件都集成到了一个硅 片上 就得到了CPLD 复杂可编程逻辑器件 一直到了上世纪80年代中期 出现了 FPGA 现场可编程门阵列 器件 7 FPGA与传统的那些可编程逻辑器件相比 8 它最大的 优点就是设计灵活 可移植性以及可以对外接或内置的RAM或EPROM反复无限次得编程 可以实时地改变器件内部的逻辑功能 实现现场可编程 这种芯片受到世界范围内电子 工程设计人员的广泛关注和普遍欢迎 FPGA器件从结构上而言 其核心部分是逻辑单元阵列LCA Logic Cell Array LCA是 由内部逻辑块矩阵及周围的输入 输出模块IOB Input Output Block 组成 而其内部连 线 可编程内部互连资源PI Programmable Interconnection 则占据逻辑块的行列之 常熟理工学院毕业设计 论文 3 间 以及逻辑块与FO块之间的通道 LCA的可编程逻辑块CLB Configurable Logic Block 和 IOB的功能及其互连 是由存储器中的配置程序来控制的 1 可编程逻辑块CLB FPGA器件的主体部分是由很多可编程逻辑块CLB构成的矩阵 每个CLB含有可编程的组 合逻辑和寄存器 寄存器可由组合逻辑或直接由CLB的输出装入信息 寄存器的输出也可 以直接驱动组合逻辑 一个CLB包括4个Slices 每个Slices包括两个查找表LUT 两个触 发器和相关逻辑 查找表本质上就是一个RAM 目前FPGA中多使用4输入的LUT 所以每一个LUT可以看成 一个有4位地址线的16X1的RAM 当用户通过原理图或HDL描述了一个逻辑电路以后 CPLD FPGA开发软件会自动计算逻辑电路的所有可能的结果 并把结果事先写入RAM 这 样 每输入一个信号进行逻辑运算就等于输入一个地址进行查表 找出与地址对应的内 容 然后输出即可 2 输入输出块I 0 输入输出I 0含有一个可编程输入通道和一个可编程输出通道 可编程输入通道由驱 动器 触发器及程序控制多路开关组成 它可以通过程序控制选择直接输入或通过寄存 器输入 可编程输出通道由多路开光和输出缓冲器组成 它可以通过程序控制选择三态 输出 常开或常闭三种状态 3 RAM块 中小规模的存储模块可以简化系统的设计 提高系统的工作速度 而且可以减少数据 存储的成本 使芯片内外数据信息的交换更可靠 4 可编程互连资源PI 可编程互连资源包括各种长度的金属连线段和一些可编程连接开关 它们将各个CLB 之间或CLB与IOB之间互相连接起来 构成各种复杂功能的系统 14 1 2 3 FPGA 的设计方法及软件平台 传统的数字逻辑设计手段是采用原理图输入的方式进行的 当时所做的复杂数字逻辑 电路及系统的设计规模比较小相对而言也比较简单 其中用到的FPGA或ASIC设计工作往 往只能采用厂家提供的专用电路图输入工具来进行 为了满足设计性能指标 工程师往 往需要花费很长时间进行手工布线并且还得非常熟悉所选器件的内部结构和外部引线特 点 才能达到设计要求 这种低效率的设计方法大大延长了设计周期 设计往往是从功 能描述开始的 设计人员首先要考虑规划出能完成某一具体功能 满足产品系统设计要 常熟理工学院毕业设计 论文 4 求地某一功能模块 利用某种方式把功能描述出来 通过功能仿真以验证设计思路地正 确性 当所设计功能满足需要时 再考虑以何种方式完成所需要的设计 并能直接使用 功能定义地描述 这就是自顶而下的设计方法 简单分为功能定义 设计输入 功能仿 真 逻辑综合 综合后仿真 布局布线 布局布线后仿真 下载验证等8个步骤 9 本课题 逻辑设计使用的软件为Altera公司的Quartus II Quartus II的主要特点 Quartus II是一个集成环境 可以完成整个FPGA开发过程 Quartus II集成了很多著名 的FPGA设计工具 根据设计流程合理应用这些工具 会使工程师的设计工作如鱼得水 Quartus II界面风格简洁流畅 易学易用 Quartus II的界面秉承了可视化编程技术 界面根据设计流程而组织 整个设计过程只需按照界面组织结构依次点击相应的按钮或 相应的选项即可 强大的设计辅助功能 Quartus II秉承了Altera设计软件的强大辅助功能 在编写代 码时可以使用编写向导生成文件头和模块框架 也可以使用语言模板帮助编写代码 在 图形输入时可以使用辅助项帮助设计原理图 另外 Quartus II可以方便地生成IP Core IP核 与高效模块为用户所用 大大减少了设计者的工作量 提高了设计效率和质 量 Quartus II的集成工具主要分为设计输入工具 综合工具 仿真工具 实现工具和 辅助设计工具等5类 HDL Editor可以完成设计电路的HDL语言的输入 能根据语法来彩 色显示关键字 自带仿真器做仿真 特点是仿真速度快 仿真精度高 综合能力强 1 2 4 VHDL 语言简介 随着电子技术的发展 集成电路的规模越来越大 复杂程度也越来越高 对于如此 大规模的和复杂程度的电路设计问题 传统的门级描述方法显得过于琐碎和难以管理 而 VHDL 语言具有强大的功能 覆盖面广 描述能力强 可用于从门级 电路级直至系统 级的描述 仿真和综合 下面简要介绍了 VHDL 语言 VHDL 的英文全名是 Very High Speed Integrated Circuit Hardware DescriptiON Language 诞生于 1982 年 1987 年底 VHDL 被 IEEE 和美国国防部确认为标准硬件描述 语言 自 IEEE 公布了 VHDL 的标准版本 IEEE 1076 简称 87 版 之后 各 EDA 公司相 继推出了自己的 VHDL 设计环境 或宣布自己的设计工具可以和 VHDL 接口 此后 VHDL 在 电子设计领域得到了广泛的接受 并逐步取代了原有的非标准的硬件描述语言 1993 年 IEEE 对 VHDL 进行了修订 从更高的抽象层次和系统描述能力上扩展 VHDL 的内容 公布 了新版本的 VHDL 即 IEEE 标准的 1076 1993 版本 简称 93 版 现在 VHDL 和 Verilog 作为 IEEE 的工业标准硬件描述语言 又得到众多 EDA 公司的支持 在电子工程领域 已 常熟理工学院毕业设计 论文 5 成为事实上的通用硬件描述语言 有专家认为 在新的世纪中 VHDL 与 Verilog 语言将 承担起大部分的数字系统设计任务 VHDL 主要用于描述数字系统的结构 行为 功能和 接口 除了含有许多具有硬件特征的语句外 VHDL 的语言形式和描述风格与句法是十分 类似于一般的计算机高级语言 VHDL 的程序结构特点是将一项工程设计 或称设计实 体 可以是一个元件 一个电路模块或一个系统 分成外部 或称可视部分 及端口 和内部 或称不可视部分 即设计实体的内部功能和算法完成部分 在对一个设计实体 定义了外部界面后 一旦其内部开发完成后 其它的设计就可以直接调用这个实体 这 种将设计实体分成内外部分的概念是 VHDL 系统设计的基本点 概括的说 VHDL 具有以下主要优点 VHDL 支持层次化设计 可以在 VHDL 的环境下 完成从简练的设计原始描述 经过层 层细化求精 最终获得可直接付诸生产的电路级或版图参数描述的全过程 VHDL 有良好的可读性 它可以被计算机接受 也容易被读者理解 用 VHDL 书写的源 文件 既是程序又是文档 既是技术人员直接交换信息的文件 又可作为合同签约者之 间的文件 VHDL 有良好的可移植性 作为一种已被 IEEE 承认的工业标准 VHDL 事实上已成为 通用的硬件描述语言 可以在不同的设计环境和系统平台中使用 使用 VHDL 可以延长设计的生命周期 因为 VHDL 的硬件描述与工艺技术无关 不会 因为工艺变化而使描述过时 与工艺技术有关的参数可通过 VHDL 提供的属性加以描述 工艺改变时 只需要修改相应程序中的属性参数即可 VHDL 支持对大规模设计的分解和已有设计的再利用 VHDL 可以描述复杂的电路系统 支持对大规模设计进行分解 由多人 多项目组来共同承担和完成 标准化的规则和风 格 为设计的再利用提供了有力的支持 1 31 3 本文的研究内容本文的研究内容 本课题的内容就是要用VHDL语言在FPGA上实现一个通用异步收发器 首先根据通用异 步收发器的具体性能与要求将UART分为几个模块的组合 采用Top Down的层次化设计方 法和硬件描述语言 VHDL 来编写内部的逻辑功能模块 然后运用Quartus II的综合工具 以及Quartus II的仿真工具中对其进行综合优化以及仿真验证 最后下载到实物开发板 上进行调试 主要的研究内容有如下几点 第一步 熟悉FPGA的设计开发流程以及通用异步收发器 UART 的各个子模块的功能 常熟理工学院毕业设计 论文 6 掌握各个模块之间的联系与工作流程 熟悉UART通信协议 RS 232协议 第二步 用VHDL语言编写通用异步收发器内部的各个子模块以及顶层模块的程序代码 第三步 在Quartus II集成的软件开发环境中对其进行逻辑综合 仿真验证 布局布 线 以及最后的硬件实现 1 41 4 本文的结构本文的结构 第一章主要指出本课题的提出背景以及研究意义 以及与本研究该课题相关的技术及 开发环境 第二章着重介绍了通用异步收发器的理论内容 包括UART通信时各模块的工作特性及 串行通信协议 第三章主要对UART的结构设计 包括系统设计以及各个模块的设计过程进行了分析 第四章主要是对设计完成后的UART进行逻辑综合 功能模拟及时序仿真 同时分析逻 辑综合和仿真结果 最后下载到FPGA实验板中进行实物验证 第五章是结束语 主要分析本课题所取得的研究成果以及有待改进的不足之处 1 51 5 小节小节 本章首先介绍了此课题的研究背景和研究意义 然后阐述了与该课题相关的内容 UART 芯片研究状况 FPGA 特点 VHDL 语言 最后分析了该课题的研究方法和研究内容 常熟理工学院毕业设计 论文 7 第二章 UART 理论基础 UART 是通用异步收发器的英文缩写 它包括了 RS232 RS499 RS423 RS422 和 RS485 等接口标准规范和总线标准规范 即 UART 是异步串行通信口的总称 而 RS232 RS499 RS423 RS422 和 RS485 等 是对应各种异步串行通信口的接口标准和总 线标准 它规定了通信口的电气特性 传输速率 连接特性和接口的机械特性等内容 UART 是异步串行通信方式 通信的发送方和接收方各自有独立的时钟 传输的速率由双 方约定 串行通信分为两种类型 同步通信方式和异步通行方式 UART 是一种串行异步通信 方式 它是各种设备之间进行通信的关键模块 允许在串行链路上进行全双工的通信 在发送端 并行的数字信号需要转化成串行信号才能通过有线或无线传输到另外一台设 备 而在接收端 串行信号必须要被恢复成并行信号才能进行数据处理 UART 就是用来 处理这种数据与串口之间的串并和并串转换的 本章首先介绍 UART 的基本结构 然后阐述一些有关串行通信的知识 在串行通信基 础知识介绍中对同步通信也作了简要介绍 2 12 1 UARTUART 原理原理 通用异步接收 发送器UART用于将并行数据转换成串行形式 串行输入时 又将串行 形式转换成并行形式 图2 1显示UART基本结构 它的组成包括 10 图2 1 UART基本结构 1 UART内核 常熟理工学院毕业设计 论文 8 内核模块是UART设计的核心部分 内部为控制逻辑 它接收来自微处理器或上层部件 的控制信号 执行其所要求的操作 并输出状态信息和控制信号 在数据接收时 UART 内核模块负责控制波特率发生器和移位寄存器 控制移位寄存器在波特率时钟的驱动下 同步接收同时保存RS 232接收端口上的串行数据 在数据发送时 UART内核模块首先根 据待发送数据 奇偶校验位和停止位的设置产生完整的发送序列 包括起始位 数据位 奇偶校验位和停止位 之后控制移位寄存器将发送序列加载到移位寄存器的内部寄存器 里 最后控制波特率发生器驱动移位寄存器将数据串行输出 2 信号监测器 对串行输入端 RXD 的输入信号进行实时监测 一旦发现新的数据信号监测器立即发 送信号通知UART内核 3 移位寄存器 移位寄存器用来存储输入或者输出的数据 发送时 微处理器将待发数据送入发送数 据寄存器 然后对待发数据格式化 包括起始位 奇偶校验位和停止位 将格式化后的 数据送到发送移位寄存器 然后按先前规定的波特率串行输出 接收时 串行输入设备 通过UART的串行输入端口发送串行数据到UART的接收器 一旦串行输入端口电位由高电 平变到低电平 接收器就认为接收到起始位 并把后续的数据位依次移入接收移位寄存 器 当接收一个完整数据后 就送往内核的接收移位寄存器 并通知微处理器或上层部 件读取接收到的数据 4 波特率发生器 UART的发送和接收是按照相同的波特率进行收发的 波特率发生器产生的时钟频率是 根据给定的的波特率算出的 5 奇偶校验器 为了使传送数据过程更可靠 在UART中设置了错误标志 奇偶错误 在接收时 奇 偶校验器检查接收到的每一个字符码中 l 的个数 若不符合要求 则发出奇偶校验出 错信息 发送时则根据待发送数据计算出奇偶校验标志 由内核加载到发送数据中 6 总线选择器 总线选择模块选择奇偶校验器的输入是数据接收总线还是数据发送总线 7 计数器 计数器模块的功能是在可控的输入时钟驱动下进行计数 当达到计数上阈时给UART内 核一个提示信号 常熟理工学院毕业设计 论文 9 2 22 2 串行通信基础知识串行通信基础知识 串行通信传送的一组组的字符信息通常称为信息帧 为了正确得到发送和接收这些数 据帧 就要求数据通信中实现同步通信 同步就是通信双方协调发送和接收之间的动作 通信双方必须对数据传输方式 同步控制方式 差错处理 应答方式和数据格式等问题 做出一组规定并共同遵守来实现同步 这种规定即为通信协议 串行通信分为异步通信 和同步通信两种 相应的串行通信协议中则分有异步通信协议和同步通信协议 2 2 1 串行通信工作方式 串行通信是把传输的数据一位一位地顺序传送的一种通信方式 在传送一个字节数据 时 每次将数据依次发送至单根传输线上 或者反过来 从单根传输线上依次地接收数 据 然后组合成一个字节数据 因其需要的数据线少 传送距离长 可靠性高而广泛用 于外设与计算机之间的通信 如终端 打印机 磁盘等 但由于传送数据格式繁琐 速 度慢 效率低 实时性差 而无法应用于高速实时数据通信 串行通信的有如下三种 11 1 单工方式 单工方式只允许数据按一个固定的方向传送 采用这种方式时 就已经确定了通信方 式中的一方为接收端 并且这种方式是不可改变的 2 半双工方式 这种方式下的通信双方A和B都具有接收和发送能力 但通信线只有一条 因此在特定 的时刻双方只能有一个发送而另一个接收或一方接收 另一方发送 决不允许A和B同时 接收或同时发送 3 双工方式 全双工具有两条独立的通信线 一条专门用作发送 另一条为接收 这就克服了单工 或半双工带来的A和B双方不能同时既发送又接收的缺点 因此 为保证实现全双工通信 任务 A和B双方的串行接口必须具备一套完全独立的发送器和接收器 2 2 2 串行异步通信 串行异步通信是计算机通信中最常用的数据信息传输方式 接收和发送双方不使用共 同的参考时钟 但要求发送的每一位数据都必须经过事前格式化 发送时以字符为单位 在其前后分别加 起始位 和 停止位 用以指示每一数据的开始和结束来进行传输 字符之间没有固定的时间间隔要求 而每个字符中的各位则以固定的时间传送 由于要 给每一位数据位加起始位 停止位 故传送效率不及同步通信高 但对接收与发送时钟 常熟理工学院毕业设计 论文 10 的同步要求降低了 1 串行异步通信的数据格式 收发双方取得同步的方法是在字符格式中设置起始位和停止位 在一个有效字符正式 发送前 发送器先发送一个起始位 然后发送有效字符位 在字符结束时再发送一个停 止位 起始位到停止位构成一帧 故这种通信方式又称为起止式异步通信方式 在一帧 信息传送之前 传输线逻辑上处于1状态 在传送字符信息的时候 先发送起始位逻辑 O 紧随其后发送5到8位的数据信息位 从低位到高位顺序排列 就是说先传低位后传高 位 在字符的最高位之后是一个可选择的奇偶校验位 可以选择奇校验 偶校验或无校 验 在奇偶校验位之后是标志着一帧字符结束的停止位 这位必须是逻辑1 位数可以选 择1位 1 5位或者2位 在传送数据的时候 数据帧与帧之间如果有间隙的话 就在停止 位之后附加空闲位 用逻辑l来表示 当没有空闲位的时候 传送数据的效率是最高的 异步串行通信的数据格式如图2 2所示 12 图2 2串行异步通信的数据帧格式 2 发送和接收时钟 在UART通信协议中 发送模块和接收模块不使用共同的时钟信号 所以称作异步发送 和接收器 也就是在串行通信时发送 接受数据的两个UART接口不会共用一个时钟信号 13 两者的时钟频率在一定的误差范围内近似相等 为提高定位采样的分辨能力和抗干扰能 力接收器采用比波特率更高频率的时钟进行采样 这个频率的倍数即为波特率因子 一 般取16 32和64 3 起 止位 起 止位作为联络信号 用于异步通信双方的同步 当起始位出现时 信号电平由高变 低 告诉接收方新的一帧已经到达 后面接着是数据位 起始位用来表示一个数据帧传 送的开始 停止位表示一个数据帧传送的结束 这就为通信双方提供了何时开始收发 何时结束的标志 有了起 止位 传输数据时收发双方对时钟同步的要求就不需太高 发 送器和接收器可以使用不同的时钟 即使收发双方的时钟频率存在一定的偏差 但字符 间的停止位和空闲位为此提供了缓冲 这样就不会因连续误差的累积导致错位 保证了 常熟理工学院毕业设计 论文 11 数据传输的可靠进行 4 奇偶校验 奇偶校验是最简单也最常用的校验方法 它的基本原理是在传输的有效数据中附加一 个检验位 利用这个校验位 使得数据信息位 包括有效数据位和检验位 中1的个数为偶 数或者奇数 如果整个信息位1的个数为偶数的话称为偶检验 为奇数的话则称为为奇检 验 在接收端用专门的电路来检查1的个数与事先的规定是否符合 若奇偶性发生了变化 则说明传输出现了错误 这种方法只能检查传输数据帧的一位错误 两位数据位以上的 错误就无法检查出来 由于传输过程中最容易产生一位数据位的错误 加上奇偶校验的 实现方法最简单 所以实际应用也最广泛 2 2 3 串行同步通信 同步通信的基本特征是发送与接收时钟始终保持严格的同步 传送的信息流中每个二 进制位都需要时钟同步 要让接收设备能正确接收发送的数据位 就要进行同步 在串行同步通信中 接收双方的同步方法可以分为内同步和外同步 内同步法就是接 收端从接收到的数据信息波形本身提取同步的方法 而外同步法是在发送数据之前向接 收器发送一串时钟脉冲 接收端按这个时钟频率调整自己的时序 使接收时钟频率锁定 在接收到的时钟频率上 并作为同步时钟来接收数据 2 32 3 小节小节 本章着重介绍了 UART 的理论基础包括 UART 芯片的基本结构并对每块作了详细介绍 串行通信基础知识如串行通信工作方式 串行异步通信和串行同步通信 本章是理解下 章的理论前提 常熟理工学院毕业设计 论文 12 第三章 UART 的设计实现 UART Universal Asynchronous Receiver Transmitter 是计算机串行通信系统中广 泛使用的接口 发送端将计算机处理完的数据进行并串转换送给外围设备 接收端将外 设传送来的数据进行串并转换送给计算机处理 下面就如何设计UART模块进行重点分析 3 13 1 UARTUART 的设计分析的设计分析 3 1 1 UART 设计概述 UART通用异步收发器 是微机系统与外界串行设备进行数据通信的芯片 作为RS 232C数据终端设备接口 UART主要提供以下主要功能 将微机系统内部传送来的并行数据转换为串行数据流输出 将微机系统外设发送来的 串行数据转换为并行数据 供微机系统内部器件处理 在输出串行数据流中加入奇偶校 验位 启停标记 并对从外部接收的数据流进行奇偶校验 删除启停标记 本论文所设计的UART具有通用UART的基本功能 同时支持通用的异步串行通信协议 其基本功能如下 具有可编程串行接口特性 如字符数据位数 奇偶校验模式 通信速率 具有全双工的数据发送器 接收器 能够对线路状态以及错误开始位的检测 支持标准RS 232接口 接收通道发生奇偶校验 最大传输速率为系统时钟1 16 本UART使用16次采样 即在每一个采样时钟脉冲的上升沿采样接收数据线 将第8个 脉冲采样到的数据送至接收模块的移位寄存器 计到第16个脉冲的时候代表一位数据位 接收完毕 脉冲计数值清零 开始下一位数据位的采样 发送时 采样时钟每计数到16 次 输出一比特数据 同时计数值清零 开始下一位数据的传送 3 1 2 UART 设计整体结构 在了解 UART 的相关知识并结合 FPGA 的设计特点后 依据 FPGA 的 TOP DOWN 设计方 法将 UART 的 FPGA 设计分为 4 个子模块设计 顶层模块设计 波特率发生模块设计 接 收模块设计 发送模块设计 常熟理工学院毕业设计 论文 13 3 23 2 UARTUART 模块模块设计设计 3 2 1 顶层模块设计 异步收发器的顶层模块由波特率发生器 UART 接收器和 UART 发送器构成 UART 发 送器的用途是将准备输出的并行数据按照基本 UART 帧格式转为 TXD 信号串行输出 UART 接收器接收 RXD 串行信号 并将其转化为并行数据 波特率发生器就是专门产生一个远 高于波特率的本地时钟信号对输入 RXD 不断采样 使接收器与发送器保持同步 将波特 率发生器 发送器和接收器简单的组装起来 就能较容易地实现通用异步收发器总模块 顶层模块 RTL 级图和顶层模块接口信号分别如图 3 1 图 3 2 所示 图 3 1 顶层模块的 RTL 图 图 3 2 顶层模块接口信号 3 2 2 波特率发生模块设计 波特率是单位时间内传送的二进制数据的位数 以位 秒 b s 表示 也称为数据位 率 收 发时钟频率与波特率之间关系 收 发时钟频率 N 波特率 N 可以取 8 16 32 和 64 等 为了兼顾速度和稳定性一般取为 16 N 在硬件设计时 已经设定好 软件不能改变 波特率发生器由两个 8 位的数据寄存器组合成 16 位的分频 寄存器 可以实现系统频率的 1 2 16 分频 达到预定的波特率设置 波特率发生器的功能是产生和 RS 232 通信所采用的波特率同步的时钟 实现波特率 时钟的基本思路就是设计一个计数器 该计数器工作在速度很高的系统时钟下 当计数到 某数值时将输出置为高电平 再计数一定数值后将输出置为低电平 如此反复就能得到所 需的波特率时钟 由于内部采样时钟 bclk 周期 由波特率发生器产生 是发送或接收波特 常熟理工学院毕业设计 论文 14 率时钟频率的 16 倍 例如 FPGA 的系统时钟为 40MHz 通信波特率为 9600bps 则波特率时 钟的每个周期约相当于 260 个系统时钟的周期 假如要得到占空比为 50 的波特率时钟 只要使计数器在计数到 260 50 130 时将输出置为高电 平 之后在计数到 260 时输出低电平并重新计数 就能得到 和 9600 波特率同步的时钟 波特率发生器接口信号如图 3 3 所示 3 2 3 接收模块设计 接收模块是发送模块功能的逆序执行 它接收来自外部的串行数据 根据配置去除 数据的起始位 停止位和奇偶校验位 若出现数据的奇偶校验有差错则立即产生错误信 息 如果没有错误 则将剩余的 8 位有用数据送入 RBR Receive Buffer Register 接收 缓冲寄存器 再由 RBR 送给 CPU 串行数据帧和接收时钟是异步的 发送来的数据由逻辑 1 变为逻辑 0 可以视为一个 数据帧的开始 接收器先要捕捉起始位 确定 RXD REC 输入由 1 到 0 逻辑 0 要 8 个 bclk 时钟周期 才是正常的起始位 然后在每隔 16 个 bclk 时钟周期采样接收数据 移 位输入接收移位寄存器 rec buf 最后输出数据 还要输出一个数据接收标志信号 rec ok 标志数据接收完 UART 接收器接口信号如图 3 4 所示 图 3 4 接收模块接口信号 由于串行数据帧和接收时钟是异步的 由逻辑 1 转为逻辑 0 可以被视为一个数据帧 的起始位 然而 为了避免信号干扰 得到正确的起始位信号 必须要求接收到的起始 位在波特率时钟采样的过程中至少有一半都是属于逻辑 0 才可认定接收到的是起始位 由于内部采样时钟 bclk 周期 由波特率发生器产生 是发送或接收波特率时钟频率的 16 倍 所以起始位需要至少 8 个连续 bclk 周期的逻辑 0 被接收到 才认为起始位接收到 接着数据位和奇偶校验位将每隔 16 个 bclk 周期被采样一次 即每一个波特率时钟被采样 一次 如果起始位的确是 16 个 bclk 周期长 那么接下来的数据将在每个位的中点处被 采样 UART 接收器的状态机一共有 5 个状态 图 3 3 波特率模块接口信号 常熟理工学院毕业设计 论文 15 1 等待起始位状态 REC START 当 UART 接收器复位后 接收状态机将处于这一状态下 此时 接受状态机一直在等 待 RXD 的电平从逻辑 1 变为逻辑 0 的跳转 一旦确定了产生电平跳变 状态机将转入 REC CENTER 状态 在 REC CENTER 状态中检测是否为起始位 确定即意味着新的一 UART 数据帧的开始 RXD SYNC 信号是 RXD 的同步信号 因为在进行逻辑 1 或逻辑 0 判断时 不希望检测的信号是不稳定的 所以不直接检测 RXD 信号 而是检测经过同步后的 RXD SYNC 信号 2 确定起始位并求中点状态 REC CENTER 对于异步串行信号 为了使每次都能正确检测数据位信号 且在后面的数据位检测 时累计误差较小 显然在每位的中点检测是最为理想的 本状态就是通过对 bclk 的个数 进行计数 REC CNT16 由起始位求出每位的中点 但计数值要考虑得当 正确选择 要考 虑经过一个状态 也即经过了一个 bclk 周期 所希望得到的是在采样时 1 2 位 8 个 bclk 周期 另外 在 REC START 状态检测到的起始位可能不是真正的起始位 可能是一 个偶然出现的干扰尖脉冲 负脉冲 但这种干扰脉冲的周期是很短的 所以可以认为检 测到的逻辑 0 保持时间超过 1 2 个位时间 8 个 bclk 周期 的信号一定是起始位 3 等待采样状态 REC WAIT 当状态机处于这一状态 等待计满 15 个 bclk 在第 16 个 bclk 是进入 REC SAMPLE 状态进行数据位的采样检测 同时也判断数据位长度是否已达到数据帧的长度 FrameLen 如果计数已满 就说明停止位来临了 FrameLeng 是可更改的 使用了 Generic 在本设 计中默认为 8 即对应的 UART 工作在 8 位数据位 奇偶校验任选 4 采样数据状态 REC SAMPLE 即数据位采样检测 同时对已接受的数据求奇偶校验 完成后无条件状态机转入 REC WAIT 状态 等待下次数据位的到来 5 停止位和奇偶校验接收状态 REC STOP 无论停止位是 1 位还是 1 5 位 或是 2 位 状态机在 REC STOP 不具体检测 RXD 在 无奇偶校验时只是输出帧接收完毕信号 rec ok 1 停止位后状态机转回到 REC START 状态 等待下一个帧的起始位 在有奇偶校验时判断接收到的校验位与求出的 校验值是否相同 若相同则表明接受的数据正确 rec ok 出 1 error 输出 0 不 相同表明接受的数据有错误 rec ok 输出 0 error 输出 1 状态转移如图 3 4 所 示 状态机部分实现代码见附录 接收模块状态机部分代码 常熟理工学院毕业设计 论文 16 上述状态定义如下 type states is rec start rec center rec wait rec sample rec stop 定义各子状态 signal state states rec start 图 3 4 接收模块状态机 3 2 4 发送模块设计 发送模块的核心是状态机 它可以读入来自 THR Transmit Hold Register 发送保持 寄存器的数据 并根据配置寄存器里面的信息加入起始位 1 1 5 或 2 位停止位和奇偶 校验位 然后把打包的数据通过移位寄存器把数据以标准的串口协议发送给串口接收设 备 数据的发送是由微处理器控制 微处理器给出 tansfer cmd 信号 发送器根据此信 号将并行数据 txdbuf framleng 1 0 通过移位操作发送串行数据至串行数据输出端 txd 在数据发送过程中用输出信号 send over 作为标志信号 当数据移位串行发送完毕 时 send over 信号为 1 通知 CPU 在下个时钟装入新数据 UART 发送器的接口信号如 图 3 5 所示 图 3 5 发送模块器的接口信号 发送器只要每隔 l6 个 bclk 周期输出 1 个数据即可 次序遵循第 1 位是起始位 第 8 位是停止位 在本设计中可选择是否产生校验位 改变 Generic 参数 FrameLent 可以 改变数据长度 停止位是固定的 1 位格式 在发送时已计算出此数据的奇偶校验值 发送状态机一共有 5 个状态如图 3 6 所示 常熟理工学院毕业设计 论文 17 1 空闲状态 TRA IDLE 当 UART 被复位后 状态机将立刻进入这一状态 UART 的发送器一直在等待数据帧发 送命令 TRANSFER CMD TRA CMD 信号是对 TRANSFER CMD 的处理 TRA CMD 是一个短脉冲 信号 当 TRA CMD 1 状态机转入 TRA START 准备发送起始位 2 发送起始位状态 TRA START 在这个状态下 UART 的发送器发送一个 bclk 周期时间宽度的逻辑 0 信号至 TXD 紧 接着状态机转入 TRA WAIT 状态 TRA CNT 是 bclk 的计数器 3 等待移位状态 TRA WAIT 当状态机处于这一状态 先等待计满 15 个 bclk 完成一个完整的起始位发送 在第 16 个 bclk 是进入 TRA SHIFT 状态进行数据移位发送 同时也判断数据位长度是否已达到 数据帧的长度 FrameLeng 如果计数已满 就说明数据发送完毕 进入 TRA STOP 状态 4 移位状态 TRA SHIFT 当状态机处于这一状态时 实现待发数据的并串转换并发送 TRA WAIT 转换完成立 即回到 TRA WAIT 状态 5 校验 停止位状态 TRA STOP 当数据帧发送完毕 状态机转入该状态 此状态下先判断是否要发送奇偶校验位 若需要则先发送校验位后发送停止位 不需要直接发送 16 个 bclk 周期的逻辑 1 信号 即 1 位停止位 状态机送完停止位后判断 TRANSFER CMD 信号 为 1 回到 TRA IDLE 状态 并等待另一个数据帧的发送命令 状态机部分实现代码见附录 发送模块状态及部分代 码 发送模块状态定义如下 type states is tra idle tra start tra wait tra shift tra stop
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生急救常识题库及答案
- 江苏物理电学题库及答案
- 2025年血站会计考试试题及答案
- 2025年护理文职考试试题及答案
- 购房交款时间合同(标准版)
- 幼教考试真实试卷及答案
- 胶原蛋白饮品行业跨境出海项目商业计划书
- 生产资料市场管理服务创新创业项目商业计划书
- 山西省朔州市怀仁大地高中学校2025-2026学年高一上学期第一次月考物理试卷A(含答案)
- 米面特色调料企业制定与实施新质生产力项目商业计划书
- 仓库安全培训课件
- 国开2025年《人文英语4》综合测试答案
- 算力:新质生产力的核心引擎
- 学生历史思维品质提升策略浅识
- DB32∕T 3812-2020 建筑同层排水工程技术规程
- 《创伤失血性休克中国急诊专家共识(2023)》解读 2
- 项目部领导带班记录
- 2025年中国心力衰竭诊断和治疗指南
- 2025年新修订《治安管理处罚法》
- 生产企业退货管理办法
- 高速公路工作人员安全教育培训
评论
0/150
提交评论