Finished Task Rand in vhdl
This commit is contained in:
parent
4cb356e25b
commit
a980ef180e
@ -60,6 +60,9 @@ begin
|
|||||||
end process task_state_transitions;
|
end process task_state_transitions;
|
||||||
|
|
||||||
sync : process ( clk, reset ) is
|
sync : process ( clk, reset ) is
|
||||||
|
variable var_lsfr_logic : std_logic_vector( 31 downto 0);
|
||||||
|
variable var_lsfr_signed : SIGNED( 31 downto 0);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if ( reset = '1' ) then
|
if ( reset = '1' ) then
|
||||||
current_task_state <= work.task.TASK_IDLE;
|
current_task_state <= work.task.TASK_IDLE;
|
||||||
@ -85,21 +88,24 @@ begin
|
|||||||
case Calc_State is
|
case Calc_State is
|
||||||
when CALC_IDLE =>
|
when CALC_IDLE =>
|
||||||
signal_write <= '0';
|
signal_write <= '0';
|
||||||
lsfr_std_logic <= STD_LOGIC_VECTOR(lsfr);
|
var_lsfr_logic := STD_LOGIC_VECTOR(lsfr);
|
||||||
if(lsfr_std_logic(0) = '1') then
|
if(var_lsfr_logic(0) = '1') then
|
||||||
lsfr <= SIGNED(lsfr_std_logic srl 1);
|
var_lsfr_logic := '0' & (var_lsfr_logic(31 downto 1));
|
||||||
lsfr <= SIGNED(lsfr_std_logic XOR POLYNOM);
|
--var_lsfr_logic := (var_lsfr_logic(31:1);
|
||||||
|
var_lsfr_logic := (var_lsfr_logic XOR POLYNOM);
|
||||||
else
|
else
|
||||||
lsfr <= SIGNED(lsfr_std_logic srl 1);
|
--var_lsfr_logic := (var_lsfr_logic srl 1);
|
||||||
|
var_lsfr_logic := '0' & var_lsfr_logic(31 downto 1);
|
||||||
end if;
|
end if;
|
||||||
lsfr <= SIGNED(lsfr_std_logic);
|
var_lsfr_signed := SIGNED(var_lsfr_logic);
|
||||||
lsfr_dump <= lsfr;
|
lsfr_dump <= SIGNED(var_lsfr_logic);
|
||||||
|
|
||||||
if(lsfr_std_logic(30) = '1') then
|
if(var_lsfr_signed(30) = '1') then
|
||||||
lsfr <= lsfr(31 downto 31) & "1000000" & lsfr(23 downto 0);
|
var_lsfr_signed := var_lsfr_signed(31 downto 31) & "1000000" & var_lsfr_signed(23 downto 0);
|
||||||
else
|
else
|
||||||
lsfr <= lsfr(31 downto 31) & "011111" & lsfr(24 downto 0);
|
var_lsfr_signed := var_lsfr_signed(31 downto 31) & "011111" & var_lsfr_signed(24 downto 0);
|
||||||
end if;
|
end if;
|
||||||
|
lsfr <= var_lsfr_signed;
|
||||||
Calc_State <= CALC_WRITE;
|
Calc_State <= CALC_WRITE;
|
||||||
when CALC_WRITE =>
|
when CALC_WRITE =>
|
||||||
signal_write <= '1';
|
signal_write <= '1';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user