Файл: Программа моделирования написана на языке javascript. Программа состоит из 3х частей файла формата html,css,js.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 14
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Алгоритмы, описание и листинг программ имитационного
моделирования сигнатурного анализатора
Алгоритм программы многоканального сигнатурного анализатора следующий:
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);
}