Flash - статьи

         

Организация программы.


Все модели микросхем выполнены в виде отдельных классов и содержат только логику работы микросхем. Классы микросхем не содержат кода визуализации входных или выходных последовательностей. Другими словами, содержимое и представление полностью разделены, класс микросхемы не делает ничего, чтобы отобразить какой либо график.

Входной информацией для объекта класса микросхемы служит многомерный массив событий, поступающий от входных каналов. Например, в модели микросхемы RS/D триггера любое событие анализируется с учетом всех четырех входных воздействий R,S,D,C.

Прорисовкой входных и выходных графиков занимаются специальные подпрограммы. Входом для программы прорисовки входных графиков служат параметры импульсных последовательностей, исходящих от генератора, и определенные пользователем. Входом для программы рисования выходного графика служит массив выходных значений объекта микросхемы.

Ниже приведен пример класса модели R-S триггера.

//*************************************** // Логический элемент : R-S триггер // автор : Вересов Евгений // дата создания : 10.11.05 // vers.: 1.0 //*************************************** class tp2 { private var input : Array; // Массив для входа private var output : Array; // Выходной массив private var s : Number // Буфер первого канала private var r : Number // Буфер второго канала private var sost : Number // Состояние триггера

// Конструктор public function tp2(){ this.input = new Array(); this.output = new Array(); sost = 0; s = null; r = null; }

// История точек входа public function setInput(step:Number,value:Number, channel:Number):Void{ this.input.push({x:step,y:value,ch:channel}); }

// формирование выхода public function out():Array { input.sortOn("x"); var i = 0;

for(i=0; i<input.length;i++){ // Сохраним текущее значение if(input[i].ch==1) {s = input[i].y;} if(input[i].ch==2) {r = input[i].y;}

// Если s ==0 r==1 if((s==0) && (r ==1)) {output.push({x : input[i].x, y : 1});sost=1}

// Если s ==1 r==0 if((s==1) && (r ==0)) {output.push({x : input[i].x, y : 0});sost=0}

// Если s ==1 r==1 if((s==1) && (r ==1)) {output.push({x : input[i].x, y : sost});}

// Если s ==0 r==0 if((s==0) && (r ==0)) {output.push({x : input[i].x, y : null});} } return output; } }



Содержание раздела