数字逻辑基础

        数字逻辑,是处理数字信号的逻辑,数字电路运作的原理;实质上是指基于二进制数学或布尔代数的逻辑。

        数字逻辑主要学数制和编码、逻辑代数基础、组合逻辑电路的分析与设计、同步时序逻辑电路分析、异步时序逻辑电路的分析与设计、可编程逻辑器件PLD、数字系统设计等

        数字逻辑是数字电路逻辑设计的简称,其内容是应用数字电路进行数字系统逻辑设计。电子数字计算机是由具有各种逻辑功能的逻辑部件组成的,这些逻辑部件按其结构可分为组合逻辑电路和时序逻辑电路。

        组合逻辑电路是由与门、或门和非门等门电路组合形成的逻辑电路;时序逻辑电路是由触发器和门电路组成的具有记忆能力的逻辑电路。有了组合逻辑电路和时序逻辑电路,再进行合理的设计和安排,就可以表示和实现布尔代数的基本运算。

 

研究内容

        主要用以研究有两个离散状态的开关器件所构成的数字电路。能对电路的输入与输出之间的关系提供理想描述,研究这种描述的特性和电路的实现,并探讨将数字电路或数字模块互连起来完成特定逻辑功能的理论和方法。具有两个或多个离散状态的开关器件或单元是:可断开和闭合的开关或继电器的触点;能正偏和反偏的整流二极管;能饱和和截止的开关电子管或开关晶体管;能在两个饱和方向中任意一个方向上磁化的磁心。具有二个离散状态的开关器件是最常见的。数字逻辑不考虑特殊条件下动作或稳定的物理现象和从一个状态过渡到另一个状态的细节。


数字逻辑
        数字逻辑的部分理论建立在数理逻辑,特别是布尔代数和时序机的理论基础上。
数字逻辑可分为组合逻辑和时序逻辑。在一个逻辑系统中,输出结果仅取决于当前各输入值的称组合逻辑;输出结果既由当前各输入值,又由过去的输入值来决定的称时序逻辑。组合逻辑不包含存储元件,时序逻辑至少包含一个存储元件。
        数字逻辑的应用范围极广,日常生活的决策过程是组合逻辑的典型例子。电话号码的拨号和号码锁的开启过程,则是时序逻辑的典型例子。数字逻辑在数字电路设计中有广泛的用途。


组合逻辑
        组合逻辑的输出由其输入确定的法则,通常称为开关函数。因为变量是离散的,一个开关函数可以用表格形式的真值表来表示,也可以用各种图来表示。如果函数和变量是二进制的,符号“1”和“0”通常用来表示这两个值。这样的函数能用二元布尔代数表达式来描述,称开关函数。开关函数的二个数值,可以对应开和关,或继电器触点的闭合和开启;可以对应电子电路电压的高与低,或正和负;也可以对应逻辑真和假。
        最简单的开关函数是“非“函数、“与“函数和“或“函数。“非”函数表示为布尔非:Y=,意即X为假,Y为真。“与”函数表示为布尔乘:Z=X·Y,意即仅当X·Y皆真,Z才真。“或”函数表示为布尔加:Z=X+Y,意即X或Y中任意一个为真,Z即为真。若用“1”表示逻辑“真”,“0”表示逻辑“假”,上述三个基本开关函数符合如下布尔代数法则:
=1 0·0=0 0+0=0
=0 0·1=0 0+1=1
1·0=0  1+0=1
1·1=1  1+1=1
        将这些基本逻辑单元加以组合,可以构成其他所有组合逻辑。这种逻辑可以根据输入变量的真、假组合来确定输出的真、假。因此,组合逻辑是一种决策逻辑,它可能十分简单,也可能异常复杂。这些决策是需要某些逻辑数学方面的知识,也需要使用某些工具,如真值表、布尔代数、符号逻辑和波形等。

可以看一下这篇文章:

数字逻辑复习总结(超全!内含例题!)_叶乌虎的博客-CSDN博客_数字逻辑

 

 

4 位计数器的仿真程序

`timescale 1ns/1ns
`include "count4.v"
module coun4_tp;
reg clk,reset; //测试输入信号定义为 reg 型
wire[3:0] out; //测试输出信号定义为 wire 型
parameter DELY=100;
count4 mycount(out,reset,clk); //调用测试对象
always #(DELY/2) clk = ~clk; //产生时钟波形
initial
begin //激励信号定义
clk =0; reset=0;
#DELY reset=1;
#DELY reset=0;
#(DELY*20) $finish;
end
//定义结果显示格式
initial $monitor($time,,,"clk=%d reset=%d out=%d", clk, reset,out);
endmodule

用 always 过程语句描述的简单算术逻辑单元

`define add 3'd0
`define minus 3'd1
`define band 3'd2
`define bor 3'd3
`define bnot 3'd4
程序文本
- 4 -
module alu(out,opcode,a,b);
output[7:0] out;
reg[7:0] out;
input[2:0] opcode; //操作码
input[7:0] a,b; //操作数
always@(opcode or a or b) //电平敏感的 always 块
begin
case(opcode)
`add: out = a+b; //加操作
`minus: out = a-b; //减操作
`band: out = a&b; //求与
`bor: out = a|b; //求或
`bnot: out=~a; //求反
default: out=8'hx; //未收到指令时,输出任意态
endcase
end
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值