Компьютерное моделирование биологического нейрона

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

?ембраны. Это существенно для перезарядки мембраны во время генерации импульса.

Как показано на рис. 3, суммарный мембранный потенциал нейрона u? равен алгебраической сумме выходов всех участков мембраны, моделирующих сому клетки.

На рис. 6 представлена модель генератора, осуществляющая формирование прямоугольных импульсов заданной амплитуды E, как результат превышения потенциалом u? фиксированного порога К.

 

Рисунок 6 - Модель генератора потенциала действия

 

Здесь Р>0;- постоянная времени, определяющая время действия обратных связей перезарядки мембраны и характеризующая длительность генерируемого импульса, а вырабатываемый выходной сигнал (t) автоматически поступает на обратные связи перезарядки сомы клетки (рисунок 3).

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

Нейрод, по существу, представляет собой формальный вычислительный элемент, получающий цифровые импульсы от других нейродов или рецепторов (рис.1). Импульсы передаются по проводникам. При определенных условиях нейрод и сам порождает импульсы.

Вся система синхронизируется часовым механизмом, выдающим тактовые импульсы с частотой n1 = 14 318 000 тактов в секунду. Эта частота работы самого контроллера. Ее можно изменять путем использования разных кварцевых кристаллов, но не более 16 Мгц (это собственное ограничение контроллера).

Помимо собственной частоты n1, существует частота работы нейрода n2. Нейрод выдает импульс в конце очередного такта, по длительности не более 1/n2 - причем, только в конце такта, - если число импульсов, полученных им от других нейродов в продолжение завершающегося такта, больше или равно установленному заранее значению.

Это установленное значение и есть пороговый коэффициент P.

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

В самом общем случае можно сказать, что импульсы передаются от нейродов к нейродам по проводникам двух видов - возбуждения и торможения, точно также как и в реальных нейронах [1,2,3,4].

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

В контроллере ATMega16 порт А - входной порт, для повышающих импульсов. Порт В - входной порт, для тормозящих импульсов, а порт С - для исходящих. Другими словами, порты A,B играют роль дендритов нейронов, а контакты порта С - аксонов.

Порты в микроконтроллере являются 8-битными, таким образом, в одном микроконтроллере может быть реализована работа 8 нейродов. Принцип алгоритма прост: контроллер опрашивает свои входные порты и если на них пришел сигнал длительностью ?t?(1/n1)*8=0,6 мкс, то контроллер его обработает.

На протяжении времени t (t<1/n2) работы нейрода, он принимает и считает входные импульсы, приходящие на дендриты. После чего контроллер их обрабатывает: сравнивает число пришедших сигналов с пороговым коэффициентом.

Если коэффициент превышен, то появляется сигнал высокого уровня на контакте порта С. Пороговый коэффициент может задаваться общим для всех нейронов, либо массивом данных для каждого из них.

Далее приведен программный код нейрода, в котором реализуется функция обработки сигналов. Это условная функция if - если, которая сравнивает количество пришедших в порт А сигналов и сравнивает их с пороговым коэффициентом.

 

if (pdd1>=1){PORTC.1=0x01; delay_ms(250);}(pdd2>=1){PORTC.2=0x01; delay_ms(250);}(pdd3>=1){PORTC.3=0x01; delay_ms(250);}(pdd4>=1){PORTC.4=0x01; delay_ms(250);}(pdd5>=1){PORTC.5=0x01; delay_ms(250);}(pdd6>=1){PORTC.6=0x01; delay_ms(250);}(pdd7>=1){PORTC.7=0x01; delay_ms(250);}

 

pdd0=0;

pdd1=0;

pdd2=0;

pdd3=0;

pdd4=0;

pdd5=0;=0;=0;

.0=0x00;_ms(250);.1=0x00;_ms(250);.2=0x00;_ms(250);.3=0x00;_ms(250);.4=0x00;_ms(250);.5=0x00;_ms(250);.6=0x00;

delay_ms(250);.7=0x00;}

 

Void main - начало тела программы, в которой сначала описываются все используемые порты микроконтроллера, их начальные значения.

Регистры TCCR0, TCNT0, OCR0 - подключают к работе таймер, который вызывает прерывания контроллера для математической обработки внешних сигналов и принятия решений по генерации собственных сигналов нейрода.

main(void)

{

 

//повышающие входы нейрона=0x00;=0x00;

 

//понижающие входы нейрона=0x00;=0x00;

 

//выходы нейрона=0x00;=0xFF;

 

//резервный выход

PORTD=0x00;=0xFF;

=0x05;=0x00;=0x00;

 

// Timer(s)/Counter(s) Interrupt(s) initialization=0x01;=0x80;=0x00;

 

// Global enable interrupts

#asm("sei")

 

Цикл с постусловием - while-пока; в теле этого цикла происходит опрос всех входных портов контроллера и подсчет пришедших импульсов. После завершения математической обработки всех используемых данных, переменные с именем pddi (port data detector), где i - индекс переменной, обнуляются.

 

while (1)

{if (PINA.0==0x01){pdd0++;}(PINA.1==0x01){pdd1++;}(PINA.2==0x01){pdd2++;}(PINA.3==0x01){pdd3++;}(PINA.4==0x01){pdd4++;}(PINA.5==0x01){pdd5++;}(PINA.6==0x01){pdd6++;}

if (PINA