Construit cu succes

Placa de bază - v.0.2


Aceasta e documentaţia aferentă unei variante îmbunătăţite a v.0, pe care am numit-o "Versiunea 0.2". Am conceput-o ca variantă de test. Pentru această versiune de placă de bază, am desenat două revizii diferite (rev.3.16a şi rev.3.17e). Rev.3.16a a fost desenată prima, şi la construcţia ei efectivă m-am lovit de cîteva necesităţi suplimentare care au trebuit adăugate "în aer". Ca urmare, am desenat ulterior şi rev.3.17e, care include aceste adăugiri direct pe cablajul plăcii de bază. Odată cu rev.3.17e a plăcii de bază, am mai revizuit puţin şi modulul cu modificări, rezultatul fiind rev.0.4a a cablajului cu modificări. Funcţional este absolut identic, singurele diferenţe fiind unele trasee mutate pe cablaj pentru distribuţie mai uniformă şi renumerotarea circuitelor integrate de la U01 la U07. Oricare din cele două revizii de placă de bază funcţionează absolut identic cu oricare din cele două revizii de cablaj de modul cu modificări.

În continuare am să descriu cîteva caracteristici comune ambelor revizii ale "Versiunii 0.2":

Poate funcţiona cu orice versiune de interfaţă de disc (1.0, 1.1 sau 1.2). Memoriile folosite sînt memorii DRAM 4164 (64K x 1 bit), cu o singură tensiune, distribuite la fel ca la versiunea originală (în loc de memorii 4116 de 16K x 1 bit), în 4 bancuri a cîte 8 cipuri fiecare. (Pasul următor va fi o placă de bază identică dar cu cipuri 41464 de 64K x 8 bit. Pe moment nu este proiectată, dar am să trec şi la asta). Memoria ROM constă dintr-un cip de 2-16 KB pentru BOOT EPROM şi un cip de 64KB pentru BASIC EPROM. Cele 4 secţiuni de 16 KB ale BASIC EPROM pot fi selectate manual cu comutatori sau software prin intermediul semnalelor SO şi TO. Această placă de bază permite schimbarea configuraţiei calculatorului prin jumperi (cu calculatorul oprit). Se poate alege una din configuraţiile următoare:
Circuitul modificării de 80 caractere pe linie, circuitul generator de semnal NMI precum şi o versiune alternativă de circuit generator de întreruperi sînt construite pe un cablaj imprimat separat de dimensiuni mici care se cuplează la placa de bază prin doi conectori (J12 şi J13) aflaţi în partea dreaptă jos a plăcii de bază. Schemele corespunzătoare acestui modul se găsesc la pagina 15 din schemele plăcii de bază:

Placa de bază - rev.3.16a


Scheme - v.0.2 (rev.3.16a)

It appears you don't have a PDF plugin for this browser. No problem... you can click here to download the PDF file.


