begin
mux0: entity work.mux8w port map (S,A(0),'0','0','0','0','0','0','0',Q(0));
mux1: entity work.mux8w port map (S,A(1),A(0),'0','0','0','0','0','0',Q(1));
mux2: entity work.mux8w port map (S,A(2),A(1),A(0),'0','0','0','0','0',Q(2));
mux3: entity work.mux8w port map (S,A(3),A(2),A(1),A(0),'0','0','0','0',Q(3));
mux4: entity work.mux8w port map (S,A(4),A(3),A(2),A(1),A(0),'0','0','0',Q(4));
mux5: entity work.mux8w port map (S,A(5),A(4),A(3),A(2),A(1),A(0),'0','0',Q(5));
mux6: entity work.mux8w port map (S,A(6),A(5),A(4),A(3),A(2),A(1),A(0),'0',Q(6));
mux7: entity work.mux8w port map (S,A(7),A(6),A(5),A(4),A(3),A(2),A(1),A(0),Q(7));
end architecture;
Pro mne je tento zápis čitelnější a „pochopitelnější“, hned vidím, co se děje
a co se kam posouvá. Když budu chtít změnit shifter na „rotátor“, místo nul
budu zase doplňovat bity A7..A1, když budu chtít udělat posun doprava,
můžu místo nul doplňovat nejvyšší bit a získat tak aritmetický posuv...
Při testech vyšly obě řešení co do náročnosti na počet logických prvků
totožně, syntetizér si s tím tedy poradil shodně. Je jen na vás, jakému zápisu
dáte přednost.
14.3 Mikroprocesor MHRD
Mikroprocesor ve hře MHRD je šestnáctibitový procesor s Harvardskou
architekturou a velmi jednoduchou instrukční sadou. Obsahuje tři registry:
Registr PC, což je známý programový čítač
Registr M, který slouží k výběru adresy v paměti
Registr A, který slouží jako akumulátor
Harvardská architektura znamená, že procesor má oddělené paměti
a sběrnice pro data a pro instrukce. Podobný princip využívají často
jednočipové mikropočítače. Oproti von Neumannově architektuře mají tu
výhodu, že mohou zároveň číst instrukci i pracovat s daty. Nevýhodou
může být, že bez případných vnějších úprav nemohou provádět instrukce
v operační paměti, tj. „chovat se k datům tak, jako by byly instrukce“.