亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? armldst.vhd

?? 對ARM核的VHDL描述
?? VHD
字號:
library ieee;
use ieee.std_logic_1164.all;
use IEEE.std_logic_unsigned.conv_integer;
use IEEE.std_logic_arith.conv_unsigned;
use work.int.all;
use work.memdef.all;
use work.armpctrl.all;
use work.armpmodel.all;
use work.armdecode.all;
use work.gendc_lib.all;

-- PREFIX: als_xxx
package armldst is
  
constant ALS_REGLIST_SZ : integer := 16;
constant ALS_REGLIST_U  : integer := 15;
constant ALS_REGLIST_D  : integer := 0;
constant ALS_REGLIST_pc : integer := 15;
constant ALS_REGLIST_ZERO : std_logic_vector(ALS_REGLIST_SZ-1 downto 0):= "0000000000000000";


-------------------------------------------------------------------------------
-- single load / store

-- Init size and signed for LDSTAM
procedure als_LDSTAM_init_size(
  insn : in std_logic_vector(31 downto 0);
  pctrl : inout apc_pctrl
);

-- Init size and signed for LSV4AM
procedure als_LSV4AM_init_size(
  insn : in std_logic_vector(31 downto 0);
  pctrl : inout apc_pctrl
);

-- Init address calc exop
procedure als_LDSTAMxLSV4AM_init_addsub(
  insn : in std_logic_vector(31 downto 0);
  pctrl : inout apc_pctrl
);

-------------------------------------------------------------------------------
-- multiple load / store

-- Count leading zeros
function als_getnextpos (
  insn    : in std_logic_vector(31 downto 0);
  reglist : in std_logic_vector(APM_REGLIST_SZ-1 downto 0)
) return std_logic_vector;

-- get inc/decrement offsets
procedure als_offsets (
  insn : in std_logic_vector(31 downto 0);
  startoff  : inout std_logic_vector(31 downto 0);
  endoff    : inout std_logic_vector(31 downto 0);
  incval    : inout std_logic_vector(31 downto 0)
);

-------------------------------------------------------------------------------

end armldst;

package body armldst is

procedure als_LDSTAM_init_size(
  insn : in std_logic_vector(31 downto 0);
  pctrl : inout apc_pctrl
) is
begin
  -- unsigned byte / word
  if insn(ADE_LDSTAM_UBYTE) = '1' then
    pctrl.me.meop_param.size  := lmd_byte;
    pctrl.me.meop_param.signed := '0';
  else
    pctrl.me.meop_param.size  := lmd_word;
    pctrl.me.meop_param.signed := '1';
  end if;
end;

procedure als_LSV4AM_init_size(
  insn : in std_logic_vector(31 downto 0);
  pctrl : inout apc_pctrl
) is
begin
  if insn(ADE_LSV4AM_SIGNED) = '1' then
    pctrl.me.meop_param.signed := '1';
  else
    pctrl.me.meop_param.signed := '0';
  end if;

  if insn(ADE_LSV4AM_HALF) = '1' then
    pctrl.me.meop_param.size  := lmd_half;
  else
    pctrl.me.meop_param.size  := lmd_byte;
  end if;
end;

procedure als_LDSTAMxLSV4AM_init_addsub(
  insn : in std_logic_vector(31 downto 0);
  pctrl : inout apc_pctrl
) is
begin
  if insn(ADE_LDSTAMxLSV4AM_ADD) = '1' then
    pctrl.ex.exop_aluop := ADE_OP_ADD;
  else
    pctrl.ex.exop_aluop := ADE_OP_SUB;
  end if;
end;

function als_getnextpos (
  insn    : in std_logic_vector(31 downto 0);
  reglist : in std_logic_vector(APM_REGLIST_SZ-1 downto 0)
) return std_logic_vector is
  variable part03_00   : std_logic_vector(3 downto 0);
  variable part07_04   : std_logic_vector(3 downto 0);
  variable part11_08   : std_logic_vector(3 downto 0);
  variable part15_12   : std_logic_vector(3 downto 0);
  variable part03_00ui : integer;
  variable part03_00di : integer;
  variable part07_04ui : integer;
  variable part07_04di : integer;
  variable part11_08ui : integer;
  variable part11_08di : integer;
  variable part15_12ui : integer;
  variable part15_12di : integer;
  variable src4        : std_logic_vector(3 downto 0);
  variable src4ui        : integer;
  variable src4di        : integer;
  variable srcu        : std_logic_vector(1 downto 0);
  variable srcd        : std_logic_vector(1 downto 0);
  variable posu        : std_logic_vector(3 downto 0);
  variable posd        : std_logic_vector(3 downto 0);
  variable i           : integer;