Caracteristici rev.3.16a:


  • 256KB total RAM instalat (maxim 80K utilizabili) sub forma a 4 bancuri (#0, #1, #2, #3) a cîte 8 cipuri 4164 (64Kx1bit). Fiecare banc are 64KB dar este folosit la un sfert din capacitate (16KB), asta din cauză că cipuri RAM de 16Kx1bit sînt cam imposibil de găsit în ziua de azi. Dar în caz că acestea sînt totusi disponibile, se pot instala în bancurile #0, #1, #2 cu condiţia să fie cipuri cu o singură tensiune (5V) cum ar fi de exemplu cipurile ruseşti KP565РУ6. Bancul #3 necesită neapărat cipuri 4164 (64Kx1bit) pentru funcţionare cu modificarea de 80K RAM. Dacă se lucrează numai în configuraţia cu 80K RAM, bancurile #0 şi #2 pot rămîne complet neinstalate.
  • 2-16KB ROM BOOT sub forma a 1 cip EPROM (2716-27128). Se poate folosi de fapt şi un 27256 (conţinînd două zone diferite de BOOT) sau 27512 (conţinînd patru zone diferite de BOOT) caz în care selecţia zonei de BOOT folosite se face cu JP22 şi JP23 iar selecţia tipului de EPROM se face cu JP7 şi JP8.
  • 64KB ROM BASIC sub forma a 1 cip EPROM (27512)
  • Selectarea unuia din cele 4 sisteme de operare care încap în ROM BASIC se poate face printr-o rutină din ROM BOOT prin intermediul semnalelor SO şi TO de pe placa de bază (condiţionat de JP3 şi JP4). De asemenea este posibilă şi selectarea manuală prin jumperii JP1 şi JP2.
  • A fost adăugat un buton de reset cu care calculatorul poate fi readus în configuraţia de pornire (RESET COBRA)
  • A fost adăugat un buton de activare a semnalului NMI la procesor
  • A fost adăugat un comutator (JP9) cu care se poate schimba modul de acces la bancul #0 de RAM (zona RAM BASIC) din R/O în R/W
  • A fost adăugat un conector (J11) pentru cuplarea la placa de bază a unui modul separat conţinînd un codor PAL
  • Au fost adăugaţi doi conectori (J12 şi J13) pentru cuplarea la placa de bază a unui modul separat conţinînd circuitul modificării de 80 caractere pe linie şi circuitul de generare a semnalului NMI pentru procesor.


Cablaj imprimat - v.0.2 (rev.3.16a)

Stratul dinspre componente (de deasupra) este desenat în roşu iar stratul opus în albastru. Ultimele două pagini ale acestui document arată contururile modulelor codorului PAL, interfeţei de disc (v.1.0 la penultima pagină şi v.1.1 la ultima pagină) şi circuitului cu modificări suprapuse peste poziţionarea componentelor plăcii de bază propriu-zise. Fişierele Gerber corespunzătoare acestui cablaj, pot fi descărcate sub forma unei arhive ZIP.

It appears you don't have a PDF plugin for this browser. No problem... you can click here to download the PDF file.



Cablajul imprimat al modulului cu modificări (NMI + 80 caractere) rev.0.4

Fişierele Gerber pentru acest cablaj, sub forma unei arhive ZIP.

It appears you don't have a PDF plugin for this browser. No problem... you can click here to download the PDF file.



Setările jumperilor plăcii de bază v.0.2 (rev.3.16a)

Această placă de bază conţine în total 23 de jumperi de configurare. Majoritatea sînt folosiţi pentru a alege una din cele 4 configuraţii hardware descrise la începutul acestei pagini. Restul îndeplinesc alte funcţii. O descriere completă a setărilor pentru toţi jumperii - împreună cu pagina din schemele versiunii 0.2 unde apare fiecare jumper - este dată mai jos:

It appears you don't have a PDF plugin for this browser. No problem... you can click here to download the PDF file.

Construcţia efectivă

În continuare am să descriu cîteva aspecte legate de construcţia efectivă a plăcii de bază, pe care le voi comenta cu niste screenshot-uri salvate cu ajutorul unui TV Tuner intern pentru PC. Am folosit TV Tunerul cu CoBra cu succes, şi în ţară, acum 20 de ani (TV Tuner PAL) şi în prezent (TV Tuner NTSC). Standardul plăcii TV Tuner nu contează, atît timp cît ieşirea de semnal videocomplex (alb-negru sau color) de la CoBra este legată la tuner prin mufa de intrare semnal video din tuner (de regulă o mufă RCA), şi se setează standardul TV pe PAL (din programul de redare TV folosit, de ex. eu am folosit tvtime). Imaginile de mai jos sînt alb-negru pentru că la momentul în care am luat snapshot-ul nu aveam încă un codor PAL asamblat.

Am pornit de la ideea de a folosi peste tot circuite integrate TTL în versiunea LS pentru a uniformiza "reţeta" de construcţie şi a minimiza consumul de curent, cu excepţia cazurilor unde este nevoie de o propagare mai rapidă a semnalelor. Experimental am constatat următoarele:

Probleme întîlnite la construcţia propriu-zisă:

1. Problema perturbaţiilor pe trasee lungi

Dupa ce am terminat de construit efectiv prototipul şi am început să fac teste cu el, am constatat în mai multe situaţii un simptom de genul celui din screenshot-ul de mai jos:


Mai văzusem aşa ceva şi cu ani în urmă cînd construisem cele două plăci de CoBra, prin 1990-92, dar n-am avut niciodata o idee exactă care era cauza. Acum, după ce am construit această nouă versiune şi am văzut iar manifestări de acest gen, a început să mă preocupe problema. Efectul parazit a devenit chiar extrem de persistent şi supărător dupa ce am asamblat şi codorul PAL, cu care imaginea se altera în acest fel mai ales pe fond complet alb, dupa intrarea în Basic. Ce s-a întîmplat efectiv a fost că încercam să ajustez accesul la memoria sistem cu un condensator de diferite valori pus pe RAS (pinul 4 al cipurilor 4164). Ei bine, cu codorul PAL ataşat la placa de bază, în momentul în care ataşam condensatorul pe pinii 4 ai memoriilor, imaginea complet albă din ecranul iniţial Basic începea sa ţopăie pe verticala (desincronizare). Condensatorul nici măcar nu era mare, avea 56 pF. Partea într-adevăr demenţială e următoarea: m-am gîndit, hai să văd cu sonda logică pusă pe semnalele de intrare în codorul PAL, care e treaba. Ei bine, surpriză: cum atingeam cu vîrful sondei logice semnalele HB sau HS la intrarea în codor, cum situaţia revenea la normal (cu condensatorul pus pe 4164/4). Orice alt semnal de intrare în codor, atins cu sonda logica, nu avea nici un efect asupra imaginii... Mi-am stors creierii o gramadă dar n-am reuşit sa găsesc nici o legatură logică între BNMREQ (care e de fapt RAS pentru memoria sistem) şi sincronizarea imaginii color pe ecran, HS şi HB (??!!??). Dacă nu ataşam codorul PAL la CoBra, problema asta nu apărea. Imaginea rămînea stabilă indiferent de ce condensatori de întîrziere puneam pe RAS şi indiferent de culoarea fondului de pe ecran, alb, negru, tot aia. Întrucît nu-mi venea nici o idee, am aruncat întrebarea pe forum (RomanianHomeComputer) şi niste răspunsuri din partea lui YO3GHM si YO7HLQ mi-au dat o banuială despre fenomen: perturbaţii parazite captate de traseele prin care semnalele NVS, NHB şi HS vin pînă la circuitul video şi mai ales traseele prin care HB şi HS vin pînă la codorul PAL, asta cu atît mai mult cu cît contactul cu sonda logică avea un efect benefic. Aşa că am recurs la terminarea traseelor pentru HB şi HS prin montarea, direct pe codorul PAL, a unor rezistori de 750 ohmi între aceste semnale de intrare şi masă. Am ales masa şi nu Vcc datorită naturii acestor două semnale (HB şi HS), care au nivelul "0" în majoritatea timpului, cu scurte impulsuri de "1". Ca urmare desincronizarile au dispărut. Problema rezolvată!

Ca un mic comentariu, placa de bază v.0.2 nou fabricată de mine include un traseu suplimentar pentru semnalul HB care este dus practic în colţul opus al plăcii (la distanţă mare), la conectorul pentru codorul PAL. Acest traseu trece prin mijlocul blocului de memorie, zonă destul de "zgomotoasă". Afară de asta, şi la versiunea originală (Versiunea 0) şi la v.0.2 nou construită de mine, semnalele NHB şi HS care vin la circuitul video trec şi ele prin mijlocul blocului de memorie. NVS nu trece pe acolo, el venind pe sus, pe deasupra lui 8255 şi pe sub EPROM-ul de BOOT. Deci şi în cazul unei plăci de CoBra originale (fabricată pe vremea respectivă) acest tip de perturbaţii poate apărea. Iar dacă apare, rezolvarea este terminarea traseelor care aduc semnalele de sincronizare la circuitul video, cu rezistori la Vcc pentru NHB (U87/9) şi NVS (U87/10) şi un rezistor la GND pentru HS (U88/13).

2. Problema refresh-ului memoriei dinamice

O altă problemă de care m-am lovit în decursul experimentelor cu acest prototip de placă de bază (v.0.2) a intervenit atunci cînd am încercat să schimb memoriile MMN4164-3 din bancul #3. (memoria sistem) cu cipuri TMS4164-20 (200 ns timp de acces), din care comandasem ceva mai multe, ca să-mi ajunga pentru vreo 10 calculatoare. Ei bine, după ce am instalat cipuri TMS4164-20 în soclurile bancului #3, am constatat un fenomen ciudat: dacă intram în Basic şi făceam o pauză mai mare de 15-20 secunde în care nu apăsam nici o tastă, după asta orice tastă apasată provoca un reset Basic sau eventual o "bălărire" a sistemului. Un fenomen similar se întîmpla în Devil, CP/M sau Opus, unde după un anumit punct aparea o "bălărire". Dacă, în schimb, imediat dupa intrarea în Basic apăsam continuu taste introducînd comenzi de genul BORDER x, PAPER y etc. fără să fac pauze mai mari de 5-10 secunde, toate comenzile se executau corect fără nici un fel de eroare şi sistemul nu se mai reseta sau "bălărea". Mi-am stors creierii destul de mult timp cu problema asta (vreo cîteva săptămîni) nereuşind să găsesc cauza. Am facut un test înlocuind memoria video (unde aveam cipuri NEC de 120 ns) cu cipuri TMS4164-20, şi am constatat că pe post de memorie video cipurile astea funcţionau perfect, fără erori. Deci nu erau defecte cipurile de memorie în sine... Pînă la urma, încercînd să gîndesc logic, am reflectat asupra faptului că dacă memoriile MMN4164-3 funcţionau corect (chiar dacă aveau nevoie de un condensator de întîrziere de 150 pF pe RAS) iar memoriile TMS4164-20 nu funcţionau corect (pe post de memorie sistem), atunci înseamnă că trebuie să fie o diferenţă constructivă între cele două tipuri de memorii. Aşa că am luat la răsfoit catalogul Microelectronica unde este prezentată foaia de catalog a acestor memorii, în paralel cu foaia de catalog pentru memoriile TMS4164 (fabricate de Texas Instruments). Și asa, în al 14-lea ceas, m-am "prins" că memoriile de la Texas Instruments necesită o adresa de refresh pe 8 biţi (256 cicluri de refresh) spre deosebire de cele de la Microelectronica (şi dealtfel spre deosebire şi de majoritatea memoriilor 4164 fabricate de alţi producători) care sînt proiectate pentru 128 cicluri de refresh. Odată ce am realizat care era beleaua, am început să mă gîndesc cum aş putea să "produc" ad-hoc cel de-al optulea bit pentru adresa de refresh, pentru a putea să folosesc totuşi acest stoc de memorii pe care deja dădusem o grămadă de bani. Și am proiectat circuitul de mai jos, pe care l-am construit practic "în aer" cu fire şi l-am cuplat la placa de bază tot cu fire. L-am instalat şi apoi am pornit placa de bază, şi de această dată problema a dispărut complet. Funcţiona perfect peste tot, Basic, Devil, OPUS, CP/M, şi partea interesantă e că nici măcar nu a mai fost nevoie de vreun condensator de întîrziere pentru RAS sau CAS la memoria sistem. Memoriile astea de 200 ns se potrivesc la CoBra ca o mănuşă! Concluzia mea e că, pentru CoBra, cele mai bune memorii dinamice sînt cele cu timp de acces de 200 ns. Asta cel puţin cu combinaţia de TTL-uri pe care am folosit-o eu (LS peste tot, cu excepţia celor 4 multiplexoare de adrese video care sînt Schottky (S), a circuitelor U23 (74AS20), U18 şi U42 (74AS00) din modificarea de 80K şi a circuitului U55 (74AS00) din circuitul de configurare şi selecţie).

It appears you don't have a PDF plugin for this browser. No problem... you can click here to download the PDF file.



În continuare cîteva imagini cu placa de bază asamblată:

Cîteva precizări se impun în legătură cu aceste imagini:

Faţă de schemele şi cablajul plăcii de bază prezentate mai sus, a trebuit să fac nişte modificări / improvizaţii la momentul construcţiei efective. Acestea sînt vizibile în imaginile alăturate în partea dreaptă în spaţiul liber dintre cele două grupuri de TTL-uri unde în versiunea originală de cablaj din 1986 era coloana de EPROM-uri de 2KB.

La construcţia efectivă, poarta cu diode din circuitul modificării de 80KB RAM nu mi-a funcţionat corect, aşa că am decis în ultimul moment s-o înlocuiesc cu o poartă ŞI dintr-un 7411. Pe acest 7411 l-am montat într-un soclu pe care l-am înfipt cu 6 pini în găurile destinate iniţial celor 3 diode din poarta ŞI cu diode. Restul pinilor soclului sînt îndoiţi lateral la orizontală rămînînd complet deasupra plăcii de bază, dar sub ei am pus totuşi nişte bucăţi de hîrtie albă, vizibile în imaginile alăturate, pentru a fi sigur că sînt complet izolaţi de traseele metalice de pe cablaj.

O a doua poartă din acest 7411 a fost folosită pentru circuitul de refresh pe 8 biţi la DRAM, întrucît în cazul meu particular am avut nevoie de asa ceva, deoarece memoriile DRAM pe care le-am cumpărat sînt de fabricaţie Texas Instruments iar firma asta la vremea respectivă le-a fabricat cu refresh pe 8 biţi. N-am fost conştient de acest fapt decît în momentul în care le-am montat pe placă şi am văzut că nu funcţionează corect (vezi comentariul de ceva mai sus). Dar aici, integratul suplimentar 7411 menţionat mai sus a picat la ţanc, am folosit o a doua poartă din el pentru circuitul de refresh pe 8 biţi. Celelalte două integrate din acest circuit (7474 si 74S157) sînt montate şi ele în niste socluri, dar soclurile sînt întoarse cu pinii în sus după cum se vede în imagini (lîngă 7411 în stînga ceva mai jos) pentru a putea face toate legăturile cu fire. Cam asta e povestea cu hărmălaia de fire vizibilă în mijlocul plăcii.

Dar astea sînt modificări care au fost necesare doar în cazul meu particular. După cîte înţeleg, majoritatea celor care au construit placa de bază după schemele prezentate mai sus nu au avut probleme cu poarta cu diode şi nici cu memorii cu refresh pe 8 biţi, aşa că aceste improvizaţii sînt prezentate aici doar ca fapt divers. Ele nu fac parte din schemele "oficiale" ale plăcii de bază rev.3.16a.


Placa de bază - rev.3.17e


Această revizie a plăcii de bază include (direct pe cablaj) circuitul de refresh pe 8 biţi, un semnal de sincro vertical mai aproape de standard, un semnal de FLASH mai aproape de simetric pentru software Spectrum BASIC, iar poarta ŞI cu 3 diode din Modificarea de 80K este acum înlocuită cu o poartă TTL dintr-un 7411. Afară de asta, trei jumperi de pe placa de bază care erau exact lîngă modulul cu modificări au fost deplasaţi ceva mai departe de modul pentru acces mai uşor.

Scheme - v.0.2 (rev.3.17e)

It appears you don't have a PDF plugin for this browser. No problem... you can click here to download the PDF file.


Îmbunătăţiri faţă de rev.3.16a:


  • Circuitul de refresh memorii dinamice pe 8 biţi a fost inclus direct pe placa de bază. În cazul folosirii de memorii cu refresh pe 7 biţi, UR1 şi UR2 pur şi simplu nu vor mai fi plantate pe cablaj.
  • A fost adăugat un nou jumper (JP24) pe placa de bază pentru a selecta manual tipul de semnal de linie de adresă A7 necesar memoriei dinamice (DRAM#0, DRAM#2, DRAM#3), între semnal pentru memorii cu refresh pe 7 biţi şi semnal pentru memorii cu refresh pe 8 biţi. În cazul folosirii de memorii cu refresh pe 7 biţi, JP24 trebuie pus pe poziţia 2-3, iar pentru refresh pe 8 biţi pe poziţia 1-2.
  • La Circuitul de configurare şi selecţie, MRFSH de la circuitul de refresh pe 8 biţi (la U36/3, în loc de RFSH ca în schema originală) elimină necesitatea unui condensator de întîrziere pe U36/3 pentru schimbarea fără probleme a configuraţiei
  • La Circuitul formator semnal video, adăugarea R116 (inexistent în schema originală) simetrizează oscilaţia semnalului de FLASH, dînd un factor de umplere mult mai apropiat de 50%
  • La Circuitul generator de sincroimpulsuri, poarta U59/6 înlocuieşte AR2 din schema originală (la intrarea U34/9) cu un produs de 3 semnale, în scopul aducerii impulsului de sincro cadre mai aproape de durata standard
  • La Circuitul memoriei video, poarta ŞI cu 3 diode a fost înlocuită cu o poartă ŞI dintr-un 7411 (U59/8,9,10,11)
  • La Modulul cu circuite de modificări, circuitele integrate au fost renumerotate de la U01 la U07. Unele trasee au fost optimizate pe cablaj, dar funcţional rev.0.4a este 100% identic cu rev.0.4


Cablaj imprimat - v.0.2 (rev.3.17e)

Stratul dinspre componente (de deasupra) este desenat în roşu iar stratul opus în albastru. Ultimele două pagini ale acestui document arată contururile modulelor codorului PAL, interfeţei de disc (v.1.0 la penultima pagină şi v.1.1 la ultima pagină) şi circuitului cu modificări suprapuse peste poziţionarea componentelor plăcii de bază propriu-zise. Fişierele Gerber corespunzătoare acestui cablaj, pot fi descărcate sub forma unei arhive ZIP.

It appears you don't have a PDF plugin for this browser. No problem... you can click here to download the PDF file.



Cablajul imprimat al modulului cu modificări (NMI + 80 caractere) rev.0.4a

Fişierele Gerber pentru acest cablaj, sub forma unei arhive ZIP.

It appears you don't have a PDF plugin for this browser. No problem... you can click here to download the PDF file.