Categories
Curiositats

descens d’inserció

La conquesta de l’èxit en qualsevol projecte de nova creació s’assembla al descens d’inserció d’un mòdul lunar cap a la pols desconeguda d’un satèl·lit distant. Davant la posada en marxa d’un sistema mai posat a prova, s’experimenta una tensió similar a la del vehicle que abandona la seguretat de l’òrbita.

En primer lloc, cal dibuixar que el descens d’inserció és el moment de màxima vulnerabilitat doncs si el error hi és no perdonarà. De la mateixa manera que el mòdul ha de frenar la seva velocitat amb una precisió mil·limètrica, qualsevol estructura empresarial o tecnològica requereix un ajust rigorós per no col·lapsar sota el pes de les expectatives. Malgrat que la planificació hagi estat exhaustiva, la realitat del terreny sempre presenta irregularitats que cap simulació pot preveure totalment.

D’altra banda, la duresa d’aquesta fase resideix en la irreversibilitat de les decisions. Un cop s’encenen els motors de descens, ja no hi ha marxa enrere; només queda la confiança en l’enginyeria i en la suor abocada durant els mesos/anys de preparació. Tanmateix, aquesta resistència és la que forja la robustesa del sistema final. Les sacsejades no són errors de disseny, sinó proves necessàries que validen la integritat de cada peça que hem acoblat.

Finalment, l’objectiu de tot aquest sacrifici és l’allunatge suau: la consolidació d’una idea que es converteix en realitat operativa. Tot i que el camí és àrid i ple d’incerteses, la satisfacció de veure el sistema funcionant per primera vegada compensa qualsevol fatiga prèvia. La duresa no és un obstacle, sinó el requisit indispensable per transformar un somni teòric en una fita històrica que perdurarà en el temps.

Parit, dibuixat i redactat amb l’ajut de Gemini, però totalment d’acord amb el resultat.

Categories
Desenvolupaments

80486 FS

Posta en Marxa

Després de una lectura detallada de la pàgina del 80386 Monitor (que serveix de base per a la placa 80486-FS), queda clar que el “procés de creació” de John Monahan és, en realitat, una transició de la simplicitat del Mode Real (16 bits) a la potència del Mode Protegit (32 bits).

Aquí fem un resum conceptual i un primer full de ruta tècnic per a la posta en marxa de la 80486 Full Size amb la MSDOS Support Board V2.

Resum de la “Filosofia Monahan” per al 486

El monitor que volem carregar és complex: arrenca com un 8086 clàssic (Mode Real) però està dissenyat per saltar al Mode Protegit per gestionar els 4GB de RAM del bus OTT de 32 bits, objectiu base per al posterior estudi de la DRAM sobre SIMM de 72 contactes. La clau és que tot el programari resideix a l’EPROM de la placa Support, però s’executa amb la CPU 80486-FS en una altra zona del bus. El monitor utilitza taules de descriptors (GDT) per definir què és memòria lenta (S-100) i què és memòria ràpida (OTT), així també definit en la CPLD de la 80486 Full Size.

Full de ruta: Passos per posar en marxa la 80486 Full Size

1. Preparació del Codi Font (80386.A86)

S’utilitza el 80386.A86 de la secció de software.

  • Objectiu: Modificar les adreces base si es vols que el monitor visqui a una adreça diferent de F0000H.
  • Atenció: El codi de Monahan està ple de directives [BITS 16] i [BITS 32]. S’ha de respectar aquesta alternança, ja que el 80486 arrenca en 16 bits però el menú de BIOS voldré que faci proves en 32 bits.

2. Configuració de la Placa MSDOS Support Board V2 (EPROM/UART)

Aquesta placa és la terminal i la memòria de programa d’engegar BIOS com un Chip Set.

  • Straps d’Adreça: Configurar la EPROM per respondre a F0000H - FFFFFH.
  • UART (16550): El codi font defineix els ports I/O (normalment 00H o 10H segons el jumper de la placa de suport). Si no coincideixen, el monitor a Visual Studio “parlarà” al buit.
  • Binaris: Grava el monitor compilat a les dues EPROM’s (si es servir el mode de 16 bits de la placa de suport per a l’arrencada).

3. Configuració de la CPU 80486 Full Size (Master Alone)

Com que estarà sola (sense altres mestres), s’ha d’assegurar el següent:

  • Strap K3: Determina si la CPU busca el codi a la seva pròpia placa o al bus S-100 (la placa Support). Cal posar-lo per buscar al bus S-100.
  • Bus OTT (32 bits): Si es disposa d’una placa de RAM-OTT connectada pel cable superior, els jumpers de la 80486-FS han de reflectir aquest “Memory Map” que el codi font espera (normalment a partir de la memòria alta o el primer MB segons el monitor).
  • Ready/Wait States: Inicialment, caldrà posar el màxim de wait states als jumpers per assegurar que la CPU no “corre més” que la placa de suport.

4. Desenvolupament del Monitor a Visual Studio (Pas a Pas)

Per documentar, l’estructura del codi hauria de ser:

  1. Reset Vector: El codi ha de tenir un salt a FFFF:0000 cap a la rutina d’inicialització.
  2. Init Serial: Rutina mínima per configurar l’UART de la placa Support (Baud rate, paritat).
  3. Sign-on Message: Enviar una cadena “80486 S100 Master Ready”.
  4. Menú de Comandes:
    • M: Dump de memòria (útil per veure si es veu la RAM del bus OTT).
    • I/O: Proves de ports.
    • P: Salt a Mode Protegit (aquí és on s’haurà de carregar la GDT que esmenta la lectura).

5. Verificació de la GDT (Global Descriptor Table)

Segons la lectura, per a la 486 farà falta configurar al codi:

  • GDT[1]: Code Segment (Base 0, Limit 4GB, 32-bit).
  • GDT[2]: Data Segment (Base 0, Limit 4GB, 32-bit).

Això permetrà, des del menú, escriure a qualsevol adreça de la placa de RAM-OTT de 32 bits sense les limitacions dels 64K del Mode Real.

Configuració: Aquí es documenta la relació entre el jumper de selecció de ROM de la CPU i l’adreça base de la placa de suport.

Categories
Desenvolupaments

TTL hand made

TTL hand made és una tècnica de disseny digital que per antiga te la qualitat de la experiència de lo ben fet. El perquè defenc aquesta tecnologia tant arcaica però encertada és la proposta d’aquesta entrada.

Sobre protocols de test

