【数字电子技术】2 逻辑代数与硬件描述语言基础

2.逻辑代数与硬件描述语言基础

2.1 逻辑代数的基本定理和规则

①逻辑代数

布尔代数

②逻辑关系

条件与结果之间的因果关系

输入信号:条件

输出信号:结果

逻辑变量:字母,可以取值1或0

①0、1律:与1和0的加或乘

②互补律:反事件的加或乘

③交换律:加或乘的交换

④结合律:加或乘的交换

⑤分配律:乘法括号的拆分,\mathbf{A} \times \mathbf{A}还是A,也就是下面的重叠率

注意反过来的使用

⑥重叠律:

原则就是把所有情况列举还是成立,并且如果两个1相加还是1

A\overline{A}=0

反演律(摩根定律)

乘法拆解为加法,加法拆解为乘法

这里可以把多个逻辑值的和看作一个逻辑值

⑦吸收律

让B根据A的真假决定输出结果,先拆开,再结合吸收律

这里只是等号成立,根据全面计算得到,并且只能取1和0

拆开后使用吸收律

这里的多个字母相加,因为最后结果不会超过1,所以成立

创造结合律

⑧恒等式

使用真值表证明

完全归纳法

吸收律

运算举例说明

①代入规则

使用事件代入事件

配合其他运算律

②反演规则

注意与反演律区分,是整个式子的结果改变

加变成乘,正变成反

1、注意优先级

先与后或

2、非变量以外的非号保持不变

非符号只改变一次,超过一次的非符号不改变

③对偶规则

对偶式

加法和乘法互换,1和0互换,其他不变

恒等式成立,对偶式也成立

注意与反演区分,这里没有改变逻辑变量本身及其位置保持不变

④香农展开定理

逻辑变量提取,反对应0,正对应1,对应补上

可以减少复杂度

2.2 逻辑函数表达式的形式

①与-或表达式

多个”与“用”或“连接

A-B表达式

多个A用B连接

②或-与表达式

多个“或”用”与“连接

包括没有加号的与

①最小项

多个逻辑变量可以表示的事件的最大数目

所有逻辑变量只出现一次

全是与连接

②最小项性质

1、只有一个组合值为1

2、任意两个最小项相乘为0

3、全体最小项和为1

③最小项的编号

下标0表示全是非的

④最小项表达式

最小项:每个变量以原变量或非变量出现在乘积式中,且只出现1次

全是最小项

标准与-或式

使用编号表示(根据表格)

任何一个逻辑函数都能变换成唯一的最小项表达式

序号使用换成二进制的1和0表示

运算举例说明

①最大项

最大项表达式:每个变量以原变量或非变量出现在加法式中,且只出现1次

全是或连接

逻辑变量只出现一次

逻辑带量这里正变量对应1

M后的序号使用二进制计算

②最大项性质

1、只有一组值为0

2、任意两组的和为1

3、全体乘积为0

③最大项与最小项关系

是互补关系

任意一个逻辑函数经过变换,都能表示成唯一的最大项表达式

凑出形式

使用累乘表示

运算例子

①真值表化为最小项

观察L=1的部分累加

非假即真

满足1个真的条件就是真

只要满足1个真的条件就是真

②真值表化为最大项

观察L=0的部分累乘

非真既假

必须满足所有假的条件才是假

同时不满足所有假的条件才是真

在这里越加越大,越乘越小

2.3 逻辑函数的代数化简法

减少门

实现相同功能

2.3.1 逻辑函数的最简形式

取相反的相反条件不变

最简与-或表达式:每个与项中包含最少的变量数

2.3.2 逻辑函数的代数化简法

代数法:运用逻辑代数的基本定律和恒等式进行化简的方法

①并项法

是和非一定有一个发生

②吸收法

A和A乘积可以同时保持真、非

假设主要事件A的1或0

③消去法

把AB看作1个事件

加法的非事件有B,

④配项法

配出一个“1”,也就是A + \overline{A},再配合分配率

2、逻辑函数形式的变化

变换:

一片集成电路芯片只有一种门电路

减少门电路的种类

化去\overline{D}

与非门后面需要写上\overline{A+B}

全化为与非的形式,可以1个信号通过1个门转换为非事件

2.4 逻辑辑函数的卡诺图化简法

代数化简法困难

1、逻辑代数与普通代数公式

