Blog

Jednoduché prioritní rozhodčí: Přidělování zdrojů v integrovaných systémech …

Tento článek pojednává o případech použití a výhodách rozhodčího s jednoduchou implementací prioritního rozhodčího ve VHDL.

Arbitráž je nezbytnou součástí každého moderního počítačového systému. Od rozhodčích po sběrnici v komunikačních protokolech, jako jsou I.2C a CAN, až po paměťové rozhodování v systémech s více procesory, lze najít rozhodce všude tam, kde je třeba sdílet zdroj.

Rozhodčí mohou být synchronní (tj. Simultánní) nebo asynchronní a pracovat zadáváním požadavků a udělením přístupu k prostředkům na základě těchto požadavků.

Zdroje jsou ve vestavěném světě vždy omezené. Použití rozhodce může zjednodušit řízení zdrojů a zvýšit výkon a robustnost systému a upřednostnit konkurenční subsystémy.

Základy

Co je to rozhodčí?

Ve své nejjednodušší formě je rozhodčí zařízení, které bere N vstupních požadavků a generuje jednu stopu v jedné aktivní formě. Jeden horký je libovolně velká skupina bitů skládající se ze všech kromě jedné nuly; to znamená, že jeden bit je logicky vysoký nebo „horký“. Tímto způsobem se rozhodčí podívá na své vstupy a umožní jedinému zařízení přístup ke zdroji.

Příklad rozhodčího v akci

Řekněme, že máme tři zařízení, každé se signálem požadavku připojeným k rozhodčímu. „Zařízení“ se zde používá jako obecný termín pro libovolného žadatele. Žadatelem je fronta FIFO (první dovnitř, první ven), CPU, stavový automat atd. Může se to stát. Když zařízení potřebuje přístup ke zdroji, jednoduše nastaví vysoký požadavekový signál. Rozhodčí zkontroluje vaše lístky a udělí přístup.

Obrázek 1 ukazuje blokové schéma s pravdivostní tabulkou pod ním. V tomto příkladu se token grantu nepoužívá konkrétním způsobem. Jak indikátor grantu přistupuje ke zdroji, závisí na aplikaci a aplikaci.

Obrázek 1. S požadavky rozhodčího a známkami privilegia.

Obrázek 1 ukazuje situaci, kdy každé zařízení zadává požadavek samostatně.

Co se stane, když dvě nebo více zařízení zadá požadavky současně? Při řešení tohoto problému můžeme dát přednost našemu rozhodčímu.

Jak nastavit prioritu v rozhodčím

Obrázek 2 ukazuje upravenou tabulku pravdivosti s volitelnou prioritou. S požadavkem R3 má Dev3 přednost před Dev2 (s R2) a Dev1 (s R1). Dev2 má přednost před Dev1 (s R1) tím, že požaduje R2. Nezapomeňte znovu, že franšízovým výstupem je vždy jedno teplo. To je nezbytné, aby se zabránilo více zařízením v přístupu ke stejnému prostředku současně.

Jednoduché prioritní rozhodčí: Přidělování zdrojů v integrovaných systémech ... Jednoduche prioritni rozhodci Pridelovani zdroju v integrovanych systemech

Obrázek 2. Tabulka přesnosti rozhodčích se signály priority a odměny poptávky.

Uplatnění arbitrů v designu

Nyní víme, jaká je základní myšlenka a logické chování rozhodčího. Odtud můžeme začít implementovat náš design.

Stejné funkce lze implementovat různými způsoby. Výše uvedenou tabulku pravdivosti můžete zjednodušit pomocí mapy Karnaugh nebo můžete spustit aplikaci v jazyce popisu hardwaru.

Osobně rád nakreslím logický diagram, pokud to není příliš komplikované. Schopnost zobrazit logické brány spolu s tabulkou pravdy to usnadňuje, pouze když je čas stavět.

Rozhodčí ve společnosti Logisim

Logisim je open source logický simulátor pro digitální designéry, fandy a studenty. Je plně grafický a umožňuje uživateli vytvářet a testovat jednoduché návrhy pomocí všech logických bloků logu, včetně bran AND, multiplexerů, sčítačů, klopných obvodů, registrů a dokonce i paměti s náhodným přístupem (RAM).

