Periféria illesztés
SPI - Serial Peripheral Interface Full-duplex soros átvitel interfész Master slave elrendezés Egyirányú, háromállapotú adatvonalak Slave kiválasztás: egyedi kiválasztó (chip-select) jelekkel Jelek CLK SSn MISO, MOSI
SPI EEPROM illesztés 4 slave egység illesztése Közös órajel Egyedi SSn jelek Közös adatvonalak
SPI átvitel EEPROM írás
SPI átvitel EEPROM olvasás
I2C - Inter-Integrated Circuit I2C (Philips/NXP) == two-wire-interface SMBus: egyszerűsített I2C Half-duplex Multi-master, multi-slave Két vezeték Órajel, adat Eszközök kiválasztása: eszközazonosító alapján ( slave address )
I2C - Inter-Integrated Circuit Órajel (SCL), adat (SDA) Open collector Felhúzó ellenállás kell Slave címzés eszköz azonosító 7 bites standard 10 bites kiterjesztett Átviteli sebesség 400 khz, 1 Mbit, 3 Mbit
I2C START/STOP feltétel Adatátvitel
I2C EEPROM Byte írás Burst írás
I2C EEPROM Olvasás jelenlegi címről Olvasás tetszőleges címről
ADC/DAC interfészek Tipikusan 3 órajelet igényelnek MCLK: belső működés órajele ( Master Clock ) SCLK: soros adat ki/beléptetés órajele LRCK/Frame: mintavételi frekvencia A fenti órajelek aránya IC függő Tipikus interfészek SPI SAI (Serial Audio Interface) I2S (Integrated Interchip Sound) Frame-Sync Serial Interface
AD példa: CS5361 Master mód Minden órajelet a chip állít elő az MCLK-ból Slave mód: minden órajel bemenet
AD példa: CS5361 SAI I2S Létezik left-justified és right-justified
AD példa: TI ADS1287 SPI: CLK, SCLK, DRDY (kimenet) Frame-sync (FSYNC bemenet)
Ethernet PHY Fizikai vonal illesztés Különálló PHY chip PHY MAC egységgel együtt Szabványos interfész Konfiguráció Soros management interfész: MDIO (órajel + kétirányú adat) Párhuzamos adat interfész MII: Media Independent Interface
Ethernet PHY adat interfész Szétválasztott adatirány, full duplex MII: 10 és 100 Mbit esetén 4 adatbit, 1 control, 1 enable 2,5 illetve 25 MHz órajel, irányonként RMII: Reduced MII Közös órajel, 2 bites adatvonal GMII: Gigabit MII 8 adatbit, 125 MHz órajel RGMII: Reduced Gigabit MII 4 adatbit, 125 MHz DDR átvitel
RGMII (1)
RGMII (2)
RGMII órajel kezelés A PHY chipek tipikusan lehetőséget adnak az órajel kis mértékű eltolására mind adó, mind vevő irányban Alternatíva Fix késleltetés az FPGA-ban (IO delay) Órajel fázistolás DCM-mel/PLL-lel A 10 Mbit sebességhez tartozó 2,5 MHz tipikusan kisebb, mint az alsó határfrekvencia! Adat mintavételezés/kiadás fixen DDR FF-kal, SDR üzemmódban megfelelően kezelve
Videó jelek VGA időzítés
Időzítési példa VGA időzítések: VESA szabvány http://www.epanorama.net/faq/vga2rgb/calc.html
Videó interfészek Analóg: Komponens: RGB, YCbCr H HS/VS vagy kompozit szinkron Composite (pl. NTSC, PAL) S-Video: Y + C Digitális DVI, HDMI Soros, differenciális jelátvitel TMDS 3 csatorna + órajel (adatsebesség/10) Kevés FPGA támogatja direktben
Példa: TI TFP410 DVI adó Portok: Pixel órajel (differenciális) Szinkron jelek (HSYNC, VSYNC) Adat engedélyezés (aktív képtartomány) Párhuzamos adat (12 vagy 24 bites mód) A DVI vevők, Videó DAC-k, ADC-k hasonlóan működnek
12 bites DDR mód TFP410 időzítés 24 bites SDR mód
DVI (1) TMDS csatornák:
DVI (2) Adatátvitel: 8b 10b kódolás 8 bites RGB soros adatsebesség :10x pixel órajel: 250 Mbit/s 1650 Mbit/s Továbbított órajel: pixel órajel HS/VS: 4 fenntartott 10 bites érték 10 b1101010100: HS=0, VS=0 10 b0010101011: HS=1, VS=0 10 b0101010100: HS=0, VS=1 10 b1010101011: HS=1, VS=1
DVI vevő (1) Vett órajel felszorzása 10x (PLL) Soros párhuzamos átalakítás (ISERDES) SP6 SERDES max. 8x tud SERDES 5x, CLB-ben 2x Mintavételezés: ISERDES + IODELAY (órajel adat fázis korrekció) Szóhatár keresés: ISERDES BITSLIP ismert mintára Control Word Deskew: 3 TMDS csatorna közötti csúszás kompenzációja Folyamatosan írt/olvasott FIFO, olvasási oldalon Control Word-re szinkronizálva Control word dekódolás (HS, VS), 10b 8b átalakítás
DVI vevő (2)
HDMI A blank periódus alatt InfoFrame-k és Audió adatok is továbbításra kerülhetnek HS, VS: kék csat. C0, C1: zöld csat. C2, C3: piros
PCI és PCIe buszok
PCI PCI, PCI-X: igazi busz struktúra Multiplexált cím/adatvonal Half-duplex Multi-master, DMA 4 interrupt vonal Szabvány Adatszélesség Frekvencia Sávszélesség Mbyte/s PCI 32/64 bit 33 MHz 133/266 PCI 2.1 32/64 bit 66 MHz 266/528 PCI-X 1.0 64 bit 66/133 MHz 528/1056 PCI-X 2.0 64 bit 266/533 MHz 2112/4224
PCI Fontosabb jelek AD: cím/adatvonal C/BE#: parancs vagy byte engedélyezés FRAME#: aktív átvitel IRDY#: initiator (master) ready TRDY#: target ready Perifériák Target: nem kezdeményezhet buszciklust Bus master: lehet master a buszon A központi PCI vezérlő tipikusan NEM tartalmaz DMA vezérlőt!
PCI Parancsok (BUS CMD) Interrupt Ack Special Cycle I/O Read és Write Memory Read és Write Configuration Read és Write Dual Address Cycle (pl.: 64bit címzés)
PCI olvasási ciklus
PCI írási ciklus
PCI Express Soros, pont pont összeköttetés; helyreállított órajel Csomag alapú átvitel Szoftveresen kompatibilis a PCI-jal 1, 2, 4, 8 vagy 16 lane PCIe 1.1: 2,5 Gbit/s (8b/10b) PCIe 2.0: 5 Gbit/s (8b/10b) PCIe 3.0: 8 Gbit/s (128b/130b) Kommunikáció Requester Completer PCIe 1.0 (Gbyte/s) PCIe 2.0 (Gbyte/s) x1 0,25 0,5 x4 1 2 x8 2 4 x16 4 8
PCIe architektúra Root Complex: központi vezérlő Kapcsolat a CPU-val és a memóriával Endpoint: periféria Completer Completer + Requester Nincs központi DMA vezérlő
PCIe Fizikai réteg: differenciális érpár Framing + CRC (2x64 bit) Átviteli réteg Fejléc: 3-4 DW Opcionális CRC: 1 DW Data payload: 128/256/512/1024/2048/4096 byte Root Complex & Endpoint támogatás kell!
PCIe Egy csomagban legfeljebb Data Payload-nyi adat Nagyobb méretű request-ek több csomagban
PCIe A PCIe késleltetése viszonylag nagy De újabb Request-ek elküldhetők a Completion megérkezése előtt
PCIe Egy Request-re adott Completion Egy csomagban Több csomagban a csomagok sorrendje címsorrendben Több, címfolytonos Request A Completion csomagok sorrendje NEM feltétlenül felel meg a címsorrendnek
Valós átviteli sebesség PCIe 1.1 és 2.0 buszon elérhető sebesség (Intel X58 chip, 256 byte Payload)
PCIe TLP Fejléc 1. DW (minden csomagban) Fmt 00 01 10 11 Type 0_0000 Memory Read Request 0_0000 Memory Write Request 00 0_1010 Completion, nincs adat 10 0_1010 Completion, adattal Length: 1 1024 DW (< Data Payload)
PCIe 32 bites Request TLP fejléc Requester ID: Bus number + Device Number + Function number Tag: Minden kintlévő, Completion-t igénylő üzenet egyedi azonosítója (kintlévő üzenetek száma < 32) BE: byte engedélyezés az első és utolsó DW-re Address: cím (DW cím)
PCIe 64 bites Request 3 helyett 4 DW a fejlécben
PCIe - Completion Completion TLP fejléc Tag: A Request-tel megygező Tag Byte Count: A Request-ből még hátralévő byte-ok száma
PCIe FPGA-val Külső PHY Soft-core MAC (minden FPGA) PCIe x1 PCIe PHY PCIe Core (soft) TLP Interface USER LOGIC FPGA Belső Gbit transmitter Soft-core MAC (pl. V2P, V4) PCIe x1/x4/x8 Gbit Trmit PCIe Core (soft) TLP Interface USER LOGIC FPGA Belső Gbit transmitter Hard-core MAC (pl. SP6, V5, V6) PCIe x1/x4/x8 Gbit Trmit PCIe Core (hard) TLP Interface USER LOGIC FPGA
FPGA megvalósítások FPGA x1 x4 x8 PCIe 2.0 hard IP Altera Arria II GX X X X X Altera Cyclone IV GX X X X Altera Startix IV GX X X X X X Altera Arria GX X X Altera Stratix II GX X X X Xilinx Spartan-6 X X Xilinx Virtex-II Pro X X X Xilinx Virtex-4 FX X X X Xilinx Virtex-5 X X X X Xilinx Virtex-5 FXT X X X X X Xilinx Virtex-6 X X X X X Lattice ECP2M X X Lattice ECP3 X X Lattice SCP X X X
PCIe FPGA interfész Gyakorlatilag Memory Read, Memory Write és Completion csomagok fogadása és generálása szükséges TLP interfész: 64 bites FIFO IF 1/4/8 lane: 62,5/125/250 MHz
PCIe Virtex5 - Transmit
PCIe Virtex5 - Receive
Memória típusok SRAM (4-6 tranzisztor/cella) Aszinkron (4 Mbit, x4, x8, x16) NtRAM (64 Mbit, x18, x36, 250 MHz) DDR (32 Mbit, x18, x36, 400 MHz) DDR2 (72 Mbit, x18, x36, 450 MHz) QDR (72 Mbit, x18, x36, 450 MHz) DRAM (tipikusan 1 tranzisztor + kondenzátor / bit) SDRAM (256 Mbit, x8, x16, 167 MHz, 3.3V) DDR (1 Gbit, x4, x8, x16, 200 MHz, 2.5V) DDR2 (4 Gbit, x4, x8, x16, 400 MHz, 1.8V) DDR3 (8 Gbit, x4, x8, x16, 1066 MHz, 1.5V) DDR4 (4 Gbit, x4, x8, x16, 1600 MHz, 1.2V) GDDR3/4/5 (1 Gbit, x32, 7 GHz, 1.5V)
Adatátviteli sebesség
Aszinkron SRAM írás Írás twc=10, taw=7, twp=10, tdw=5, tdh=0, TWHZ=5(MAX)
Aszinkron SRAM olvasás Olvasás trc=10, taa =10 (max), toe=5 (MAX), thz=5 (MAX)
Nt SRAM írás
Nt SRAM olvasás
DDR/DDR2/QDR SRAM DDR: adat átvitel fel- és lefutó órajel élre QDR: szétválasztott be-/kimeneti adatbusz (konkurrens írás/olvasás) Parancs, írás: bemenő órajellel (K) szinkron Olvasás: forrás szinkron (CQ órajel) Burst működési mód
QDR SRAM írás
QDR SRAM olvasás
QDR SRAM írás+olvasás
QDR SRAM interfész
DRAM Folyamatos adatfrissítést igénylő memória cellák Burst orientált működés BANK, ROW, COLUMN címek Parancsok (CS, RAS, CAS, WE bemeneti lábak)
Működtetés Inicializálási szekvencia Mode regiszter írás ACTIVE: bank és sor megnyitás PRECHARGE: sor lezárás Auto precharge READ/WRITE Bank és oszlop kiválasztás Frissítés REFRESH parancs vagy Auto refresh
Inicializálás
DRAM mode regiszter
Activate (Bank & Row) Írás és olvasás előtt a megfelelő BANK-t és ROW-t meg kell nyitni (ACTIVE) READ/WRITE: trcd-vel az ACT után (20 ns) Újabb ACTIVE: Ugyanabban a bankban, másik ROW: PRECHARGE után, min. trc idő az ACT parancsok között (66 ns) Másik BANK: megnyitható az aktuális hozzáférés alatt, min. trrd-vel az előző ACT után (15 tck)
DRAM olvasás (1) Egymást követő Burst-ök CL: CAS latency: READ érvényes adat
DRAM olvasás (2) Véletlen hozzáférés BANK-on belül
DRAM olvasás (3) Különböző BANK-k hozzáférése (csalóka ábra!)
DRAM írás (1) Véletlenszerű írás BANK-on belül
DRAM írás Különböző BANK-k hozzáférése (csalóka ábra!)
DDR/DDR2/DDR3 SDRAM Parancs: CK órajellel szinkron Bemenő adat: DQS jellel szinkron, DQS középre időzített Kimeneti adat: DQS jel élváltással szinkron (forrás szinkron) DLL: DQS szinkronizálás CK-val Burst (2-4-8) orientált működés GDDR: szétválasztott bemeneti és kimeneti DQS jelek
DDR3 ACTIVE t RRD : ACTIVE ACTIVE t RCD : ACTIVE READ/WRITE
DDR3 write 2 egymás utáni write (BL=8) WL :write latency t WPRE : write data késleltetés t CCD : CAS CAS parancs késleletés
Pl.: CL=6 és CL=8 DDR3 read latency
DDR3 korai read ACTIVE parancs utáni READ parancs idő előtti kiadása (<t RCD ) AL Teljes késleltetés: AL + CL
DDR3 write read Írás utáni olvasás (twtr)
DDR3 időzítési paraméterek (1)
DDR3 időzítési paraméterek (2)
Xilinx MIG Memory Interface Generator Használható ISE-ben (CoreGen) és Platform Studio-ban Felhasználói interfész Natív interfész AXI (csak ha Preferred language Verilog) Néhány esetben lehet több portos, egyébként AXI infrastructure-rel megoldható
MIG memória paraméterek
MIG memória paraméterek
Platform Studio AXI Memory Controller DDR2 és DDR3 memória interfész AXI busz Gyakorlatilag a MIG Platform Studio-ban Multi-Port Memory Controller SDRAM/DDR2/DDR3 Max. 8 port: PLB, XCL, SDMA, NPI, VFBC Az alacsony szintű mag a MIG-en alapul
DIMM/SODIMM Szabványosított memória modul + foglalat 64/72 bit adatbusz 3 rank / 3 bank / 15 cím vonal SPD EEPROM (Serial Presence Detect) Memória típus & időzítési információk