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

Subversion Repositories plasma

[/] [plasma/] [trunk/] [vhdl/] [control.vhd] - Diff between revs 10 and 17

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

Rev 10 Rev 17
Line 248... Line 248...
   when "000110" =>   --06 BLEZ   branch=r[rs]<=0;
   when "000110" =>   --06 BLEZ   branch=r[rs]<=0;
      a_source := a_from_pc;
      a_source := a_from_pc;
      b_source := b_from_immX4;
      b_source := b_from_immX4;
      alu_function := alu_add;
      alu_function := alu_add;
      pc_source := from_branch;
      pc_source := from_branch;
      branch_function := branch_ltz;
      branch_function := branch_lez;
   when "000111" =>   --07 BGTZ   branch=r[rs]>0;
   when "000111" =>   --07 BGTZ   branch=r[rs]>0;
      a_source := a_from_pc;
      a_source := a_from_pc;
      b_source := b_from_immX4;
      b_source := b_from_immX4;
      alu_function := alu_add;
      alu_function := alu_add;
      pc_source := from_branch;
      pc_source := from_branch;
Line 345... Line 345...
          b_source := b_from_imm;
          b_source := b_from_imm;
          alu_function := alu_add;
          alu_function := alu_add;
          rd := rt;
          rd := rt;
      c_source := c_from_memory;
      c_source := c_from_memory;
          mem_source := mem_read16s;   --address=(short)imm+r[rs];
          mem_source := mem_read16s;   --address=(short)imm+r[rs];
   when "100010" =>   --22 LWL    //fixme
   when "100010" =>   --22 LWL    //Not Implemented
 
      a_source := a_from_reg_source;
 
      b_source := b_from_imm;
 
      alu_function := alu_add;
 
      rd := rt;
 
      c_source := c_from_memory;
 
      mem_source := mem_read32;
   when "100011" =>   --23 LW     r[rt]=*(long*)ptr;
   when "100011" =>   --23 LW     r[rt]=*(long*)ptr;
          a_source := a_from_reg_source;
          a_source := a_from_reg_source;
          b_source := b_from_imm;
          b_source := b_from_imm;
          alu_function := alu_add;
          alu_function := alu_add;
          rd := rt;
          rd := rt;
Line 367... Line 373...
          b_source := b_from_imm;
          b_source := b_from_imm;
          alu_function := alu_add;
          alu_function := alu_add;
          rd := rt;
          rd := rt;
      c_source := c_from_memory;
      c_source := c_from_memory;
          mem_source := mem_read16;    --address=(short)imm+r[rs];
          mem_source := mem_read16;    --address=(short)imm+r[rs];
   when "100110" =>   --26 LWR    //fixme
   when "100110" =>   --26 LWR    //Not Implemented
   when "101000" =>   --28 SB     *(char*)ptr=(char)r[rt];
   when "101000" =>   --28 SB     *(char*)ptr=(char)r[rt];
          a_source := a_from_reg_source;
          a_source := a_from_reg_source;
          b_source := b_from_imm;
          b_source := b_from_imm;
          alu_function := alu_add;
          alu_function := alu_add;
          mem_source := mem_write8;   --address=(short)imm+r[rs];
          mem_source := mem_write8;   --address=(short)imm+r[rs];
   when "101001" =>   --29 SH     *(short*)ptr=(short)r[rt];
   when "101001" =>   --29 SH     *(short*)ptr=(short)r[rt];
          a_source := a_from_reg_source;
          a_source := a_from_reg_source;
          b_source := b_from_imm;
          b_source := b_from_imm;
          alu_function := alu_add;
          alu_function := alu_add;
          mem_source := mem_write16;
          mem_source := mem_write16;
   when "101010" =>   --2a SWL    //fixme
   when "101010" =>   --2a SWL    //Not Implemented
 
      a_source := a_from_reg_source;
 
      b_source := b_from_imm;
 
      alu_function := alu_add;
 
      mem_source := mem_write32;  --address=(short)imm+r[rs];
   when "101011" =>   --2b SW     *(long*)ptr=r[rt];
   when "101011" =>   --2b SW     *(long*)ptr=r[rt];
          a_source := a_from_reg_source;
          a_source := a_from_reg_source;
          b_source := b_from_imm;
          b_source := b_from_imm;
          alu_function := alu_add;
          alu_function := alu_add;
          mem_source := mem_write32;  --address=(short)imm+r[rs];
          mem_source := mem_write32;  --address=(short)imm+r[rs];
   when "101110" =>   --2e SWR    //fixme
   when "101110" =>   --2e SWR    //Not Implemented
   when "101111" =>   --2f CACHE
   when "101111" =>   --2f CACHE
   when "110000" =>   --30 LL     r[rt]=*(long*)ptr;
   when "110000" =>   --30 LL     r[rt]=*(long*)ptr;
   when "110001" =>   --31 LWC1 
   when "110001" =>   --31 LWC1 
   when "110010" =>   --32 LWC2 
   when "110010" =>   --32 LWC2 
   when "110011" =>   --33 LWC3 
   when "110011" =>   --33 LWC3 

powered by: WebSVN 2.1.0

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