2、经验与灵活性

3、技巧性强

2.4.1 用卡诺图表示逻辑函数

卡诺图

n变量的全部最小项用小方块表示

几何位置

n变量的卡诺图

逻辑相邻的最小项:2个只有1个变量互为反变量的最小项

上下左右再几何上相邻的反方块内只有1个因子差异

原原非:对应110

对应的小方格填上1,没有的最小项填0或者空格

1234
5678
9101112
13141516

举例说明

2.4.2 用卡诺图化简逻辑函数

靠近的最小项都可以合并为“1”:存在原事件与非事件

化简步骤

①逻辑函数写成最小项表达式

②填入卡诺图

③合并最小项,画包围圈,每组2^{n}个方格,写成新的乘积,使用虚线

④乘积项相加

折叠展开

①新增加的方格按展开方向应标以新变量

②方格编号加上2^{n-1}

遵循原则

①方格2^{n}个

②上下底、左右边、四角相邻

③同一个方格可以被不同包围圈重复包围,新增包围圈一定要有未包围方格

④1个包围圈方格尽可能多,包围圈数目尽可能少

举例说明

总的矩形四角也是属于相邻的

简明起见,非变量不标出

二进制的四宫格

最小项表示二进制最小项表示二进制最小项表示二进制最小项表示二进制
\overline{A}\overline{B}\overline{C}\overline{D}0000\overline{A}\overline{B}\overline{C}D0001\overline{A}\overline{B}C\overline{D}0010\overline{A}\overline{B}CD0011
\overline{A}B\overline{C}\overline{D}0100\overline{A}B\overline{C}D0101\overline{A}BC\overline{D}0110\overline{A}BCD0111
A\overline{B}\overline{C}\overline{D}1000A\overline{B}\overline{C}D1001A\overline{B}C\overline{D}1010A\overline{B}CD1011
AB\overline{C}\overline{D}1100AB\overline{C}D1101ABC\overline{D}1110ABCD1111

可以表示原事件也可以表示非事件

无关项的化简

约束项:不应该出现的最小项

例如8421BCD码的1010

无关项(任意项、约束项):函数值取1或0的最小项

举例说明

无关项打×

d表示无关项

可以利用无关项化简,因为无关项的取值随意

2.5 硬件描述语言Verilog HDL基础

硬件描述语言

HDL

表示逻辑功能

逻辑仿真:文本形式

逻辑综合:高级程序语言,门级网表

2.5.1 VerilogHDL的基本结构

模块:简单的门电路,或功能复杂的数字电路

①关键词开始、结束

②端口定义、输入输出说明、模块功能描述

inout:双向端口

③个别语句不用分号

④注释

⑤3种不同风格

结构描述方式:调用已定义过的层次较低的子模块、基本门级元件

数据流描述方式:连续赋值

行为描述方式:使用过程块语句结构

语法结构

说明部分

逻辑描述部分

 modmle 模块名(端口名1,端口名2,端口名3,··)
     端口类型说明(imnput, outout, inout);
     参数定义(可选);
     数据类型定义(wire,reg等);
     
     实例化低层模块和基本门级元件;
     连续赋值语句(assign);
     过程块结构(initial和always)
         行为描述语句;
 endmodule

例子说明

①模块名

②端口类型说明

输入、输出信号

③数据类型说明

内部节点信号数据类型

④电路结构描述

与或非

 module mux2to1(D0, D1, S, Y );
   input D0, D1, S;  //定义输入信号
   output Y;    //定义输出信号
   wire Snot, A, B ; //定义内部节点信号数据类型
 //下面对电路的逻辑功能进行描述
   not U1(Snot, S); 
   and U2(A, D0, Snot);
   and U3(B, D1, S);
   or U4(Y, A, B);
 endmodule                       
 ​

数据类型说明

电路功能描述

assign语句,变量必须是wire型(连线类型)

2选1数据选择器

数据流描述方式

 module mux2to1_df(
   input D0, D1, S, 
   output wire Y
  );
  
 //电路功能描述
   assign Y = (~S & D0) | (S & D1); //表达式左边Y必须是wire型
 endmodule                       
 ​

逻辑综合:逻辑关系转换为连接关系表

逻辑图

2.5.2 逻辑功能的仿真与测试

测试逻辑功能是否正确