Aquest és el punt més important en defensa del plantejament. Quan s’adquireix un component fiable al darrera hi ha tota una cadena de comprovacions. Obviarà dir perquè els productes no filtrats per la cadena interna a la producció passaran un altre gran filtre.

Conegudes les limitacions del component electrònic ens toca cobrir els nostres dissenys amb noves cadenes de comprovació perquè es mantingui la fiabilitat. Afinar els enllaços entre components no és un art sense exigències perquè cada unitat d’enginyeria està per complir amb objectius. Una cadena de components mal alineada és així el causant de ruptures funcionals quan no són destructives.

És molt bonic afegir a l’exigència de la qualitat del component electrònic la flexibilitat de que el component sigui programable com la navalla suïssa, però no hem d’oblidar que afegeix noves necessitats en la cadena de comprovació i això es fa difícil perquè ens dispara els costos.

Cost dels materials

Hi ha diversos aspectes per calibrar un bon cost econòmic del projecte, sobre tot per la cadena de subministrament.

A nivell local, el component electrònic TTL encara és un bon aliat en el disseny digital perquè compleixen amb la cadena de comprovació de origen amb un alt grau de qualitat a un preu baix. En aquest mateix sentit, l’absència de flexibilitats evita més errors, i és així perquè no tenim més remei que acceptar les seves limitacions. Per contra partida, el component TTL ens ocupa molt d’espai a la placa, deixant-nos a la cuneta de la tecnologia.

Però, si sou seguidors d’aquesta web, sabreu que les comunitats del computador dels anys 70 és precisament el seguiment d’un sistema de plaques electròniques amb una extensió de 10 per 5 polsades amb la possibilitat de fer versions de 10 per 10 si us heu quedat curs al definir l’objectiu. Recordar que sempre es podrà repartir les tasques, doncs el sistema admet múltiples plaques en el bus S100.

El cost a passar pistes en sistemes digitals es torna exponencial al augmentar el nombre de terminals per component. Per evitar-ho molts aficionats estiren de les PCB multicapa, però el preu de l’augment de dues capes a quatre no és del doble sinó del quadruple, de sis capes a dotze vegades i així exponencialment. Potser, en el sector ferroviari de passatgers es poden pagar les costes de les PCB degut al rendiment que tindrà un tren, però a nivell domèstic és prohibitiu.

És per això que les plaques del bus S100 eren d’aquesta dimensió.

La compatibilitat Electromagnètica

De res serveix tanta economia si al cap i a la fi falla perquè anem tant alts de sensibilitat que qualsevol pertorbació ens perjudica. Cal no oblidar el perquè es propaguen els senyals que passen pels cables. Una pista passant pel costat d’una altra a llarga distància és un condensador i per això se’ns colen els senyals entre les pistes.

Com les cordes d’un violí, les plaques del bus S100 perfectament col·locades a distàncies mil·limètricament iguals ressonen als camps magnètics provocats per les plaques veïnes, perquè no pot ser d’una altra manera. L’estàndard IEEE696 es cura en salut quan només un mestre i un esclau són actius al bus en cada moment.

Avisats per endavant imagineu que els diferents mestres de bus siguin actius en circumstàncies del cicle de bus coincidents, doncs per manca d’aïllament electromagnetic una arquitectura multi mestra no te més remei que fer vibrar les cordes veïnes.

És per això que cal mesurar com irradiem els senyals digitals.

La visió sistèmica

Tots els enfocaments plantejats fins ara són parcials, però tampoc, de res serveixen si no ens situem a la distància adequada per comprendre el conjunt.

Quan es tracta de LED tot és molt fàcil, doncs segur que es produeixen pertorbacions però ningú les veurà. Però a les plaques de bus S100 els hi afegim funcions sense guardar distàncies que després afecten a d’altres plaques del sistema.

És molt comú veure fugides endavant amb els TTL de tipus F. Perquè és una família molt més ràpida que la TTL clàssica i perquè molts dissenys no funcionen per manca d’estudi dels temps de transit. Les cadenes de senyal han de transitar amb distàncies mesurades perquè sense harmonia els senyals es trepitgen entre ells.

IEEE696 ja dona prou marge per allargar la via d’arribada, doncs no cal l’estrès d’inserir a la cadena integrats d’un altre model temporal de transistors, que són més cars i això també és un mal disseny. Endemés del perquè tenim els wait-states.

Si es vol coses més sofisticades es pot entrar al mon del microcontrolador, doncs els MCU són equilibrats des del punt de vista de la protecció per màquina harvard. No permeten la fluència de la cadena de codi dintre de la memòria de dades, causa de moltes fallides.

Els processadors de 400MHz viuen dintre de les estructures integrades i són estables perquè la seva pulsió està ajustada a la dimensió en la que es troba. Es fa difícil que es produeix cap pertorbació fora del xip.

És per tot això que la raó sistèmica és important en el disseny.

El Què, Qui, Com, On

De fet, ni el Què, Qui, Com, On és tant senzill com el pinten.

Si es vol abordar tot el problema en la seva complexitat primer hem de entendre la diferència entre la física i la lògica.

La lògica ens obliga al Què, Quants i Quan, doncs les tres són barems de la logística i sense elles ens fem “polissons” de les cadenes de subministrament. De què serveix definir un component electrònic que no et subministraran?

La física ens obliga al Qui, On i Com, doncs les tres són barems d’eines de construcció i sense elles ens fem “maldestres” de les cadenes de verificació pròpies. De què serveix definir un component electrònic que no podràs muntar?

És a dir, no en són 4 les preguntes al projecte, en són 6, tres de la lògica i tres de la física.

Sí, clar, es per això que és complicat!

Les comunitats humanes

Si ja era difícil lidiar amb totes aquestes premises imagineu seure a taula tots el membres d’una comunitat i plantejar un camí que permeti superar les dificultats. Ho dic també perquè S100computers ja en són més de 1500 membres.

Els líders de les comunitats no poden fer més que escoltar el que els seus seguidors volen, perquè si surten de camí són defenestrats.

També perquè les idees inicials es van veient abandonades i els seus membres fundacionals acaben per claudicar si no abandonar la comunitat per incoherència.

Les modes i les cadenes de subministrament tampoc són alienes al la mirada enrere, per això desfavoreixen productes a l’obsolescència forçada.

És per això que productes que per a la Industria són bons, són descatalogats en els recels dels cercles de la tecnologia del lleure.

Difícil, però no impossible

Només hi ha una manera de dir-ho:

Paciència i Sort!

Categories
General de Sistemes

Laplace

