Etape 9 : Implémentation du banc de registres
Suite à cette description, il est maintenant utile de réaliser l'implémentation du banc des resgitres du SC91-A. Celle-ci est légèrement plus détaillée que la description synoptique vue précédemment et pour la résumée, voici la description de l'entitée écrite en VHDL.
entity registers_bank is port ( RST : IN std_ulogic; -- reset signal (Active High AH) CLK : IN std_ulogic; -- system clock -- Register selection RNN : IN std_ulogic_vector(4 downto 0); -- first source operand RMM : IN std_ulogic_vector(4 downto 0); -- second source operand RDD : IN std_ulogic_vector(4 downto 0); -- destination operand LDD : IN std_ulogic; -- load RDD register with DDD value (AH) -- Data buses DNN : OUT std_ulogic_vector(31 downto 0); -- first source operand data bus DMM : OUT std_ulogic_vector(31 downto 0); -- second source operand data bus DDD : IN std_ulogic_vector(31 downto 0); -- destination operand data bus -- Specific allways connected PC regsiter PC : OUT std_ulogic_vector(31 downto 0); -- Program counter register output PCDIR : IN std_logic_vector(31 downto 0); -- Program counter register direct input PC_R00 : IN std_logic_vector(1 downto 0); -- control PC output as R00 (00) Ddd (01) PCDIR (10) -- Specific flag signals C : IN std_ulogic; -- carry signal from ALU FL : OUT std_ulogic_vector(15 downto 0); -- computed flags for ALU and Instruction LFL : IN std_ulogic; -- update Flags with current result (AH) -- Specific Stack pointer signals SPP : IN std_ulogic; -- store in SP (R01) the current value + 4 (AH) SPM : IN std_ulogic; -- put on R01 output current value - 4 (AH) -- store in SP (R01) the current value - 4 -- not use NU : IN std_ulogic -- not used, just that last line doesn't need ";" ); end registers_bank;
Par rapport à ce qui était prévu, la synthèse de l'aiguillage des bus d'opérandes à l'aide de buffer tri-state ne sera pas possible sur la cible choisit, qui contrairement à d'autres Xilinx, n'intègre pas ce type d'élément dans ses CLB. C'est donc une synthèse de type Multiplexeur qui sera employée, plus lente et surtout beaucoup plus gourmande en ressource. Une fois implémenté, cet élément a une taille équivalente à 21.000 portes occupant environ 40% du composant et limitant la fréquence sur ce composant à environ 100Mhz.