Obrázek 3 a obrázek 4 níže ukazují tříbitový prioritní arbitr. Jsou volány značky s písmeny „a“ ​​a „b“ tunely Y znamená, že tečky se stejným písmenem jsou navzájem spojeny, i když mezi nimi není žádný fyzický vodič. Jasně zelené silnice představují vysoké nebo SKUTEČNÉ logické signály.

Jednoduché prioritní rozhodčí: Přidělování zdrojů v integrovaných systémech ... 1603155679 760 Jednoduche prioritni rozhodci Pridelovani zdroju v integrovanych systemech

Obrázek 3. Simulovaný tříbodový rozhodčí v Logisimu

Chcete-li začít, všimněte si, že první vstup horní brány AND (A1) je udržován vysoko. Tato vysoká logika dostane AND na A2 s doplňkem požadavku R3. Výstup A2 dostane ANDed v A4 po dokončení požadavku R2. Výtisk A4 určuje, zda je požadavek R1 proveden či nikoli.

Tímto způsobem můžete vidět, že tato vysoká počáteční logika kolísá rozhodčím. Pokud je jakýkoli požadavek vysoký, jeho doplněk postoupí rozhodčímu a zajistí, že pod ním nebude uplatněn žádný nárok. Tímto způsobem vytváříme prioritu rozhodčího. Obrázek 3 ukazuje, že ačkoliv rozhodčí obdržel dvě žádosti, R1 a R3, byl udělen pouze jeden grant (G3).

Obrázek 4 ukazuje podobnou situaci, kromě toho, že je požadována R1 a R2 soutěží o přístup ke zdroji.

Jednoduché prioritní rozhodčí: Přidělování zdrojů v integrovaných systémech ... 1603155679 751 Jednoduche prioritni rozhodci Pridelovani zdroju v integrovanych systemech

Obrázek 4

Požadavek R2 má vyšší prioritu než R1, takže signál vysokého odchozího oprávnění je G2. Vidíme, že tato vysoká priorita je způsobena tím, že se požadavek R2 dokončí na bráně A4 a zabrání tomu, aby byl výstup A5 (tj. Grant G1) vysoký.

Simulace malých logických diagramů, jako jsou ty výše, je skvělé pro rychlý důkaz konceptu. Pokud potřebujete postavit něco velkého, musíte použít pokročilejší nástroj.

Rozhodčí ve VHDL

Použil jsem Xilinx ISE k implementaci našeho rozhodčího ve VHDL. Fungovat budou i další nástroje, jako je Quartus II nebo Active-HDL.

Seznam 1 níže ukazuje aplikaci prioritního arbitra se třemi položkami.

                    - Listado 1: Árbitro

biblioteca IEEE;
use IEEE.STD_LOGIC_1164.ALL;

árbitro de entidad es
Puerto(
R: en STD_LOGIC_VECTOR (3 abajo a 1);
G: out STD_LOGIC_VECTOR (3 abajo a 1));

árbitro final

La concesión de arquitectura del árbitro es
empezar

 sol 
                  
Výpis 1. Rozhodčí implementován ve VHDL

Všimněte si použití std_logic_vector v bloku aktiv k vytvoření požadavku a zřízení portů.

Vektor R představuje tři příchozí požadavky a G se používá pro odchozí granty. Pokud jde o architekturu, používáme pouze kombinační logiku, takže nevidíte žádný proces.

Když architektura začíná, první řádek nastaví G na ‘100, když je R (3) vysoká, ignoruje zbývající položky. Dále, pokud je R (3) nízká, zkontrolujeme R (2) a pokud je R (2) vysoká, nastavíme G na ‘010’. Všimněte si, že stále ignorujeme R (1). Pokud jsou obě R (3) a R (2) nízké, zkontrolujeme R (1). Pokud je R (1) vysoká, G dostane „001“. Nakonec použijeme příkaz else, abychom se ujistili, že G je nastaveno na ‘000’, pokud jsou všechny vstupy nízké. Toto je jednoduchý způsob, jak implementovat naše prioritní schéma ve VHDL.

Testování VHDL arbitra v Testbench