Motivació: Al parlar de la Convolució, estudiada per Laplace, és anacrònic el falsejament conseqüent per omissió. Laplace és molt anterior al naixement de la Teoria de Filtres. En enginyeria s’estudia a Laplace com a modelatge matemàtic aplicat i no com a Teoria de Sistemes i de forma descontextualitzada. Al no dir què feia Laplace ni mencionar la seva època es transfigura el coneixement adquirit per absurditat contextual accidental, dons les neurones són lliures de crear associacions absurdes. Si el que es pretén és allò de: “el bon alumne ja discrimina”, es fa evident la selectivitat indirecte afegida al Sistema Educatiu. Es vol posar en evidència que al no explicar el context històric de Laplace és pert el sentit didàctic d’un tema tant important com la Convolució.

De la Convolució a les Integrals de Laplace

Laplace no va “inventar” la convolució per resoldre circuits, sinó que va desenvolupar eines integrals en el context de la probabilitat i l’anàlisi matemàtica.

El camí de la Probabilitat: Laplace volia calcular la probabilitat de la suma de diversos errors de mesura. Es va adonar que si sumes dues variables aleatòries, la funció resultant es pot expressar mitjançant una integral que avui identifiquem com una convolució de les seves probabilitats individuals.

El salt a la Transformada: Va utilitzar integrals del tipus

per simplificar la resolució d’equacions diferencials i problemes de probabilitat. Posteriorment es va formalitzar que aquestes transformacions converteixen la convolució en una multiplicació algebraica.

L’eina matemàtica: El que avui anomenem Transformada de Laplace permet:

“En lloc de convolucionar funcions en el temps (difícil), transformar-les al domini en S, multiplicar-les (més simple) i després tornar al temps.”

Construïa circuits Laplace?

No. Pierre-Simon Laplace (1749-1827) va viure a cavall entre la Revolució Francesa i l’Imperi Napoleònic.

El seu “laboratori”: No era un taller amb bateries (que tot just s’estaven inventant amb Volta el 1800), sinó el despatx d’un matemàtic i astrònom.

El seu objectiu: El seu gran llibre es deia Traité de mécanique céleste (Tractat de Mecànica Celeste). Volia descriure matemàticament el moviment dels cossos del Sistema Solar. Les seves integrals servien per resoldre equacions diferencials que descrivien el moviment dels planetes i les marees.

L’electricitat: En aquella època, l’electricitat era una disciplina encara incipient i experimental. La teoria de circuits tal com la coneixes no existia.

Època i context: És contemporani als filtres?

No directament. Hi ha un salt de gairebé 100 anys entre Laplace i la teoria de filtres moderna.

Personatge / Concepte Època Contribució
Laplace ~1800 Desenvolupa les integrals que després donaran lloc a la Transformada de Laplace.
Oliver Heaviside ~1880 Aplica mètodes operacionals equivalents a les transformades a la telegrafia i als cables.
Teoria de Filtres ~1910-1920 Enginyers com George Campbell i Otto Zobel (a Bell Labs) formalitzen els filtres utilitzant aquestes eines matemàtiques.

Laplace és el “pare històric de l’eina matemàtica”, però no va veure mai un filtre passabaix. Per això la teoria de filtres neix amb la necessitat d’enviar moltes trucades de telèfon per un mateix cable sense que es barregin (multiplexació). Els enginyers de principis del segle XX van aplicar sistemàticament aquestes integrals, així desenvolupades originalment en contextos astronòmics i analítics, a les telecomunicacions.

Per què és important?

Perquè el proper dia a classe, quan es vegi la convolució sencera, la professora dirà: “Això és molt difícil de calcular a mà”. I llavors introduirà la Transformada de Laplace per dir-te: “Si anem al domini de S, la convolució es converteix en una multiplicació”.

Definició:

La convolució descriu la resposta temporal d’un sistema lineal invariant en el temps, però la Transformada de Laplace, desenvolupada un segle abans, és la drecera sistèmica matemàtica que permet convertir aquesta operació integral en una manipulació algebraica més senzilla.

Categories
Sistema General

80486 a full

µP 80486 — Circuits externs necessaris per operar a màximes prestacions

A continuació es presenta una la llista estructurada dels circuits externs que caldrien per explotar al màxim un 80486 a full en una única placa, amb màxima memòria a 4 GB de RAM dinàmica i sense limitacions físiques.

Resum conceptual d’arquitectura màxima

Sense límits 80486 a full i 4 GB RAM, el sistema òptim inclouria:

  • 80486DX a màxima freqüència estable
  • L2 cache gran (≥1 MB SRAM ràpida)
  • Controlador DRAM avançat amb interleaving bancs
  • Bus bufferitzat equilibrat
  • DMA i interrupcions independents
  • ROM firmware BIOS
  • Possibilitat SMP

1. Memòria RAM dinàmica (DRAM principal)

Funció: Emmagatzematge principal del sistema.
Consideracions tècniques:

  • El 80486 té bus d’adreces de 32 bits → espai màxim adreçable: 4 GB.
  • Bus de dades de 32 bits.
  • Necessari bancs organitzats en amplades de 32 bits (SIMM72).
  • Cal suportar cicles burst per optimitzar rendiment.
  • Necessària lògica de refresc (xip controlador especialitzat).

2. Controlador de memòria

Funció: Gestió del DRAM (RAS, CAS, WE, refresc, multiplexació d’adreces).
Descripció:

  • El 80486 no integra controlador DRAM complet, només genera senyals bàsics.
  • Cal: Un circuit especialitzat típic per gestionar la DRAM en un sistema 80486 avançat era el:
  • 82492DX
    • Característiques:
    • Controla DRAM de 32 bits, fins a 4 GB d’adreces físiques
    • Genera senyals RAS, CAS, WE i refresc automàtic
    • Suport per burst mode i wait states configurables
    • Coordinació amb L2 cache externa i bus de dades del 486
    • Optimitzat per timings ràpids (15 ns SRAM) i funcionament sense errors a DX2-66
  • Aquest tipus de controlador permetia que la memòria principal treballés al màxim rendiment del 80486 sense necessitat d’un muntatge de lògica discreta complexa.
    • Generador de refresc automàtic
    • Control de timings
    • Decodificació bancs
    • Gestió wait states
  • Pot implementar-se amb FPGA.

3. Memòria cau externa (L2 Cache)

Funció: Augmentar el rendiment reduint latència.
Característiques:

  • SRAM estàtica d’alta velocitat de 15nS.
  • Típicament entre 128 KB – 1 MB.
  • Necessita:
    • Controlador Write-back de cache extern 82495DX
    • Tag RAM UM61M256K-15
    • Lògica de coherència 82489DX

