Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------------------------------------------------------------------------
- -- Namn: registerblock
- -- Filnamn: registerblock.vhd
- -- Testbench: registerblock_tb.vhd
- --
- -- Insignaler:
- -- clk - klocksignal, all uppdatering av register sker vid stigande flank
- -- n_rst - synkron resetsignal, aktiv låg
- -- F - resultatet från ALU
- -- DEST - bestämmer vilket av registerna R0 och R1 som ska vara aktivt
- -- RegEna - laddsignal till det aktiva registret
- --
- -- Utsignaler:
- -- RegOut - det aktiva registrets innehåll
- ----------------------------------------------------------------------------------
- library ieee;
- use ieee.std_logic_1164.all;
- use ieee.numeric_std.all;
- library work;
- use work.all;
- use work.cpu_pkg.all;
- entity registerblock is
- port(
- clk : in std_logic;
- n_rst : in std_logic;
- F : in std_logic_vector(7 downto 0);
- DEST : in std_logic;
- RegEna : in std_logic;
- RegOut : out std_logic_vector(7 downto 0)
- );
- end entity;
- architecture structural of registerblock is
- signal rst, update0, update1 : std_logic;
- signal r0_out, r1_out, mux_out : std_logic_vector(7 downto 0);
- begin
- rst <= not (not n_rst and clk);
- update0 <= not DEST and RegEna;
- update1 <= DEST and RegEna;
- reg0: entity REG8 port map(
- CLK => clk,
- CLR => rst,
- ENA => update0,
- D => F,
- Q => r0_out
- );
- reg1: entity REG8 port map(
- CLK => clk,
- CLR => rst,
- ENA => update1,
- D => F,
- Q => r1_out
- );
- mux: entity MUX2x8 port map(
- IN0 => r0_out,
- IN1 => r1_out,
- SEL => DEST,
- O => mux_out
- );
- RegOut <= mux_out;
- end architecture;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement