Диссертация (1143270), страница 14
Текст из файла (страница 14)
переменнойaddc a,#0;следуют с шагом 10mov dph,a;(длина правила 10 байт)djnz r0, cycle;повтор для всех правилв)Занесение фрагмента базы правил в ЭНВmov dptr, #MAXOUT ;установка dptr;на начало таблицы;максимумов во внешней;памяти МКmov FADDRH, #0 ;начальные значенияmov FADDRL, #0 ;указателя адреса ЭНВmov r0,#5;счетчик выходовcycle:;внешний цикл: новый Ymov r1,#10;счетчик термовcycle1:;внутр. цикл: новый термmovx a,@dptr;чтение maxinc dptr;подготовка следующ.чт.mov FUZDAT, a;занесение в Рег данныхsetb FUZCON.1;подать строб записиclr FUZCON.1;для памяти Tiyjmax ЭНВinc FADDRL;увеличение указателяdjnz r1,cycle1;повтор для всех термовmov a,FADDRL;перевод указателяadd a,#6;памяти Tiyjmax ЭНВ наmov FADDRL,a;область очередного Ydjnz r0, cycle;повтор для всех выходовб) Занесение таблицы MAX в память ЭНВmov dptr, #NUMRUL ;чтение кол-ва правилmovx a,@dptr;из внешней памяти МКmov FADDRH, #0 ;начальные значенияmov FADDRL, #0 ;указателя адреса ЭНВmov FUZDAT, a;занесение в Рег данныхsetb FUZCON.5;подать строб записиclr FUZCON.5;в Рег кол-ва правил ЭНВг) Задание количества правил для ЭНВFuzIn1: equ B1h;объявлениеFuzIn2: equ B2h;именFuzIn3: equ B3h;регистровFuzIn4: equ B4h;входныхFuzIn5: equ B5h;переменныхFuzOut1: equ A1h ;объявлениеFuzOut2: equ A2h ;именFuzOut3: equ A3h ;регистровFuzOut4: equ A4h ;выходныхFuzOut5: equ A5h ;переменных<подготовка входных значений><и занесение их в FuzIn1..
FuzIn5 >setb FUZCON.7 ;запуск нечетких вычисленийjb FUZCON.6,$;ожидание завершения;нечетких вычислений<выходные значения в FuzOut1.. FuzOut5 >д) Применение ЭНВРис. 3-16. Фрагменты программ-драйверов нечетких вычислений127Вчастности,вэкспериментахбылреализованэкземплярмикроконтроллера архитектуры x51, содержащего встроенный сопроцессорныймодульподдержкисетейЭНВ,имеющийследующиехарактеристики:максимальное количество входов: 5, максимальное количество выходов: 5,максимальное количество правил: 255, максимальное количество термов у каждойпеременной: 10. Интервал значений всех переменных от 0 до 255.АппаратныйвычислительFuzzyFOx51снабжендополнительнымсхемотехническим окружением, обеспечивающим возможность его примененияв системах управления (рис.
3-17 – 3-18) [144].Аппаратные инструментальные средства (многоплатный отладочный модуль)ПЛИСс прошивкойНКВнешняя память НККонфигураторсопроцессора СЭНВНСЦелевоеуправляющее ПОПЯПлата реконфигурируемого МК (микросхема ПЛИС, память и др.)Интерфейсная платаАппаратураинтерфейсаCANИнтерфейсSPIАппаратураинтерфейсаUARTИнтерфейсUSBИнтерфейсI2CПлата сопряженияАналогоцифровойпреобразовательСогласующиеузлыдля входныханалоговыхсигналовСогласующиеузлыдля входныхцифровыхсигналовЦифроаналоговыйпреобразовательСогласующиеусилителивыходныханалоговыхсигналовСогласующиеусилителивыходныхцифровыхсигналовРис.
3-17. Структура схемотехнического окружения нечеткого микроконтроллера.128Рис. 3-18. Внешний вид встраиваемого блока управления с нечеткиммикроконтроллером.3.4. Элементы встраиваемого алгоритмического и программногообеспечения нечетких вычислителейВо всех случаях применения модуля нечетких вычислений (как длявзаимодействияосновногомикроконтроллерасвнешнимнечеткимсопроцессором, так и взаимодействия прикладного программного обеспеченияпроцессорного ядра нечеткого микроконтроллера со встроенным нечеткимвычислителем) необходимо соответствующее программное обеспечение уровняаппаратной поддержки вычислений.
В данном разделе представим примерывозможных вариантов реализации такого программного обеспечения [145].На рис. 3-19 показаны структуры данных, применяемые для храненияописания базы нечетких знаний применительно к основному микроконтроллеруразрядностью 8 бит (например, с архитектурой x51). На рис. 3-20 приведенпример базы нечетких знаний, соответствующей формату рис. 3-19 [145].129терм 1256 байт…терм m256 байттерм 1256 байт…терм n256 байтМетка INPUTS. Начало разверток входных термов.Термы для X1. Формат – рис.
2-6.Количество задается в INPDEF[0]Термы для X2. Формат – рис. 2-6.Количество задается в INPDEF[1]Количество входов (P)задается в NUMINP…терм 1256 байт…терм k256 байттерм 1256 байт…терм z256 байтТермы для XP. Формат – рис. 2-6.Количество задается в INPDEF[P-1]Метка OUTS. Начало развертки выходных термов.Термы для Y1. Формат – рис.
2-6.Количество задается в OUTDEF[0]Количество выходов (Q)задается в NUMOUT…терм 1256 байт…терм r256 байтmaxT1maxT2…maxT10maxT1maxT2…maxT10Термы для YQ. Формат – рис. 2-6.Количество задается в OUTDEF[Q-1]Метка MAXOUT. Таблица максимумов выходных термов.Значения Y1, соответствующие максимумамкаждого из термов, описывающих Y1.Таблица состоит из пятиЗначения Y2, соответствующие максимумамзаписей.каждого из термов, описывающих Y2.Неиспользуемые обнулены.…maxT1maxT2…maxT10If cond1then act1If cond2then act2Значения Y5, соответствующие максимумамкаждого из термов, описывающих Y5.Метка RULES.
Таблица правил. Формат – табл. 2-3.Правило R1. 10 байт.Правило R2. 10 байт.…If condLthen actLКоличество правил (L)задается в NUMRUL.Правило RL. 10 байт.Метка TMPOUT. Таблица текущих значений справедливости термов.Текущие значения степени справедливостикаждого из термов, описывающих Y1.Таблица состоит из пяти…записей.μ(Текущие значения степени справедливостиНеиспользуемые обнулены.каждого из термов, описывающих Y5.Рис. 3-19.
Организация памяти для хранения базы нечетких знаний [145].μ(μ(T1)T2)…μ(μT(10)T1)T2)…μ(T10)130NUMRUL:NUMINP:NUMOUT:INPDEF:INPUTS:vX1:vX1_T1:;Пример кодирования базы нечетких знанийdb 5;число правилdb 3;число входовdb 2;число выходовdb 0;смещения по термам для Х1db 3;смещения по термам для Х2db 6;смещения по термам для Х3db 255,255,255,255,254,253,252,251,250,249,248,247,246,245,244,243;и.т.д. 256 значений развертки терма 1 для Х1db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;и.т.д. 256 значений терма 2 для Х1db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;и.т.д.
256 значений терма 3 для Х1vX1_T2:vX1_T3:vX2:vX2_T1:OUTDEF:OUTS:vY1:vY1_T1:MAXOUT:RULES:TMPOUT:db 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ;и.т.д. 256 знач. терма 1 для Х2;аналогично представляются все термы входных переменныхdb 0;смещения по термам для Y1db 3;смещения по термам для Y2db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ;и.т.д. 256 значений терма 1 для Y1;далее аналогично описываются термы выходных переменныхdb 215,62,150,0,0,0,0,0,0,0;табл.максимумов выходов;далее аналогичные строки для Y2-Y5, (неиспользуемые обнулены)db 1,0,0,0,0,1,0,0,0,0;табл.правилdb 2,3,0,0,0,2,1,0,0,0db 3,0,0,0,0,3,0,0,0,0db 0,1,0,0,0,0,1,0,0,0db 0,2,0,0,0,0,2,0,0,0db 0,0,0,0,0,0,0,0,0,0;таблица временных максимумовРис.
3-20. Пример базы нечетких знаний.Применительно к рассмотренному в разделе 3.1 сопроцессору нечеткихвычисленийнаосновепрограмм-драйверовдоступакресурсамНС,предложены программы записи БНЗ в нечеткий сопроцессор (рис. 3-21), чтенияБНЗ из нечеткого сопроцессора (рис. 3-22), а также программа подготовкивходных данных для нечетких вычислений, активации нечетких вычислений иприемарезультатоввычисленийнечеткогосопроцессоравосновноймикроконтроллер (рис. 3-23) [145].131org 8100haddr_lo:equ 30haddr_hi:equ 31hdata:equ 40hp4:equ e8hmov dptr,#NUMRULmovx a,@dptrmov data,amov addr_lo,#0mov addr_hi,#0lcall fuzctrl_mwmov dptr,#NUMINPmovx a,@dptrmov data,amov r1,amov addr_lo,#1lcall fuzctrl_mwmov dptr,#NUMOUTmovx a,@dptrmov data,amov addr_lo,#2lcall fuzctrl_mwmov dptr,#INPDEFmov addr_lo,#3$inpdef_loop:movx a,@dptrmov 40h,alcall fuzctrl_mwinc dptrinc addr_lodjnz r1,$inpdef_loopmov dptr,#OUTDEFmov r1,dphmov r2,dplmov dptr,#INPUTSmov addr_lo,#8mov addr_hi,#0$inputs_loop:movx a,@dptrmov 40h,alcall fuzctrl_mwinc dptrinc addr_lomov a,addr_lojnz $inputs_continc addr_hi$inputs_cont:mov a,dphcjne a,1,$inputs_loopmov a,dplcjne a,2,$inputs_loopmov dptr,#MAXOUTmov r1,#32hmov addr_lo,#08hmov addr_hi,#032h$maxout_loop:movx a,@dptrmov data,alcall fuzctrl_mwinc dptrinc addr_lomov a,addr_lojnz $maxout_continc addr_hi$maxout_cont:djnz r1,$maxout_loopmov dptr,#NUMRULmovx a,@dptrmov r1,amov dptr,#RULESmov addr_lo,#03Ahmov addr_hi,#032h$rules_loop1:mov r2,#0Ah$rules_loop2:movx a,@dptrmov data,alcall fuzctrl_mwinc dptrinc addr_lomov a,addr_lojnz $rules_continc addr_hi$rules_cont:djnz r2,$rules_loop2djnz r1,$rules_loop1retfuzctrl_mw: <см раздел 3.1>NUMRUL:NUMINP:NUMOUT:INPDEF:db 5db 3db 2db 0db 3db 6;пример;описания;начала БНЗ;в памяти МКINPUTS:<Далее располагается БНЗ в соответствии сформатом рис.
3-19 и 3-20.>Рис. 3-21. Программа записи БНЗ в НС.132org 8100haddr_lo:equ 30haddr_hi:equ 31hdata:equ 40hmov dptr,#0$loop:mov addr_lo,dplmov addr_hi,dphlcall fuzctrl_mrinc dptrlcall 128hmov a,dphcjne a,#80h,$loopretfuzctrl_mr: < см раздел 3.1>Рис. 3-22. Программа побайтового чтения и передачи БНЗ из НС в ЭВМ.org 8100haddr_lo:equ 30haddr_hi:equ 31hdata:equ 40hX1:equ 50h<аналогично для остальных Хi>Y1:equ 60h<аналогично для остальных Yi>mov addr_lo,#0F0hmov addr_hi,#07Fhmov data, X1call fuzctrl_mw<аналогично для остальных Хi>call calcmov addr_lo,#0F5hmov addr_hi,#07Fhcall fuzctrl_mrmov Y1,data<аналогично для остальных Yi>call cleantmp ;обязательная очистка;памяти временных;переменныхretcleantmp:push dphpush dplmov dptr,#32600mov r1,#50$loop: mov addr_lo,dplmov addr_hi,dphmov data,#0lcall fuzctrl_mwinc dptrdjnz r1,$looppop dplpop dphretfuzctrl_mw: < см раздел 3.1>fuzctrl_mr: < см раздел 3.1>calc:< см раздел 3.1>Рис.3-23.Примеринформациеймеждупроцессором и НВ.обменаосновнымДля взаимодействия со встроенным вычислителем нечетких функций,интегрированным на кристалл с основным процессором по схемам, описаннымв разделах 3.2 и 3.3, применяются программы конфигурирования (рис.
3-24) иинтерактивного взаимодействия (рис. 3-25) [145].133mov FADDRH, #0mov FADDRL, #0mov r0,#5ccl:org 8200hFUZCON: equ 0D8hFuzIn1:FuzIn2:FuzIn3:FuzIn4:FuzIn5:equ 0B1hequ 0B2hequ 0B3hequ 0B4hequ 0B5h;объявление имен;регистров;входных;переменныхFuzOut1:FuzOut2:FuzOut3:FuzOut4:FuzOut5:equ 0A1hequ 0A2hequ 0A3hequ 0A4hequ 0A5h;и выходных;переменныхdef_init:equ 40mov r1,#10ccl1:movx a,@dptrinc dptrmov FUZDAT, asetb FUZCON.1clr FUZCON.1inc FADDRLdjnz r1,ccl1;-------------------------------mov a,FADDRLmov dptr, #vX1_T1;установка dptr;на начало развертки терма х1mov FADDRH, #0h;начальные;значения указателя адреса НВmov r1,#3lcall write_xmov dptr, #vX2_T1;установка dptr;на начало развертки терма х2mov FADDRH, #10;начальные; значенияmov r1,#2lcall write_xmov dptr, #vX3_T1;установка dptr;на начало развертки терма х3mov FADDRH, #20;начальные;значенияmov r1,#3lcall write_xmov dptr, #vX4_T1;установка dptr;на начало развертки терма х4mov FADDRH, #30;начальные;значенияmov r1,#2lcall write_xmov dptr, #MAXOUT ;установка dptr;на начало таблицы;максимумов во внешней;памяти МКadd a,#6mov FADDRL,adjnz r0, ccl;начальные значения;указателя адресаНВ;счетчик выходов;внешний цикл:;новый Y;счетчик термов;внутр.