4. Controlador de bus (Bus Interface Logic)

Funció: Adaptació i control del bus extern.
Inclou: 82489DX

  • Lògica 82350DT per:
    • BE0–BE3 (Byte Enable)
    • ADS#
    • READY
    • HOLD / HLDA
  • Gestió d’arbitratge si hi ha DMA 8237A o coprocessadors .

5. Circuit de rellotge (Clock Generator)

Funció: Generació del senyal de clock estable.
Detalls:

  • El 80486DX treballa típicament entre 25–100 MHz.
  • Necessita: ICS 9148-01
    • Oscil·lador de cristall
    • PLL si es vol multiplicació
    • Distribució de clock amb baixa distorsió

6. Controlador d’interrupcions

Funció: Gestió de línies IRQ.
Exemple clàssic: 82489DX

  • Controladors tipus 8259A (o equivalents moderns).
  • Permet gestionar múltiples fonts d’interrupció.
  • Compatible amb mode protegit i segmentació del 80486.

7. Controlador DMA

Funció: Transferències directes memòria ↔ perifèrics.
Detalls: 82378ZB

  • Compatible amb línies HOLD/HLDA.
  • Pot ser implementat amb circuit tipus 8237 o lògica dedicada.
  • Necessari si es vol màxim rendiment E/S.

8. Decodificador d’adreces

Funció: Mapatge de memòria i perifèrics.
Tasques: 82360SL

  • Separació espai:
    • RAM
    • ROM
    • I/O
  • Implementable amb lògica programable (GAL/FPGA).

9. ROM / Flash de BIOS

Funció: Firmware d’inicialització.
Conté: 28F010

  • Rutines POST
  • Inicialització segmentació
  • Configuració GDT, IDT
  • Activació mode protegit

10. Buffers i transceptors de bus

Funció: Adaptació elèctrica del bus.
Per què són necessaris:

  • El bus de 32 bits genera molta càrrega capacitiva.
  • Amb 4 GB RAM distribuïts físicament grans, cal:
    • Buffers bidireccionals
    • Drivers d’alta corrent
  • Exemple: circuits tipus 74F245.

11. Controlador d’entrada/sortida (Southbridge equivalent)

Funció: Integració perifèrica: 82378ZB

  • Ports sèrie
  • Paral·lel
  • Teclat
  • Disc
  • Timer programable (8254)
  • RTC

12. Coprocessador matemàtic (si és 80486SX)

Funció: Operacions de coma flotant.

  • Si és 80486DX → ja integrat.
  • Si és SX → cal 80487 extern.

13. Circuit de gestió d’alimentació

Funció: Els supervisors de tensió més habituals a plaques 486 eren comparadors com LM339 amb lògica addicional, o circuits dedicats LM1900/1903 o MAX601

  • Reguladors de tensió (5 V típicament)
  • Filtrat EMI
  • Proteccions

14. Circuit de gestió de segmentació i protecció

Integrada en el 80486: cal activar-la

Passos essencials:
  1. Carregar la GDT (Global Descriptor Table) amb l’instrucció LGDT.
  2. Carregar la LDT (Local Descriptor Table) si cal amb LLDT.
  3. Establir els selectors de segment correctes en CS, DS, SS, ES, FS, GS.
  4. Passar a mode protegit escrivint el bit PE (Protection Enable) al registre CR0.
  5. Opcional: configurar paginació i taules de pàgina si es vol traducció de memòria i protecció addicional.

Un cop fet això, el 80486 aplica privilegis, checks de segment i faults automàticament.

  • Segmentació amb descriptors GDT/LDT
  • Paginació amb taules de pàgines (4 KB)
  • TLB intern

Cal:

  • RAM suficient per:
    • Directoris de pàgina
    • Taules de pàgina
  • Lògica coherent amb accés 32 bits alineat

15. Controlador d’arbitratge multiprocessador (opcional modular)

El 80486 suporta configuracions SMP limitades.
Si es vol màxima expansió:

  • Lògica d’arbitratge de bus
  • Protocol MESI amb cache externa

Un controlador d’arbitratge multiprocessador avançat per sistemes 80486 era el:

82489DX

Característiques:

  • Gestiona SMP amb 2–4 CPU 486
  • Controla arbitratge del bus entre múltiples processadors i DMA
  • Integra coherència de caches externes (MESI)
  • Permet interrupcions entre processadors (IPI)
  • Compatible amb L2 cache externa i tag RAM

Aquest xip era la solució típica per plaques 486 multiprocessador d’alt rendiment, combinant arbitratge de bus i coherència de memòria en un sol dispositiu.

Resumint

En un sistema 80486 d’alt rendiment amb 4 GB de RAM, els xips clau per maximitzar prestacions inclouen 82495DX (controlador de L2 cache), 82378ZB (Southbridge amb DMA i E/S), 82489DX (arbitratge multiprocessador i coherència), i **xips de SRAM H61256/UM61M256K per Tag RAM).

En resum, combinant aquests circuits externs amb la lògica interna del 80486, es pot construir una placa optimitzada que gestioni memòria, cache, E/S, interrupcions, DMA, coherència multiprocessador i protecció de memòria amb màxima fiabilitat i rendiment, aprofitant completament les capacitats del microprocessador.

Categories
Microplataformes

S100 Estàndard de fet

Propòsits a demostrar

La tecnologia Estàndard S100 és, de fet, maquinari de font oberta. No necessita cap etiqueta OSH ni reconeixement oficial per ser-ho, perquè el seu origen i la seva evolució ho demostren clarament. Des del primer moment, aquesta tecnologia va néixer amb una vocació oberta, col·laborativa i accessible així com que es va convertint amb el temps en un referent indiscutible.

Orígens

El seu origen es remunta a l’any 1975, quan va aparèixer vinculada a la revista Popular Electronics. Posteriorment, va continuar evolucionant gràcies a la implicació de nombroses empreses emergents, especialment visibles a la Fira de San Francisco de 1977. Pocs anys després, l’any 1979, ja s’havia consolidat com un estàndard de fet, àmpliament acceptat per la comunitat tecnològica.

Formalització

Més endavant, el comitè de l’IEEE va intervenir per fer les adaptacions necessàries, amb l’objectiu d’alinear l’estàndard amb el respecte al dret de propietat. Aquest procés va culminar l’any 1983, quan la IEEE696 es va convertir en l’estàndard basat en límits tècnics clars i no en dogmes rígids. Aquesta flexibilitat ha estat clau per a la seva longevitat.

