




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于VerilogHDL的通信系统设计 第3部分技巧和实验篇 第11章FPGA设计指导原则和代码规范 基于VerilogHDL的通信系统设计 在FPGA 设计过程中常常会遇到各种问题 对于各种问题的解决办法不可能完全相同 本章旨在总结一些常见的设计技巧 原则 希望能够帮助读者在实际的设计过程中找到解决问题的关键 一段好的代码并不是简单的实现程序功能即可 而一定是清晰 规范 可读性很强的 在代码编译综合的时候经常会遇到一些问题而又找不到解决办法 所以本章的后半部分内容旨在培养好的代码编写习惯 总之本章内容的指导性作用很强 基于VerilogHDL的通信系统设计 11 1FPGA设计指导原则 11 1 1深入理解阻塞赋值和非阻塞赋值 阻塞与非阻塞赋值是VerilogHDL语言的难点之一 在使用中容易出错 因此在程序的设计中 必须对阻塞赋值和非阻塞有深入的理解 在前文提过如下两条原则 在描述组合逻辑的 always 块中用阻塞赋值 综合后成为组合逻辑电路 在描述时序逻辑的 always 块中用非阻塞赋值 综合后成为时序逻辑电路 基于VerilogHDL的通信系统设计 11 1 2组合逻辑设计注意事项 几乎所有的编码指导手册都有关于信号敏感表的描述 时序逻辑的信号敏感表比较好写 只要在信号敏感表中写明时钟信号的正负触发沿即可 信号敏感表的主要问题集中在组合逻辑信号敏感表的写法上 同步时序设计要尽量慎用 Latch 需要注意的是 如果综合出与设计意图不一致的锁存器 Latch 则将导致仿真和设计错误 对于一定要使用 Latch 的特定设计 设计者必须明确该 Latch 是否为有意设计的 综合出与设计意图不吻合的 Latch 结构的主要原因在于 在设计组合逻辑时使用不完全的条件判断语句 如有 if 而没有 else 使用不完整的 case 语句 或者设计中有组合逻辑的回馈环路等异步逻辑 相对复杂一些的设计都是由两部分组成 时序逻辑和组合逻辑 同步时序逻辑设计系统中并不是不包含组合逻辑 而是要更加合理地设计和划分组合逻辑 下面介绍其中的一些主要问题 基于VerilogHDL的通信系统设计 11 1 3时序逻辑设计注意事项 时钟是同步设计的基础 在同步设计中 所有操作都是基于时钟沿触发的 所以时钟的设计对于同步时序电路来说非常重要 在ASIC设计中 常会用到各种各样的组合逻辑所产生的时钟 但是如果将这些设计直接移植到同步时序电路中 则将带来各种各样的问题 下面将进行介绍 如果需要使用内部逻辑产生时钟 则必须要在组合逻辑产生的时钟后插入寄存器 如果直接使用组合逻辑产生的信号作为时钟信号或者异步置位 复位信号 则将使设计不稳定 基于VerilogHDL的通信系统设计 11 1 4可综合状态机的指导原则 用Verilog语言描述有限状态机可使用多种风格 不同的风格会极大地影响电路性能 通常有三种描述方式 单 always 块 双 always 块和三 always 块 在硬件描述语言中 如果要最终实现硬件设计 必须写出可以综合的程序 综合的一般原则为 综合前必须进行仿真 布线后都要进行仿真 用VerilogHDL描述的异步状态机是不能综合的 状态机应有一个异步或同步复位端 时序逻辑电路建模时 用非阻塞赋值 always 块中应该尽量避免组合反馈回路 基于VerilogHDL的通信系统设计 11 1 5面积与速度互换原则 在介绍面积和速度互换原则之前应该先要了解面积和速度的含义 面积 是指消耗的FPGA CPLD的逻辑资源的数量 一般通过消耗的触发器 FF 和查找表 LUT 来衡量 也可以通过所消耗的逻辑门的数量来衡量 速度 是指芯片正常运行状况下的最高运行速率 这个速率由设计的时序状态来衡量 面积 area 和速度 speed 贯穿设计的时钟 是大多数设计者首先要考虑的问题 基于VerilogHDL的通信系统设计 11 1 6同步设计原则 在数字电路中 以电路动作的方式区分 可以将其粗略区分为同步设计与异步设计 同步设计是指所有的电路动作的切换 是在某一个信号的上升沿或下降沿切换 而非在其它任意时刻切换 此信号即为时钟信号 严格地说 只要数字电路不属于同步设计 即归类于异步设计 同步设计的优点是分析容易 也几乎没有毛刺的困扰 所以在时序的分析 可靠度 可测试性上面临的问题 同步电路都要较异步电路简单 在异步电路中 如异步的FIFO RAM读写信号 地址译码等电路的核心逻辑都用组合逻辑电路实现 电路的主要信号 输出信号等不是由时钟信号驱动FIFO产生的 异步时序电路就是容易产生毛刺 基于VerilogHDL的通信系统设计 11 1 7乒乓操作 乒乓操作 是一个常常应用于数据流控制的处理技巧 典型的乒乓操作方法如图11 7所示 图11 7典型的乒乓操作示意图 基于VerilogHDL的通信系统设计 11 1 8串并转换 串并转换是FPGA设计的一个重要技巧 从小的着眼点讲 它是数据流处理的常用手段 从大的着眼点讲它是面积与速度呼唤思想的直接体现 根据资料的排序和数量的要求 串并转换的实现方法可选用寄存器 RAM等来实现 对于数量比较小的设计可以采用寄存器来完成串并转换 11 1 9流水线操作 流水线设计的结构示意图如图11 9所示 其基本结构为 将适当划分的n个操作步骤单流向串联起来 图11 9流水线设计示意图 基于VerilogHDL的通信系统设计 11 1 10 Testbench 的编写方法 一般来说 完成设计的硬件都有一个顶层模块 此模块定义了所设计硬件的所有对外接口 并示例化各底层模块 将其进行正确的连接 以实现层次式的硬件模块结构开发 要对所涉及的硬件进行功能验证 就是要对其顶层模块的各个对外接口提供符合设计规范要求的测试激励 并观察其输出和中间结构是否符合设计规范的要求 在具体功能验证实现中 一般都是提供一个 Testbench 即测试平台 此 Testbench 模块负责示例化所设计硬件的顶层模块 并负责对待测试的模块提供激励信号 监视输出结果 并与理想结果进行比较 基于VerilogHDL的通信系统设计 11 2VerilogHDL代码编写规范 编写本部分的内容旨在达到以下几个目的 规范整个设计流程 实现开发的合理性 一致性 高效性 便于开发人员形成风格良好和完整的文档 增加程序的可读性和可移植性 基于VerilogHDL的通信系统设计 命名宜望文生义 并应用下划线分开多个单词 一行一个端口 信号声明 端口声明或者变数声明后面要加注释 测试信号的后缀应为 test 禁止使用VHDL的保留字 禁止仅通过大小写来区分命名 状态机状态信号命名方法 文件名应由字母 数字元及下划线组成 文件名的首字符应为字母 常量应用大写字母表示 时钟信号的命名应包括clock或clk 信号名最长为32个字符 11 2 1命名规则 基于VerilogHDL的通信系统设计 11 2 2代码风格 编写代码格式要整齐 使用四个空格符缩排 一行一条 verilog 语句 模块调用时保持模块端口顺序一致 define undef 配合使用 模块调用时端口要显式引用 在复杂的表达式中使用括号 一个档一个 module module 名与文件名一致 else 与 if 的配对要明确 禁止存在多个对象采用相同的名字 保持常量之间的联系 使用参数枚举方法将状态机编码成不同状态 加法或减法运算避免丢失进位或错位 建议状态机编写时把状态转换和组合逻辑电路分开 基于VerilogHDL的通信系统设计 11 2 3语法结构 避免按位运算时位宽不匹配 避免分号使用不当 避免 case 标号超界 禁止使用表达式作为时钟 避免条件赋值中分支的位元宽不一致 位拼接符的操作数不能使用整数 11 2 4设计风格 禁止阻塞和非阻塞赋值混用 混合同步与异步 reset 的语句 不使用完整的敏感列表 没有初始状态的程序状态机 基于VerilogHDL的通信系统设计 11 2 5仿真部分 代码中使用常数条件表达式 函数分支没有返回值 always 块内被赋值的信号不应列入敏感表 禁止信号给自身赋值 移位操作中所有位都移出 default 不是 case 的最后一个条件 避免敏感信号列表不完整 避免敏感信号列表中存在冗余信号 时序逻辑中存在竞争 避免组合逻辑中的竞态条件 基于VerilogHDL的通信系统设计 11 2 6综合部分 一个 always 的敏感列表中只能有一个时钟 可综合代码禁止使用 wait 等语句 可综合代码禁止使用 initial 语句 循环结构中禁用 disable 语句 埠连接禁止使用表达式 边沿敏感结构中要使用非阻塞赋值 always 块产生组合逻辑要使用阻塞赋值 禁用 casex 基于VerilogHDL的通信系统设计 11 2 7VerilogHDL代码规范范本 这里附上一个VerilogHDL代码规范模板 其中的格式已经按照要求调整规范 希望读者能够模仿 下面这个代码档不能通过 nLint 检查 主要是功能方面 原因有些信号是随便添加的 仅仅为表示一种编写风格 模板的整体理念要求主要体现在 整齐 风格一致 可能还存在应该说明而没有说明的地方 请大家遵循一个原则让代码工整 基于VerilogHDL的通信系统设计 11 3本章小结 本章前半部分内容重点介绍了FPGA CPLD设计指导性原则 比如FPGA设计的基本原则 FPGA设计的基本思想
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年企业物资供应与管理模拟题集及解析
- 电力基本知识培训课件
- 2025年信息技术在物资储备仓库的应用及面试模拟题解析
- 2025年软件编程实战题集及解析指南
- 2025年软件测试工程师实战技能提升教程
- 2025年初级美容师笔试模拟题及答题技巧解析
- 2025年初中地理教学设计与模拟题集解析
- 电信安全知识培训资料课件
- 2025年税务局招聘考试模拟试题及答案解析手册
- 电井安全知识培训内容课件
- 2025年辽宁省地质勘探矿业集团有限责任公司校园招聘笔试备考题库带答案详解
- 积极心理学全套课件
- 临床实验中不良事件的管理
- 如何开展课题研究
- 炼钢厂电工应知应会考试题库500题(含各题型)
- bc-6800产品中心医院
- GB/T 5069-2007镁铝系耐火材料化学分析方法
- GB/T 40565.2-2021液压传动连接快换接头第2部分:20 MPa~31.5 MPa平面型
- GB/T 11446.10-1997电子级水中细菌总数的滤膜培养测试方法
- 旅游区奖惩制度管理办法
- 儿童生长发育监测课件
评论
0/150
提交评论