Nyní otestujte náš kód. Výpis 2 ukazuje jednoduché testovací zařízení, které můžeme použít k ztělesnění a testování našeho nového designu.

                    - Listado 2: Arbiter TestBench

biblioteca ieee;
use ieee.std_logic_1164.all;
 
entidad arbitrerTest es
end arbitrerTest;
 
comportamiento de la arquitectura de la prueba de árbitro es
 
   - Declaración del componente para la unidad bajo prueba (UUT)
   árbitro componente
   Puerto(
         R: en std_logic_vector (3 abajo a 1);
         G: out std_logic_vector (3 abajo a 1)
        );
   componente final
    
   --Inputs
   señal r: std_logic_vector (3 abajo a 1): = (otros => '0');

   --Salidas
   señal g: std_logic_vector (3 abajo a 1);
 
empezar
 
   - Crear una instancia de la unidad bajo prueba (UUT)
   uut: mapa del puerto del árbitro (
          r => R,
          g => G
        );
 

   - Proceso de estímulo.
   stim_proc: proceso
   empezar

     r 
                  
Seznam 2. Testovací stůl arbitra použit ve VHDL

I když je design společnosti Testben nad rámec tohoto článku, níže je uveden stručný popis.

V zásadě prohlašuji součást rozhodčího spolu se zkušebními známkami r a g. Dále ztělesňuji rozhodčí komponentu jako svoji testovanou jednotku a mapuji testovací signály na porty. Pak spustím všech osm vstupních kombinací a mezi nimi čekám nanosekundu. Uvedl jsem je tak, aby odpovídaly tabulce pravdy na obrázku 2. Poslední část benchmarku nastavuje položky rovné ‘000 a pak čeká věčně. I když existují elegantnější způsoby testování všech vstupních kombinací, zdá se to jako nejjednodušší a nejjednodušší aplikace.

Abych viděl, jak se rozhodčí chová v tomto měřítku, simuloval jsem měřítko na ISE a vytvořil časový diagram zobrazený na obrázku 5.

Jednoduché prioritní rozhodčí: Přidělování zdrojů v integrovaných systémech ... 1603155679 810 Jednoduche prioritni rozhodci Pridelovani zdroju v integrovanych systemech

Obrázek 5. Tabulka časování testovací stolice rozhodčího

Horní lišta je náš vektor požadavku, druhá lišta je vektor grantu.

Tento grantový vektor byl rozšířen, takže můžeme vidět G3, G2 a G1. Všimněte si, že když je požadavek R3 (nejvýznamnější bit vektoru požadavku) vysoký, příspěvek G3 je také vysoký bez ohledu na stav ostatních vstupů. G2 je vysoká, když je poptávka vysoká R2 a R3 nízká. G1 je vysoká, pouze když jsou všechny požadavky kromě R1 nízké. Díky tomuto časovému diagramu vidíme, že se náš rozhodčí chová podle očekávání.

Jednoduchý prioritní rozhodčí je jednoduchý, jak název napovídá. Existují lepší a účinnější způsoby, jak použít rozhodčího. Jeden problém s prioritním rozhodčím je, že žádosti s nízkou prioritou nelze nikdy přijmout. Jedním ze způsobů, jak to vyřešit, je použít sekvenčního arbitra, který každému z žadatelů umožní přístup ke zdroji na krátkou dobu. Můžete kombinovat rozhodčího a prioritního rozhodčího, abyste z obou aplikací dostali to nejlepší. Tyto návrhy mohou být přezkoumány v budoucím článku.

výsledek

Tento článek představuje rozhodčího s aplikací jednoduchého prioritního rozhodčího ve VHDL. Arbitr je prostředníkem mezi různými komponentami systému a systémovými prostředky. Mohou to být dvě jádra CPU, která potřebují přístup ke sdílené paměti, nebo dva mikrokontroléry, které se snaží převzít kontrolu nad komunikační sběrnicí. Bez ohledu na praxi je rozhodčí často relativně jednoduchým a levným řešením složitého problému.

Botón volver arriba
Cerrar

Bloqueador de anuncios detectado

¡Considere apoyarnos desactivando su bloqueador de anuncios!