Finalització de la etapa formal

Tot i que l’any 1994 va deixar de rebre suport econòmic per part d’empreses privades, això no va significar la desaparició de la tecnologia. Al contrari, el suport institucional va disminuir, però el format va continuar viu. Moltes empreses van seguir comercialitzant productes informàtics basats en aquest estàndard, sobretot en entorns industrials. Tanmateix, també ha mantingut una presència constant en l’àmbit domèstic.

La societat del lleure

Amb l’arribada del concepte de societat del lleure a principis dels anys 2000, l’Estàndard S100 va viure una nova etapa d’expansió culminant amb l’aparició de la dècada Maker, iniciada el 2010 i encara vigent avui dia. Actualment, la comunitat continua dissenyant i fabricant plaques compatibles amb aquest estàndard per això es demostra el fet de la seva vitalitat i rellevància actual.

A mode de conclusió

Per tot això es pot afirmar que la Estàndard 100 és una tecnologia popular, oberta i viva. No necessita etiquetes per demostrar que és maquinari de font oberta, perquè ho és per definició, per història i per ús real. Ho ha estat sempre, i tot indica que ho continuarà sent en el futur.

Enllaços d’interès general

Bus S-100 — primer estàndard de bus d’expansió per microordinadors

El bus S-100, dissenyat com a part de l’Altair 8800 a mitjans dels anys 1970, es va convertir en el primer industry-standard d’expansió per microordinadors perquè és utilitzat per diversos fabricants i sistemes compatibles. 

https://en.wikipedia.org/wiki/S-100_bus

Bus S-100 (Viquipèdia) — estàndard adoptat per múltiples fabricants

Aquesta pàgina explica com el bus S-100 (IEEE 696-1983) va néixer el 1974 amb l’Altair i va ser adoptat per diferents fabricants, convertint-se en un estàndard reconegut àmpliament en la comunitat de microordinadors. 

https://ca.wikipedia.org/wiki/Bus_S-100

Wikipedia (castellà)

Descriu S-100 com a bus de dades que es va convertir en el primer estàndard de la indústria per a microordinadors. Presenta múltiples fabricants produint maquinari compatible. També repassa la seva estandardització com IEEE-696-1983 i la influència en el món dels ordinadors previs al PC. 

https://es.wikipedia.org/wiki/Bus_S-100

Moviments i comunitats d’aficionats (hobbyists) que comparteixen dissenys

Dia del Maquinari lliure — la comunitat del programari lliure cèlebre també el dia del Maquinari lliure

Caliu celebra el Dia de la Llibertat del Maquinari el 26 d’abril a l’espai jove La Fontana de Barcelona amb quatre xerrades relacionades amb el maquinari lliure. 

https://www.caliu.cat/post/dlm2025/

Definició i context del “hardware obert”

Al voltant de Open Hardware — definició i pràctiques d’hardware obert

Explica què és el hardware obert per via de dissenys disponibles públicament per estudiar-los, modificar-los, distribuir-los i fabricar-los, cosa que reflecteix el concepte de tecnologia accessible i col·laborativa. 

https://es.oho.wiki/wiki/Acerca_de_Open_Hardware

Evolució històrica del open hardware i moviments relacionats

Open Source Hardware — història i primers moviments del open hardware

Afegeix un context històric més ampli del concepte open hardware, incloent com moviments inicials com el Homebrew van inspirar posteriorment definicions formals i projectes. 

https://devopedia.org/open-source-hardware

Museo8Bits

Reforça que el S-100 va néixer com a expansió flexible amb connectors de 100 pins. Múltiples empreses van adoptar i que va evolucionar cap a un estàndard formal com a IEEE-696 per garantir compatibilitat dins del mercat. 

https://museo8bits.com/wiki/index.php/Bus_S-100

DBpedia

Confirmació estructurada que el bus S-100 va ser un dels primers busos de dades. Es va convertir en el primer estàndard industrial per a microordinadors, amb compatibilitat entre fabricants i ampli ús en el món hobbyist i professional. 

https://es.dbpedia.org/page/Bus_S-100

RetroTechnology: Origins of S-100 computers

Document dedicat a l’origen, evolució i adopció del terme S-100, explicant com va passar de ser un “Altair bus” a un terme col·lectiu utilitzat per diversos fabricants i finalment formalitzat com a IEEE-696

https://www.retrotechnology.com/herbs_stuff/s_origins.html

Hackaday: Catching Those Old Busses

Explica que el bus S-100 es va popularitzar tant durant els anys 1970 i 80 que es va convertir en una arquitectura popular abans d’IBM PC, i que es va estandarditzar (IEEE-696) encara que després va decaure. 

https://hackaday.com/2025/12/17/catching-those-old-busses/

S-100 com el primer estàndard de la indústria

Aquest article especialitzat explica que el bus S-100, dissenyat inicialment per l’Altair 8800, es va convertir en una arquitectura comuna per a molts sistemes abans de l’era IBM PC, amb centenars de fabricants produint plaques compatibles i, finalment, estandarditzat com IEEE-696

https://www.edn.com/s-100-the-first-industry-standard-bus/

Vista històrica a Computing History

Aquí tens una síntesi (en anglès) que situa el bus S-100 com el primer bus d’expansió standard en microordinadors, adoptat per fabricants i utilitzat tant en computació domèstica com a nivells més avançats abans del PC. 

https://www.computinghistory.org.uk/sec/5173/S-100/

Història en detalls tècnics a S100Computers.com

Aquest repositori/història està molt enfocada a entusiastes i aficionats, descrivint el creixement del S-100, la creació del comitè d’estàndards i com es van produir plaques compatibles per molts fabricants. 

https://www.s100computers.com/History.htm

Detalls del desenvolupament i variants del bus

Aquest recurs recull història de l’evolució del bus S-100, inclosos els esforços del comitè de l’IEEE per formalitzar l’estàndard i la gran quantitat d’empreses que van adoptar aquest model de bus per a microordinadors (incloent processadors de diferents arquitectures). 

https://www.retrotechnology.com/herbs_stuff/s100bus.html

Entrades personals i experiències d’aficionats amb S-100

Astrorat – projecte personal amb S-100 i experiències passades
Un usuari explica com va relançar el seu interès pels sistemes S-100, recuperant hardware dels anys 70 i 80, construint controladores de disc i fent canvis a CPU de la època, i comparteix el seu recorregut amb altres constructors. 
https://www.astrorat.com/s100computerproject.html

