OpenCores
URL https://opencores.org/ocsvn/rise/rise/trunk

Subversion Repositories rise

[/] [rise/] [trunk/] [vhdl/] [wb_stage.vhd] - Diff between revs 71 and 76

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 71 Rev 76
Line 49... Line 49...
  clear_out <= '0';  -- clear_out output is unused at the moment.
  clear_out <= '0';  -- clear_out output is unused at the moment.
 
 
  process (reset, mem_wb_register)
  process (reset, mem_wb_register)
  begin
  begin
    if reset = '0' then
    if reset = '0' then
      sr_enable   <= '0';
 
      lr_enable   <= '0';
 
      dreg_enable <= '0';
 
 
 
      clear_reg_lock0 <= '0';
      clear_reg_lock0 <= '0';
      lock_reg_addr0  <= (others => '-');
      lock_reg_addr0  <= (others => 'X');
      clear_reg_lock1 <= '0';
      clear_reg_lock1 <= '0';
      lock_reg_addr1  <= (others => '-');
      lock_reg_addr1  <= (others => 'X');
 
 
      dreg_addr <= (others => '-');
      dreg_enable <= '0';
      dreg      <= (others => '-');
      dreg_addr <= (others => 'X');
      lr        <= (others => '-');
      dreg      <= (others => 'X');
      sr        <= (others => '-');
      lr_enable   <= '0';
 
      lr        <= (others => 'X');
 
      sr_enable   <= '0';
 
      sr        <= (others => 'X');
    else
    else
 
 
      -- write back of register value. --
      -- write back of register value. --
      dreg_addr <= mem_wb_register.dreg_addr;
      dreg_addr <= mem_wb_register.dreg_addr;
      if mem_wb_register.aluop1(ALUOP1_WB_REG_BIT) = '1' then
      if mem_wb_register.aluop1(ALUOP1_WB_REG_BIT) = '1' then
Line 74... Line 73...
        clear_reg_lock0 <= '1';
        clear_reg_lock0 <= '1';
        lock_reg_addr0  <= mem_wb_register.dreg_addr;
        lock_reg_addr0  <= mem_wb_register.dreg_addr;
      elsif mem_wb_register.aluop1(ALUOP1_LD_MEM_BIT) = '1' then
      elsif mem_wb_register.aluop1(ALUOP1_LD_MEM_BIT) = '1' then
        dreg <= mem_wb_register.mem_reg;
        dreg <= mem_wb_register.mem_reg;
      else
      else
        dreg            <= (others => '0');
 
        dreg_enable     <= '0';
        dreg_enable     <= '0';
 
        dreg            <= (others => 'X');
        clear_reg_lock0 <= '0';
        clear_reg_lock0 <= '0';
        lock_reg_addr0  <= (others => '-');
        lock_reg_addr0  <= (others => 'X');
      end if;
      end if;
 
 
      -- we have only one lock register.
      -- we have only one lock register.
      assert mem_wb_register.aluop2(ALUOP2_SR_BIT) = '0' or mem_wb_register.aluop2(ALUOP2_LR_BIT) = '0';
      assert mem_wb_register.aluop2(ALUOP2_SR_BIT) = '0' or mem_wb_register.aluop2(ALUOP2_LR_BIT) = '0';
 
 
      clear_reg_lock1 <= '0';
      clear_reg_lock1 <= '0';
      lock_reg_addr1  <= (others => '-');
      lock_reg_addr1  <= (others => 'X');
      -- write back of LR --
      -- write back of LR --
      if mem_wb_register.aluop2(ALUOP2_LR_BIT) = '1' then
      if mem_wb_register.aluop2(ALUOP2_LR_BIT) = '1' then
        lr              <= mem_wb_register.lr;
        lr              <= mem_wb_register.lr;
        lr_enable       <= '1';
        lr_enable       <= '1';
        clear_reg_lock1 <= '1';
        clear_reg_lock1 <= '1';

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.