Line 5... |
Line 5... |
-- # FAST_SHIFT_EN = false (default): Use bit-serial shifter architecture (small but slow) #
|
-- # FAST_SHIFT_EN = false (default): Use bit-serial shifter architecture (small but slow) #
|
-- # FAST_SHIFT_EN = true: Use barrel shifter architecture (large but fast) #
|
-- # FAST_SHIFT_EN = true: Use barrel shifter architecture (large but fast) #
|
-- # ********************************************************************************************* #
|
-- # ********************************************************************************************* #
|
-- # BSD 3-Clause License #
|
-- # BSD 3-Clause License #
|
-- # #
|
-- # #
|
-- # Copyright (c) 2021, Stephan Nolting. All rights reserved. #
|
-- # Copyright (c) 2022, Stephan Nolting. All rights reserved. #
|
-- # #
|
-- # #
|
-- # Redistribution and use in source and binary forms, with or without modification, are #
|
-- # Redistribution and use in source and binary forms, with or without modification, are #
|
-- # permitted provided that the following conditions are met: #
|
-- # permitted provided that the following conditions are met: #
|
-- # #
|
-- # #
|
-- # 1. Redistributions of source code must retain the above copyright notice, this list of #
|
-- # 1. Redistributions of source code must retain the above copyright notice, this list of #
|
Line 95... |
Line 95... |
shifter.cnt <= (others => def_rst_val_c);
|
shifter.cnt <= (others => def_rst_val_c);
|
elsif rising_edge(clk_i) then
|
elsif rising_edge(clk_i) then
|
shifter.busy_ff <= shifter.busy;
|
shifter.busy_ff <= shifter.busy;
|
if (start_i = '1') then
|
if (start_i = '1') then
|
shifter.busy <= '1';
|
shifter.busy <= '1';
|
elsif (shifter.done = '1') then
|
elsif (shifter.done = '1') or (ctrl_i(ctrl_trap_c) = '1') then -- abort on trap
|
shifter.busy <= '0';
|
shifter.busy <= '0';
|
end if;
|
end if;
|
--
|
--
|
if (start_i = '1') then -- trigger new shift
|
if (start_i = '1') then -- trigger new shift
|
shifter.sreg <= rs1_i; -- shift operand
|
shifter.sreg <= rs1_i; -- shift operand
|