亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲制服丝袜av| 亚洲黄色小视频| 欧美精品 日韩| 欧洲色大大久久| 91高清视频免费看| 欧美三级在线看| 欧美日韩mp4| 日韩欧美国产一区二区在线播放| 337p亚洲精品色噜噜狠狠| 9191精品国产综合久久久久久| 欧美日韩精品欧美日韩精品一综合| 91久久精品一区二区| 欧美三级视频在线| 日韩欧美亚洲国产另类| 2021国产精品久久精品| 中文字幕欧美日本乱码一线二线| 国产精品入口麻豆九色| 亚洲免费毛片网站| 天堂在线一区二区| 国产精品一区二区免费不卡 | 欧美在线色视频| 欧美日韩亚州综合| 成人av资源下载| 91激情五月电影| 中文子幕无线码一区tr| 国产精品天美传媒沈樵| 欧美经典一区二区三区| 欧美国产日本视频| 日本亚洲一区二区| 色噜噜狠狠色综合中国| 国产午夜精品福利| 欧美亚洲日本国产| 日韩欧美资源站| 亚洲精品中文字幕乱码三区| 亚洲成人综合网站| 一本久久a久久精品亚洲| 久久香蕉国产线看观看99| 高清在线观看日韩| 日韩精品电影在线| 美腿丝袜亚洲色图| 国产999精品久久久久久| 日韩中文字幕一区二区三区| 一级做a爱片久久| 欧美国产日本韩| 一区二区久久久| 99精品欧美一区| 综合色中文字幕| 色婷婷精品大视频在线蜜桃视频| 国产精品久久久久一区| 欧美日韩在线直播| 美腿丝袜在线亚洲一区| 亚洲女子a中天字幕| 秋霞成人午夜伦在线观看| 亚洲尤物视频在线| 国产91富婆露脸刺激对白| 欧美一区二区大片| 亚洲在线观看免费| 91首页免费视频| 国产日韩成人精品| 国产麻豆精品视频| 日韩视频中午一区| 日韩精品国产精品| 色天使色偷偷av一区二区| 久久久精品欧美丰满| 美女视频网站黄色亚洲| 欧美日韩国产小视频| 亚洲精品国产一区二区三区四区在线| 国产99久久久国产精品潘金网站| 日韩精品一区二区三区在线观看| 亚洲丰满少妇videoshd| 欧美在线啊v一区| 亚洲一区在线观看视频| 欧美性一二三区| 午夜欧美电影在线观看| 欧美群妇大交群中文字幕| 亚洲国产成人av好男人在线观看| 欧美最猛性xxxxx直播| 亚洲午夜一区二区| 在线观看91精品国产麻豆| 肉丝袜脚交视频一区二区| 欧美蜜桃一区二区三区| 免费成人性网站| 久久精品人人做人人爽97| 粉嫩av一区二区三区| 国产精品乱码人人做人人爱| 99精品一区二区三区| 亚洲欧美成人一区二区三区| 色天使色偷偷av一区二区| 天堂午夜影视日韩欧美一区二区| 欧美一区午夜视频在线观看 | 久久www免费人成看片高清| 欧美二区三区91| 极品销魂美女一区二区三区| 久久久精品综合| 91美女片黄在线观看91美女| 亚洲成a人片在线不卡一二三区| 欧美一区二区在线视频| 国产精品综合视频| 一区二区三区在线观看国产| 91精品国产品国语在线不卡| 国产乱人伦偷精品视频不卡| 日韩理论片在线| 日韩视频在线一区二区| av一区二区久久| 日韩福利电影在线观看| 国产精品福利一区二区三区| 在线观看av不卡| 精品一区二区三区蜜桃| 亚洲视频免费观看| 日韩一卡二卡三卡| 91亚洲国产成人精品一区二三| 日韩激情一区二区| 国产精品乱人伦| 欧美成人一区二区三区片免费| 99久久精品久久久久久清纯| 日本女人一区二区三区| 亚洲婷婷综合久久一本伊一区| 欧美一区二区精品| 色欧美88888久久久久久影院| 久久99热这里只有精品| 亚洲一区二区三区四区在线观看| 国产天堂亚洲国产碰碰| 91精品国模一区二区三区| 不卡在线观看av| 国产乱码精品1区2区3区| 亚洲国产你懂的| 国产精品久久久久久久裸模| 欧美tickling网站挠脚心| 欧美日本精品一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃| 国产自产v一区二区三区c| 亚洲成人福利片| 亚洲欧美日韩精品久久久久| 亚洲国产高清aⅴ视频| 久久伊99综合婷婷久久伊| 欧美精选在线播放| 欧美亚洲一区三区| 欧美性猛片aaaaaaa做受| av一区二区三区| 北条麻妃一区二区三区| 成人小视频免费观看| 国产一二精品视频| 国产真实乱子伦精品视频| 免费一级欧美片在线观看| 亚洲大尺度视频在线观看| 亚洲香肠在线观看| 亚洲午夜久久久久久久久电影网| 国产精品国产三级国产普通话三级| 久久色视频免费观看| 精品国产凹凸成av人网站| 欧美精品一区二区三区久久久 | 自拍偷自拍亚洲精品播放| 国产精品天美传媒| 中文字幕一区二区三区四区不卡 | 日韩一区二区三区在线视频| 欧美日韩高清不卡| 欧美日韩情趣电影| 91精品免费在线| 欧美大片免费久久精品三p| 精品电影一区二区三区| 日韩免费电影网站| 久久综合九色综合欧美就去吻 | 一区二区三区四区亚洲| 亚洲精品菠萝久久久久久久| 亚洲国产视频网站| 蜜臂av日日欢夜夜爽一区| 狠狠色狠狠色合久久伊人| 高清在线观看日韩| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 精品国产91九色蝌蚪| 国产喷白浆一区二区三区| 国产精品久久久久aaaa樱花 | 麻豆成人久久精品二区三区红| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久精品国产一区二区| 国产成人精品一区二区三区网站观看| 成人在线一区二区三区| 在线亚洲+欧美+日本专区| 777色狠狠一区二区三区| 久久亚洲精品国产精品紫薇| 久久亚洲精品国产精品紫薇| 中文字幕一区二区三区四区 | 97se亚洲国产综合自在线观| 欧美日韩国产高清一区二区| 精品国产区一区| 亚洲卡通欧美制服中文| 免费视频最近日韩| 91无套直看片红桃| 精品国产制服丝袜高跟| 亚洲乱码国产乱码精品精小说| 亚洲日本一区二区| 蜜臀精品一区二区三区在线观看| 成人涩涩免费视频| 日韩你懂的在线播放| 亚洲欧美精品午睡沙发| 激情欧美一区二区| 欧美日韩dvd在线观看| 成人欧美一区二区三区小说| 九九精品视频在线看| 在线视频一区二区三区|