Autoconfig är en mekanism för automatisk (utan att behöva installera byglar ) tilldelning av hårdvaruresurser för expansionsenheter på Amiga -datorn . Långt senare implementerades denna funktion på andra plattformar ( Amiga 500 med Autoconfig- stöd dök upp 1987 , och den första versionen av PCI-bussen dök upp 1992 ), protokollstöd på OS- nivå kallades Plug and Play .
I det ögonblick som datorn slås på, pollar AmigaOS sekventiellt varje ansluten enhet och allokerar ett antal adresser till den i adressutrymmet i datorns minne . I de fall enheten är ett minnesexpansionskort kopplar AmigaOS det nya tillgängliga minnet till det befintliga minnet i systemet. Autoconfig stöder också uppstart från ROM .
Varje expansionskortplats (och därmed varje kort installerat i den) är utrustad med två signaler: /CFGIN och /CFGOUT (symbolen "/" betyder att den omvända logiken används och den aktiva nivån för signalen är logisk noll).
Om /CFGOUT-raden för en kortplats är inaktiv, anses det att kortet som är installerat i denna kortplats inte är konfigurerat.
/CFGIN-linjerna för alla expansionsplatser (förutom /CFGIN-raden för den första kortplatsen) dras upp till den inaktiva nivån. Sålunda, efter uppstart, anses det att alla expansionskort inte är konfigurerade.
Om /CFGIN-ingången på kortet är aktiv, medan /CFGOUT-utgången inte är aktiv, "svarar" kortet på anrop till minnesområdet med start från adressen $E80000 (eller $FF000000 för Zorro III-bussen) (a typ av analog till konfigurationsutrymmet på PCI-bussen ). Med andra ord, tillståndet i vilket /CFGIN-kortingången är aktiv och /CFGOUT-utgången inte är aktiv motsvarar konfigurationsläget.
Enhetskonfigurationen börjar med att ställa in /CFGIN-raden till aktivt tillstånd. Därefter utförs de nödvändiga konfigurationsstegen (läser information om expansionskortet och ställer in adresser). Efter att konfigurationen har slutförts instrueras kortet att ställa in /CFGOUT till det aktiva tillståndet (instruktionen att ställa in /CFGOUT till det aktiva tillståndet ges också om det inte är möjligt att helt konfigurera enheten och operativsystemet vill sluta konfigurera nuvarande kort och gå vidare till att konfigurera nästa).
/CFGIN- och /CFGOUT-signalerna för expansionsplatser är anslutna i en kedja: /CFGOUT på den första luckan är ansluten till /CFGIN på den andra, /CFGOUT på den andra till /CFGIN på den tredje osv. /CFGIN linje för den första kortplatsen och /CFGOUT för den sista är anslutna till systemstyrenheten. Således, efter konfigurationen av det sista expansionskortet, kommer systemstyrenheten att meddelas att det inte finns några expansionskort kvar som kräver konfiguration. Detta tillvägagångssätt har en fördel: det finns ingen begränsning på antalet kort som deltar i konfigurationen. Men om kedjan är bruten (till exempel inget expansionskort är installerat i en av kortplatserna), hänger konfigurationsprocessen (systemstyrenheten kan inte vänta på att /CFGOUT-raden för den sista expansionskortplatsen ställs in på den aktiva stat). Lösningen på problemet var att installera 74LS32-chippet (fyra ELLER-element med två ingångar) och dra upp /CFGOUT-linjerna för alla expansionsplatser till den aktiva nivån. Detta chip blev den enda hårdvaran som krävdes för att Autoconfig skulle fungera korrekt .
Även om implementeringen av Autoconfig- protokollet är enklare än PCI , ger det samma automatiska enhetskonfigurationsfunktioner. PCI-bussen ger slumpmässig åtkomst till konfigurerbara enheter (seriell i Autoconfig ), och som ett resultat blir programmeringsmodellen för konfigurationsmekanismen mer komplicerad, och det finns också en gräns för antalet enheter (för mer detaljer, se beskrivningen av PCI -buss typ0- konfigurationscykeln ).
Även om implementeringen av Autoconfig är enklare och antalet anslutna enheter är obegränsat, har Autoconfig en nackdel: enheter kan bara konfigureras sekventiellt och endast en gång (tills datorn startas om).