Проектируем свой компьютер. 

А вы знаете как работает компьютер, начиная от базовых принципов физики и заканчивая операционными системами и современными языками программирования? Используя информацию с этого портала вы сможете почувствовать себя Стивеном Джобсом, собрав компьютер.

Логика процессора или как компьютер думает

by FPGA


Posted on вторник окт 18, 2016 at 01:59PM in Делаем свой процессор на FPGA


Удивительное дело, не смотря на то, что компьютеры решают очень сложные задачи, а некоторые еще и очень быстро, логика, которой компьютер пользуется, очень простая. Настолько простая, что ее можно построить использую всего один логический элемент - NAND!

Первое, что нужно запомнить, это то, что компьютер оперирует всего двумя сигналами, это 0 или 1. В реальности 0 означает, что напряжение на входе меньше какого-то значения. 1 - выше какого-то значения. Например для логики 5В сигнал от 3.5В до 5В считается логической единицей, а сигнал от 0В до 1.5В считается логическим нулем.

Давайте разберем базовые логические элементы, их представление и операции с ними. После этого построим более сложные составляющие процессора на основе элементарной логики.

А зачем нам несколько логических элементов, если хватит всего одного? Дело в том, что при проектировании более сложных элементов, удобнее пользоваться тремя - И, ИЛИ, НЕ. Любой из трех может быть построен на основе двух других. При этом любой из них может быть построен на основе NAND. Но наш мозг так устроен, что все же набор из трех элементов наиболее удобен в качестве базового.

Для того чтобы оперировать с логическими элементами (или функциями. как их еще называют) нам нужно, во-первых, их как-то определить, а во-вторых, определить базовые операции с ними.

Любую, даже самую сложную логическую функцию можно представить таблицей истинности. Столбцы слева это переменные функции, или входы логического элемента, а столбцы справа - значения функции или выходы логического элемента. Давайте посмотрим на таблицу истинности самого базового элемента - NAND:

Логический элемент NAND
 A  B  C
 0  0  1
 0  1  1
 1  0  1
 1  1  0

Из таблички видно, что на выходе логического элемента у нас всегда логическая единица, за исключением случая, когда на оба входа подана логическая единица. Теперь давайте посмотрим на элементы ИИЛИНЕ

Логический элемент И
A  B  C
 0
 0
 1
 1
Логический элемент ИЛИ
 A B  C
 0
 0
 1
 1
Логический элемент НЕ
 A  C
 1

Представление логических элементов в виде таблицы достаточно наглядно для элементов с небольшим количеством входов и выходов. А что делать с более сложными элементами? Мы уже знаем, что любую логическую функцию можно представить через базовые логические элементы. Логические элементы будем обозначать как AND, OR и NOT соответственноДавайте посмотрим на примере:

NOT A = (A NAND A) 

AND B = (A NAND B) NAND (A NAND B)

OR B = (A NAND A) NAND (B NAND B)

Такое математическое представление может показаться громоздким, но оно удобно для манипуляций с функциями, в том числе для упрощения выражений.

А ниже более наглядное представление тех же трех логических элементов: 

And OR Not with NAND.PNG

Можно заметить, что элемент И работает как функция умножения - единица на выходе только в случае обеих единиц на входе, а ИЛИ как сложение с учетом правила, что сложение двух единиц даст единицу. Введем более компактные обозначения: V - ИЛИ, ^ - И, A - НЕ и запишем несколько базовых тождеств, которые полезно держать в голове: 

A V (B V C) = (A V B) V C 

A ^ (B ^ C) = (A ^ B) ^ C 

A V B = B V A 

A ^ B = B ^ A  

A ^ BB

A V B = B

A ^ (A V B) = (A ^ B) V (A ^ C) похоже на a*(b+c) = a*b + b*c не правда ли?

A V 0 = A

A ^ 1 = A

A ^ 0 = 0

A V 1 = 1

A V A = A

A ^ A = A

A ^ (A V B) = A

A V (A ^ B) = A 

A V (A ^ C) = (A V B) ^ (A V C) а это уже не коррелирует с a+(b*c) = (a+b)*(b+c)!

A ^ B = 0

A V B = 1

А для закрепления поупражняйтесь в упрощении выражений, как в школе упрощение дробей, помните? 

A V B ^(A ^ B) = 0                                

И напоследок при проектировании логических элементов мы будем пользоваться блок диаграммами:

Логические элементы

Вот и все, что нам нужно, чтобы сделать процессор для компьютера! 



No one has commented yet.

Leave a Comment

HTML Syntax: Отключен