Playing With S-100 Computer Systems – experiència de restauració i “hacking”
Blog d’un aficionat que repara, modifica i utilitza plaques S-100 (Altair 8800, IMSAI, RAM boards, controladors, etc.) i comenta directament experiències personals amb aquestes màquines. 
https://www.glitchwrks.com/s100.html

S-100 bus controller a HackerNoon – article creat per un desenvolupador
Un autor independent escriu sobre el seu projecte real d’un controlador de disc flexible per al bus S-100, mostrant interès personal en la tecnologia i detallant l’ús d’aquest bus en projectes moderns. 
https://hackernoon.com/an-interrupt-driven-floppy-disk-controller-for-the-s-100-bus

Comunitats d’usuaris i participació activa

S100Projects – comunitat per a usuaris que treballen i dissenyen plaques noves
Una comunitat de persones que dissenyen i mantenen projectes S-100, amb invitació oberta per unir-se, reflectint ús continuat i col·laboratiu. 
https://s100projects.com/currentprojects/

S100Computers.com – blog/forum per a entusiastes
Encara que és un lloc més gran, està clarament orientat a aficionats que construeixen, experimenten i comparteixen projectes amb el bus S-100, incloent testimonis de persones que compren plaques, les construeixen i les utilitzen en projectes reals. 
https://www.s100computers.com/My System Index Page.htm

RetroComputingForum – discussions d’usuaris sobre plaques S-100
Fòrum on participants reals comparteixen experiències sobre usar, reparar o millorar plaques S-100, inclòs treball amb memòria i dissenys de maquinari. 
https://retrocomputingforum.com/t/s100-bus-computer-boards/4078

Grup de Retrocomputing a Facebook – publicació d’un usuari concret
Usuari comparteix una foto i comenta que té un sistema S-100 funcionant amb CPU Z80 vintage, un exemple clar de persona individual mostrant la seva pròpia màquina en funcionament. 
https://www.facebook.com/groups/retrocomputers/posts/6263056857057476/

S100 Bus Debug and Control Panel – experiència d’un ingenier/aficionat

Entrada on un usuari explica com reprendre hardware S-100 després de molts anys, recordant com va iniciar-se amb un sistema IMSAI mentre estudiava i com ha tornat a recuperar i modificar l’equip recentment.
https://ve7it.cowlug.org/s100-busmon.html 

The Register – testimoni personal sobre S-100 i construcció

Article on l’autor relata com va construir un sistema S-100 el 1982 i el va utilitzar activament durant anys, amb detalls sobre adquirir targetes, muntar el sistema i la seva experiència personal amb l’arquitectura.
https://www.theregister.com/2009/05/01/s100 

Categories
Desenvolupaments

Bus Fraccionat

No és només un problema de on posar la coma decimal, endemés es tracta de facilitar la evolució de les màquines computadores. Un Bus Fraccionat és un Bus amb diversos camps de resolució inferior a la resolució final. És la forma natural de fer créixer sistemes compostos i evita els Paradigmes. Un bon exemple és la IP de l’adreçament TCP/IP. Un adreçament com en un bus fraccionat de 32 bis en 4 camps de 8.

Expliquem el problema:

La pregunta que ens formulem és si calia llençar al calaix del vintage tota aquella tecnologia de màquines de còmput que, en el passat, van ser de moltíssima utilitat. Quan un sistema queda obsolet, per canvi tecnològic, en direm que s’ha canviat de Paradigma. Aquí, el sentit de Paradigma és que aquella tecnologia ja no pot anar més lluny, ha de fer fraccions a les resolucions més altes per a poder prolongar la vida de la tecnologia. Posem exemples de context:

dels 8 i 16 bits

El paradigma dels 4 bits seria les calculadores. Fer calculadores de resolució de 8 bits amb fraccions de 4 bits seria com fer calculadores puzzle. De fet molts rellotges digitals eren fets d’aquesta manera.

Abordar la tecnologia electrònica directament a 8 bits és fer computadors, és a dir, calculadores automatitzades, o còmput.

Al mon domestic, la computació no podia entrar d’un altra manera que amb els 16 bits. I de fet és fan màquines de bus fraccionat des de la Unitat de Procés amb el Program Counter dopat, és a dir doblat 8+8 bits. Però les màquines domèstiques entren pel simbolisme numèric (BASIC) i els videojocs, espais totalment simulats a partir de nombres.

Bus fraccionat de 24 bits

Les unitats processadores de 16 bits també varen venir dopades, tot i que el Program Counter podia ser de 16 bits, ambiciosament doblaven amb la idea de processar 32 bits, tot i que el bus d’Adreces va quedar, la majoria de vegades, a 20 o 24 bits. Per part dels teòrics es va adoptar aquest format ja que la tecnologia de fons continuava sent de 8 bits per part de circuit integrats de les families TTL encara en tecnologia “True Hole”.

L’equilibri dels 32 bits

Els matemàtics ja ens havien acostumat a que els processadors que sortien al mercat incorporaven calculadores ALU doblades. Certament, els processadors de 32 bits porten Unitats de Procés internes de 64 bits. Però això no va ser així a les unitats de gran consum i domèstiques en el bus d’Adreces. Per què? Ja no calia dopar les funcionalitats en quantitat de memòria per agradar. Potser només és que les unitats de 32 bits sense fraccionar ja eren prou interessants per al gran public.

Estacions de treball

Entre els 32 i 64 bits apareix novament el concepte de Paradigma. Feia falta créixer. Maquines precioses, sistemes operatius totalment operatius, maquines estimades pels seus usuaris, van haver de ser abandonades per què el futur era els 64 bits. Per molts, un paradigma forçat. I a fi de comptes no s’ha guanyat res, continuem amb els mateixos ratolins i les mateixes finestres. El cas de les Finestres és encara més flagrant, l’11 és el mateix Windows 2000 amb canvis estètics. Calia? Però, als dissenyadors res no els aturat.

Estacions de treball de 64 bits

A nivell domèstic l’engany és flagrant, fins i tot a nivell de telefonia mòbil s’incorporen processadors de 64 bits quan l’entorn és Andròic que podrien ser perfectament de 32 bits. Quan els processadors ja tenien unitats Aritmètiques i Lògiques de 64 bits en les estacions de 32 bits, hom pot suposar que ampliar el bus d’adreces podria ser interessant, però no feia cap falta obsoletitzar les BIOS per ser substituïdes pels sistemes EFI de 18 Exa Bytes.

Cal evitar els paradigmes

