首页/文章/ 详情

《数字电子技术》之第二章 逻辑代数与硬件描述语言概述

7月前浏览6488

本文摘要(由AI生成):

本文主要介绍了数字电子技术基础的相关内容,包括习题答案、重点知识讲解和 EDA 软件介绍三部分。首先提供了十进制数与二进制、八进制、十六进制的转换练习题,并给出了详细的步骤和答案。其次对逻辑代数与硬件描述语言进行概述,包括逻辑代数的基本定律、恒等式和规则等。最后介绍了 EDA 软件 ModelSim SE 2020.4 的安装与破解过程。



第一章学完了,通过习题来检查一下自己的学习效果吧!很多同学不来上课,这种现象可以接受,但你要能把题目解正确,不然考试怎么办?

1.2.2  将下列十进制数转换成二进制数、八进制数和十六进制数。写出转换过程!

    (1)43;           (3)254.25。

1.2.5  将下列十六进制数转换成二进制数。

    (1) (23F.45 )H;   (2) (A040.51 )H 。

1.3.1  写出下列各数的原码、反码和补码。 

    (2) (+10110 )B;    (4) (-10110 )B 。

1.4.1  将下列十进制数转换成8421BCD码。

    (1) 43;           (3) 254.25。

什么是 BCD 吗?回顾一下!正式进入第二章的学习了,依旧是各种逻辑运算,不过会引入一种新的编程语言!学习新知识是不是会有兴奋的感觉吗?

第二章 逻辑代数与硬件描述语言概述

2.3章节最实用,学好了肯定能为你找工作添砖加瓦!可惜很多老师不上此节内容,为何?考试不考,学生也就懒得学!在我这呢?一定要教!

再看教学要求!

1、掌握逻辑代数常用基本定律、恒等式和规则;

2、掌握逻辑函数的基本表达式及相互转换,代数化简方法;

3、掌握逻辑函数最小项定义及性质,卡诺图化简法;

4、了解硬件描述语言Verilog HDL;

与高中数学知识有差异的地方要多注意!

这些规则的掌握唯有靠硬性做题来完成!

最小项的定义!

下面两个小节知识很重要,经常考到!

2.2.3 用卡诺图表示逻辑函数

逻辑相邻的最小项可以合并。去掉的是不同的,保留的是相同的。

注:函数卡诺图中0可以不填。

2.2.4 用卡诺图化简逻辑函数

2个相邻最小项合并,消去1个变量!4个相邻最小项合并,消去2个变量!8个相邻最小项合并,消去3个变量!

步骤要清楚!

原则要记住!

3. 含无关项的逻辑函数化简

在某些实际问题中,由于输入变量间存在相互制约或问题的某些特殊限定等,使得输入变量的某些取值根本不会出现,或者虽然可能出现,但在这些输入取值组合下函数的值是为1还是为0并不关心。通常把这类问题称为包含无关条件的逻辑问题。在这种情况下,真值表内对应于变量的某些取值下,函数的值可以是任意的,这些变量取值所对应的最小项称为无关项或任意项。在含有无关项逻辑函数的卡诺图化简中,它的值可以取0或取1,具体取什么值,可以根据使函数尽量得到简化而定。

实用知识也是需要实践的知识来了!

超级有用!

在半导体芯片制造过程中,光刻机并非唯一的核心设备,芯片设计环节的EDA软件也是核心设备之一。据了解,EDA软件是广义CAD (电脑辅助设计) 的一种。而EDA 软体涵盖IC设计、布线、验证和模拟等全方位工具,同时也是积体电路设计必需,且最重要的软体。利用EDA软件工具,使IC设计人员可以从概念、演算法、协定等开始设计电子系统,并从电路设计、性能分析到设计出IC布局或PCB布局的整个过程。说得直白一些,如果把芯片制造比作建造一座大厦的话,IC设计就是大厦的设计图纸,EDA软件就是这张图纸的设计工具,重要性可见而知!!!对于集成电路产业而言,EDA软件相当于芯片设计方案与半导体物理世界的纽带,被称之为“芯片之母”,其重要性一点也不亚于光刻机。你如果以后想进入芯片领域,不会这个能行吗?

当我们使用HDL代码描述硬件功能的时候,主要有三种基本描述方式,即结构化描述方式、数据流描述方式行为级描述方式

  • 结构化描述方式

结构化描述方式是最原始的描述方式,是抽象级别最低的描述方式,但同时也是最接近于实际的硬件结构的描述方式。结构化的描述方式,思路就像在面包板上搭建数字电路一样,唯一的不同点就是我们通过HDL的形式来描述数字电路都需要哪些元器件以及它们之间的连接关系是怎么样的罢了。

  • 数据流描述方式

