已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 基于 VHDL 的数字密码器的设计 摘摘 要要 本论文介绍了一种利用 EDA 技术 和 VHDL 语言 通过自顶向下的设计方法对数 字密码器进行设计 并在 FPGA 芯片 EPF10K10LC84 4 上实现 用 FPGA 器件构造系统 所有算法完 全由硬件电路来实现 使得系统的工作可靠性大为提高 由于 FPGA 具有 ISP 在系统可编程 功能 当设计需要更改时 只需更改 FPGA 中的控制和接口电路 利用 EDA 工具将更新后的设计下载到 FPGA 中即可 无需更改外部电路的设计 大大提高了设计的效率 因此 采用 FPGA 开发的数字系 统 不仅具有很高的工作可靠性 其升级与改进也极其方便 本文设计的密码器采用 6 位密码 比一般 的四位密码锁具有更高的安全可靠性 应用前景十分良好 摘要 1 1 EDA 技术概述 4 1 1现代电子设计方法 EDA 技术 4 1 1 1EDA 技术的发展历程 4 1 1 2EDA 技术的基本特征 4 1 1 3 EDA 技术的发展趋势 5 1 2 硬件描述语言 VHDL 简介 5 1 2 1 VHDL 的产生与发展 6 1 2 2 VHDL 的基本特征 6 1 2 3 VHDL 的设计流程 6 1 3 可编程逻辑器件 PLD 简介 7 1 3 1 PLD 的发展历程 7 1 3 2 FPGA CPLD 简介 8 1 3 3 用 FPGA CPLD 进行开发的优点 8 2 数字密码器的 VHDL 设计 9 2 1 数字密码器的总体方案设计 9 2 1 1 数字密码器的功能描述 9 2 1 2 数字密码器的内部结构及模块划分 10 2 1 3 数字密码器的工作过程 11 2 2 数字密码器的顶层设计 11 2 2 1 顶层模块的输入输出 11 2 2 1 模块描述 12 2 2 2 VHDL 设计 12 2 3 数字密码器的底层设计 12 2 3 1 分频模块 12 2 3 2 消抖同步模块 13 2 3 3 使能电路模块 14 2 2 3 4 密码预置输出模块 15 2 3 5 编码模块 15 2 3 6 比较模块 16 2 3 7 计数器选择模块 16 2 3 8 数码管显示译码模块 17 2 3 9 数码管扫描模块 17 2 3 10 指示电路模块 18 2 3 11 误码模块 19 2 3 12 控制器模块 19 3 数字密码器的 VHDL 程序的编译 综合 仿真 验证 22 3 1 编译 综合 22 3 2 模块仿真 22 3 2 1 顶层模块仿真 22 3 2 2 编码模块仿真 23 3 3 FPGA 验证 24 4 结束语 24 致谢辞 24 参考文献 24 附录 程序清单 25 3 1 EDA 技术概述 电子技术的发展 特别是专用集成电路 ASIC 设计技术的日趋进步和完善 推动了数字系统的 迅猛发展 传统的 固定功能集成块 连线 的设计方法已不能满足实际需求 根据系统功能要求利用 现代电子设计方法 EDA 技术 采用自上而下的设计方式 设计出速度快 体积小 重量轻 功耗低 的集成电路已成为必然趋势 1 1 现代电子设计方法 EDA 技术 EDA Electronic Design Automation 即电子设计自动化 它的定义是指利用计算机来完成电子系 统的设计 EDA 技术就是指以计算机为工作平台 以 EDA 软件工具为开发环境 以硬件描述语言为设 计语言 以可编程逻辑器件为实验载体 以 ASIC 1 和 SoC 为设计目标 以电子系统设计为应用方向的 电子产品自动化设计过程 在现代电子设计技术领域中 EDA 技术已成为主要的设计手段 采用 EDA 技术可以缩短电系统设计的开发周期 极大地提高了工作效率 1 1 1 EDA 技术的发展历程 EDA 技术 2 不是某一学科的分支 或某种新的技能技术 应该是一门综合性学科 它融合多学科 于一体 打破了软件和硬件间的壁垒 使计算机的软件技术与硬件实现 设计效率和产品性能合二为 一 它代表了电子设计技术和应用技术的发展方向 就过去近 30 年的电子技术的发展历程 可大致将 EDA 技术的发展分为三个阶段 第一阶段 20 世纪 70 年代 集成电路制作方面 MOS 工艺已得到广泛的应用 可编程逻辑技术 及其器件已经问世 计算机作为一种运算工具已在科研领域得到广泛的应用 而在后期 CAD 的概念 已见雏形 这一阶段人们开始利用计算机取代手工劳动 辅助进行集成电路版图编辑 PCB 布局布线 等工作 第二阶段 20 世纪 80 年代 集成电路设计进入了 CMOS 互补场效应管 时代 复杂可编程逻辑器 件已进入商业应用 相应的辅助设计软件也已投入使用 而在 80 年代末 出现了 FPGA CAE 和 CAD 技 术的应用更为广泛 它们在 PCB 设计方面的原理图输入 自动布局布线及 PCB 分析 以及逻辑设计 逻辑仿真 布尔方程综合和化简等方面担任了重要的角色 特别是各种硬件描述语言的出现 应用和 标准化方面的重大进步 为电子设计自动化必须解决的电路建模 标准文档及仿真测试奠定了基础 第三阶段 进入 20 世纪 90 年代 随着硬件描述语言的标准化得到进一步的确立 计算机辅助工 程 辅助分析和辅助设计在电子技术领域获得更加广泛的应用 与此同时电子技术在通信 计算机及 4 家电产品生产中的市场需求和技术需求 极大地推动了全新的电子设计自动化技术的应用和发展 特 别是集成电路设计工艺步入了超深亚微米阶段 百万门以上的大规模 ASIC 设计技术的应用 促进了 EDA 技术的形成 更为重要的是各 EDA 公司致力于兼容各种硬件实现方案和支持标准硬件描述语言的 EDA 工具软件的研究 都有效地将 EDA 技术推向成熟 1 1 2 EDA 技术的基本特征 EDA 代表了当今电子设计技术的最新发展方向 它的基本特征是 设计人员按照 自顶向下 的 设计方法 对整个系统进行方案设计和功能划分 系统的关键电路用一片或几片专用集成电路 ASIC 实现 然后采用硬件描述语言 HDL 完成系统行为级设计 最后通过综合器和适配器生成最 终的目标器件 这样的设计方法被称为高层次的电子设计方法 下面介绍与 EDA 基本特征有关的几个 概念 3 1 自顶向下 的设计方法 自顶向下 的设计方法首先从系统级设计入手 在顶层进行功能方框图的划分和结构设计 在 方框图级进行仿真 纠错 并用硬件描述语言对高层次的系统行为进行描述 在功能级进行验证 然 后用逻辑综合优化工具生成具体的门级逻辑电路的网表 其对应的物理实现级可以是印刷电路板或专 用集成电路 Top down 设计方法有利于在早期发现结构设计中的错误 提高设计的一次成功率 因 而在现代 EDA 系统中被广泛采用 2 硬件描述语言 HDL 用硬件描述语言进行电路与系统的设计是当前 EDA 技术的一个重要特征 与传统的原理图输入设 计方法相比较 硬件描述语言更适合于规模日益增大的电子系统 它还是进行逻辑综合优化的重要工 具 硬件描述语言使得设计者在比较抽象的层次上描述设计的结构和内部特征 它的突出优点是 语 言的公开可利用性 设计与工艺的无关性 宽范围的描述能力 便于组织大规模系统的设计 便于设 计的复用和继承等 目前最常用的硬件描述语言有 VHDL 和 Verilog HDL 它们都已经成为 IEEE 标准 3 逻辑综合优化 逻辑综合功能将高层次的系统行为设计自动翻译成门级逻辑的电路描述 做到了设计与工艺的独 立 优化则是对于上述综合生成的电路网表 根据布尔方程功能等效的原则 用更小更快的综合结果 替代一些复杂的逻辑电路单元 根据指定的目标库映射成新的网表 4 开放性和标准化 框架是一种软件平台结构 它为 EDA 工具提供了操作环境 框架的关键在于提供与硬件平台无关 的图形用户界面以及工具之间的通信 设计数据和设计流程的管理等 此外还应包括各种与数据库相 关的服务项目 任何一个 EDA 系统只要建立了一个符合标准的开放式框架结构 就可以接纳其他厂商 的 EDA 工具一起进行设计工作 这样 框架作为一套使用和配置 EDA 软件包的规范 就可以实现各种 EDA 工具间的优化组合 并集成在一个易于管理的统一的环境之下 实现资源共享 5 ASIC 设计 现代电子产品的复杂度日益提高 一个电子系统可能由数万个中小规模集成电路构成 这就带来 了体积大 功耗大 可靠性差的问题 解决这一问题的有效方法就是采用 ASIC 芯片进行设计 ASIC 按照设计方法的不同可分为全定制 ASIC 半定制 ASC 和可编程 ASIC 也称为可编程逻辑器件 设计全定制 ASIC 芯片时 设计师要定义芯片上所有晶体管的几何图形和工艺规则 最后将设计结 果交由 m 厂家去进行格模制造 做出产品 这种设计方法的优点是芯片可以获得最优的性能 即面积 利用率高 速度快 功耗低 而缺点是开发周期长 费用高 只适合大批量产品开发 半定制 ASIC 芯片的版图设计方法分为门阵列设计法和标准单元设计法 这两种方法都是约束性的 设计方法 其主要目的就是简化设计 以牺牲芯片性能为代价来缩短开发时间 可编程逻辑芯片与上述掩模 ASIC 的不同之处在于 设计人员完成版图设计后 在实验室内就可以 烧制出自己的芯片 无须 IC 厂家的参与 大大缩短了开发周期 可编程逻辑器件自 70 年代以来 经历了 PAL GAL CPLD FPGA 几个发展阶段 其中 CPLD FPGA 5 高密度可编程逻辑器件 目前集成度已高达 200 万门 片 它将格模 ASC 集成度高的优点和可编程逻 辑器件设计生产方便的特点结合在一起 特别适合于样品研制或小批量产品开发 使产品能以最快的 速度上市 而当市场扩大时 它可以很容易地转由掩模 ASIC 实现 因此开发风险也大为降低 上述 ASIC 芯片 尤其是 CPLD FPGA 器件 已成为现代高层次电子设计方法的实现载体 1 1 3 EDA 技术的发展趋势 随着大规模集成电路技术和计算机技术的不断发展 在涉及工业自动化 计算机应用 仪器仪表 等领域的电子系统设计工作中 EDA 技术的含量正以惊人的速度上升 电子类的高新技术项目的开发 也日益依赖于 EDA 技术的应用 4 即使是普通的电子产品的开发 EDA 技术常常使一些原来的技术瓶 颈得以轻松突破 从而使产品的开发周期大为缩短 性能价格比大幅度提高 所以 EDA 技术将成为电 子设计领域中的极其重要的组成部分 电子设计专家认为 单片机时代己经结束 未来将是 EDA 的时 代 随着微电子技术的飞速进步 电子学进入了一个崭新的时代 其特征是电子技术的应用以空前规 模和速度渗透到各行各业 各行业对自己专用集成电路 ASIC 的设计要求日趋迫切 可编程器件的广 泛应用 为各行业的电子系统设计工程师自行开发本行业专用的 ASIC 提供了技术和物质条件 与单片 机系统开发相比 利用 EDA 技术对 FPGA CPLD 的开发 通常是一种借助于软件的纯硬件开发 可以通 过这种途径进行专用 ASIC 开发 而最终的 ASIC 芯片 可以是 FPGA CPLD 也可以是专制的门阵列掩 模芯片 FPGA CPLD 起到了硬件仿真 ASIC 芯片的作用 1 2 硬件描述语言 VHDL 简介 EDA 技术的设计语言是硬件描述语言 HDL 它采用软件编程的方式来描述电子系统的逻辑功能 电 路结构和连接方式等 利用这种语言 数字电路系统的设计可以从上层到下层 从抽象到具体 逐层 描述自己的设计思想 用一系列分层次的模块来表示极其复杂的数字系统 然后 利用电子设计自动 化 EDA 工具 逐层进行仿真验证 再把其中需要变为实际电路的模块组合 经过自动综合工具转换 到门级电路网表 接下去 再用专用集成电路 ASIC 或现场可编程门阵列 FPGA 自动布局布线工具 把 网表转换为要实现的具体电路布线结构 1 2 1 VHDL 的产生与发展 美国于 1981 年提出了一种新的 标准化的 HDL 称之为 VHSIC Very High Speed Integrated Circuit Hardware Description Language 简称 VHDL 这是一种用形式化方法来描述数字电路和 设计数字逻辑系统的语言 设计者可以利用这种语言来描述自己的设计思想 然后利用电子设计自动 化工具进行仿真 再自动综合到门级电路 最后用 PLD 实现其功能 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 公司的支持 在电 子工程领域 已成为事实上的通用硬件描述语言 有专家认为 在新的世纪中 VHDL 和 Verilog 语言 将承担起大部分的数字系统设计任务 1 2 2 VHDL 的基本特征 与其它的硬件描述语言相比 VHDL 具有更强的行为描述能力 能够避开具体的器件结构 从行为 功能上对数字电路系统设计进行描述 VHDL 具有如下的基本特征 1 设计功能强 方法灵活 支持广泛 VHDL 语言可以支持自上而下的设计方法 它具有功能强 大的语言结构 可用简洁明确的代码描述来进行复杂控制逻辑的设计 可硕士学位论文绪论以支持同 步电路 异步电路 以及其他随机电路的设计 其范围之广是其他 HDL 语言所不能比拟的 此外 6 VHDL 语言可以自定义数据类型 这也给编程人员带来了较大的自由和方便 2 系统硬件描述能力强 VHDL 语言具有多层次的设计描述功能 可以从系统的数字模型直到门 级电路 支持设计库和可重复使用的元件生成 它支持阶层设计且提供模块设计的创建 VHDL 语言能 进行系统级的硬件描述是它的一个最突出的优点 3 可以进行与工艺无关编程 VHDL 语言设计系统硬件时 没有嵌入描述与工艺相关的信息 不 会因为工艺变化而使描述过时 与工艺技术有关的参数可通过 VHDL 提高的类属加以描述 工艺改变时 只需修改相应程序中的类属参数即可 4 VHDL 语言标准 规范 易于共享和复用 VHDL 既是 IEEE 承认的标准 故 VHDL 的描述可以被 不同的 EDA 设计工具所支持 从一个仿真工具移植到另一个仿真工具 从一个综合工具移植到另一个 综合工具 从一个工作平台移植到另一个工作平台去执行 这意味着同一个 VHDL 设计描述可以在不同 的设计项目中采用 方便了设计成果的设计和交流 另外 VHDL 语言的语法比较规范 从而其可读性 比较好 给阅读和使用都带来了极大的好处 5 方便向 ASIC 移植 VHDL 语言的效率之一 就是如果设计是被综合到一个 CPLD 或 FPGA 则可 以设计的产品以最快速度上市 当产品的产量达到相当的数量时 采用 VHDL 进行的设计可以很容易转 成用专用集成电路来实现 仅仅需要更换不同的库重新进行综合 由于 VHDL 是一个成熟的定义型语言 可以确保 ASIC 厂商交付优良品质的器件产品 此外 由于工艺技术的进步 需要采用更先进的工艺时 仍可以采用原来的 VHDL 代码 1 2 3 VHDL 的设计流程 利用 VHDL 语言进行设计可分为以下几个步骤 5 1 设计要求的定义 在从事设计进行编程 VHDL 代码之前 必须先对你的设计目的和要求有一个 明确的认识 对所需的信号建立时间 时钟 输出时间 最大系统工作频率 关键的路径等这些要求 要有一个明确的定义 这将有助于你的设计 然后再选择适当的设计方式和相应的器件结构 进行设 计的综合 2 用 VHDL 语言进行设计描述 l 应决定设计方式 设计方式一般说来有三种 自顶向下设计 自底向上设计 平坦式设计 前两种方式包括设计阶层的生成 而后一种方式将描述的电路当作单模 块电路来进行的 自顶向下的处理方式要求将你的设计分成不同的功能元件 每个元件具有专门定义 的输入和输出 并执行专门的逻辑功能 首先生成一个由各功能元件相互连接形成的顶层块来做成一个 网表 然后再设计其中的各个元件 而自底向上的处理方法正好相反 平坦式设计则是指所有功能元 件均在同一层和同一图中详细进行的 2 编写设计代码 编写 VHDL 语言的代码与编写其他计算机科 技大学硕士学位论文绪论程序语言的代码有很大的不同 必须清醒地认识到正在设计硬件 编写的 VHDL 代码必须能够综合到采用可编程逻辑器件来实现的数字逻辑中 懂得 EDA 工具中仿真软件和综合 软件的大致工作过程 将有助于编写出优秀的代码 3 用 VHDL 仿真器对 VHDL 原代码进行功能仿真 对于大型设计 采用 VHDL 仿真软件对其进行仿 真可以节省时间 可以在设计的早期阶段检测到设计中的错误 从而进行修正 以便尽可能地减少对 设计日程计划的影响 因为对于小型设计 其综合优化 配置花费的时间不多 而且在综合优化之后 往往会发现为了实现性能目标 将需要修改设计 在这种情况下 用户事先在原代码仿真时所花费的 时间是毫无意义的 因为一旦改变设计 还必须重新再做仿真 4 利用 VHDL 综合优化软件对 VHDL 原代码进行综合优化处理 选择目标器件 输入约束条件后 VHDL 综合优化软件工具将对 VHDL 原代码进行处理 产生一个优化了的网络表 并可以进行粗略的时 序仿真 5 配置将综合优化处理后得到的优化了的网络表 安放到前面选定的 CPLD 或 PPGA 目标器件之中 这一过程成为配置 再优化了的网络表配置到目标器件后 从完成的版图上可以得到连线长短 宽窄 的信息 把它们反注到原来的网络表 为再次进行时序做准备 6 配置后的时序仿真 这时的时序仿真将检查诸如信号建立时间 时钟到输出 寄存器到寄存器 的时延是否满足要求 因为已经得到实际连线引起的时延数据 所以仿真结果能比较精确地未来芯片 7 的实际性能 如果时延仿真结果不能满足设计的要求 就需要重新对 VHDL 原代码进行综合优化 并重 新装配于新的器件之中 或选择不同速度品质的器件 同时 也可以重新观察和分析 VHDL 原代码 以 确认描述是正确有效的 只有这样 取得的综合优化和配置的结果才符合实际要求 7 器件编程 在成功地完成了设计描述 综合优化 配置和配置后的时序仿真之后 则可以对器 件编程和继续进行系统设计的其他工作 1 3 可编程逻辑器件 PLD 简介 PLD 可编程逻辑器件 是与 ISP 在系统可编程 技术和 EDA 电子设计自动化 工具紧密结合 同时进行的 它代表了数字电信领域的最高水平 给数字电路的设计带来了革命性的变化 从 70 年 代第一片可编程逻辑器件 PROM 的诞生到现在的 CPLD FPGA 数字系统的设计发生了本质的变化 从传 统的对电路板的设计到现在的基于芯片的设计 使得数字系统设计的效率大大提高 产品更新速度大 大加快 设计周期大大变短 1 3 1 PLD 的发展历程 最早的可编程逻辑器件出现在 20 世纪 70 年代 主要是可编程只读存储器 PROM 和编程逻辑阵 列 PLA 20 世纪 70 年代末出现了可编程逻辑阵列 PAL Programmable Array Logic 器件 20 世 纪 80 年代初期 美国 Lattice 公司推出了一种新型的 PLD 器件 6 称为通用阵列逻辑 GAL Generic Array Logic 一般认为它是第二代 PLD 器件 随着技术的进步 生产工艺的不断改进 器件规模不 断扩大 逻辑功能不断增强 各种可编程逻辑器件如雨后春笋般涌现 如 PROM EPROM 等 在 EPROM 基础上出现的高密度可编程逻辑器件称为 EPLD 或 CPLD 现在一般把超过某一集成度的 PLD 器件都称 为 CPLD 在 20 世纪 80 年代中期 美国 Xilinx 公司首先推出了现场可编程门阵列 FPGA FPGA 器件 采用逻辑单元阵列结构和静态随机存取存储器工艺 设计灵活 集成度高 可无限次反复编程 并可 现场模拟调试验证 在 20 世纪 90 年代初 Lattice 公司又推出了在系统可编程大规模集成电路 ispLSI 1 3 2 FPGA CPLD 简介 FPGA CPLD 都是高密度现场可编程逻辑芯片 都能够将大量的逻辑功能集成于一个单片集成电路 中 其集成度己发展到现在的几百万门 复杂可编程逻辑 CPLD 是由 PAL 或 GAL 发展而来的 它采用全 局金属互连导线 因而具有较大的延时可预测性 易于控制时序逻辑 但功耗比较大 现场可编程门 阵列 FPGA 是由掩膜可编程门阵列和可编程逻辑器件二者演变而来的 并将它们的特性结合在一起 因此 FPGA 既具有门阵列的高逻辑密度和通用性 又有可编程特性 FPGA 通常由布线资源分割的可编 程逻辑单元 或宏单元 构成阵列 又有可编程 UO 单元围绕阵列构成整个芯片 其内部资源是分段互联 的因而延时不可预测 只有编程完毕后才能实际测量 CPLD 和 FPGA 7 建立内部可编程逻辑连接关系的 编程技术有三种 基于反熔丝技术的器件只允许对器件编程一次 编程后不能修改 其优点是集成度 工作频率和可靠性都很高 适用于电磁辐射干扰较强的恶劣环境 基于 EEPROM 存储器技术的可编程逻 辑芯片能够重复编程 100 次以上 系统掉电后编程信息也不会丢失 编程方法分为在编程器上编程和 用下载电缆编程 用下载电缆编程的器件 只要先将器件装焊在电路板上 通过 PC SUN 工作站 就 能产生编程所有的标准 5V 3 3V 或 2 5V 逻辑电平信号 也称为 ISP 方式编程 其调试和维修也很方 便 基于 SRAM 技术的器件编程数据存储于器件的 RAM 区中 使之具有用户设计的功能 在系统不加电 时 编程数据存储在 EPROM 硬或软盘中 系统加电时将这些编程数据即时写入可编程器件 从而实 现板级或系统级的动态配置 1 3 3 用 FPGA CPLD 进行开发的优点 基于 EDA 技术的 FPGA CPLD 器件的开发应用可以从根本上解决 MCU 所遇到的问题 与 MCU 相比 FPGA CPLD 的优势是多方面的和根本性的 8 1 编程方式简便 先进 FPGA CPLD 产品越来越多地采用了先进的 IEEE1149 1 边界扫描测试 8 BST 技术和 ISP 在 5V 工作电平下可随时对正在工作的系统上的 FPGA CPLD 进行全部或部分地在系 统编程 并可进行所谓菊花链式多芯片串行编程 对于 SRAM 结构的 FPGA 其下载编程次数没有限制 2 高速 FPGA CPLD 的时钟延迟可达纳秒级 结合其并行工作方式 在超高速应用领域和实时测 控方面有非常广阔的应用前景 3 高可靠性 在高可靠应用领域 MCU 的缺憾为 FPGA CPLD 的应用留下了很大的用武之地 除了 不存在 MCU 所特有的复位不可靠与 PC 可能跑飞等固有缺陷外 FPGA CPLD 的高可靠性还表现在几乎可 将整个系统下载于同一芯片中 从而大大缩小了体积 易于管理和屏蔽 4 开发工具和设计语言标准化 开发周期短 由于 FPGA CPLD 的集成规模非常大 集成度可达数 百万门 因此 FPGA CPLD 的设计开发必须利用功能强大的 EDA 工具 通过符合国际标准的硬件描述 语言 如 VHDL 来进行电子系统设计和产品的和开发 由于开发工具的通用性 设计语言的标准化以及 设计过程几乎与所有的 FPGA CPLD 器件结构没有关系 所以设计成功的各类逻辑功能块软件有很好的 兼容性和可移植性 它几乎可用于任何型号的 FPGA CPLD 中由此还可以知识产权的方式得到确认 并 被注册成为所谓的 IP 芯核从而使得片上系统的产品设计效率大幅度提高 由于相应的 EDA 软件功能完 善而强大 仿真方式便捷而实时 开发过程形象而直观 兼之硬件因素涉及甚少 因此可以在很短时 间内完成十分复杂的系统设计 这正是产品快速进入市场的最宝贵的特征 EDA 专家预言 未来的大 系统的 FPG 刀 CPLD 设计仅仅是各类再应用逻辑与 IP 芯核的拼装 其设计周期最少仅数分钟 5 功能强大 应用广阔 目前 FPGA CPLD 可供选择范围很大 可根据不同的应用选用不同容量 的芯片 利用它们可实现几乎任何形式的数字电路或数字系统的设计 随着这类器件的广泛应用和成 本的大幅度下降 FPGA CPLD 周期系统中的直接应用率正直逼 ASIC 的开发 2 数字密码器的 VHDL 设计 本次设计的数字密码器将实现一般数字密码器的基本功能 并且能够预置任意位密码 比一般的 四位密码锁具有更高的安全可靠性 本次设计将利用 EDA 技术自顶向下的设计方法 采用 VHDL 语言进 行设计输入 并在 MAX PLUS 开发软件上进行编译 仿真 编程 下载 最后在 ALTERA 公司开发的 FPGA 芯片 EPF10K10LC84 4 上实现 2 1 数字密码器的总体方案设计 2 1 1 数字密码器的功能描述 一个简单的数字密码器是由密码器主体以及附加的外围指示电路组成的 其中密码器主体的作用 是用来接受密码并进行密码的验证操作 附加的外围指示电路的主要作用是用来显示输入的密码和根 据密码验证的结果来给出不同的指示灯显示或者启动报警装置 而报警装置则通常采用扬声器 下面给出数字密码器的系统结构图 9 如图 2 1 所示 9 数 字 密 码 器 WAIT T SETUP READY OPEN T A5 A0 A7 A1 A8 A2 A9 A6 A4 A3 LED G ALERT LED R GND 扬声器 外部时钟 CLK 绿灯 红灯 7 A A B C D E F G B C D F G E 图 2 1 数字密码器的系统结构图 在本设计中 数字密码器的功能描述如下所示 1 密码器的工作时钟由外部晶振来提供 时钟频率为 300Hz 2 密码预先在内部设置 可以设置任意位密码 这里采用 6 位十进制数字作为密码 3 密码输入正确后 密码器将启动开启装置 这里密码器只接受前 6 位密码输入 并以按键音提 示 多余位数的密码输入将不起作用 4 采用 6 位 7 段 LED 对输入的密码进行动态扫描显示 5 允许密码输入错误的最大次数为三次 口令错误次数超过三次则进入死锁状态 并发出警报 6 报警后 内部人员可以通过按键 SETUP 使密码器回到初始等待状态 7 开启装置开启后 操作人员可以通过按键 WAIT T 使密码器回到初始等待状态 8 密码器具有外接键盘 可以用来输入密码和操作指令 9 内部按键 SETUP 不由外接键盘提供 需要放在外部人员不能进入的地方 2 1 2 数字密码器的内部结构及模块划分 在数字电路设计中 自顶向下的设计方法 10 的主要思想是对数字系统进行模块划分 这样可以将 复杂的设计简化成相对简单的模块设计 不同的模块用来完成数字系统中某一部分的具体功能 可见 划分模块是设计过程中一个非常重要的步骤 在这一步 必须花费一定的时间 从而保证模块划分的 最优化 这样可以大大减小后面 VHDL 程序编写的工作量 10 控 制 器 消 抖 同 步 电 路 WAIT T SETUP READY OPEN T C11 C22 C33 C44 WAIT L FULL RESET CNP DATA IN DEP EN DUS 消抖 同步 电路 使 能 电 路 A00 A10 A20 A30 A40 A50 A60 A70 A80 A90 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 计数器 1 S0 S1 S2 计数器满 编 码 器 比 较 器 4 位六选一数据选择器 E1 B2 B3 B4 数 码 管 扫 描 模 块 IN1 IN2 IN3 IN4 IN5 IN6 数码管显示译码 DATA 16 SEL 2 0 a g 数码管选择信号 图 2 2 数字密码器的模块划分图 LED G LED R ALERT S LG S LR RS RS 指示电路模块 绿灯 红灯 A01 A11 A21 A31 A41 A51 A61 A71 A81 A91 E2E3 E4 B1 分频模块 CLK CLK DIV1 CLK DIV2 计数器 2ANC NOTC 密码错误次数达到 3 次 根据本次设计的数字密码器的功能描述 可以进一步将它划分为如图 2 2 所示的结构框图 由图 可知 整个数字密码器系统主要包括分频模块 消抖同步模块 使能电路模块 密码预置模块 编码 模块 比较模块 计数器选择模块 数码管显示译码模块 指示电路模块 数码管扫描模块 误码模 块和控制器模块 12 部分 2 1 3 数字密码器的工作过程 根据图 2 2 所示的模块划分图 下面介绍一下密码器的具体工作过程 11 首先 密码器通过外接键盘输入数字密码 然后密码需要经过 10 线至 4 线编码器变成 BCD 码 接 下来通过 4 位比较器与存储在系统中的预置密码进行比较 同时将输入的密码通过数码管扫描模块和 数码管显示译码模块显示出来 最后将比较的结果 DEP 送到控制器模块中 本次设计中的密码是串行输入的 每次分别与一个预置码比较 可见 6 个十进制的密码分别有 24 个端口送入 因此需要使用一个数据选择器来进行选择 这里 数据选择器是一个 4 位的六选一数 据选择器 它的两位选择信号是由一个模 6 的计数器来给出的 计数器的控制信号是由控制信号 RESET 和时钟信号 CNP 是由控制模块来提供的 外接键盘每送一个密码数字 计数器的计数值加 1 如 果计数器的数值计到 6 时 那么表示 6 个密码已经输入完毕 接下来计数器应向控制器发出反馈信号 FULL 这表示控制器已经可以进入到启动状态 计数器 2 用来记录输入密码错误次数 当密码输入错误时 密码器将发出警报 并提示用户还可 以输入密码的次数 当密码输入错误的达到次数三次时 计数器 2 应向控制器反馈信号 NOTC 密码器 将进入死锁状态 并发出警报 这时只能通过内部按键 SETUP 使密码器回到初始状态 2 2 数字密码器的顶层设计 密码器的顶层设计由各个子模块构成 其中各个模块是以元件的形式给出的 首先必须进行元件 的说明 然后进行元件的例化调用就可以构成顶层模块 顶层设计的模块图如图 2 3 所示 图 2 3 顶层设计模块图 2 2 1 顶层模块的输入输出 由上图可以给出数字密码器的对外接口信号 即输入和输出信号 1 数字按键输入信号 A0 A9 用来进行密码的输入操作 2 外部时钟信号 CLK 用来作为内部操作时钟和驱动蜂鸣器 3 按键输入信号 READY 用来设置密码器的准备操作状态 4 按键输入信号 WAIT T 用来建立密码器的等待状态 5 按键输入信号 SETUP 用来恢复密码器的等待状态 6 按键输入信号 OPEN T 用来设置密码器进入到启动状态 7 绿灯指示驱动信号 LED G 驱动绿灯显示 8 红灯指示驱动信号 LED R 驱动红灯显示 9 蜂鸣器驱动信号 ALERT 驱动报警蜂鸣器 10 数码管显示译码输出 A B C D E F G 2 2 2 模块描述 根据数字密码器的功能描述和模块划分 下面给出密码器输入电路和输出电路功能的具体描述 12 1 给密码器上电后按下 READY 键 表示密码器准备就绪 可以接收外部输入的密码数字 这时用 来指示密码器工作状态的指示灯和扬声器都处于不工作状态 2 通过 A0 A9 按键输入 6 位数字密码后按下 OPEN T 键 如果密码输入正确并且按键正确 这时 密码器将启动开启装置 同时密码器的绿灯亮 如果输入的密码错误 扬声器将发出警告 同时还将 提示密码器还可以输入的次数 密码器允许密码输入错误的最大次数为三次 口令错误次数超过三次 则进入死锁状态 并发出警报 3 密码器只接受前 6 位密码输入 并以按键音提示 多余位数的密码输入将不起作用 4 密码器开启结束后 密码器将进入到下一次开启等待状态 这时 输入电路中需要设置一个 WAIT T 按键 目的是使密码器重新进入到等待状态 5 密码器出于死锁状态时 READY 按键和 WAIT T 按键是不起任何作用的 在这种情况下 密码 器必须由内部人员通过按键 SETUP 来对密码器进行重新设置 目的是使其重新回到等待状态 为了密 码器的安全起见 按键需放在内部人员办公室或其他外部人员不能进入的地方 6 如果发现输入的 6 位密码有错误 这时操作人员可以在按下 OPEN T 按键之前按下 READY 键重 新回到密码器准备就绪状态 因此 密码器需要含有一个输入数字密码的显示电路 这里采用 6 个 7 段 LED 对输入的密码进行动态显示 2 2 3 VHDL 设计 本模块设计的 VHDL 程序为 cipher top vhd 在该程序中 其中密码器顶层设计的各个模块是以 元件的形式给出的 必须进行元件的说明 然后才能进行元件的例化调用 另外 结构体的说明部分 还定义了许多中间信号 它们的作用是用来在模块之间传递信息 这里 假设上述调用的元件存放在 WORK 库的程序包 cipher example 中 2 3 数字密码器的底层设计 前面描述了数字密码器的顶层设计和相应的 VHDL 程序 下面将介绍密码器系统中各个模块的具体 实现和相应的 VHDL 程序 数字密码器划分为分频模块 消抖同步模块 使能电路模块 密码预置模块 编码模块 比较模块 计数器选择模块 数码管显示译码模块 指示电路模块 数码管扫描模块 误 码模块和控制器模块 12 个部分 顶层设计中各个模块是作为元件来引用的 因此这里需要将各个模块 设计成独立设计实体的具体形式 这样便可以在顶层设计来引用这些模块了 2 3 1 分频模块 1 分频模块的输入 输出 图 2 4 分频模块图 分频模块的模块图如图 2 4 所示 可以定义输入 输出信号如下 CLK 系统输入时钟 300Hz CLK DIV1 CLK DIV2 分频输出时钟信号 分别为 10Hz 1Hz 2 模块描述 在数字密码器中 它的外部时钟信号 CLK 是由外部晶振来提供的 时钟频率为 300Hz 对 CLK 进 行分频输出两路时钟 CLK DIV1 和 CLK DIV2 其中 CLK DIV1 作为按键检测消抖时钟和控制器模块时钟 而 CLK DIV2 作为密码错误次数计数模块的时钟 CLK 时钟信号还作为蜂鸣器启动信号和 LED 显示扫描 时钟信号 CLK DIV1 设为 CLK 的 30 分频 为 10Hz 再将 CLK DIV1 进行 10 分频可以得到 CLK DIV2 时 钟 为 1HZ 因此 分频模块可以采用 10 分频和 30 分频电路来构成 如图 2 5 所示 13 30 分频电路 10 分频电路 CLK CLK DIV1 CLK DIV1CLK DIV2 图 2 5 3 VHDL 设计 由图 2 5 可知 分频模块内部含有两个单元电路 30 分频电路和 10 分频电路 首先需要进行 30 分频和 10 分频这两个单元电路的 VHDL 设计 这两个单元电路的设计可以采用计数的方法来完成 而 对于分频模块的设计 可以通过对两个单元电路元件的例化调用来实现 其中 30 分频电路和 10 分频 电路的 VHDL 程序分别为 clk div30 vhd clk div10 vhd 分频模块的 VHDL 程序为 clkdiv model vhd 2 3 2 消抖同步模块 1 消抖同步模块的输入 输出信号定义 图 2 6 消抖同步模块图 消抖同步模块的模块图如图 2 6 所示 由图可以得到输入 输出信号定义 1 输入信号 C1 C2 C3 C4 分别由 WAIT T SETUP READY OPEN T 操作指令得到 AOO A90 由使能模块提供 CLK 由分频模块输出的 CLK DIV1 10Hz 来提供 2 输出信号 C11 C22 C33 C44 由 WAIT T SETUP READY OPEN T 经过消抖后产生 A01 A91 有 AOO A90 经过消抖后产生 2 模块描述 在数字密码器中 由按键方式产生的数字密码 A0 A9 READY OPEN T WAIT T SETUP 的产生时 刻和持续长短是随机不定的 同时存在因开关簧片反弹而引起的电平抖动现象 因此必须添加消抖同 步模块 目的是保证系统能捕捉到输入脉冲 同时保证每按一键只形成一个宽度为系统时钟周期的脉 冲 14 3 VHDL 设计 在数字电路中 消抖同步电路的设计方案 11 较多 本设计采用的是一种应用较为广泛的消抖同步 电路 如图 2 7 所示 因为采用与非门构成的触发器使用底电平触发 因此按键输入的数字或者操作 指令要设计成低电平有效 DQ CP Q DQ CP Q 输出 输入 CLK 图 2 7 根据图 2 7 可以看出消抖同步电路含有两个与非门 一个与门和两个 D 触发器 所以首先必须进 行 D 触发器的 VHDL 设计 然后构成消抖同步电路的 VHDL 设计 最后通过元件例化调用完成消抖同步 模块的 VHDL 设计 其中 D 触发器的 VHDL 程序为 dff 1 vhd 消抖同步电路的 VHDL 程序为 key sync vhd 消抖同步模块的 VHDL 程序为 keysync model vhd 2 3 3 使能电路模块 1 使能电路模块的输入 输出信号定义 图 2 8 使能电路模块图 使能电路模块的模块图如图 2 8 所示 模块的输入 输出信号定义如下 1 输入信号 A0 A9 由按键 0 9 提供 EN 由控制器模块提供 2 输出信号 A00 A90 当其为低电平 0 时 表示对应的 A0 A9 有信号输入 该输出用于提供给消抖同步模块 2 模块描述 在数字密码器中 数字密码 A0 A9 的按键输入信号是通过控制器模块给出的使能信号 EN 来进行 控制的 当使能信号有效 高电平 时 输入的信号 A0 A9 有效 否则输出为高电平 15 3 VHDL 设计 使能电路模块的 VHDL 程序为 enable model vhd 2 3 4 密码预置输出模块 1 输入输出定义信号定义 图 2 9 密码预置输出模块图 密码预置输出模块的模块图如图 2 9 所示 模块的输入 输出信号定义如下 1 输入信号 S0 S1 S2 由计数器选择模块提供 2 输出信号 E1 E2 E3 E4 密码预置信号 2 模块描述 该模块用来预置密码器的密码 用于与输入的数字密码进行比较操作 密码器的密码可以设置成 任意位 这里设为 6 位 为 654321 它的输入有三个 分别为 s2 s1 s0 由计数器选择模块提 供 输出有为 4 位的 2 进制密码 3 VHDL 设计 密码预置输出模块的 VHDL 程序为 mux4 model vhd 2 3 5 编码模块 1 输入输出信号定义 图 2 10 密码预置输出模块图 密码预置输出模块的模块图如图 2 10 所示 模块的输入 输出定义如下 1 输入信号 A01 A91 由消抖同步模块提供 对应于数字按键 0 9 RESET 由控制器模块提供 DUS 由控制器模块提供 用于检测是否有按键输入 2 输出信号 B1 B4 由按键信号转换成 4 位 BCD 码 用来提供给比较模块 16 DATA IN 当其为高电平是 表示有密码输入 用来提供给控制器模块 DI 按键音信号 用来提供给指示模块 以驱动扬声器 IN1 IN6 用于按顺序存储密码 其中 IN1 用于存储第一位密码 IN6 用于存储第六位密码 该 信号提供给数码管扫描信号 用于动态显示输入的密码 2 模块描述 编码模块为子模块中的第二大模块 该模块用于将输入的按键信号转换成 4 位 BCD 码 B1 B4 送入 到比较器中 这一步将通过 10 线至 4 线编码器来完成 除此以外 该模块还将输入的按键信号通过移 位寄存器按照按键的顺序存储到 6 个 4 位 BCD 码输出信号 in1 in6 中 用于提供给数码管扫描模块的 输入信号 同时还将输出 di 信号提供给指示电路模块用于产生按键音 对于编码器的输出来说 B4 是 MSB B1 是 LSB 3 VHDL 设计 编码模块的 VHDL 程序为 encoder model vhd 2 3 6 比较模块 1 输入输出信号定义 图 2 11 比较模块图 比较模块的模块图如图 2 11 所示 模块的输入 输出信号定义如下 1 输入信号 B1 B2 B3 B4 由编码模块提供 用于与密码预置模块输出的预置密码信号进行比较 E1 E2 E3 E4 密码预置信号 由密码预置模块提供 2 输出信号 DEP 该信号用于反馈给控制器模块 用于说明比较的结果 2 模块描述 在数字密码器中 比较模块的主要功能是对编码模块的输出 B1 B4 这 4 位数据和密码预置输出模 块的输出 E1 E4 这 4 位数据进行比较 然后将比较的结果送入控制器模块的 DEP 端口上 比较器的具 体工作原理是 当比较结果相等是 DEP 的输出为 1 当比较结果不相等时 DEP 的输出为 0 3 VHDL 设计 比较模块的 VHDL 程序为 comparator model vhd 2 3 7 计数器选择模块 1 输入输出信号定义 计数器选择模块的模块图如图 2 12 所示 模块的输入 输出信号定义如下 1 输入信号 RESET 计数器的复位信号 CNP 计数器的输入脉冲信号 上升沿有效 2 输出信号 S0 S1 S2 提供给密码预置输出模块的地址选择信号 17 FULL 提供给密码预置输出模块 用于表示 6 位密码是否输入完毕 图 2 12 计数器选择模块图 2 模块描述 在密码器中 计数器选择模块的功能是用来给出密码预置输出模块的地址选择信号 S0 S1 和 S2 它的控制信号 RESET 和时钟信号 CNP 是由控制器模块来提供的 另外还有一个输出信号 FULL 它 表示 6 个密码已经输入完毕 控制器可以进入到启动状态 3 VHDL 设计 计数器选择模块的 VHDL 程序为 counter model vhd 2 3 8 数码管显示译码模块 1 输入输出信号定义 图 2 13 数码管显示译码模块图 数码管显示译码模块的模块图如图 2 13 所示 模块的输入 输出信号定义如下 1 输入信号 DATA 4 位的 BCD 码输入信号 由数码管扫描模块提供 2 输出信号 A B C D E F G 分别对应 7 段 LED 的 7 个输入端口 2 模块描述 在密码器中 显示设备由 8 个 7 段 LED 组成 前 6 个 LED 将显示输入的 6 个密码 后 2 个 LED 在 用来在误码状态下显示还可以输入的密码次数 由于采用动态扫描显示 只须输出一个 LED 所须的驱 动信号即可 这里采用共阴极 LED 所以输出 A G 高电
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国环保用品设备行业市场前景预测及投资价值评估分析报告
- 2026年中国麻醉盐水架行业市场前景预测及投资价值评估分析报告
- 2026年中国量变送器行业市场前景预测及投资价值评估分析报告
- 2025年建平县面向社会公开招聘城市社区工作者21人考试笔试参考题库附答案解析
- 2025年体育赛事赞助合同终止及权益协议
- 药剂科抗菌药物应用须知
- 2026年浙江纺织服装职业技术学院单招职业适应性测试题库附答案
- 2026年广东水利电力职业技术学院单招职业倾向性测试题库及答案1套
- 2026年太原旅游职业学院单招职业倾向性考试必刷测试卷附答案
- 2026年辽宁省葫芦岛市单招职业适应性测试必刷测试卷必考题
- 融资入股协议书样本
- 加油站安全生产管理台账21种台账样本完整版
- 纸箱厂质量控制奖惩条例
- 2025年水利系统职称考试水利专业技术人员职称考试题库及答案
- 湖南省湘潭市2024-2025学年九年级上学期1月期末历史试题
- 库蚊环境适应性-深度研究
- 新能源行业人力资源规划与招聘
- DB33 1121-2016 民用建筑电动汽车充电设施配置与设计规范
- 自动化电气元器件介绍与使用
- 【MOOC】温病学-河南中医药大学 中国大学慕课MOOC答案
- 直线和圆的方程 直线与圆的位置关系 教学设计
评论
0/150
提交评论