La pregunta és, quan l’hi arribarà el torn als 64 bits per passar als 128 bits? Quins enganyosos motius es poden dibuixar, si encara, tot i ser als 64 bits, no hem anat més enllà d’allò que es pot fer en els 32 bits, sense ni tant sols fer l’esforç de fraccionar el bus per evitar la Obsolescència Programada.

Una carta peculiar

Imagineu per un moment que som al 1880, en plena època victoriana i se us acut de enviar una carta amb la següent adreça i destinatari:

A Toro Sentado (Sitting Bull)
Cap dels Lakota Hunkpapa
Campament a la vora del riu Missouri
Territori de Dakota del Nord
Grans Planes, Amèrica del Nord

Per conducte de:
Comerciant o agent indígena de Fort Yates
Territori de Dakota

Categories
Curiositats

Reflectometria

La Reflectometria és la mesura de les reflexions d’un impuls en un cable per localitzar falles segons el temps de retorn del senyal reflectit.

En termes acadèmics, La Reflectometria en el Domini del Temps (TDR) mesura les reflexions d’un impuls en una línia de transmissió per localitzar falles segons el temps de retorn. La Reflectometria permet localitzar una averia pel testimoni del punt on el circuit absorbeix energia i retorna una ona fantasma distorsionada segons el fenomen causant.

Anem a pams

Quan anem a la fruiteria i pesem les verdures o fruites que anem a comprar ho solem fer en una bàscula que ens treu un tiquet, d’aquest tipus de tiquet s’imprimeix per impulsos de calor, i per això les anomenem etiquetadores tèrmiques. Aquest tipus de dispositius incorporen molts perifèrics al processador, motors, capçal d’impressió, detectors d’espaiat entre etiquetes, funcions de memòria habituals, així com vies de comunicació amb d’altres processadors del dispositiu.

Sense símptomes

La realitat és que quan aquests dispositius tant complexes s’espatllen ho fan silenciosament, sense donar cap avís de què li ha passat. És a dir, arriba al taller amb un paper on diu -ha deixat de funcionar-. Us podeu imaginar que amb aquests símptomes poca cosa es pot fer i el tècnic no te més remei que jugar a -si l’encerto l’endevino-.

La Reflectometria com a solució

En el nostre cas vam anar a visitar un expert per posar-hi remei i ens varen parlar de la Reflectometria TDR. Amb la Reflectometria ens hem inventat una forma de solucionar la averia sense saber-ne les causes, només hem de capturar la falla i s’acaba el joc.

Com en el Pac-man, al capturar un punt amb premi es llença un pols pel laberint. Aquest fa que els fantasmes siguin perseguits i al ser capturats es possible comptar la distància des d’on va sortir. Per això mesurem el temps des de l’inici del pols fins a la detecció del senyal fantasma (o senyal reflectit).

Solució enginyosa

Aleshores, sabent la posició, només caldrà canviar el circuit integrat localitzat, si és que era l’única causa. Caldrà provar els resultats i tornar a llençar un nou pols fins a acabar amb tots els fantasmes. Possiblement tampoc podrem certificar les causes, però haurem localitzat la/les averia/es. La verdadera causa és no disposar de símptomes. Aquests dispositius, per economia, no solen portar un circuit de diagnòstic i no és possible saber a quin punt del laberint anar.

Categories
Altres temes

DPU Cromemco

Estic força segur que ningú ha reproduït la DPU Cromemco a KiCAD. Crear una reproducció de la DPU Cromemco seria un repte; com sabeu, utilitza diverses PAL i tres ROM bipolars de 4K. La DPU també va patir diverses revisions a nivell de placa a la fàbrica, que poden no reflectir-se a l’esquema imprès disponible a Internet. Per afegir un nivell addicional de complexitat s’ha considerat utilitzar el CPLD MAX V per simplificar la reproducció de la placa DPU.

La resposta de hmb membre beterà del Vintage Computer Federation Forum encerta de ple en les intencions i la idea de projecte. Per això no puc fer una altra cosa que repetir les seves paraules com a perfecte introducció. Anem doncs amb els avenços del projecte:

Prestacions que intento resoldre:

Tant si té el coprocessador Z80 com si no, per compatibilitat, m’interessa recopilar casos per entendre la màquina DPU, fins i tot només amb 68K.

Tot i que vull fer una implementació de CPLD MAX V, seria bo poder començar a desenvolupar inversament des de la DPU original, de manera que podria deixar material per a la seva reutilització més vintage. Sóc conscient que hi ha el problema de les PAL.

Conec IEEE696 com si l’hagués escrit jo mateix i estic guanyant experiència avançada amb Quartus II i Quartus PL per a CPLD MAX V, tot i que també puc provar-ho amb FPGA més experimentals.

Ja he experimentat la CPU S100computers del treball de John Monahan a través del llibre de Wilcox, de manera que es poden fer adaptacions, ja que crec que no és el mateix si vols fer un Cromix. Investigar com funciona aquest Z80 també és una cosa que m’interessa descobrir.

No tinc cap altra intenció que estalviar-me feina si ja està feta, però rarament, excepte per no haver-ho demanat.

Estic obert a suggeriments,

bitsicomputadors@gmail.com

Categories
Desenvolupaments

Paraules clau Verilog

De cara a millorar la programació de FPGA amb els nostres col·laboradors es presenta tot seguit una taula amb les Paraules clau Verilog (IEEE-1364-2001), que és la versió compatible amb Quartus II 9.0. Així mateix s’ha afegit una breu descripció de cadascuna, agrupades per categories lògiques. També fem un repas a la estructura del fitxer .V