数据流描述方式要比结构化描述方式的抽象级别高一些,因为它不再需要清晰的刻画出具体的数字电路架构,而是可以比较直观的表达底层逻辑的行为。

  • 行为级描述方式

与前面两种描述方式比起来,行为级描述方式的抽象级别最高,概括力也最强,因此规模稍大些的设计,往往都以行为级描述方式为主。该方式会使用过程块语句结构。过程块是行为模型的基础。

过程块有两种:initial块,只能执行一次;always块,循环执行。

过程块中有下列部件。过程赋值语句:在描述过程块中的数据流。高级结构(循环,条件语句):描述块的功能。时序控制:控制块的执行及块中的语句。

initial语句与always语句和begin_end与fork_join是一种高频搭配。

仿真推荐使用ModelSim!

ModelSim SE 2020是西门子旗下的一款优秀HDL语言仿真软件,它提供最友好的调试环境,是唯一的单内核支持VHDL和Verilog混合仿真的仿真器。该软件还拥有最友好的调试环境,采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真,并且具有个性化的图形界面和用户接口,能够为用户加快调试提供强有力的手段。除此之外,这款软件全面支持VHDL和Verilog语言的IEEE 标准,支持C/C++功能调用和调试,提供完整的仿真过程,从创建工作库到编译设计,以及加载仿真器到运行仿真和调试结果等,可以很好地满足程序员们的使用需求,大大提高了工作效率。
ModelSim SE 2020.4还进行了全面升级和优化,提供全面完善以及高性能的验证功能,全面支持业界广泛的标准。集成了性能分析、波形比较、代码覆盖、数据流ChaseX、虚拟对象Virtual Object等众多调试功能。能够很好的帮助你改正错误,有效的解决问题,节省大量时间,提高工作效率,是作FPGA、ASIC设计的RTL级和门级电路仿真的首选。

点否后也能安装完成!

但是无法启动软件,郁闷了!

点击“是”也不能正确运行!于是再次上互联网找帮助!

仔细看完这篇文章后,才知道如何打补丁!然后呢?

正常使用了哦!打补丁的过程有点复杂!

按照说明一步一步的操作即可!中间需要修改环境变量哦,这可是涉及计算机的硬件知识了哦!

如何使用ModelSim!

ModelSim 是一种功能强大的硬件描述语言 (HDL) 仿真和验证工具,广泛应用于数字电路设计和验证领域。它支持多种常用的硬件描述语言,如VHDL和Verilog,并提供了丰富的仿真、调试和波形查看功能。下面详细介绍一下 ModelSim 的使用。

1. 安装和设置

在开始使用 ModelSim 之前,首先需要进行安装。安装包可以从Mentor Graphics官方网站上下载。安装完成后,需要进行一些设置,包括配置环境变量和选择默认的编辑器。这些设置可以通过修改 ModelSim 的配置文件来完成。

2. 创建工程

在 ModelSim 中,工程是组织和管理设计文件的基本单位。可以通过以下步骤创建一个新的工程:

a. 打开 ModelSim,并选择 "File -> New -> Project"。

b. 在弹出的对话框中输入工程的名称和存储路径,然后点击 "OK"。

c. 然后可以选择要添加到工程中的源文件和其他文件。

3. 编写代码

在 ModelSim 中,可以使用 VHDL 或 Verilog 编写设计代码。可以使用 ModelSim 的内置编辑器,也可以使用其他喜欢的编辑器编写代码。在编写代码时,应注意使用合适的语法和规范,以确保代码的正确性和可读性。

本人习惯用Verilog,现在这是主流!为什么会习惯呢?Verilog的句法根源出自C语言,易学易用!一起将课本中的2.3.1的例程写入文件中吧!

回顾基础内容!

需要了解基本的语法知识!

有C语言的基础学起来非常快!

4. 添加测试文件

在进行仿真之前,需要编写测试文件来验证设计的功能。测试文件可以使用 VHDL 或 Verilog 编写。在添加测试文件到工程时,需要使用合适的文件扩展名,并将其添加到工程中。

5. 设置仿真参数

在进行仿真之前,可以设置一些仿真相关的参数,如仿真时长、时钟频率等。可以通过在 ModelSim 中选择 "Simulate -> Edit -> Run Options" 来打开 "Simulation Run-Time Options" 对话框,然后进行相应的设置。

6. 进行仿真

完成工程和测试文件的准备后,可以开始进行仿真。可以通过以下步骤进行仿真:

