Восьмеричный полный сумматор How to
У меня есть этот проект слушать ниже, и я не уверен, с чего начать может быть, кто-то может дать мне несколько указателей или, возможно, указать мне в правильном направлении начала этого? Спасибо!!
вход: A, B = восьмеричные цифры (см. представление ниже); Cin = двоичная цифра
выход: S = восьмеричная цифра (см. представление ниже); Cout = двоичная цифра
задачи: используя двоичный FAs, создайте схему, которая действует как восьмеричный FA. Точнее, эта схема будет вводить две восьмеричные цифры A, B, преобразовывать их в двоичные числа, добавлять они используют только двоичный FAs, преобразуют двоичный результат обратно в восьмеричный и выводят сумму как восьмеричная цифра, а двоичная выполняется.
вход / выход двоичное представление восьмеричных цифр
каждая восьмеричная цифра будет представлена с помощью следующего 8-битного двоичного представления:
Восьмеричный 8-бит Входные Строки:
цифра: 0 1 2 3 4 5 6 7
0 1 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0
2 0 0 1 0 0 0 0 0
3 0 0 0 1 0 0 0 0
4 0 0 0 0 1 0 0 0
5 0 0 0 0 0 1 0 0
6 0 0 0 0 0 0 1 0
7 0 0 0 0 0 0 0 1
вы обязаны проектировать схема структурированным образом.
3 ответов
хорошо, поэтому по существу вас просят разработать кодер 8-к-3 и декодер 3-к-8. Потому что вам дали ФАС для работы с этим не смысл задания.
Сначала нам нужно определить, как работает кодировщик и декодер. Итак, мы строим таблицу истинности:
кодировщик:
Input | Output
01234567 | 421
-----------------
10000000 | 000
01000000 | 001
00100000 | 010
00010000 | 011
00001000 | 100
00000100 | 101
00000010 | 110
00000001 | 111
и дешифратор обратное этому.
далее, как мы строим наш кодировщик? Ну, мы можем просто атаковать по кусочку за раз.
Итак, для цифры 1s у нас есть, если входной бит 1, 3, 5 или 7 установлен, то это 1, иначе это 0. Поэтому нам просто нужен гигант или с 4 входами, подключенными к 1, 3, 5 и 7.
для цифры 2s нам нужен элемент или, подключенный к 2, 3, 6, 7. Наконец, для ворот 4s подключите их к 4, 5, 6, 7. Это не делает никакой проверки ошибок, чтобы убедиться, что дополнительные биты не установлены. Хотя поведение в этом случае кажется неопределенным спецификацией, поэтому, вероятно, все в порядке.
вы возьмите свои три строки и скормите их гадюкам. Это легко, поэтому я не буду вдаваться в подробности.наконец, вам нужен декодер, это немного сложнее, чем кодер.
давайте посмотрим на таблицу истинности дешифратора:
Input | Output
421 | 01234567
----------------
000 | 10000000
001 | 01000000
010 | 00100000
011 | 00010000
100 | 00001000
101 | 00000100
110 | 00000010
111 | 00000001
на этот раз мы не можем просто использовать 3 или Гейтс и назвать это днем.
давайте запишем это в C-подобный код:
if (!input[0] && !input[1] && !input[2])
output[0] = 1
if (input[0] && !input[1] && !input[2])
output[1] = 1
if (!input[0] && input[1] && !input[2])
output[2] = 1
if (input[0] && input[1] && !input[2])
output[3] = 1
if (!input[0] && !input[1] && input[2])
output[4] = 1
if (input[0] && !input[1] && input[2])
output[5] = 1
if (!input[0] && input[1] && input[2])
output[6] = 1
if (input[0] && input[1] && input[2])
output[7] = 1
Итак, похоже, что мы будем использовать 8 3 входных и ворот, а три нет Гейтс!
Это немного сложнее, поэтому я сделал пример реализации:
Если преобразование должно быть сделано вручную в классе, вы можете попробовать следующим образом.
преобразование из восьмеричной в двоичную:
преобразовать восьмеричное в двоичное, необходимо заменить каждую восьмеричную цифру ее двоичным представлением. Пример: преобразование 518 в двоичный код: 58 = 1012 18 = 0012 Поэтому, 518 = 101 0012.
преобразование двоичного в Восьмеричный:
процесс является обратным предыдущему алгоритму. Двоичные цифры группируются по три, начиная с десятичной точки (если есть) или последней цифры и продолжая влево и вправо. Добавьте ведущие 0 (или конечные нули справа от десятичной точки), чтобы при необходимости заполнить последнюю группу из трех. Затем замените каждое трио эквивалентной восьмеричной цифрой.
пример преобразования двоичного 1010111100 в восьмеричный: (Добавление двух ведущих нулей, число 001010111100) 001 = 1, 010 = 2, 111 = 7, 100 = 4 Поэтому 1010111100 = 1274
для преобразования в восьмеричное и из восьмеричного вы можете использовать пару кодировщик & декодер (http://www.asic-world.com/digital/combo3.html). Сумматор 3 битов можно сделать от приковывать 3 FAs.