数字电路学习中引入硬件描述语言.docx

数字电路学习中引入硬件描述语言.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字电路学习中引入硬件描述语言 引言 随着信息时代的来临, “数字”二字正越来越多的出现在各 个领域,数字电视、数字通信、数字电影、数字控制 数字化 已成为当今信息社会的技术基础,电子技术发展的潮流。 数字电路已从早期的分立元件发展到集成电路, 以及具有特 定功能的专用集成电路,其设计的复杂度、集成度越来越大,而 传统的设计方式已无能为力。 为解决这一问题, 基于硬件描述语 言( HDL, Hardware Description Lan-guage )的全新设计方法 应运而生。硬件描述语言是一种用形式化方法描述数字电路和系 统的语言,形式上和普通计算机编程语言很相似。 利用这种语言, 数字电路系统的设计可以从上层到下层 (从抽象到具体) 逐层描 述自己的设计思想, 用一系列分层次的模块来表示极其复杂的数 字系统。 传统的数字电路设计方法其设计步骤分为:设计原始状态 表、状态化简、 状态编码、 根据状态转换表建立输入和输出方程, 画出逻辑电路并连接。 这种方法需要一定的逻辑推导与化简, 学 习起来枯燥乏味, 极易挫伤学习兴趣。 但是如果在学习过程中将 硬件描述语言加入其中, 自行编写程序, 从仿真波形中观察信号 的逻辑变化, 将被动学习变为主动学习, 将会更加容易理解和掌 握数字逻辑电路。当今最为流行的硬件描述语言以 VHDL和 Verilog HDL 应用最为广泛。 Verilog HDL 以其易学自由的特点 被美国 80%以上的电子工程师使用,而国内大多数公司和研究单 位也在使用 Verilog HDL 语言。 Verilog HDL语言简单易学,比较适合底层逻辑电路的描述, 只要有 C 语言编程基础, 即可在短时间掌握。 而 C 语言是大多数 理工类学生必修的编程语言之一。这里以 Verilog HDL语言为基 础,介绍如何在数字电路中引入硬件描述语言学习全加器。 一、传统方法设计全加器 全加器是用门电路实现两个二进制数相加并求出和的组合 电路,称为一位全加器。一位全加器可以处理低位进位,并输出 本位加法进位。多个一位全加器进行级联可以得到多位全加器。 它与半加器的区别在于需要考虑来自低位的进位, 因此其输入端 除了加数和被加数以外, 还应有一个进位输入端。 根据二进制加 法运算规则,用A和B代表加数,CI代表来自低位的进位输入, S代表相加的和,CO代表向高位的进位,可列出一位全加器的真 值表,如表 1 所示。 表 1 全加器的真值表 输入 输出 CI A B S CO 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 根据真值表写出输出端 S和CO的逻辑表达式: 对逻辑表达式进行化简,可得如下表达式: 根据化简后的表达式画出全加器的结构图,如图 1 所示。 图1 全加器的逻辑电路图 虽然依照传统的设计模式绘出了全加器的逻辑电路图, 但是 无法展现它是否符合真值表, 无法检测设计的正确与否。 引入硬 件描述语言 Verilog HDL ,利用仿真验证,可以有效地直观感受 设计效果。 二、基于 Verilog HDL 的全加器设计 module full_adder1 (a,b,ci ,s, co); // 模块定义行: module 模块名(端口名表项) input a ,b;// 端口类型说明:说明端口的输入或输出特性 input ci;// 来自低位的进位输入端 output s;// 加数之和的输出 output co;// 向高位的进位输出端 assign s=aAbAci;// 功能描述:对模块的功能或结构进行 具体描述 assign co= (aamp;B) | (ciamp; (aAb) ) ; // 向高位 的进位端描述 endmodule// 结束行:标志模块结束 图2 一位全加器模块的仿真结果 在模块描述完成之后, 需要通过测试文件对模块进行仿真验 证,以检查设计是否达到要求。 想要对模块进行仿真测试首先要 规定时间单位, 而且最好在测试文件中统一规定时间单位, 比如, ‘ timescale 1n s/1ps 表示仿真的单位时间为 1ns,精度为1ps。 测试模块可以看做一个模块或者设备, 和你已经编写的模块进行 通信。通过测试模块向待测模块输出信号作为激励, 同时接收从 待测模块输出的信号来查看结果。 一般在测试模块中将测试模块 的输入信号( input )定义为 reg 型,输出信号( output )定义 为 wire 型。处理完接口和声明之后,需要自己设置一些激励信 号,激励信号的内容就是能输入到待测模块中的波形。 对上述模 块编写测试程序,查看仿真结果,如图 2 所示。从图中可知,其 仿真结果与真值

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档