begin
  part03_00 := reglist( 3 downto  0);  
  part07_04 := reglist( 7 downto  4);
  part11_08 := reglist(11 downto  8);
  part15_12 := reglist(15 downto 12);

  -- priority 0-3
  part03_00ui := 0;
L1u:  for i in 0 to 3 loop
    if part03_00(i) = '1' then
      part03_00ui := i;
      exit L1u;
    end if;
  end loop;  
  part03_00di := 3;
L1d:  for i in 3 downto 0 loop
    if part03_00(i) = '1' then
      part03_00di := i;
      exit L1d;
    end if;
  end loop;  

  -- priority 4-7
  part07_04ui := 0;
L2u:  for i in 0 to 3 loop
    if part07_04(i) = '1' then
      part07_04ui := i;
      exit L2u;
    end if;
  end loop;  
  part07_04di := 3;
L2d:  for i in 3 downto 0 loop
    if part07_04(i) = '1' then
      part07_04di := i;
      exit L2d;
    end if;
  end loop;  

  -- priority 8-11
  part11_08ui := 0;
L3u:  for i in 0 to 3 loop
    if part11_08(i) = '1' then
      part11_08ui := i;
      exit L3u;
    end if;
  end loop;  
  part11_08di := 3;
L3d:  for i in 3 downto 0 loop
    if part11_08(i) = '1' then
      part11_08di := i;
      exit L3d;
    end if;
  end loop;  

  -- priority 12-15
  part15_12ui := 0;
L4u:  for i in 0 to 3 loop
    if part15_12(i) = '1' then
      part15_12ui := i;
      exit L4u;
    end if;
  end loop;  
  part15_12di := 0;
L4d:  for i in 3 downto 0 loop
    if part15_12(i) = '1' then
      part15_12di := i;
      exit L4d;
    end if;
  end loop;  

  src4 := (others => '0');
  if part03_00 /= "0000" then
    src4(0) := '1';
  end if;
  if part07_04 /= "0000" then
    src4(1) := '1';
  end if;
  if part11_08 /= "0000" then
    src4(2) := '1';
  end if;
  if part15_12 /= "0000" then
    src4(3) := '1';
  end if;

  -- priority upper blocks
  src4ui := 0;
S4u:  for i in 0 to 3 loop
    if src4(i) = '1' then
      src4ui := i;
      exit S4u;
    end if;
  end loop;  
  src4di := 3;
S4d:  for i in 3 downto 0 loop
    if src4(i) = '1' then
      src4di := i;
      exit S4d;
    end if;
  end loop;  

  srcu := std_logic_vector(conv_unsigned(src4ui, 2));
  srcd := std_logic_vector(conv_unsigned(src4di, 2));
    
  posu(3 downto 2) := srcu;
  case srcu is
    when "11" => posu(1 downto 0) := std_logic_vector(conv_unsigned(part15_12ui, 2));
    when "10" => posu(1 downto 0) := std_logic_vector(conv_unsigned(part11_08ui, 2));
    when "01" => posu(1 downto 0) := std_logic_vector(conv_unsigned(part07_04ui, 2));
    when "00" => posu(1 downto 0) := std_logic_vector(conv_unsigned(part03_00ui, 2));
    when others => null;
  end case;
  posd(3 downto 2) := srcd;
  case srcd is
    when "11" => posd(1 downto 0) := std_logic_vector(conv_unsigned(part15_12di, 2));
    when "10" => posd(1 downto 0) := std_logic_vector(conv_unsigned(part11_08di, 2));
    when "01" => posd(1 downto 0) := std_logic_vector(conv_unsigned(part07_04di, 2));
    when "00" => posd(1 downto 0) := std_logic_vector(conv_unsigned(part03_00di, 2));
    when others => null;
  end case;

  if insn(ADE_UID_U) = '1' then
    return posu; -- Increment regorder [0-15]
  else
    return posd; -- Decrement regorder [15-0]
  end if;

  return posu;
end;

