View on GitHub

ITMO-PE

My study notes about Program Engineering at University ITMO

Архитектура компьютера

Лекция 5

Цифровая схемотехника. Параллелизм уровня бит. Особенности производства аппаратуры 数字电路。 位级并行。 设备生产特点

Пенской А.В., 2022


План лекции


Цифровая элементная база.
Булев базис.
(продолжение) 数字元素库。
布尔基础。

Двоичное кодирование. (было) 二进制编码。(曾是)


Комбинационные схемы 组合电路

Комбинационная схема – схема, составленная из набора логических элементов, в совокупности реализующая заданную таблицу истинности.
组合电路是由一组逻辑元件组成的电路,这些逻辑元件一起实现给定的真值表。


Функциональные возможности и построение 功能与构造

Функция – отображение множества $A$ на множество $B$.
该函数是从集合 $A$ 到集合 $B$ 的映射。

Если $A$ и $B$ конечны (представимы в виде конечной последовательности битов), тогда возможно построить эквивалентную комбинационную схему.
如果 $A$ 和 $B$ 是有限的(可表示为有限的位序列),则可以构造等效的组合电路。

Способы построения: 施工方法:

Offtopic: очень похоже на логарифмическую линейку и арифмометр.
题外话:与计算尺和加法机非常相似。


Через таблицу истинности

  1. Формирование таблицы истинности.
    真值表的形成。
  2. Запись таблицы истинности в ДНФ или КНФ (прямо отображается в комбинационную схему).
    记录DNF或CNF中的真值表(直接映射到组合电路)
  3. Минимизация (сокращаем размер схемы).
    最小化(减小电路尺寸)

Подробнее см. курс дискретной математики Полякова: ККНФ и КДНФ, минимизация булевых функций, метод Петрика, карты Карно и т.п.
更多详情请参见 Polyakov 的离散数学课程:CCNF 和 CDNF、布尔函数的最小化、Petrik 方法、卡诺图等。


Определение номера сигнала (3-to-2) 确定信号数量(3对2)
Таблица истинности 真值表
$x_3$ $x_2$ $x_1$ $y_2$ $y_1$ $y$
0 0 1 0 1 (1)
0 1 0 1 0 (2)
1 0 0 1 1 (3)
КДНФ

$y_2 = \overline{x_3} x_2 \overline{x_1} \vee x_3 \overline{x_2} \overline{x_1}$

$y_1 = \overline{x_3} \overline{x_2} x_1 \vee x_3 \overline{x_2} \overline{x_1}$

Минимизированная функция 最小化函数

$y_2 = \overline{x_1}$

$y_1 = \overline{x_2}$

(4 to 2 encoder)


Через логику работы 通过工作逻辑

Схема строится на основе понимания функции, взаимосвязи входа и выхода. Творческий процесс. Схема может быть каскадной.
该电路是建立在对功能以及输入和输出之间的关系的理解的基础上的。 创作过程。 该方案可以级联。

Полный сумматор (1-bit): 全加器(1 位):

Каскадный сумматор: 级联加法器:


Процесс каскадного сумматора 级联加法器过程

   C0 ________________________ (0)
           ___________________ (1)
   A0 ____/                    (0)
           ___________________ (1)
   B0 ____/                    (0)
   S0 ________________________ (0)

                ______________ (1)
   C1 _________/               (0)
           ___________________ (1)
   A1 ____/                    (0)
   B1 ________________________ (0)
                ____
   S0 _________/    \_________ (0)

                     _________ (1)
   C2 ______________/          (0)
   A2 ________________________ (0)
   B2 ________________________ (0)
                          ____ (1)
   S2 ___________________/     (0)


   ----------- time ------------->

Свойства комбинационных схем

   C0 ________________________ (0)
           ___________________ (1)
   A0 ____/                    (0)
           ___________________ (1)
   B0 ____/                    (0)
   S0 ________________________ (0)

                ______________ (1)
   C1 _________/               (0)
           ___________________ (1)
   A1 ____/                    (0)
   B1 ________________________ (0)
                ____
   S0 _________/    \_________ (0)

                     _________ (1)
   C2 ______________/          (0)
   A2 ________________________ (0)
   B2 ________________________ (0)
                          ____ (1)
   S2 ___________________/     (0)


   ----------- time ------------->

