RISCV/src/branch.vhd

70 lines
1.8 KiB
VHDL

-- branch.vhd
-- Created on: 19:01:2023
-- Author(s): Yannick Reiß
-- Copyright: WTFPL
-- Content: Entity branch - enable B-types in CPU
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
library work;
use work.riscv_types.all;
entity Branch is
port (
op_code : in uOP;
reg1 : in word;
reg2 : in word;
jmp_enable : out one_bit
);
end Branch;
architecture arch of Branch is
begin
branch_process : process(op_code)
begin
case op_code is
when uBEQ =>
if reg1 = reg2 then
jmp_enable <= "1";
else
jmp_enable <= "0";
end if;
when uBNE =>
if not (reg1 = reg2) then
jmp_enable <= "1";
else
jmp_enable <= "0";
end if;
when uBLT =>
if signed(reg1) < signed(reg2) then
jmp_enable <= "1";
else
jmp_enable <= "0";
end if;
when uBGE =>
if signed(reg1) >= signed(reg2) then
jmp_enable <= "1";
else
jmp_enable <= "0";
end if;
when uBLTU =>
if unsigned(reg1) < unsigned(reg2) then
jmp_enable <= "1";
else
jmp_enable <= "0";
end if;
when uBGEU =>
if unsigned(reg1) >= unsigned(reg2) then
jmp_enable <= "1";
else
jmp_enable <= "0";
end if;
when others =>
jmp_enable <= "0";
end case;
end process; -- branch
end architecture; -- arch