procedure als_offsets (
  insn : in std_logic_vector(31 downto 0);
  startoff  : inout std_logic_vector(31 downto 0);
  endoff    : inout std_logic_vector(31 downto 0);
  incval    : inout std_logic_vector(31 downto 0)
) is
variable mode : std_logic_vector(1 downto 0);
variable regnum_mul4 : std_logic_vector(31 downto 0);
begin
  mode := insn(ADE_PAB_U)&insn(ADE_UID_U);
    
  startoff := (others => '0');
  endoff   := (others => '0');
  incval   := (others => '0');

  -- LRM/STM: Increment after  (regorder [0-15],start:+0,end(onwb):+4) :ldmia|stmia <rn>,{<reglist>}
  -- LRM/STM: Increment before (regorder [0-15],start:+4,end(onwb):+0) :ldmib|stmib <rn>,{<reglist>}
  -- LRM/STM: Decrement after  (regorder [15-0],start:-0,end(onwb):-4) :ldmda|stmda <rn>,{<reglist>}
  -- LRM/STM: Decrement before (regorder [15-0],start:-4,end(onwb):-0) :ldmdb|stmdb <rn>,{<reglist>}
  case mode is
    when "01" => incval := LIN_FOUR   ; startoff := (others=> '0'); endoff := LIN_FOUR;       -- increment after
    when "11" => incval := LIN_FOUR   ; startoff := LIN_FOUR      ; endoff := (others=> '0'); -- increment before
    when "00" => incval := LIN_MINFOUR; startoff := (others=> '0'); endoff := LIN_MINFOUR;    -- decrement after
    when "10" => incval := LIN_MINFOUR; startoff := LIN_MINFOUR   ; endoff := (others=> '0'); -- decrement before
    when others => 
  end case;
   
end;


