![]() | |
![]() |
Электронные компоненты Мануалы цию некоторой переключательной функции f{x) = (xi, Xz, л;). При программной реализации f(x) с помощью МП обычно принимают решения последовательно о значении каждого члена записи f{x), что позволяет судить о значении всей функции на заданном наборе аргументов. При этом надо учитывать, что МП обрабатывает данные побайтно, а логические операции над двумя операндами выполняются поразрядно. При организации логической обработки данных нередко используется флаг четности Р, значение котэрого представляет собой инверсию результата суммирования по модулю два всех разрядов одного байта. ipapMupaea-ние сигнала ![]() VopMupoSOHue сигнала уП)=0 выВоду(х) Пример 7..7. Реализовать переключательную функцию /п = 8 аргументов, записанную в ДНФ следующим образом: у{х) = = ххх&хх.; ххцх ={/iW V Syz[x). Набор аргументов X - - 1, «2. •*3. 4- ХЪ, Xg, X,, Xg вводится В МП из В У через порт с символическим обозначением PORTX. Значения каждого из двух дизъюнктивных членов yix) и yz(x) определим с помощью следующих операций: маскирование (т. е. установка в нулевое состояние) аргументов, которые не входят в данный член yiix); это производится с помощью логического умножения на соответствующие маски Vi и 72- которым присвоим символические обозначения GAMMAI и GAMMA2 (в данном примере 7i = 10I0II10 и V2 = 01110001); инвертирование тех аргументов л;,-, которые входят в данный член yix) без знаков инверсии; эта операция осуществляется путем суммирования по модулю два полученного ранее набора аргументов с константами и О2, которые содержат «1» на позициях, соответствующих инвертируемым разрядам в г/,(л-) и УгМ, (в данном примере Oi = 00001100 и 02 = 01000001); константы и Og обозначим соответственно SIGMAI и SIGMA2; анализ результата: если результат выполнения описанных двух операций равен 00...О, то данный член у{х) равен «1», т. е. у(х) = 1; в противном случае переходим к испытанию следующего члена в выражении для у{х) либо принимаем решение, что у{х) = О, если испытанный член yj(x) был последним. Блок-схема алгоритма дана на рис. 7.7, а соответствующая программа представлена далее. FUNC: IN PORTX ; Блок 1. Ввод набора аргументов X в А. MOV с, А ; Дублирование X в С. ANf GAMMAI ; Блок 2. Маскирование отсутствующих в (л:) аргументов. XRI SIGMAI ; Инвертирование аргументов, которые входят в ji (х) без знаков инверсий. JZ Ml ; Переход, если yi{x)= 1, т. е. у(х)= 1. Рис. 7.7. Блок-схема алгоритма программной реализации переключательной функции MOV A, с ; Блок 3. Восстановление X в А. ANI GAMMA2 ; Маскирование аргументов, отсутствующих ви,,(х) XRJ SIGMA9. ; Инвертирование аргументов, которые входят в у., (х) без знаков инверсий. ; JZ Ml ; Переход, если г/г W = 1, т. е. у (х) I ? MV1 Л, 0 ; Блок 4. Формирование нулевого сигнала, соответствующего у{х) = 0. JMP М2 ; Переход к выводу сигнала. Ml: MVI, А, 1 ; Блок 5. Формированиесигнала 00 01, соответствующего (у) х= 1 /И2 (иТ PORTX ; Блок 5. Вывод сигнала, соответствующего значению У(х). В результате выполнения данной программы на ВУ выводится сигнал 00...00 если у(х) - О, или сигнал 00...01, если у(х) - I. В более общем случае, когда число членов Л в ДНФ функции у(х) велико, может оказаться целесообразным организация вычислительного цикла. В этом случае константы и Qj могут быть записаны в ячейки ПЗУ в следующем порядке: У1, Oi, у2, Oj, .... ууу, Од,, чтобы было удобно поочередно извлекать их из ПЗУ при испытании соответствующих членов yj(x). Используя подобные приемы, можно программными средствами реализовать произвольные переключательные функции любого числа аргументов т, записанные в различных формах представления функций. Программная реализация автоматов с памятью. При моделировании с помощью МП автоматов, построенных по классической схеме, необходимо программным путем реализовать системы функций возбуждения и функций выходов, а также моделировать работу триггеров заданного типа. Некоторые приемы программирования рассмотрим на примере реализации генератора псевдослучайных последовательностей (ПСП), выполненного на основе т-разрядного сдвигового регистра с сумматорами по модулю два в цепи обратной связи. Такие автоматы широко используются в генераторах случайных чисел, формирователях сложных сигналов, в генераторах хаотических импульсных помех, в кодирующих и декодирующих устройствах корректирующих кодов и т. д. Структуру генераторов ПСП принято задавать с помощью полиномов g(x) степени т, которые имеют вид: = • • • ®gi + go- (7.9) Коэффициенты gm и go тождественно равны единице, а остальные коэффициенты могут принимать значение О или 1. Совокупность коэффициентов полинома g(x) определяет связи между разрядами регистра и сумматорами по модулю два в схеме генератора ПСП. При этом обычно используют полиномы, которые обеспечивают генерацию последовательностей максимальной длины, равной 2*"-1. К таким полиномам относятся следующие: @х®\\ хел;®!; х®л;-=®1; х«®л;@1; л;-фх®1; х«®л;®х=*®х© I; x®x@\, х"®л;®1; и т. д. Значения полиномов g{x), обладающих требующимися свойствами, можно найти в таблицах, опубликованных, например, в 149J.. Генератор ПСП, заданный некоторым полиномом g{x), может быть выполнен в двух вариантах: с вынесенным и встроенным сумматорами по модулю два. Соответствующие структурные схемы генератора показаны на рис. 7.8, а, б. Каждый элемент, соответствующий на схеме коэффициенту gi, представляет собой короткое замыкание, если = 1 и разрыв, если = 0. В регистре устанавливается некоторое отличное от нуля начальное состояние Л, а затем каждое последующее его состояние определяется сдвигом данных в регистре с учетом сигнала обратной связи (ОС). Работа генератора ПСП описывается уравнением g{x) = О, которое для случая с вынесенными сумматорами принимает вид х" = . . . ®gix, (7.10) ![]() Рис. 7.8. Обобщенные структурные схемы генератора ПСП: с вынесенными (а) и со встроенными (б) сумматорами по модулю два а для случая со встроенными сумматорами X" = g,n-lX т-1 ( glX@ хР. (7.11) Пример 7.8. Составить программу работы генератора ПСП, заданного полиномом g(x) = + @ 1. Схемы аппаратно/} реализации двух вариантов генератора представлены на рис. 7.9, а, б. Вариант с вынесенными сумматорами. Расположим переменные ж», х\ х", л: х соответственно в разрядах а, а, а, аккумулятора А. Для сохра- нения текущего состояния генератора ПСП содержимое А дублируется в С. С целью выработки сигнала ОС, который равен х ф х, выделим в А соответствующие разряды 04 и й! с помощью логического умножения на константу К1. В данном случае К\ = 00010010. Поскольку все разряды аккумулятора, кроме и ai, принимают нулевые значения, то сумму @ х можно определить по состоянию флага четности Р: х @ х = Р. Вычисленное таким образом значение сигнала обратной связи, равное Р, запишем в триггер CY. Затем осуществим арифметический сдвиг аккумулятора влево, в результате чего получим в А следующее состояние генератора ПСП. Приведем соответствующую программу Л ; Установка начального состояния N. ; Вывод состояния генератора. ; Дублирование текущего состояния. ; Маскирование разрядов и сброс CY. ; Переход, если х@х = 0. ; Установка флага переноса (СК) 1. ; Восстановление в А текущего состояния. ; Выработка следующего состояния. ; Переход для обеспечения непрерывной циклической работы генератора. Вариант со встроенными сумматорами. В этом случае работа генератора ПСП организуется в соответствии с уравнением х = х @ х". Для удобства
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 |