📜  门| GATE CS 2008 |第81章(1)

📅  最后修改于: 2023-12-03 15:28:37.358000             🧑  作者: Mango

门 | GATE CS 2008 |第81章

本章主要介绍计算机组成原理中的门电路,包括基本门电路、组合逻辑电路、时序逻辑电路等。

基本门电路

常见的基本门电路包括与门、或门、非门、异或门等,它们可以通过逻辑电路的组合获得各种逻辑运算。

与门

与门的逻辑符号为“&”,当所有输入均为1时,输出为1,否则为0。与门也称为“与逻辑电路”。

真值表:
A | B | A & B
------------
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
或门

或门的逻辑符号为“|”,当任一输入为1时,输出为1,否则为0。或门也称为“或逻辑电路”。

真值表:
A | B | A | B
------------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
非门

非门的逻辑符号为“~”,用于对单独的输入进行取反操作。非门也称为“非逻辑电路”。

真值表:
A | ~A
------
0 | 1
1 | 0
异或门

异或门的逻辑符号为“^”,当两个输入相同时输出为0,不同时输出为1。异或门也称为“异或逻辑电路”。

真值表:
A | B | A ^ B
------------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
组合逻辑电路

组合逻辑电路由基本门电路组成,可以实现各种逻辑运算。

二进制加法器

二进制加法器可以将两个二进制数字进行加法运算,输出一个二进制数字。

代码片段:

```python
def binary_adder(a, b):
    # 逐位相加
    result = ""
    carry_in = '0'
    for i in range(len(a) - 1, -1, -1):
        sum_, carry_out = full_adder(a[i], b[i], carry_in)
        result = sum_ + result
        carry_in = carry_out
    if carry_in == '1':
        result = '1' + result
    return result

def full_adder(a, b, c):
    sum_ = xor_gate(xor_gate(a, b), c)
    carry_out = or_gate(and_gate(a, b), and_gate(xor_gate(a, b), c))
    return sum_, carry_out

def and_gate(a, b):
    if a == '1' and b == '1':
        return '1'
    else:
        return '0'

def or_gate(a, b):
    if a == '1' or b == '1':
        return '1'
    else:
        return '0'

def xor_gate(a, b):
    if a != b:
        return '1'
    else:
        return '0'

## 时序逻辑电路

时序逻辑电路包括时钟、触发器、计数器等组件,需要考虑输入信号的时间顺序。

### 触发器

触发器是一种存储设备,可以将输入信号的状态保存下来。常见的触发器类型包括SR触发器、D触发器、JK触发器等。

#### D触发器

D触发器可以将输入信号的状态作为输出,并在时钟信号到来时进行更新。

```markdown
代码片段:

```python
class DFlipFlop:
    def __init__(self):
        self.q = '0'
    
    def clock(self, d, clock):
        if clock == '1':
            self.q = d
    
    def output(self):
        return self.q

## 总结

本章介绍了计算机组成原理中的门电路,包括基本门电路、组合逻辑电路和时序逻辑电路等。掌握这些基础知识可以帮助程序员更好地理解计算机底层原理,为后续学习打下坚实的基础。