end armldst;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美影院一区二区| 国产欧美精品一区aⅴ影院 | 日韩精品中文字幕一区| 久久九九久久九九| 亚洲成a人片在线观看中文| 国产九色sp调教91| 欧美色爱综合网| 国产精品毛片久久久久久久| 日韩和欧美一区二区| 色综合色综合色综合| 久久先锋影音av| 日韩电影在线看| 欧美综合亚洲图片综合区| 国产日韩亚洲欧美综合| 日韩精品一级二级| 91久久精品日日躁夜夜躁欧美| 日韩欧美在线影院| 亚洲一区二区欧美日韩| 成人精品视频一区二区三区尤物| 777亚洲妇女| 亚洲国产成人精品视频| 91激情在线视频| 亚洲欧美国产77777| 成人免费视频视频在线观看免费| 欧美mv日韩mv亚洲| 三级久久三级久久久| 欧美三级视频在线播放| 亚洲激情欧美激情| 色哟哟精品一区| 亚洲天天做日日做天天谢日日欢| 国产suv精品一区二区三区| 日韩精品一区二区三区老鸭窝| 亚洲成人av中文| 欧美剧在线免费观看网站| 亚洲一本大道在线| 欧美性猛交xxxxxxxx| 亚洲资源在线观看| 欧美日韩一区不卡| 亚洲成av人影院在线观看网| 欧美日韩在线三区| 午夜精品一区在线观看| 制服视频三区第一页精品| 日本不卡一区二区| 欧美刺激午夜性久久久久久久| 美女精品一区二区| 欧美精品一区二| 豆国产96在线|亚洲| 综合网在线视频| 欧美最新大片在线看| 日韩av午夜在线观看| 欧美电视剧免费全集观看| 久久精品国产久精国产爱| 久久―日本道色综合久久| 成人午夜激情在线| 亚洲激情成人在线| 7777精品久久久大香线蕉| 日本中文一区二区三区| 欧美精品一区二区三区在线播放| 国产精品一区二区在线播放| 亚洲欧洲日韩av| 精品视频1区2区3区| 国产一区欧美日韩| 亚洲欧美色综合| 欧美一区二区三区色| 激情另类小说区图片区视频区| 国产亲近乱来精品视频| 欧美在线视频你懂得| 麻豆精品视频在线| 亚洲视频在线观看三级| 91精品国产综合久久久久久久 | 91精品蜜臀在线一区尤物| 一本一道久久a久久精品| 日韩中文字幕区一区有砖一区 | 国产毛片精品视频| 亚洲精品日韩综合观看成人91| 日韩三级免费观看| 色综合久久88色综合天天6| 久久国产麻豆精品| 亚洲激情自拍偷拍| 国产校园另类小说区| 欧美三级电影在线看| 国产成人8x视频一区二区| 午夜视频久久久久久| 国产日韩精品一区| 欧美高清激情brazzers| 成人av中文字幕| 美美哒免费高清在线观看视频一区二区| 国产性色一区二区| 欧美大胆一级视频| 欧美日韩情趣电影| 99国产精品国产精品毛片| 久久99国产精品久久| 亚洲午夜av在线| 欧美国产欧美综合| 欧美v亚洲v综合ⅴ国产v| 91黄色免费观看| av成人免费在线| 黄一区二区三区| 日本中文字幕一区二区视频| 一区二区三区中文字幕电影| 国产午夜亚洲精品羞羞网站| 在线成人午夜影院| 欧美日韩免费高清一区色橹橹| 成人黄色一级视频| 国产成人免费视频网站高清观看视频| 日韩—二三区免费观看av| 亚洲另类春色校园小说| ●精品国产综合乱码久久久久| 久久精品视频一区二区| 日韩美女主播在线视频一区二区三区| 欧美系列亚洲系列| 欧美在线高清视频| 欧洲视频一区二区| 欧美午夜不卡视频| 欧美日韩一区二区三区视频| 在线观看www91| 欧美日韩亚洲综合一区二区三区| 色呦呦一区二区三区| 色噜噜狠狠色综合中国| 色综合天天综合狠狠| 91网址在线看| 日本韩国一区二区三区视频| 色综合久久久久网| 色av一区二区| 欧美日韩一卡二卡| 日韩免费在线观看| 精品日韩在线观看| 国产午夜精品在线观看| 国产校园另类小说区| 中文字幕制服丝袜一区二区三区| 国产精品入口麻豆九色| 亚洲欧美日韩国产另类专区| 亚洲精品大片www| 日韩精品一级二级| 国产一区二区三区久久悠悠色av| 高清日韩电视剧大全免费| 不卡电影免费在线播放一区| 色综合久久久久综合| 7777精品伊人久久久大香线蕉经典版下载 | 色婷婷亚洲一区二区三区| 在线一区二区三区四区五区| 欧美日韩国产a| 精品国产伦理网| 亚洲欧洲美洲综合色网| 亚洲一区二区四区蜜桃| 久久精品av麻豆的观看方式| 国产成人亚洲精品青草天美| 97aⅴ精品视频一二三区| 欧美日韩aaa| 国产精品视频在线看| 亚洲午夜在线电影| 激情文学综合插| 色猫猫国产区一区二在线视频| 欧美一区二区三区在线电影| 久久久久9999亚洲精品| 亚洲一区国产视频| 国产一区二区视频在线播放| 一本色道久久加勒比精品| 日韩欧美美女一区二区三区| 国产精品国产三级国产专播品爱网| 亚洲在线观看免费视频| 国产原创一区二区三区| 欧美图片一区二区三区| 国产欧美精品一区二区色综合朱莉| 亚洲一区二区三区四区在线观看| 韩国v欧美v日本v亚洲v| 欧美体内she精高潮| 国产日韩欧美制服另类| 琪琪久久久久日韩精品| 99久久伊人久久99| 久久综合中文字幕| 五月综合激情婷婷六月色窝| 成人精品国产免费网站| 日韩欧美精品在线视频| 洋洋成人永久网站入口| 丰满白嫩尤物一区二区| 欧美刺激午夜性久久久久久久| 一区二区免费视频| 白白色亚洲国产精品| 精品国产乱码久久久久久久| 亚洲国产精品一区二区久久 | 欧美日韩www| 一区二区三区中文免费| 懂色av一区二区夜夜嗨| 日韩欧美黄色影院| 视频在线观看一区二区三区| 色婷婷久久久久swag精品 | 久久综合色一综合色88| 亚洲va欧美va人人爽午夜| 日本大香伊一区二区三区| 中文字幕一区二| 成人免费看片app下载| 26uuu国产电影一区二区| 日产国产高清一区二区三区 | 久久免费国产精品| 久久99久久久欧美国产| 欧美一二三四区在线| 日韩激情在线观看| 欧美一区二区三区在线电影| 日韩电影免费一区|