1. <b>Introducció</b>
1.1. Introducció i definicions bàsiques
1.2. Estructura bàsica d'un computador
1.2.1. Memòria
1.2.2. CPU
1.2.3. Perifèrics
1.2.4. Execució d'una instrucció
2. <b>Representació de la informació</b>
2.1. Concepte de representació de la informació
2.1.1. Representació de programes i dades
2.1.2. Representació de la informació numèrica
2.1.3. Sistemes de numeració més usuals
2.1.4. Canvis de base
2.2. Representació i aritmètica de números naturals
2.3. Representació i aritmètica de números enters
2.3.1. Signe i magnitud
2.3.2. Complement a 1
2.3.3. Complement a 2
2.4. Representació de números reals
2.4.1. Coma fixa
2.4.2. Coma flotant
2.5. Altres mètodes de codificació de la informació
2.5.1. Altres mètodes numèrics
2.5.2. Codificació de caràcters
3. <b>Àlgebra de Boole</b>
3.1. Definició de l'àlgebra
3.1.1. Expressions booleanes. Axiomes i teoremes
3.1.2. Simplificació d'expressions booleanes
3.2. Funcions lògiques i taules de veritat
3.3. Portes lògiques de 1, 2 i n variables
3.4. Formes estàndard i canòniques. Conversió entre formes
3.5. Suficiència NOT-AND-OR, NAND i NOR
3.6. Transformació de funcions
3.7. Simplificació de funcions mitjançant mapes de Karnaugh
3.7.1. Metodologia
3.7.2. Simplificació mínterms i màxterms
3.7.3. Funcions incompletament especificades
4. <b>Sistemes combinacionals</b>
4.1. Anàlisi i disseny de sistemes combinacionals
4.1.1. Ex. el comparador
4.1.2. Retards de porta
4.1.3. Fan-in i fan-out
4.2. Blocs aritmètics
4.2.1. El semi-sumador
4.2.2. El sumador complet
4.2.3. Sumadors i restadors
4.2.4. ALUs
4.3. Blocs funcionals
4.3.1. Multiplexors
4.3.2. Descodificadors i demultiplexors
4.3.3. Codificadors
4.3.4. Utilització de memòries ROM
5. <b>Sistemes seqüencials</b>
5.1. Introducció als sistemes seqüencials
5.2. Concepte de biestable
5.2.1. El biestable elemental
5.3. El biestable Set-Reset
5.3.1. Taula de veritat cronograma i funció
5.3.2. Implementacions
5.4. El concepte de sincronització
5.4.1. El senyal de rellotge
5.4.2. Sincronització per nivell i per flanc
5.4.3. Senyals síncrones i asíncrones
5.5. Biestable D
5.5.1. Registres de càrrega paral·lela
5.5.2. Registres de desplaçament
5.6. Biestable T
5.6.1. Divisor de freqüència
5.6.2. Comptadors
5.7. Biestable JK
5.8. Resum de biestables
5.9. Disseny de sistemes seqüencials
5.9.1. Màquines d'estats finits de Moore i de Mealy
5.9.2. Minimització i codificació d'estats
5.9.3. Implementació de màquines seqüencials
6. <b>Lògica programable</b>
6.1. PLDs
6.1.1. SPLD
6.1.2. CPLD
6.2. Implementació de funcions
6.2.1. ROM
6.2.2. PLA
6.2.3. PAL
6.2.4. FPGA
6.3. Memòries RAM
7. <b>Disseny d'un computador senzill</b>
7.1. Estructura bàsica d'un computador
7.1.1. La CPU, la memòria i el subsistema de E/S
7.1.2. Llenguatge màquina
7.1.3. Tipus d'instruccions
7.1.4. Distribució d'instruccions i dades en memòria
7.1.5. Llenguatge assemblador
7.2. Arquitectura de la Màquina Senzilla
7.2.1. Què és la Màquina Senzilla?
7.2.2. Especificació d'instruccions
7.2.3. La memòria
7.2.4. El format d'instrucció
7.2.5. Les dades
7.2.6. El llenguatge assemblador de la MS
7.3. Disseny de la Unitat de Procés
7.3.1. La unitat aritmètica-lògica
7.3.2. Els registres
7.3.3. Accés a memòria i interconnexions
7.4. Disseny de la Unitat de Control
7.4.1. La unitat de control cablejada o microprogramada
7.4.2. Fases d'execució d'una instrucció
7.4.3. Optimització del diagrama d'estats
7.4.4. Implementació de la UC cablejada
7.5. Modificacions en el disseny de la MS
7.5.1. Modificacions software
7.5.2. Modificacions hardware
7.5.3. Modificacions firmware
7.5.4. Ampliació del repertori d'instruccions
7.5.5. Incorporació de noves utilitats
7.6. La unitat de control microprogramada
7.6.1. Esquema general: seqüenciador i memòria de microprogramació
7.6.2. El format de microinstrucció
7.6.3. Els microprogrames
7.6.4. El seqüenciador
7.7. Subsistema de entrada/sortida
7.8. Aspectes avançats
7.8.1. Microprocessadors i microcontroladors
7.8.2. Arquitectures de Von Neuman i Harvard
7.8.3. Emmagatzematge Little Endian i Big Endian
7.8.4. CISC i RISC
7.8.5. Paral·lelisme
7.8.6. Segmentació
8. <b>Programació en Llenguatge Assemblador</b>
8.1. MIPS-32
8.1.1. Què és el MIPS-32?
8.1.2. Estructura de la CPU
8.1.3. Registres, arquitectura Load/Store
8.1.4. Mapa de memòria
8.1.5. Representació de dades
8.2. Programació en llenguatge assemblador
8.2.1. Estructura general d'un programa
8.2.2. Utilitats
8.2.3. El simulador SPIM
8.3. El procés d'assemblatge, muntatge i càrrega
8.3.1. Programa assemblador
8.3.2. Programa muntador
8.3.3. Programa carregador
8.4. Instruccions
8.4.1. Representació i formats
8.4.2. Format R
8.4.3. Format I
8.4.4. Format J
8.4.5. Pseudoinstruccions
8.5. Adreçament
8.5.1. Modes
8.5.2. Traducció a llenguatge màquina
8.5.3. Salts condicionals i incondicionals
8.5.4. Relació amb el format d'instrucció
8.6. Estructures de control de programa
8.6.1. If-then-else
8.6.2. While
8.6.3. Switch
8.6.4. For
8.7. Subrutines
8.7.1. Pas de paràmetres
8.7.2. La pila
8.7.3. Convenis