Программа моделирования написана на языке javascript. Программа состоит из 3х частей файла формата html,css,js
Скачать 16.29 Kb.
|
Алгоритмы, описание и листинг программ имитационного моделирования сигнатурного анализатора Алгоритм программы многоканального сигнатурного анализатора следующий: 1.Ввод исходных данных (установление связей в регистре сдвига, указание длинны потока ). 2.Начало работы регистра сдвига (разбиение входящей строки (на элементы массива)). 3.Передача ее в функцию реализующую сдвиг. 4. Преобразование конечного состояния регистров из двоичной системы в свертку. Описание программы Программа моделирования написана на языке java-script . Программа состоит из 3-х частей файла формата html ,css ,js. Html-это файлы оболочки программы которые открываются через браузер. Css-файл отвечает за установление стилей. Js-основной файл выполняющий обработку данный (скрипт). При запуске программы запускается скрипт . Объявление переменных var nomer=0; var x1=false;X1,X2,X3-false потому что вначале программы связи не установдлены var x2=false; var x3=false; function rand2(min,max){ return Math.floor(Math.random()*(max-min+1))+min; } function proverka(chB){//данная функция визуализирует связи в регистре в триггерами if(chB==1){ if(x1){ $('#hide1,#summ3,#plusnext2').hide(); x1=false; } else{ $('#hide1,#summ3,#plusnext2').show(); x1=true; } } else if(chB==2){ if(x2){ $("#hide2,#summ2,#plusnext1").hide(); x2=false; } else{ $("#hide2,#summ2,#plusnext1").show(); x2=true; } } else if(chB==3){ if(x3){ $("#hide3,#summ1,#plusnext3").hide(); x3=false; } else{ $("#hide3,#summ1,#plusnext3").show(); x3=true; } } } function asd(){//эта функция отвечает за промежуток времени между тактами var t=document.getElementById("vvod"); $("#kolvo").val(t.value.length); var t=document.getElementById("vvod1"); $("#kolvo1").val(t.value.length); var t=document.getElementById("vvod2"); $("#kolvo2").val(t.value.length); var t=document.getElementById("vvod3"); $("#kolvo3").val(t.value.length); ech(); } function ech(){//данная функция отображает число битов последовательности var one=$("#kolvo").val(); var two=$("#kolvo1").val(); var three=$("#kolvo2").val(); var four=$("#kolvo3").val(); if(one==two&&two==three&&three==four&&four==one){//если длинны равны то программа $("#activity").attr("disabled", false); //разрешает выполнение } else{ $("#activity").attr("disabled","disabled"); } } function createArray(maxLength, aString){//при случайной генерации данная функция генерирует var arr=[]; //массив случайных бит заданной последовательности for(i=0; i<=maxLength; i++){ arr[i]=aString.slice(i,i+1); } return arr; } function add(){//эта функция берет с каждого массива по 1 му элементу формируя входящий var one=$("#vvod").val();//вектор и подает на функцию свертки var two=$("#vvod1").val(); var three=$("#vvod2").val(); var four=$("#vvod3").val(); var kolvo=$("#kolvo").val(); var kolvo1=$("#kolvo1").val(); var kolvo2=$("#kolvo2").val(); var kolvo3=$("#kolvo3").val(); var a=createArray(kolvo, one); var b=createArray(kolvo1, two); var c=createArray(kolvo2, three); var d=createArray(kolvo3, four); $("#element").val(a[nomer]+b[nomer]+c[nomer]+d[nomer]); if(nomer==$("#kolvo").val()){ nomer=0; } $("#zero1").html(a[nomer]); $("#zero2").html(b[nomer]); $("#zero3").html(c[nomer]); $("#zero4").html(d[nomer]); changePlace();//вызывается функция светрки nomer++; } function summ(arg1,arg2){//эта функция реализует деление по модулю два if(arg1==arg2){ result=0; } else { result=1; } return result; } //эта функция реализует один цикл работы программы для пошагового выполнения function changePlace(){ var a=$("#summ4").html(); var s=$("#rez1").html(); var l=$("#rez2").html(); var i=$("#rez3").html(); var d=$("#rez4").html(); var n=$("#summnext1").html(); var m=$("#summnext2").html(); var t=$("#summnext3").html(); $("#summ4").html(s); $("#summnext2").html(d); $("#summnext1").html(i); $("#summnext3").html(l); $("#summ1").html(s); $("#summ2").html(s); $("#summ3").html(s); start(); var s=$("#rez1").html(); var l=$("#rez2").html(); var i=$("#rez3").html(); var d=$("#rez4").html(); $("#sostoyanieTriggerov").val(d+i+l+s); $("#NomerTakta").val(nomer+1+"Такт"); } function start(){ var a=$("#summ4").html(); var d=$("#zero4").html(); var c=$("#summnext2").html();//для второго var e=$("#zero3").html();//красный var f=$("#zero2").html();//красный (третий триггер) var g=$("#summnext1").html();//черный var rn=$("#zero1").html();//для 4го (красный) var o=$("#summnext3").html();//черный var r=summ(a,d); if(x1){ var r1=summ(c,a); var rezultat1=summ(r1,e); $("#rez3").html(rezultat1); } else{ var r1=summ(c,e) $("#rez3").html(r1); } if(x2){ var r2=summ(a,g); var rezultat2=summ(r2,f) $("#rez2").html(rezultat2); } else{ var r2=summ(f,g); $("#rez2").html(r2); } if(x3){ var r3=summ(a,o); var rezultat3=summ(r3,rn); $("#rez1").html(rezultat3); } else{ var r3=summ(rn,o); $("#rez1").html(r3); } $("#rez4").html(r); } function generator(){//берет из генератора и визуализирует входящие последовательности $("#vvod").val(generator2()); $("#vvod1").val(generator2()); $("#vvod2").val(generator2()); $("#vvod3").val(generator2()); asd(); } function generator2(){ var cols=Number($("#number").val()); var r=rand2(cols-1,cols-1); var str="1"; for(i=1;i<=r;i++){ str=str+rand2(0,1); } return str; } function count(){ var cols1=Number($("#number").val()); for(i2=1;i2<=cols1;i2++){ setTimeout(function(){ add(); },i2*300); } } function initArray(){//данная функция переводит из двоичной системы в свертку this.length = initArray.arguments.length; for (var i = 0; i < this.length; i++) this[i] = initArray.arguments[i]; } function from10toradix(value,radix){ var retval = ''; var ConvArray = new initArray(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','H','P'); var i = 0; intnum = parseInt(value,10); while (intnum > 0.9){ i++; tmpnum = intnum; // связь возвращаемой строки с новым значением: retval = ConvArray[tmpnum % radix] + retval; intnum = Math.floor(tmpnum / radix); } return retval; } function compute(cform){// b2h Перевод из двоичной в шестнадцатиричную tmpvar = parseInt(cform.sostoyanieTriggerov.value,2); cform.signatura.value = " " + from10toradix(tmpvar,16); } |