Реальная ситуация с двоичным кодированием 二进制编码的真实情况

Вы ведь не думаете, что это на самом деле два состояния?
你不认为这实际上是两种状态,对吗?


Заимствовано из стандарта для языка описания цифровых схем Verilog.
借用 Verilog 数字电路描述语言标准。

- `x` -- неизвестно, значение может быть произвольным, т.к. таблица истинности задана частично. Примеры: `x` -- 未知,该值可以是任意的,因为 真值表已部分指定。 例子: - деление на `0`; 除以“0” - квадратный корень из отрицательного числа; 负数的平方根 - пример "Определение номера сигнала (3-to-2)" выше. 上面的示例“确定信号编号(3 到 2)”


Состояние в комбинационной схеме 组合电路中的状态

Триггер – класс электронных устройств, обладающих способностью длительно находиться в одном из двух устойчивых состояний и чередовать их под воздействием внешних сигналов.
触发器是一类电子设备,能够长时间保持两种稳定状态之一,并在外部信号的影响下交替使用。

Триггер позволяет:
触发器允许您:

_Логическая схема с состоянием_


Виды триггеров


RS-триггер

Асинхронный триггер, который сохраняет своё предыдущее состояние при неактивном состоянии обоих входов и изменяет своё состояние при подаче на один из его входов активного уровня.
一种异步触发器,当两个输入均无效时,它会保留其先前的状态,而当对其中一个输入施加有效电平时,会更改其状态。

S R Q(t) NQ(t)
0 1 0 1
1 0 1 0
0 0 Q(t-1) NQ(t-1)
1 1 0 0

RS-триггер на реле

 L1                      L2
 o                       o
 |                       |
 +---+---[ ]---+---(\)---+
 |   |   R     |   Q     |
 |   |         |         |
 |   +---[ ]---+         |
 |       NQ              |
 |                       |
 |   +---[ ]---+         |
 |   |   Q     |         |
 |   |         |         |
 +---+---[ ]---+---(\)---+
 |       S         NQ    |
 |                       |

S=1; R=0. 1


S=1; R=0. 2


S=1; R=0. 3


S=1; R=0. 4


S=0; R=1. 1


S=0; R=1. 2


S=0; R=0; Q=1; NQ=0. 1


S=0; R=0; Q=1; NQ=0. 2


Состояния позволяют



Условный оператор в схемотехнике

Схемотехника не может не работать.
电路不能失效。

Подходы к реализации:
实施办法:

_Мультиплексор (Wikipedia)_


assign A = f1(...);
assign B = f2(...);

always @(posedge clock) 
    begin
        if (addr == 0)
            // Q < = A
            Q <= A;
        else
            Q <= B;
end

Схема 方案

a = f1(...)
b = f2(...)

if addr == 0:
    q = a;
else:
    q = b

О пользе ленивых вычислений 关于惰性求值的好处

if addr == 0:
    q = f1(...)
else:
    q = f2(...)

ПО


Пример схемы с состоянием

                     +--------------+  addr   +--------+
               +---->| data_address |---+---->|  data  |
               |     +--------------+   |     | memory |
           +-------+                    |     |        |
 signal -->|  MUX  |         +----------+     |        |
 data      +-------+         |                |        |
 address    ^     ^          |                |        |
 sel        |     |          |                |        | mem_out
            |     +---(+1)---+                |        |-----+
            |                |                |        |     |
            +---------(-1)---+                |        |     |
                                              |        |     |
                                              +--------+     |
                                                             v
                                        signal_latch_acc  +--------------+
                                                  ------->| acc_internal |
                                                          +--------------+

Реализация схемы на Verilog

Интерфейс и инициализация
接口及初始化

module data_memory
  ( input wire clk

  , input wire signal_latch_data_address
  , input wire signal_data_address_sel
  , input wire signal_latch_acc

  , output wire  [7:0] acc
  );

