Главная страница Систематические методы минимизации [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [ 20 ] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] пользован при вычитании, основанном на сложении с дополняющими числами. Кроме того, этот код облегчает обнаружение ошибок, потому что во всех его комбинациях имеется хотя бы одна двоичная цифра 1. Пример сложения представлен в табл. 3.3. Если результирующая сумма равна или меньше 9, то производится коррекция вычитанием 3. Если сумма равна или больше 10, то прибавляется 3. Коррекция +3 или -3 означает прибавление или вычитание ООП. Необходимая коррекция устанавливается по наличию или отсутствию переноса 1. Если имеется перенос, то должна быть коррекция +3, а если переноса нет, то коррекция -3. Производится это следующим образом: а) оба числа каждой декады складываются согласно правилам двоичного сложения; б) в сумме каждой декады определяется наличие переноса 1; в) в каждой декаде, где имел место перенос 1, результат корректируется прибавлением ООП и, наоборот, в декаде без переноса - вычитанием ООП.Вместо вычитания ООП может быть произведено прибавление дополнения 1100. Примеры вычитания представлены в табл. 3.4. Знак числа О в первом столбце слева означает положительное число, а 1- отрицательное число. Дополнение до 9 в коде с избытком 3 определяется простой заменой двоичной цифры 1 на О и наоборот. Переносы 1 производятся последовательно от декады низшего разряда 10° до знака числа, а если и здесь будет иметь место перенос 1, то она передается цифре низшей декады 10°. Это так называемый циклический перенос 1. Результаты во всех декадах корректируются одновременно путем прибавления ООП к результатам в декадах с переносом и прибавления ООП к результатам в декадах без переноса. В случае если в какой-либо декаде возникнет перенос 1 и во время коррекции, то 1 прибавляется к цифре низшего разряда той же декады. Для вычитания могут быть использованы также дополнения до 10. Это - дополнения до 9, к цифре низшего разряда которых прибавлена 1. Последовательность вычитания такая же, но здесь не возникают циклические переносы через все декады, благодаря чему при реализации цифрового сумматора на практике ускорится процесс сложения. Код Грея. Этот код относится к циклическим кодам, характеризующимся тем, что последующая комбинация двоичных цифр отличается от предыдущей только в одном разряде. Код составля--ется простым способом. Цифры низшего разряда пишутся в последовательности 011001100..., цифры следующего разряда - в последовательности 00111100001111..., следующего разряда - в последовательности 00001111111100000000... и т. д. Этот код особенно выгоден при использовании в различных преобразователях. Так как соседние комбинации отличаются друг от друга только в одном разряде, то при преобразовании возникают минимальные .Ч 9Я 65 Вычитание с дополнением до 9 знак числа I 589 -238 10 10 ДО декад." 1000 1011 1100 1010 1001 0100 351 -уОООО дополнение 761 -1 циклический перенос 0001 ООН коррекция 0100
1001 0111 результат дополнение 410- 589 351 Вычитание с .дсшолне-нием до 10 1000 1011 1011 1010 jyOOll J0101 11 н ЦОНО 1)1 ООО 1100 0101 IjOOOl дополнение 872- 238 351 оШИбки. Это преимущество наиболее ясно при сравнении с кодом 8421. Например, при изменении цифры 7 (соответствующей комбинации 0111) на 8 (соответствующую комбинацию 1000) на короткое время (например, из-за перекрытия механических контактов) может появиться комбинация 1111, представляющая собой большую ошибку. В коде Грея в том же случае ошибка не появится, так как последовательности таковы: 0100, 1100. Большим преимуществом кода Грея перед другими является простота перевода десятичных цифр в код Грея и наоборот. Десятичное число сначала переводится в код 8421, например (9) = = (1001)8421, а в код Грея переводится затем последовательным суммированием по модулю 2 двоичных цифр, начиная от цифры низшего разряда: 0ф0 = 0, 0ф1 = 1, 1ф0=1, 1ф1=0. Следовательно, в представленном примере получим (1001)8421=(И01)грей• 3.2. КОДЫ С БОЛЬШИМ ЧИСЛОМ ЭЛЕМЕНТОВ Хотя десятичные цифры можно легко выразить с помощью четырехэлементных кодов, часто используются коды с большим числом бит, которые более удобны для некоторых операций и об- легчают обнаружение ошибок. Примеры таких кодов представлены в табл. 3.5. Таблица 3.5. Коды с большим числом элементов
Код «2 из 5» характеризуется тем, что в каждой его комбинации всегда имеются две двоичные 1. В ,коде легко обнаруживается ошибка O-H-l или 1->0. Нельзя определить число ошибок обоих типов, так как они взаимно компенсируются, однако вероятность одновременного появления таких ошибок в большинстве случаев очень мала. Код Джонсона пригоден для специальных счетчиков и легко дешифруется. Подобные свойства имеет код 511который, кро- . ме того, еще и самодополняющийся. Биквинарный код является весовым кодом, он может быть использован для арифметических операций и облегчает обнаружение ошибок. Десятиэлементный .код «1 из 10» часто используется в счетчиках и не требует дешифрирования. Таблица 3.6. Число комбинаций некоторых кодов т из п
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [ 20 ] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] 0.0129 |