📘 Taula de paraules reservades de Verilog-2001 (Quartus II v9.0)
CategoriaParaula clauDescripció
Estructures
bàsiques
moduleDefineix un mòdul (unitat de disseny).
endmoduleFinal del mòdul.
begin / endDelimiten blocs de codi seqüencial.
function / endfunctionDefineix una funció.
task / endtaskDefineix una tasca (procediment sense valor retornat).
parameterDeclara una constant parametritzable.
localparamConstant interna (no redefinible externament).
Tipus i dadesregVariable que manté valor (en assignacions procedimentals).
wireConnexió de fil o xarxa (per assignacions contínues).
integerEnter amb signe (32 bits per defecte).
realValor real (coma flotant, per simulació).
timeTipus de dades de temps (per simulació).
supply0, supply1Fonts de potència o massa constants.
tri, tri0, tri1, wand, worXarxes multi-conduïdes (poc usades avui).
AssignacionsassignAssignació contínua (combinacional).
deassignDesvincula una assignació procedural.
force / releaseForça o allibera un valor en simulació.
Control seqüencialalwaysBloc que s’executa sempre que hi ha un canvi d’entrada.
initialBloc que s’executa una sola vegada al començament.
if / elseCondicional.
case / endcaseEstructura de selecció múltiple.
for, while, repeat, foreverBucles de control.
disableAtura una tasca o bucle.
waitEspera una condició.
fork / joinExecució paral·lela de blocs.
Operadors de temps / simulació#Retard temporal.
posedge / negedgeFlanc positiu o negatiu d’un senyal.
@Esdeveniment (event control).
Entrades / sortidesinputDefineix un port d’entrada.
outputDefineix un port de sortida.
inoutPort bidireccional.
Macros i compilador`defineDefineix una macro.
`ifdef / `endifCondicions de compilació.
`includeInclou un altre fitxer.
`timescaleDefineix unitats i precisió de temps.
Altresbegin, endBlocs de codi.
generate / endgenerateGeneració parametritzada d’instàncies.
genvarVariable per generar instàncies en bucles.
defaultValor per defecte en un case.
defparamDefineix paràmetres externs (deprecated, però Quartus encara l’accepta).
specify / endspecifyParàmetres de temporització (per simulació).
specparamConstant usada dins d’un bloc specify.
triand, trior, triregXarxes especials per modelatge analògic o tristate.
eventDeclara un esdeveniment (trigger per a simulació).
release, forceControla assignacions forçades.
casez, casexVersions del case amb bits “don’t care”.
xnor, xor, and, or, not, nand, norOperadors lògics predefinits per a portes.
🧭 Notes útils per Quartus II v9.0
  • No s’ha dutilitzar paraules clau com a noms de senyal, ni mòdul o ni com a variables.
  • Verilog no distingeix entre majúscules i minúscules per les paraules clau, però sí per als noms de senyal.
  • Quartus II v9.0 suporta fins a l’estàndard IEEE-1364-2001. Per tant, no s’admenten les paraules clau noves de SystemVerilog, com ara logic, ni always_comb, ni unique case.

A continuació es presenta un guió de composició d’un fitxer Verilog i un exemple complet que es pot compilar directament a Quartus II v9.0.
Explica també què significa cada part.

🧩 Estructura recomanada d’un fitxer Verilog (.v)

Un fitxer Verilog per Quartus II hauria de manera que segueixi aquesta seqüència lògica:

ZonaDescripció
1️⃣ Capçalera de comentarisInformació general: nom, autor, data, descripció del mòdul, versió, etc.
2️⃣ Directiva de temps (timescale) (opcional però recomanable)Defineix la unitat de temps i la precisió per simulacions. No afecta la síntesi.
3️⃣ Definicions de macros (opcional)Si necessites macros, paràmetres globals o fitxers inclosos (include).
4️⃣ Declaració del mòdulNom del mòdul i definició dels ports (input, output, inout).
5️⃣ Declaració de senyals internswire, reg, parameter, etc.
6️⃣ Blocs funcionalsalways, assign, case, etc. amb la lògica combinacional o seqüencial.
7️⃣ Final de mòdulendmodule obligatori.
📄 Exemple de fitxer .v 100% Quartus II v9.0

Aquest exemple és un multiplexor 4 a 1 de 8 bits amb Output Enable, doncs es volia fer una prova lleugera amb vectors .vwf i compilable directament.

// ==================================================
// File: mux_4_to_1_8_bit.v
// Author: [El teu nom o equip]
// Date: 31/10/2025
// Description: 
//  4-to-1 Multiplexer (8-bit wide) with Output 
//  Enable (push-pull version).
//  Compatible with Quartus II v9.0 
//  (Verilog-2001 standard).
// ==================================================

// -------------------------------------------------
// 1) Directiva de temps
//    No és obligatòria per síntesi, 
//    però útil per simulació 
//    (.vwf o ModelSim)
// -------------------------------------------------
`timescale 1ns / 1ps

// -------------------------------------------------
// 2) Declaració del mòdul
//    - El nom del mòdul ha de coincidir amb 
//      el nom del projecte o del top-level
// -------------------------------------------------
module mux_4_to_1_8_bit (
    input  wire [7:0] d0,    // Input 0
    input  wire [7:0] d1,    // Input 1
    input  wire [7:0] d2,    // Input 2
    input  wire [7:0] d3,    // Input 3
    input  wire [1:0] sel,   // Selector (2 bits)
    input  wire       en,    // Output Enable
    output reg  [7:0] y      // Output (8-bit)
);

// -------------------------------------------------
// 3) Lògica combinacional
// -------------------------------------------------
always @(*) begin
    if (en == 1'b1) begin
        case (sel)
            2'b00: y = d0;
            2'b01: y = d1;
            2'b10: y = d2;
            2'b11: y = d3;
            default: y = 8'b00000000;
        endcase
    end else begin
        y = 8'b00000000; // Output disabled
    end
end

// -------------------------------------------------
// 4) Fi del mòdul
// -------------------------------------------------
endmodule

// =================================================
// End of File
// =================================================
✅ Bones pràctiques per Quartus II v9.0

És important tenir en compte les bones pràctiques a la confecció del fitxer .v degut a que el processament de text no és una funció intel·ligent.

  1. Nom del mòdul = Top-Level Entity
    • El nom a l’interval module ... endmodule ha de coincidir amb el “Top-Level Entity” també definit al projecte. (Per canviar caldrà fer-ho a Assignments → Settings → General → Top-Level Entity).
  2. Evita tri-states interns (Z)
    • Quartus II no permet els amplificadors de sortida de tres estats dins de la FPGA, en conseqüència només als pins físics.
  3. No utilitzar sintaxi SystemVerilog
    • No utilitzar logic, always_comb, typedef, etc.
      Només la sintaxi Verilog-2001 (wire, reg, always @(*), etc.).
  4. Acabar sempre amb endmodule
    • Perquè si falta, Quartus donarà error de “unexpected end of file”.
  5. Comentaris
    • Els comentaris com // text o blocs /* ... */ són totalment acceptats i no afecten a la compilació.
  6. Un sol mòdul per fitxer (recomanat)
    • Evita tenir diversos module dins el mateix .v a menys que sigui intencionat.
🧠 Bonus: plantilla buida per començar un fitxer nou
// =========================================
// File: [Nom del fitxer].v
// Author: [Autor]
// Date: [Data]
// Description: [Breu descripció del mòdul]
// =========================================

`timescale 1ns / 1ps

module [Nom_del_mòdul] (
    input  wire ...,   // Descripció
    output wire ...
);

// -- Declaracions internes --

// -- Lògica del mòdul --

endmodule