reg [3:0] data_address;
reg [7:0] mem[15:0];
wire [7:0] mem_out;
reg [7:0] acc_internal;

// not a part of hardware
integer i;
initial begin
  data_address = 0;
  for (i = 0; i < 8; i = i+1)
    mem[i] = i[7:0];
end

Адресация
寻址

always @(posedge clk)
  if ( signal_latch_data_address )
    data_address <= 
      signal_data_address_sel
      ? data_address + 1
      : data_address - 1;

Чтение аккумулятора
读取 AC 寄存器

assign mem_out = mem[data_address];

always @(posedge clk)
  if ( signal_latch_acc )
    acc_internal <= mem_out;

assign acc = acc_internal;

endmodule

Схема с состоянием 有状态电路


Временная диаграмма схемы с состоянием 有状态电路时序图

// signal will establish after each clock signal
latch_data_address <= 0; data_address_sel <= 0; latch_acc <= 0; @(posedge clk);
repeat(2) @(posedge clk);

// addr to 3
latch_data_address <= 1; data_address_sel <= 1; latch_acc <= 0; @(posedge clk);
latch_data_address <= 1; data_address_sel <= 1; latch_acc <= 0; @(posedge clk);
latch_data_address <= 1; data_address_sel <= 1; latch_acc <= 0; @(posedge clk);

// latch acc
latch_data_address <= 0; data_address_sel <= 0; latch_acc <= 1; @(posedge clk);

// addr to 2
latch_data_address <= 1; data_address_sel <= 0; latch_acc <= 0; @(posedge clk);

// addr to 1 and latch acc at same time
latch_data_address <= 1; data_address_sel <= 0; latch_acc <= 1; @(posedge clk);

latch_data_address <= 0; data_address_sel <= 0; latch_acc <= 0; @(posedge clk);
repeat(2) @(posedge clk);

Ключевые отличия схемотехники от программирования 电路设计和编程之间的主要区别

  1. Все процессы между регистрами всегда происходят параллельно. Не читайте код как алгоритм, рисуйте схему.
  2. Нет понятия “система остановилась”. Она всегда работает, если есть питание.
  3. Передача сигнала – физический аналоговый процесс. Есть питание и контакт – есть передача.
  4. Таблица истинности неполна – результат будет случайным.

  1. 寄存器之间的所有进程始终并行发生。 不要把代码当成算法来读,画个图。
  2. 不存在“系统已停止”的概念。 只要有电源,它总是有效的。
  3. 信号传输是一个物理模拟过程。 有力量和接触——就有传输。
  4. 真值表不完整——结果是随机的。

Мы обсудили: 我们讨论过了:

Далее погружаемся в вопросы: 接下来我们深入探讨以下问题:


Особенности производства аппаратного обеспечения

Задача производства: превратить документацию в изделие
生产任务:将文档变成产品

Disclaimer:
免责声明


Навесной монтаж 壁挂式安装

Способ монтажа электронных схем, при котором расположенные на изолирующем шасси радиоэлементы соединяются друг с другом проводами или непосредственно выводами.
一种安装电子电路的方法,其中位于绝缘底盘上的无线电元件通过电线或直接通过引线相互连接。


Достоинства: 优点:

Недостатки: 缺陷:

На макетной плате: 在面包板上:


Монтаж на печатную плату

Печатная плата – пластина из диэлектрика, на поверхности и/или в объёме которой сформированы электропроводящие цепи электронной схемы. Электрическое и механическое соединение компонентов.
印刷电路板是由电介质制成的板,在其表面和/或体积内形成电子电路的导电电路。 部件的电气和机械连接。

Различают: 有:

Виды монтажа компонентов: 组件安装类型:


Поверхностный монтаж Surface-mount technology (SMD) 表面贴装技术 (SMD)

Fan-out Wafer-Level Packaging 扇出晶圆级封装

Notes: https://tech-e.ru/2011_02_4.php


Виды SMD компонентов SMD元件类型

Ball Grid Array (BGA) 球栅阵列 (BGA)


Встроенные компоненты


Достоинства: 优点:

Недостатки: 缺陷:

“Гибкость” печатных плат: 印刷电路板的“灵活性”: