|
Двонаправлена асоціативна пам’ять – нейронна мережа, в якій зображення можуть подаватися як на шар Х, так і на шар 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 | Поможем написать вашу работу | Нарушение авторских прав |
<== предыдущая лекция | | | следующая лекция ==> |
Завдання: Створити програму, що демонструє роботу двонаправленої асоціативної пам’яті. | | | Биполярные транзисторы |