PCI card ontwerp
Jan Genoe KHLim
PCI Ontwikkelplatformen
Jan Genoe KHLim
In dit deel bespreken we de verschillende ontwikkelplatformen die ter beschikking staan om een PCI kaart te ontwikkelen.
Versie: zaterdag 11 november 2000
1
PCI card ontwerp
Jan Genoe KHLim
Ontwikkelplatformen van PCI kaarten
• • • •
Gebruik makende van Standard PCI Chipsets ASIC cores Fixed FPGA cores Modulaire FPGA cores met een open backend interface.
PCI card ontwerp
Versie: zaterdag 11 november 2000
Jan Genoe KHLim
2
PCI card ontwerp
Jan Genoe KHLim
Gebruik makende van Standaard PCI Chipsets
• Origineel was dit de enige mogelijkheid • Verschillende IC van verschillende fabrikanten op de markt – AMCC, PLX, Tundra, V3, en andere
• Vendor ID ligt vaak al vast, Device ID kan aangevraagd worden bij deze fabrikant.
PCI card ontwerp
Jan Genoe KHLim
We kunnen gebruik maken van een PCI IC die ontwikkeld is als een algemene interface naar de PCI bus. We zullen hierbij natuurlijk moeten werken volgens de normen en het protocol dat deze IC gebruikt voor zijn backend bus.
Versie: zaterdag 11 november 2000
3
PCI card ontwerp
Jan Genoe KHLim
Ontwikkeling met PCI chipset devices: Processor • Wanneer je schrijft naar een bepaald basisadres, wordt de data in een FIFO opgeslagen. De processor (of de bus op de kaart) kan deze aan zijn tempo eruit halen. – Er is een FIFO voorzien in de 2 richtingen
• Wanneer je schrijft naar een ander basis adres wordt de data via DMA in een bepaald deel van het kaartgeheugen opgenomen.
PCI card ontwerp
Jan Genoe KHLim
In de meeste gevallen zal deze backend bus geïmplementeerd zijn als een processor bus. Dit kan bijvoorbeeld een 8 bit of 16 bit brede data en adres bus zijn van een Motorola processor (68HC11), maar ook eender welke andere processor. Deze processor verwerkt dan de data van een naar de kaart aan zijn eigen snelheid, volgens zijn eigen code. Deze processor heeft natuurlijk ook geheugen beschikbaar. Vaak zal op een dergelijke IC ook nog een DMA unit voorzien zijn zodat de PCI interface rechtstreeks in het geheugen kan schrijven.
Versie: zaterdag 11 november 2000
4
PCI card ontwerp
Jan Genoe KHLim
Hoe bepalen we de inhoud van de configuratie ruimte?
• De inhoud van de configuratieruimte kan bijvoorbeeld opgeslagen worden in een seriële nonvolatile RAM (EEPROM) geheugen dat geladen wordt bij het opstarten
PCI card ontwerp
Jan Genoe KHLim
De configuratie ruimte van zo een standaard PCI IC kan natuurlijk niet op de juiste wijze door de IC fabrikant geïmplementeerd worden. Daarom is er meestal voorzien dat deze wordt opgeladen bij het opstarten vanuit een EEPROM.
Versie: zaterdag 11 november 2000
5
PCI card ontwerp
Jan Genoe KHLim
Ontwikkeling met PCI chipset devices: PLD
PCI card ontwerp
Jan Genoe KHLim
Diezelfde IC hoeft niet noodzakelijk met een processor gebruikt te worden. Er kan een CPLD of een FPGA geprogrammeerd worden die de aangeboden data van de backend bus afhaalt en de nieuwe data aan de backend bus doorgeeft. Deze component geeft deze data dan weer verder door aan de toepassing van de gebruiker. Dit heeft het voordeel dat deze PLD eenvoudig kan geprogrammeerd worden, en dus niet groot hoeft te zijn. Op de backend bus hoeft enkel maar het volgende voorzien te worden: • Het gelijktijdig lezen van data en adres en deze doorgeven • Het gelijktijdig schrijven van data en adres. De PCI chipset voorziet het gehele PCI protocol. Je moet je hierbij dan wel neerleggen bij de keuzes die door deze IC gemaakt werden. Er bestaan ook verschillende ASIC fabrikanten die een bouwblok met gelijkaardige functionaliteit als de PCI chip-set ter beschikking stellen aan diegenen die hun technologie wensen te gebruiken voor het maken van een ASIC. Dit bouwblok wordt dan als "black box" ter beschikking gesteld. Er worden geen details over de implementatie. De gebruiker kan dan de rest van zijn IC lay-outen en aansluiten op de back-end bus. Er kan dan een oplossing bekomen worden die volledig in een IC is opgenomen.
Versie: zaterdag 11 november 2000
6
PCI card ontwerp
Jan Genoe KHLim
Vaste FPGA PCI core
PCI card ontwerp
Jan Genoe KHLim
Als derde optie kan er gebruik gemaakt worden van een vaste PCI core. Deze core heeft dan dezelfde functionaliteit dan de eerste optie: zij voorziet een vaste backend interface. Meestal wordt deze door de IC fabrikant "post synthese" (gratis) ter beschikking gesteld. Vaak vullen zij ongeveer de helft (of minder) van een daartoe voorzien FPGA. Deze postsynthese vorm houdt rekening met de specifieke hardware en wordt ook in een vorm eigen aan de specifieke hardware ter beschikking gesteld. Hierdoor kan ze onmogelijk gebruikt worden op FPGA's van concurrenten of aangepast worden aan eigen eisen. Het overblijvende deel van de FPGA kan dan door de gebruiker ingevuld worden. Hierdoor kan er ook een compacte oplossing bekomen worden.
Versie: zaterdag 11 november 2000
7
PCI card ontwerp
Jan Genoe KHLim
Xilinx PCI core
PCI card ontwerp
Jan Genoe KHLim
De gebruiker heeft het krachtigste ontwikkelplatform indien hij de volledige code (in VHDL) van de PCI interface ter beschikking krijgt. Verschillende fabrikanten bieden een dergelijke core aan, tegen betaling. Deze code is dan grondig getest en wordt dan regelmatig ge-update. Een aantal universiteiten heeft ook een PCI core, maar deze is veel minder goed getest. Deze methode levert de efficiëntste en de krachtigste implementatie op. Hierboven tonen we de verschillende bouwblokken die in de Xilinx PCI core aanwezig zijn. De initiator state machine is natuurlijk alleen nodig indien het de implementatie van een PCI-master betreft. We overlopen hierna deze verschillende bouwblokken.
Versie: zaterdag 11 november 2000
8
PCI card ontwerp
Jan Genoe KHLim
Bouwblokken: 1 pariteitsgenerator/controle
• Controlleert de even pariteit op de – AD-bus (Address-data bus) – CBE (Command/Byte enable) – PAR
• Een fout wordt gerapporterd in – PERR- (indien het een data pariteitsfout is) – SERR- (indien het een address pariteitsfout is)
PCI card ontwerp
Jan Genoe KHLim
Als er data binnenkomt wordt de pariteit gecontroleerd en indien er fouten zijn worden deze gerapporteerd. Data die naar buiten gaat krijgt een pariteitsbit mee.
Versie: zaterdag 11 november 2000
9
PCI card ontwerp
Jan Genoe KHLim
Bouwblokken: 2 Target state machine
• Produceert de signalen – TRDY – STOP – DEVSEL
• Hoge performantie nodig – One hot encoding – Continue bursting (zero wait state)
PCI card ontwerp
Jan Genoe KHLim
Deze FSM moet zeer snel op inputs kunnen reageren, omdat anders de prestaties van de bus sterk gaan dalen.
Versie: zaterdag 11 november 2000
10
PCI card ontwerp
Jan Genoe KHLim
Bouwblokken: 3. Initiators state machine
• Moet enkel voorzien worden als het een PCImaster betreft. • Ook hier is een zeer snelle FSM nodig. • De geproduceerde signalen zijn – REQ – FRAME – IRDY
PCI card ontwerp
Versie: zaterdag 11 november 2000
Jan Genoe KHLim
11
PCI card ontwerp
Jan Genoe KHLim
Bouwblokken: 4. PCI configuratie ruimte
• De gehele functionaliteit van de standaard PCI configuratieruimte wordt hierin voorzien en kan door de gebruiker naar zijn wensen aangepast worden.
PCI card ontwerp
Versie: zaterdag 11 november 2000
Jan Genoe KHLim
12
PCI card ontwerp
Jan Genoe KHLim
Bouwblokken: 5. Gebruikers toepassing
• Hierin kan de toepassing van de gebruiker geïmplementeerd worden.
PCI card ontwerp
Versie: zaterdag 11 november 2000
Jan Genoe KHLim
13