搭建测试平台

激励块

①设计块

②激励信号

③测试结果的显示格式

①系统任务

②输出到屏幕

③二进制格式

④水平制表符

⑤返回仿真时间

⑥停止仿真

激励块代码

 //文件名:test_mux2to1_df.v
 `timescale 1ns/1ns               //时间单位为 1 ns,精确度为 1ns
 module test_mux2to1_df;     //激励块,没有端口列表
     reg PD0, PD1, PS;        //声明输入信号
     wire PY;                        //声明输出信号
  
 //实例引用设计块
 mux2to1_df  t_mux (PD0, PD1, PS, PY);   //按照端口位置连接
  initial begin                        //激励信号
         PS = 0; PD1 = 0; PD0 = 0;     //语句1
     #5  PS = 0; PD1 = 0; PD0 = 1;     //语句2(#5 代表延迟 5 ns)
     #5  PS = 0; PD1 = 1; PD0 = 0;     //语句3
               ….(这里省略了语句4-8,写完整)
     #5  PS = 0; PD1 = 0; PD0 = 0;     //语句9
     #5  $stop;                               //语句10
 endmodule
      
 initial begin   //输出部分
       $monitor($time, ":\tS = %b\tD1 = %b\tD0 = %b\tY = %b",PS,PD1,PD0,PY);
     end
 endmodule
 ​
 ​

测试步骤

2.5.3 基本语法规则

建模:使用1个或多个模块对数字电路进行描述,不同模块使用端口连接

语法结构

1、间隔符

分隔文本

2、注释符

单行注释符

多行注释符

3、标识符合关键词

标识符

关键词

4、逻辑值集合

基本逻辑值

5、常量及其表示

①整数型:

<+/-><位宽>’<基数符号><数值>

②实数型常量

符号常量

1个标识符代表1个常量

 parameter 参数名1=常量表达式1,参数名2=常量表达式2,…;

6、字符串

双撇号内的字符序列

2.5.4 数据类型

1、线圈类型

线圈类型:输出始终跟随输入的变化而更新其值的变量

wire型变量的定义格式如下:

 wire [n-1:0] 变量名1,变量名2,…,变量名n;
 ​
 ​
 wire L;  //将上述电路的输出信号L声明为网络型变量
 wire [7:0] data bus; //声明8-bit宽的网络型总线变量
 ​

2、变量类型

变量类型:寄存器型,具有状态保持作用的电路元件

4种变量类型:抽象描述,不对应具体硬件

逻辑值变量

32位带符号整数型变量

64位带符号实数型变量

64位无符号时间变量

触发器寄存器:只能在initial或always内部被赋值

 reg clock;//定义一个1位寄存器变量
 reg [3:0] counter; //定义一个4位寄存器变量

2.5.5 运算符及其优先级

1、运算符

算术运算符

位运算符

逻辑运算符

位拼接运算符

  • 将两个或多个信号的某些位拼接起来成为一个新的操作数,进行运算操作

    可以直接连接或者特定位

    使用双重大括号实现重复拼接

  • 数字的表达形式通常是[位宽]'[进制符号][数值]

位运算符与缩微运算的比较

缩位运算:直接

2、运算符的优先级

从下到上越来越优先

高优先级

低优先级

取反>算术>移位>移位>关系>等于>缩位>逻辑>条件

条件运算符

 condition_expr?expr1:expr2;
 ​

计算结果再返回

第一个操作数

逻辑1选择第二个操作数

逻辑0选择第三个操作数

2.5.6 Verilog内部的基本门级元件

三态门、多输出门、多输入门

门级建模

1、多输入门

 and  A1(out,in1,in2,in3); 
 ​

只允许1个输出,允许多个输入

不确定状态x:相当于高电平

高阻态z:相当于低电平

①与真值表

②或运算真值表

③异或运算真值表

2、多输出门

 not  N1(out1,out2,…,in);
 buf  B1(out1,out2,…,in);
 ​

允许多个输出,只允许1个输入

非运算真值表

buf:通常指 缓冲器(Buffer),是一种基本的逻辑门。其真值表非常简单,因为它的输出与输入完全相同,不会改变逻辑状态。

3、三态门

1个输出1个输入1个输入控制

输入控制信号无效则输出为高阻态

bufif1真值表

notif1真值表:带使能控制的反相器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值