DMI – Corso di laurea magistrale in Informatica
Copyleft
2016-2017 Giuseppe Scollo
in questa esercitazione si trattano:
quattro famiglie di standard di bus su chip, fra le più in uso:
due classi principali di configurazioni: condivisi e punto-punto
si considerano appresso un bus generico condiviso e uno punto-punto, astraendo caratteristiche comuni a tutti questi
Bus |
High-performance shared bus |
Periferal shared bus |
Point-to-point bus |
AMBA v3 | AHB | APB | |
AMBA v4 | AXI4 | AXI4-lite | AXI4-stream |
CoreConnect | PLB | OPB | |
Wishbone | Crossbar topology | Shared topology | Point to point topology |
Avalon | Avalon-MM | Avalon-MM | Avalon-ST |
AHB AMBA highspeed bus, APB AMBA peripheral bus,
AXI advanced extensible interface, PLB processor local bus, OPB onchip peripheral bus, MM memory-mapped, ST streaming |
Schaumont, Table 10.1 - Bus configurations for existing bus standards
un bus condiviso su chip consiste tipicamente di più segmenti, connessi da ponti; ogni transazione è iniziata da un master, a cui risponde uno slave; se questi stanno su segmenti diversi, il ponte agisce da slave su uno dei segmenti e da master sull'altro, effettuando la traduzione degli indirizzi
quattro classi di segnali di bus:
Schaumont, Figure 10.1
- (a) Example of a multi-master segmented bus system.
(b) Address space for the same bus
Schaumont, Figure 10.2 - Point-to-point bus
un bus punto-punto è una connessione fisica dedicata fra un master e uno slave, per trasferimenti di dati in flussi (stream) illimitati
la figura 10.3 mostra la disposizione fisica di un tipico segmento di bus su chip, con due master e due slave, dove le porte AND e OR al centro del diagramma fungono da multiplatori, sia delle linee indirizzo che delle linee dati
Schaumont, Figure 10.3 - Physical interconnection of a bus. The *_addr, *_wdata, *_sdata signals are signal vectors. The *_enable, *_grant, *_request signals are single-bit signals
convenzione sui nomi dei segnali di lettura/scrittura di dati:
l'arbitraggio del bus assicura che solo un componente per volta piloti qualsiasi linea del bus
una convenzione sui nomi aiuta a dedurre funzionalità e connettività di linee di bus dai loro nomi
il nome di un pin di un componente rifletterà la funzionalità del pin; segnali di bus, creati da interconnessioni di pin di componenti, seguiranno anch'essi una convenzione, per evitare confusione fra segnali simili
in alcuni sistemi di bus si includono nel nome del segnale di bus entrambi i nomi delle istanze di master e slave
l'adozione delle convenzioni del particolare bus in uso evita errori di codifica ed errori di connessione, rende il codice riusabile e semplifica il debugging e la verifica
per la natura inerentemente parallela di un sistema di bus, i diagrammi di temporizzazione sono in ampio uso per descrivere le relazioni temporali fra segnali di bus
Schaumont, Figure 10.4 - Bus timing diagram notation
il diagramma in figura 10.4 mostra la notazione per descrivere le attività in un bus generico per cinque cicli di clock
questi diagrammi sono molto utili per descrivere le attività su un bus in funzione del tempo
la tabella 10.2 elenca i segnali di un sistema di bus generico, astraendo da specifici sistemi di bus
Signal name | Meaning |
clk | Clock signal. All other bus signals are references to the upgoing clock edge | m_addr | Master address bus | m_data | Data bus from master to slave (write operation) | s_data | Data bus from slave to master (read operation) | m_rnw | Read-not-Write. Control line to distinguish read from write operations | m_sel | Master select signal, indicates that this master takes control of the bus | s_ack | Slave acknowledge signal, indicates transfer completion | m_addr_valid | Used in place of m_sel in split-transfers | s_addr_ack | Used for the address in place of s_ack in split-transfers | s_wr_ack | Used for the write-data in place of s_ack in split-transfers | s_rd_ack | Used for the read-data in place of s_ack in split-transfers | m_burst | Indicates the burst type of the current transfer | m_lock | Indicates that the bus is locked for the current transfer | m_req | Requests bus access to the bus arbiter | m_grant | Indicates bus access is granted |
Schaumont, Table 10.2 - Signals on the generic bus
la tabella 10.3 mostra la corrispondenza di alcuni segnali del bus generico a segnali equivalenti dei bus CoreConnect/OPB, AMBA/APB, Avalon-MM e Wishbone
generic | CoreConnect/OPB | AMBA/APB | Avalon-MM | Wishbone |
clk | OPB_CLK | PCLK | clk | CLK_I (master/slave) |
m_addr | Mn_ABUS | PADDR | Mn_address | ADDR_O (master) |
ADDR_I (slave) | ||||
m_rnw | Mn_RNW | PWRITE | Mn_write_n | WE_O (master) |
m_sel | Mn_Select | PSEL | STB_O (master) | |
m_data | OPB_DBUS | PWDATA | Mn_writedata | DAT_O (master) |
DAT_I (slave) | ||||
s_data | OPB_DBUS | PRDATA | Mb_readdata | DAT_I (master) |
DAT_O (slave) | ||||
s_ack | Sl_XferAck | PREADY | Sl_waitrequest | ACK_O (slave) |
Schaumont, Table 10.3 - Bus signals for simple read/write on Coreconnect/OPB, ARM/APB, Avalon-MM and Wishbone busses
i due tutorial sullo strumento Qsys, accessibile da Quartus, indicati nei riferimenti, rispettivamente mostrano come:
si propone di replicare l'esecuzione di questi due esperimenti e di esporre, in una relazione sull'esperienza, le difficoltà incontrate e le soluzioni adottate per superarle
letture raccomandate:
letture per ulteriori approfondimenti:
materiali utili per l'esperienza di laboratorio proposta: