Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

EWB\EW2\CHAPTER1\1-4\1-4.HTM

 

Двонаправлена асоціативна пам’ять – нейронна мережа, в якій зображення можуть подаватися як на шар Х, так і на шар Y елементів. При цьому не передбачається, що зображення подаються одночасно.

 

Якщо подано зображення SP на шар Х, то на виході у-нейронів з’являється ТР зображення і навпаки.

 

Текст програми:

#include <vcl.h>

#pragma hdrstop

#include "Unit1_r3.h"

#include "Unit1.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int S1m[42];

int S2m[42];

int S3m[42];

int t1m[30];

int t2m[30];

int t3m[30];

int W[30][20];

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

for(int i=1; i<43; i++)

{

S1m[i]=-1; S2m[i]=-1; S3m[i]=-1;

t1m[i]=-1; t2m[i]=-1; t3m[i]=-1;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N6Click(TObject *Sender)

{ Form1->Close();}

//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)

{

int M1[42] = { 1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,-1,-1,1,-1,-1};

int M2[42] = {1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,1};

int Mt1[30] = {-1,1,-1,-1,-1,-1,1,-1,1,1,1,1,-1,-1,1,-1,-1,1,-1,-1};

int Mt2[30] = {-1,-1,1,-1,-1,1,-1,-1,1,1,1,1, -1,1,-1,-1, -1,-1,1,-1};

int j=0,k=1;

for(int i=1; i<43; i++)

{

j++;

if(j>5)

{ j=1; k++; }

S1m[i] = M1[i-1];

if(S1m[i]==1) StringGrid1->Cells[j][k] = "$";

else StringGrid1->Cells[j][k] = " ";

 

S2m[i] = M2[i-1];

if(S2m[i]==1) StringGrid3->Cells[j][k] = "$";

else StringGrid3->Cells[j][k] = " ";

}

j=0;k=1;

for(int i=1; i<31; i++)

{

j++;

if(j>4)

{ j=1; k++; }

t1m[i] = Mt1[i-1];

if(t1m[i]==1) StringGrid2->Cells[j][k] = "$";

else StringGrid2->Cells[j][k] = " ";

t2m[i] = Mt2[i-1];

if(t2m[i]==1) StringGrid4->Cells[j][k] = "$";

else StringGrid4->Cells[j][k] = " ";

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)

{

for(int j=1; j<31; j++)

for(int i=1; i<21; i++)

{ W[j][i]=t1m[i]*S1m[j]+t2m[i]*S2m[j];

ІtringGrid5->Cells[i][j]=W[j][i]; }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

for(int i=1; i<31; i++)

{ StringGrid5->Cells[i][0] = i;

StringGrid5->Cells[0][i] = i;}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,

int ARow, bool &CanSelect)

{

if(StringGrid1->Cells[ACol][ARow]=="")

{ StringGrid1->Cells[ACol][ARow]="$";

S1m[(ARow-1)*5+ACol]=1; }

else

{ StringGrid1->Cells[ACol][ARow]="";

S1m[(ARow-1)*5+ACol]= -1; }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::StringGrid3SelectCell(TObject *Sender, int ACol,

int ARow, bool &CanSelect)

{

if(StringGrid3->Cells[ACol][ARow]=="")

{ StringGrid3->Cells[ACol][ARow]="$";

S2m[(ARow-1)*5+ACol]=1; }

else

{ StringGrid3->Cells[ACol][ARow]="";

S2m[(ARow-1)*5+ACol]= -1; }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::StringGrid2SelectCell(TObject *Sender, int ACol,

int ARow, bool &CanSelect)

{

if(StringGrid2->Cells[ACol][ARow]=="")

{ StringGrid2->Cells[ACol][ARow]="$";

t1m[(ARow-1)*4+ACol]=1; }

else

{ StringGrid2->Cells[ACol][ARow]="";

t1m[(ARow-1)*4+ACol]= -1; }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::S1Click(TObject *Sender)

{

int dopmas[21];

int l=0,k=1;

for(int i=0; i<22;i++)

dopmas[i]=0;

for(int j=1; j<21; j++)

{

for(int i=1; i<31; i++)

{

dopmas[j] = dopmas[j]+ W[i][j]*S3m[i];

}

l++;

if(l>4)

{ l=1; k++; }

if(dopmas[j]>0) StringGrid7->Cells[l][k]="$";

else StringGrid7->Cells[l][k]="";

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::StringGrid7SelectCell(TObject *Sender, int ACol,

int ARow, bool &CanSelect)

{

if(StringGrid7->Cells[ACol][ARow]=="") { StringGrid7->Cells[ACol][ARow]="$";

t3m[(ARow-1)*4+ACol]=1; }

else { StringGrid7->Cells[ACol][ARow]=""; t3m[(ARow-1)*4+ACol]= -1; }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N9Click(TObject *Sender)

{ Form1->Close();}

//---------------------------------------------------------------------------

void __fastcall TForm1::N5Click(TObject *Sender)

{

int dopmas[31];

int l=0,k=1;

for(int i=0; i<32;i++)

dopmas[i]=0;

for(int j=1; j<31; j++)

{

for(int i=1; i<21; i++)

{ dopmas[j] = dopmas[j]+ W[j][i]*t3m[i]; }

l++;

if(l>5) { l=1; k++; }

if(dopmas[j]>0) StringGrid6->Cells[l][k]="$";

else StringGrid6->Cells[l][k]="";

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N8Click(TObject *Sender)

{ AboutBox->ShowModal();}

//---------------------------------------------------------------------------

void __fastcall TForm1::N7Click(TObject *Sender)

{ Form2->ShowModal(); }

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{ Form1->Close(); }

//---------------------------------------------------------------------------


Результат роботи програми:

Висновки: В результаті виконання розрахунково-графічного завдання був засвоєний алгоритм функціонування двонаправленої асоціативної пам’яті, була створена програма, що демонструє роботу двонаправленої асоціативної пам’яті.

EWB\EW2\CHAPTER1\1-4\1-4.HTM

 

 

В зависимости от технологии изготовления интегральные микросхемы (ИМС) подразделяются на серии (семейства), различающиеся физическими параметрами базовых элементов и их функциональным назначением. Наибольшее распространение получили ИМС, изготовляемые по ТТЛ- и КМОП-технологиям. (ТТЛ — транзисторно-транзисторная логика с использованием биполярных транзисторов, КМОП — с использованием комплементарных МОП-транзисторов).

 

Первой была выпущена ТТЛ-серия SN74/SN54 (74 — коммерческая, 54 — для военных применений). Отечественным аналогом серии SN74 стала популярная в свое время серия 155. В 1967 г. дополнительно разработаны семейства SN74H/54H (High speed — быстродействующая, отечественные аналоги — серии 131 и 130) и SN74L/54L (Low power — маломощная, аналоги — серии 158 и 136).

В 1969 г. разработана серия SN74S/54S (серии 531 и 530), в 1971 г. — серия SN74LS/54LS (серии 555 и 533), в 1979 г. — серия SN74F/54F фирмы Fail-child (FAST — Fairchild's Advanced Schottky TTL, серия 1531), в 1980 г. — серия SN74ALS/54ALS (серия 1533), в 1982 г. — серия SN74AS/54AS (в обозначениях серий S — Schottky, LS — Low power Schottky, ALS — Advanced Low power Schottky, AS — Advanced Schottky, Advanced — усовершенствованная). Использование диодов с барьером Шотки позволило значительно повысить быстродействие ИМС за счет предотвращения глубокого насыщения транзисторов в ключевом режиме. Приятной для разработчика особенностью всех перечисленных серий является полное совпадение номеров выводов и обозначения типа для ИМС одинакового функционального назначения. Например, если SN7472 — JK-триггер, то обозначение 72 будет сопутствовать ему во всех сериях. Этот же принцип используется и в отечественных ИМС, хотя тип здесь обозначается буквами.

 

В библиотеке программы EWB используется только серия SN74. Редактирование параметров отдельных ИМС, к сожалению, невозможно. Для облегчения работы с библиотекой ниже приводится список отечественных аналогов серии SN74 (для краткости некоторые повторяющиеся символы опущены).

 

 

7400 155ЛАЗ 4 элемента 2И-НЕ (цифра 2 означает 2-входовой);

7402 155ЛЕ1 4 элемента 2ИЛИ-НЕ;

7406 155ЛНЗ 6 элементов НЕ с открытым коллектором;

7407 155ЛП9 6 буферных элементов с открытым коллектором;

7408 155ЛИ1 4 элемента 2И;

7409 155ЛИ2 4 элемента 2И с открытым коллектором;

7410 155ЛА4 3 элемента ЗИ-НЕ;

7412 155ЛА10 3 элемента ЗИ-НЕ с открытым коллектором;

7420 155ЛА1 2 элемента 4И-НЕ;

7422 155ЛА7 2 элемента 4И-НЕ с открытым коллектором;

7425 155ЛЕЗ 2 элемента 4И-НЕ со входом стробирования;

7426 155ЛА11 4 элемента 2И-НЕ с открытым коллектором;

7428 155ЛЕ5 4 элемента 2ИЛИ-НЕ;

7430 155ЛА2 Элемент 8И-НЕ;

7432 155ЛЛ1 4 элемента 2ИЛИ;

7437 155ЛА12 4 элемента 2И-НЕ с открытым коллектором;

7438 155ЛА13 4 элемента 2И-НЕ с открытым коллектором;

7440 155ЛА6 2 элемента 4И-НЕ с повышенной нагрузочной способностью;

7442 555ИД6 Дешифратор 4х10 (декодирование 4-разрядного двоичного числа в десятичное);

7451 155ЛР11 Элементы 2-2И-2ИЛИ-НЕ (2 элемента 2И, выходы которых подключены на кристалле ИМС к элементу 2ИЛИ-НЕ) и 2-ЗИ-2ИЛИ-НЕ (аналогично для 2-ЗИ);

7454 155ЛР13 Элемент 2-3-3-2И-4ИЛИ-НЕ (2 элемента 2И и 2 элемента ЗИ объединены через 4ИЛИ-НЕ);

7455 155ЛР4 Элемент 4-4И-2ИЛИ-НЕ (2 элемента 4И объединены через 2ИЛИ-НЕ) с возможностью объединения по ИЛИ (выходной каскад элемента 2ИЛИ-НЕ имеет дополнительные входы транзистора С — Collector и Е — Emitter, что и позволяет осуществить объединение по ИЛИ);

7472 155ТВ1 JK-триггер с элементом ЗИ на входах;

7474 155ТМ2 2 D-триггера;

7475 155ТМ7 4 D-триггера с прямыми и инверсными выходами;

7476 155ТВ7 2 JK-триггера;

7477 155ТМ5 4 D-триггера с прямыми выходами;

7486 155ЛП5 4 элемента Исключающее ИЛИ;

7490 155ИЕ2 4-разрядный асинхронный двоично-десятичный счетчик;

7492 155ИЕ4 4-разрядный асинхронный счетчик-делитель на 12;

7493 155ИЕ5 4-разрядный асинхронный двоичный счетчик;

74107 155ТВ6 2 JK-триггера с раздельной установкой нуля;

74109 155ТВ15 2 JK-триггера;

74112 155ТВ9 2 JK-триггера;

74113 155ТВ10 2 JK- триггера с предустановкой нуля или единицы;

74114 155ТВ11 2 JK-триггера с предустановкой нуля или единицы и общим обнулением;

74125 155ЛП8 4 буфера с тремя состояниями;

74126 155ЛП14 4 формирователя с тремя состояниями;

74134 155ЛА19 Элемент 12И-НЕ с тремя состояниями;

74138 155ИД7 Дешифратор-демультиплексор 3х8;

74139 155ИД14 2 дешифратора-демультиплексора 2х4;

74145 155ИД10 Двоично-десятичный дешифратор с открытым коллектором;

74148 155ИВ1 Шифратор приоритетов 8х3;

74150 155КП1 Селектор-мультиплексор 16х1;

74151 155КП7 Селектор-мультиплексор 8х1;

74152 155КП5 Селектор-мультиплексор 8х1;

74153 155КП2 2 селектора-мультиплексора 4х2;

74154 155ИДЗ Дешифратор-демультиплексор 4х16;

74155 155ИД4 2 дешифратора-мультиплексора 2х4;

74156 555ИД5 2 дешифратора-демультиплексора 2х4 с открытым коллектором;

74157 533КП16 4-разрядный селектор-мультиплексор 2х1;

74158 1533КП18 4-разрядный селектор-мультиплексор 2х1 с инверсией;

74160 155ИЕ9 4-разрядный синхронный двоично-десятичный счетчик;

74162 1533ИЕ11 4-разрядный синхронный десятичный счетчик;

74163 155ИЕ18 4-разрядный синхронный реверсивный двоично-десятичный счетчик;

74164 155ИР8 8-разрядный регистр сдвига с параллельными выходами;

74169 155ИЕ17 4-разрядный двоичный синхронный реверсивный счетчик;

74173 155ИР15 4-разрядный регистр с тремя состояниями;

74174 155ТМ9 6 D-триггеров;»

74175 155ТМ8 4 D-триггера;

74181 155ИПЗ 4-разрядное АЛУ;

74191 155ИЕ13 Синхронный реверсивный двоичный счетчик;

74194 155ИР11 4-разрядный универсальный регистр сдвига;

74195 155ИР12 4-разрядный регистр сдвига с параллельным вводом;

74198 155ИР13 8-разрядный универсальный регистр сдвига;

74240 155АПЗ 8 буферов с инверсией и тремя состояниями;

\

74241 155АП4 8 буферов с тремя состояниями;

74244 155АП5 2х4 буферов с тремя состояниями;

74251 155КП15 Селектор-мультиплексор 8х1 с тремя состояниями;

74253 155КП12 2 селектора-мультиплексора 4х1 с тремя состояниями;

74257 155КП11 4 селектора-мультиплексора 2х1 с тремя состояниями;

74258 155КП14 4 селектора-мультиплексора 2х1 с тремя состояниями и инверсией;

74273 155ИР35 8-разрядный регистр с установкой нуля;

74280 1533ИП5 9-разрядная схема контроля четности;

74283 155ИМ6 4-разрядный полный сумматор с ускоренным переносом;

74298 155КП13 4 2-входовых мультиплексора с запоминанием;

74365 155ЛП10 6 повторителей с управлением по входам и тремя состояниями;

74367 155ЛП11 6 повторителей с раздельным управлением по входам и тремя состояниями;

74373 155ИР22 8-разрядный буферный регистр с тремя состояниями и потенциальным управлением;

74374 155ИР23 8-разрядный буферный регистр с тремя состояниями и импульсным управлением;

74377 155ИР27 8-разрядный регистр с разрешением записи.

 

Ссылки в этом перечне на ИМС других серий вызвано их отсутствием в серии 155, однако здесь это не имеет существенного значения, поскольку речь идет только о выяснении функционального назначения выводов.

Цифровые ИМС КМОП-серии получили название от своего базового элемента, в котором используется так называемая комплементарная пара из двух МОП-транзисторов различной проводимости. Такие ИМС характеризуются малым потреблением мощности в статическом режиме (0,02...! мкВт на вентиль), большим диапазоном питающих напряжений (3.18 В), высоким входным сопротивлением (до десятков ТОм), большой нагрузочной способностью, незначительной зависимостью характеристик от температуры, малыми размерами транзисторов в интегральном исполнении и, как следствие, более высокой степенью интеграции по сравнению с ТТЛ-микросхемами.

Первые ИМС по КМОП-технологии разработаны фирмой RCA в 1968 г. Эта серия имела название CD4000 (отечественные аналоги — серии 164 и 176), затем последовали серии CD4000A, CD4000B (отечественные аналоги — 564, 561 и 1561, а также МС14000А и МС14000В фирмы Motorola) и 54НС фирмы National Semiconductor в 1981 г. (отечественный аналог — серия 1564). В программе EWB в качестве библиотечных используюся ИМС фирмы RCA, большинство которых приведено в следующем перечне:

 

4001 561ЛЕ5 4 элемента 2ИЛИ-НЕ;

4002 561ЛЕ6 2 элемента 4ИЛИ-НЕ;

4011 561ЛА7 4 элемента 2И-НЕ;

4012 561ЛА8 2 элемента 4И-НЕ;

4013 561ТМ2 2 D-триггера;

4015 561ИР2 2 4-разрядных сдвиговых регистра;

4023 561ЛА9 3 элемента ЗИ-НЕ;

4025 1561ЛЕ10 3 элемента ЗИЛИ-НЕ;

4028 561ИД1 двоично-десятичный дешифратор;

4030 561ЛП2 4 элемента ИСКЛЮЧАЮЩЕЕ ИЛИ;

4040 1561ИЕ20 12-разрядный двоичный счетчик;

4066 561КТЗ 4 переключателя (цифрового или аналогового сигнала);

4070 1561ЛП14 4 элемента ИСКЛЮЧАЮЩЕЕ ИЛИ;

4081 1561ЛИ2 4 элемента 2И.

 

 

Приведем систему обозначений входов и выходов простейших логических элементов, используемых в программе EWB. Обозначения для ТТЛ-серии приводятся в первых круглых скобках, для КМОП — во вторых, при одинаковых обозначениях — без скобок:

Вывод для питания — (Ucc), (Udd);

Общий вывод — (GND), (Uss);

Вывод не подключен — NC;

Входы—(А, В, С...),(!);

Выходы — (Y), (О);

Вход стробирования — (G).

 

Приведем пример обозначения последовательности выводов для 2-входовых логических элементов:

(1А 1В 1Y, 2А 2В 2Y, ЗА 3В 3Y, 4А 4В 4Y), (II 12 01,13 14 02,15 16 03,17 18 04).

Для более сложных ИМС определение функционального назначения их выводов целесообразно проводить путем сопоставления с отечественными аналогами [4—10].

Рассмотрим так называемые базовые элементы, из которых набираются самые сложные цифровые ИМС.

 




Дата добавления: 2014-12-18; просмотров: 178 | Поможем написать вашу работу | Нарушение авторских прав

<== предыдущая лекция | следующая лекция ==>
Завдання: Створити програму, що демонструє роботу двонаправленої асоціативної пам’яті.| Биполярные транзисторы

lektsii.net - Лекции.Нет - 2014-2025 год. (0.024 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав