[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Тогда в общей памяти надо иметь указатель записи wptr (модифицируется передатчиком) и указ. чтения rptr (модифицируется приемником). Оба должны быть не шире шины данных ОЗУ, чтобы писались за один цикл обращения. Пример из жизни (упрощенный):
Передатчик (гонит очередное слово w):
memory[wptr]=w;
if(wptr+1>=BUFF_END) wptr=BUFF_START;//Продвигаем wptr else wptr=wptr+1;
Приемник (лезет за новым словом):
while(rptr==wptr);//Пока буфер пуст - висим и ждем
w=memory[rptr]; //Что-то есть - забираем очередное слово
if(rptr+1>=BUFF_END) rptr=BUFF_START;//Продвигаем rptr
else rptr=rptr+1;
E-mail: info@telesys.ru