a. 选择 "Simulate -> Start Simulation",或使用快捷键 F5,以启动仿真过程。

b. 仿真过程将会执行测试文件中的测试案例,并生成波形文件。

c. 在仿真过程中,可以使用 ModelSim 提供的调试功能,如设置断点、单步执行、变量监视等。

7. 查看波形

在仿真完成后,可以打开生成的波形文件,以查看设计的时序波形。可以通过选择 "Wave -> Add Wave" 来添加波形,然后选择要查看的波形信号。可以使用波形窗口提供的工具,如波形放大、缩小、平移等来调整波形显示。

8. 进行调试

如果在仿真过程中发现问题,可以使用 ModelSim 提供的调试功能进行排错。可以设置断点来暂停仿真过程,然后使用单步执行功能逐步检查代码的执行情况。还可以查看信号的值、监视变量的变化等。

9. 分析仿真结果

在进行仿真过程中,可以分析仿真结果,评估设计的性能和正确性。可以检查波形是否符合预期,查找异常情况,并对设计进行调整和优化。

10. 导出报告

完成仿真和分析后,可以导出仿真报告,以记录仿真过程和结果。可以选择 "File -> Export -> Report",然后选择相应的导出格式。

这是一个简要的 ModelSim 使用详解,希望同学们能跟着来一遍!

详细说明!

如何进行二选一数据选择器的设计与仿真?

一定要搞明白缩写系列:
mux为multiplexer的缩写,multiplexer:指多路复用器。

是从两个或多个源(2的次方)到一单个信道。与数据选择器的概念一致。

设计解读

//file name: mux2to1.v
module mux2to1(
input D0, //输入信号 D0
input D1, //输入信号 D1
input S, //输入选择信号 S
output reg Y //输出信号 Y
);
/*电路功能描述
1.(*)表示 always 块中所有输入信号都是敏感信号
2.Y 必须定义成 reg 型
*/

//Y:2 选 1 数据选择器输出数据
always @(*)begin
//or: always @(D0 or D1 or S)
if(S == 1'b1)//or: if (S) Y = D1;
Y = D1;
else
Y = D0;
end

endmodule


  • module是定义模块开始的关键词,以endmodule结束

  • input与output说明端口类型(信号流方向)

  • 端口数据类型默认为wire

    • 线网型:包括wire/wor/supply1/supply0/…

    • 寄存器类型:包括reg/integer/real(time)/time

  • 过程块语句结构包括initial和always两种

    • 过程赋值语句只能给寄存器类型(包含reg)变量赋值,因此有上程序中提到的必须将输出Y设为reg类型


仿真解读!

//file name:tb_mux2to1.v
`timescale 1ns/1ns //时间单位为 1ns,精确度为 1ns
module tb_mux2to1; //激励模块(顶层模块)没有端口列表
reg D0, D1, S; //声明输入信号
wire Y; //声明输出信号
//2选1数据选择器模块例化
mux2to1 mux2to1_inst(
.D0(D0),
.D1(D1),
.S(S),
.Y(Y)
);
initial
//打印到输出界面
$monitor($time,":\tS=%b,D0=%b,D1=%b,Y=%b\n",S,D0,D1,Y);
initial begin
//初始化
S = 0; D1 = 0; D0 = 0;
#1
S = 0; D1 = 0; D0 = 1;
#1
S = 0; D1 = 1; D0 = 0;
#1
S = 0; D1 = 1; D0 = 1;
#1
S = 1; D1 = 0; D0 = 0;
#1
S = 1; D1 = 0; D0 = 1;
#1
S = 1; D1 = 1; D0 = 0;
#1
S = 1; D1 = 1; D0 = 1;
#1
S = 0; D1 = 0; D0 = 0;
#1
$stop;
end
endmodule

  • 信号类型

    • 输入用reg:保持输入信号不变

    • 输出用wire:随时监测输出信号的变化

  • 时间线

    • #1代表延时1s

    • `timescale 1ns/1ns为编译器语句,进行仿真的总设置

    • initial代表从初始时间0s开始,每个initial语句段平行

  • 交互语句

    • $stop;停止仿真不退出,可以继续run

    • $finish;退出仿真

    • $monitor()编译器窗口输出内容

    • $time执行语句当前时间

强烈建议同学们学好verilog语言,这是找工作的好帮手!完,待续!


修订记录

20240130 完成初稿;

20240320 修订内容;

来源:通信工程师专辑
电路半导体电子芯片控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-03-23
最近编辑:7月前
算法工匠
博士后 | 高级工程师 诚信做事 认真讲课 传播知识
获赞 395粉丝 2577文章 320课程 40
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