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

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

?? 15_mvl7_functions.vhd

?? VHDL的實例加解說,對初學習者用處很大的!
?? VHD
字號:
--***************************************************************************
--              VHDL BIT_VECTOR Operations for MVL7 type
--                                                                         
--         Copyright (c) 1990   UCI CADLAB, Dept. of ICS                  
--         Author :  Sanjiv Narayan (narayan@ics.uci.edu)                
--
--         Updated 7/8/91 by Sanjiv and Frank 
-- 
--         updated by Champaka Ramachandran 16/10/92
--
--***************************************************************************
use work.TYPES.all;

package MVL7_functions is
   function SHL( v2 :  MVL7_VECTOR ;  fill :  MVL7 ) return MVL7_VECTOR;
   function SHL0( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR;
   function SHL1( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR;
   function SHR( v2 :  MVL7_VECTOR ;  fill :  MVL7 ) return MVL7_VECTOR;
   function SHR0( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR;
   function SHR1( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR;
   function ROTR( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR;
   function ROTL( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR;
   function I2B( Number :  integer ;  len :  integer ) return MVL7_VECTOR;
   function B2I( v2 :  MVL7_VECTOR ) return integer;
   function COMP( v2 :  MVL7_VECTOR ) return MVL7_VECTOR;
   function TWOs_COMP( v2 :  MVL7_VECTOR ) return MVL7_VECTOR;
   function ODD_PARITY( v1 :  MVL7_VECTOR ) return MVL7;
   function EVEN_PARITY( v1 :  MVL7_VECTOR ) return MVL7;
   function REVERSE( v2 :  MVL7_VECTOR ) return MVL7_VECTOR;
   function SUM( v2 :  MVL7_VECTOR ) return integer;
   function PAD( v :  MVL7_VECTOR ;  width :  integer ) return MVL7_VECTOR;
   function DEC( x :  MVL7_VECTOR ) return MVL7_VECTOR;
   function INC( x :  MVL7_VECTOR ) return MVL7_VECTOR;
   function CARRY_ADD( x1 :  MVL7_VECTOR ;  x2 :  MVL7_VECTOR ) return MVL7_VECTOR;
   function "+" ( x1 :  MVL7_VECTOR ;  x2 :  MVL7_VECTOR ) return MVL7_VECTOR;
   function "-"( x1 :  MVL7_VECTOR ;  x2 :  MVL7_VECTOR ) return MVL7_VECTOR;
   function "*" ( x1 :  MVL7_VECTOR ;  x2 :  MVL7_VECTOR ) return MVL7_VECTOR;

-- truth table for "WiredOr" function
   constant tbl_WIREDOR: MVL7_TABLE := 
--  -----------------------------------------------
--  |  X    0    1    Z    W    L    H |          |
--  -----------------------------------------------
    (('X', 'X', '1', 'X', 'X', 'L', 'H'),  -- | X |
     ('X', '0', '1', '0', '0', 'L', 'H'),  -- | 0 |
     ('1', '1', '1', '1', '1', '1', '1'),  -- | 1 |
     ('X', '0', '1', 'Z', 'W', 'L', 'H'),  -- | Z |
     ('X', '0', '1', 'W', 'W', 'W', 'W'),  -- | W |
     ('L', 'L', '1', 'L', 'W', 'L', 'W'),  -- | L |
     ('H', 'H', '1', 'H', 'W', 'W', 'H')); -- | H |

--  function WiredOr (V: MVL7_VECTOR) return MVL7;

end;

package body MVL7_functions is

--***************************************************************************
   function SHL( v2 :  MVL7_VECTOR ;  fill :  MVL7 ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable shift_val: MVL7_VECTOR (v1'high downto v1'low);
      variable I: integer;
   begin
      v1 := v2;
      for I in v1'high downto (v1'low + 1) loop
         shift_val(I) := v1(I - 1);
      end loop ;
      shift_val(v1'low) := fill;
      return shift_val;
   end;

--***************************************************************************
   function SHL0( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable I: INTEGER;
   begin
      v1 := v2;
      for I in 1 to dist loop
         v1 := SHL(v1,'0');
      end loop ;
      return v1;
   end;

--***************************************************************************
   function SHL1( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable I: INTEGER;
   begin
      v1 := v2;
      for I in 1 to dist loop
         v1 := SHL(v1,'1');
      end loop ;
      return v1;
   end;

--***************************************************************************
   function SHR( v2 :  MVL7_VECTOR ;  fill :  MVL7 ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable shift_val: MVL7_VECTOR (v1'high downto v1'low);
   begin
      v1 := v2;
      for I in v1'low to (v1'high - 1) loop
         shift_val(I) := v1(I + 1);
      end loop ;
      shift_val(v1'high) := fill;
      return shift_val;
   end;

--***************************************************************************
   function SHR0( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable I: INTEGER;
   begin
      v1 := v2;
      for I in 1 to dist loop
         v1 := SHR(v1,'0');
      end loop ;
      return v1;
   end;

--***************************************************************************
   function SHR1( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable I: INTEGER;
   begin
      v1 := v2;
      for I in 1 to dist loop
         v1 := SHR(v1,'1');
      end loop ;
      return v1;
   end;

--***************************************************************************
   function ROTR( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable I: INTEGER;
   begin
      v1 := v2;
      for i in 1 to dist loop
         v1 := SHR(v1,v1(v1'low));
      end loop ;
      return v1;
   end;

--***************************************************************************
   function ROTL( v2 :  MVL7_VECTOR ;  dist :  INTEGER ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable I: INTEGER;
   begin
      v1 := v2;
      for i in 1 to dist loop
         v1 := SHL(v1,v1(v1'high));
      end loop ;
      return v1;
   end;

--***************************************************************************
   function I2B( Number :  integer ;  len :  integer ) return MVL7_VECTOR is
      variable temp: MVL7_VECTOR (len - 1 downto 0);
      variable NUM: integer:=0;
      variable QUOTIENT: integer:=0;
   begin
      QUOTIENT := Number;
      for I in 0 to len - 1 loop
         NUM := 0;
         while QUOTIENT > 1 loop
            QUOTIENT := QUOTIENT - 2;
            NUM := NUM + 1;
         end loop ;
         case QUOTIENT is
            when 1 =>
               temp(I) := '1';
            when 0 =>
               temp(I) := '0';
            when others =>
               null;
         end case;
         QUOTIENT := NUM;
      end loop ;
      return temp;
   end;

--***************************************************************************
   function B2I( v2 :  MVL7_VECTOR ) return integer is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable SUM: integer:=0;
   begin
      v1 := v2;
      for N in v1'low to v1'high loop
         if v1(N) = '1' then
            SUM := SUM + (2 ** (N - v1'low));
         end if;
      end loop ;
      return SUM;
   end;

--***************************************************************************
   function COMP( v2 :  MVL7_VECTOR ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable temp: MVL7_VECTOR (v1'high downto v1'low);
      variable I: INTEGER;
   begin
      v1 := v2;
      for I in v1'low to v1'high loop
         if v1(I) = '0' then
            temp(i) := '1';
         else
            temp(i) := '0';
         end if;
      end loop ;
      return temp;
   end;

--***************************************************************************
   function TWOs_COMP( v2 :  MVL7_VECTOR ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable temp: MVL7_VECTOR (v1'high downto v1'low);
   begin
      v1 := v2;
      temp := comp(v1);
      temp := INC(temp);
      return temp;
   end;

--***************************************************************************
   function "-" ( x1 :  MVL7_VECTOR ;  x2 :  MVL7_VECTOR ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (x1'high - x1'low downto 0);
      variable v2: MVL7_VECTOR (x2'high - x2'low downto 0);
      variable SUM: MVL7_VECTOR (v1'high downto v1'low);
   begin
      v1 := x1;
      v2 := x2;
      assert v1'length = v2'length 
         report "MVL7 vector -: operands of unequal lengths" severity FAILURE;
      SUM := I2B(B2I(v1) - B2I(v2),SUM'length);
      return (SUM);
   end;

--***************************************************************************
   function DEC( x :  MVL7_VECTOR ) return MVL7_VECTOR is
      variable v: MVL7_VECTOR (x'high downto x'low);
   begin
      v := x;
      return I2B(B2I(v) - 1,v'length);
   end;

--***************************************************************************
   function CARRY_ADD( x1: MVL7_VECTOR ; x2: MVL7_VECTOR ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (x1'high - x1'low downto 0);
      variable v2: MVL7_VECTOR (x2'high - x2'low downto 0);
      variable SUM: MVL7_VECTOR (x1'high - x1'low + 1 downto 0);
      -- + 1 is for carry
   begin
      v1 := x1;
      v2 := x2;
      assert v1'length = v2'length 
         report "MVL7vector carry add:operands of unequal lengths" 
         severity FAILURE;
      SUM := I2B(B2I(v1) + B2I(v2),SUM'length);
      return (SUM);
   end;

--***************************************************************************
   function "+" ( x1 :  MVL7_VECTOR ;  x2 :  MVL7_VECTOR ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (x1'high - x1'low downto 0);
      variable v2: MVL7_VECTOR (x2'high - x2'low downto 0);
      variable SUM: MVL7_VECTOR (v1'high downto v1'low);
   begin
      v1 := x1;
      v2 := x2;
      assert v1'length = v2'length 
         report "MVL7 vector +: operands of unequal lengths" severity FAILURE;
      SUM := I2B(B2I(v1) + B2I(v2),SUM'length);
      return (SUM);
   end;

--***************************************************************************
   function INC( x :  MVL7_VECTOR ) return MVL7_VECTOR is
      variable v: MVL7_VECTOR (x'high downto x'low);
   begin
      v := x;
      return I2B(B2I(v) + 1,v'length);
   end;

--***************************************************************************
   function ODD_PARITY( v1 :  MVL7_VECTOR ) return MVL7 is
   begin
      if ((SUM(v1) mod 2) = 1) then
         return '0';
      else
         return '1';
      end if;
   end;

--***************************************************************************
   function EVEN_PARITY( v1 :  MVL7_VECTOR ) return MVL7 is
   begin
      if ((SUM(v1) mod 2) = 1) then
         return '1';
      else
         return '0';
      end if;
   end;

--***************************************************************************
   function REVERSE( v2 :  MVL7_VECTOR ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable temp: MVL7_VECTOR (v1'high downto v1'low);
   begin
      v1 := v2;
      for I in v1'high downto v1'low loop
         temp(I) := v1(v1'high - I + v1'low);
      end loop ;
      return temp;
   end;

--***************************************************************************
   function SUM( v2 :  MVL7_VECTOR ) return integer is
      variable v1: MVL7_VECTOR (v2'high downto v2'low);
      variable count: integer:=0;
   begin
      v1 := v2;
      for I in v1'high downto v1'low loop
         if (v1(I) = '1') then
            count := count + 1;
         end if;
      end loop ;
      return count;
   end;

--***************************************************************************
   function PAD( v :  MVL7_VECTOR ;  width :  integer ) return MVL7_VECTOR is
   begin
      return I2B(B2I(v),width);
   end;

--***************************************************************************
   function "*" ( x1 :  MVL7_VECTOR ;  x2 :  MVL7_VECTOR ) return MVL7_VECTOR is
      variable v1: MVL7_VECTOR (x1'high - x1'low downto 0);
      variable v2: MVL7_VECTOR (x2'high - x2'low downto 0);
      variable PROD: MVL7_VECTOR (v1'high downto v1'low);
   begin
      v1 := x1;
      v2 := x2;
      assert v1'length = v2'length 
         report "MVL7 vector MUL: operands of unequal lengths" severity FAILURE;
      PROD := I2B(B2I(v1) * B2I(v2),PROD'length);
      return (PROD);
   end;

--***************************************************************************

function WiredOr (V: MVL7_VECTOR) return MVL7 is
  variable result: MVL7;
begin
  result := 'Z';
  for i in V'range loop
    result := tbl_WIREDOr(result, V(i));
    exit when result = '1';
  end loop;
  return result;
end WiredOr;
--***************************************************************************
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清视频www夜色资源网| 成人免费黄色大片| 91精品国产综合久久福利软件| 亚洲国产精品一区二区www在线| 欧洲日韩一区二区三区| 午夜精品在线看| 91精品久久久久久久91蜜桃| 麻豆国产欧美一区二区三区| 久久夜色精品国产噜噜av| 国产91精品欧美| 亚洲三级在线观看| 欧美精品在线视频| 韩国av一区二区三区| 国产精品全国免费观看高清| 91在线观看美女| 日本伊人色综合网| 欧美激情一二三区| 欧美日韩精品系列| 黑人巨大精品欧美一区| 综合欧美亚洲日本| 欧美一区二区视频观看视频| 风间由美性色一区二区三区| 亚洲免费观看视频| 精品久久久久一区二区国产| eeuss鲁片一区二区三区在线观看| 亚洲制服丝袜一区| 精品va天堂亚洲国产| 色嗨嗨av一区二区三区| 免费人成网站在线观看欧美高清| 欧美极品aⅴ影院| 91精品国产入口| 99久久久久久| 国产一区二区三区在线观看免费视频 | 国产欧美精品区一区二区三区| 色狠狠一区二区三区香蕉| 精品一区二区三区香蕉蜜桃| 亚洲老司机在线| 久久日韩精品一区二区五区| 欧美视频精品在线观看| 国产麻豆日韩欧美久久| 天堂久久久久va久久久久| 中文字幕一区二区三区不卡 | 99久久精品一区| 九九**精品视频免费播放| 亚洲一级在线观看| 国产欧美日韩视频在线观看| 日韩一区二区三区电影在线观看| 99这里只有久久精品视频| 精品一区二区免费视频| 午夜精品久久久久久久蜜桃app| 国产精品欧美综合在线| 久久久久久久久久久久久女国产乱 | 成人小视频在线观看| 蜜桃视频在线观看一区二区| 亚洲成av人在线观看| 亚洲免费观看高清完整版在线观看熊 | 久久99精品一区二区三区三区| 亚洲成人免费视| 亚洲精品国产a| 国产精品初高中害羞小美女文| 久久久久久久电影| 精品国产亚洲在线| 欧美一区二区视频在线观看2020| 欧美人妇做爰xxxⅹ性高电影| 在线精品亚洲一区二区不卡| 色欲综合视频天天天| 99精品视频中文字幕| 99在线精品一区二区三区| 成人精品小蝌蚪| 丁香婷婷综合激情五月色| 国产大片一区二区| 国产精品一区二区免费不卡| 国产福利91精品| 国产成人一级电影| 成人黄页毛片网站| av在线综合网| 色婷婷国产精品久久包臀| 91免费观看在线| 在线观看一区日韩| 欧美日韩成人高清| 这里只有精品99re| 精品久久久久久综合日本欧美 | 在线国产亚洲欧美| 欧美日韩国产另类一区| 欧美人狂配大交3d怪物一区| 日韩亚洲欧美成人一区| 久久美女艺术照精彩视频福利播放| 久久免费国产精品| 中文字幕亚洲欧美在线不卡| 一区二区三区四区激情| 亚洲三级视频在线观看| 一区二区免费在线| 亚洲不卡在线观看| 精品一区二区三区免费视频| 国产激情精品久久久第一区二区 | 无吗不卡中文字幕| 精品一区二区免费视频| 国产精品1024| 91黄色小视频| 日韩一区二区三区三四区视频在线观看| 日韩一区二区三| 国产精品美女久久久久久久| 一区二区三区在线视频播放| 日本成人在线网站| 国产 日韩 欧美大片| 欧美性感一区二区三区| 欧美一区二区三区人| 国产欧美日韩另类视频免费观看| 亚洲精品高清在线| 麻豆精品视频在线观看| eeuss鲁一区二区三区| 欧美乱妇15p| 欧美韩国日本不卡| 婷婷国产在线综合| 不卡的av网站| 日韩一区二区三| 亚洲免费视频成人| 国产一区91精品张津瑜| 色偷偷88欧美精品久久久| 欧美岛国在线观看| 一区二区三区 在线观看视频| 激情国产一区二区| 欧美在线短视频| 亚洲国产高清不卡| 毛片av一区二区三区| 在线亚洲+欧美+日本专区| 久久奇米777| 石原莉奈在线亚洲二区| 97久久超碰国产精品电影| www国产成人免费观看视频 深夜成人网| 国产欧美日本一区视频| 另类中文字幕网| 欧美老人xxxx18| 综合激情成人伊人| 国产精品综合二区| 日韩限制级电影在线观看| 亚洲一二三四在线| 91网页版在线| 国产精品久久网站| 国产精品一区二区三区四区| 91麻豆精品91久久久久同性| 中文字幕在线不卡一区| 国产精品18久久久久久久久久久久| 欧美一区二区在线免费观看| 一区二区三区小说| jlzzjlzz欧美大全| 国产精品久久二区二区| 丁香五精品蜜臀久久久久99网站| 日韩欧美精品在线| 青青草国产精品亚洲专区无| 欧美日韩国产123区| 亚洲一区二区在线免费观看视频 | 欧美日韩国产一二三| 亚洲综合成人网| 99视频国产精品| 中文字幕日本乱码精品影院| 国产成人av影院| 久久久不卡网国产精品二区| 国产尤物一区二区| 精品粉嫩超白一线天av| 国产在线精品一区二区| 久久这里只有精品6| 国产一区在线看| 国产婷婷色一区二区三区在线| 国产精品伊人色| 国产欧美精品区一区二区三区| 国产成人av电影在线| 国产精品免费视频一区| jiyouzz国产精品久久| 亚洲男人电影天堂| 91福利精品视频| 亚洲国产人成综合网站| 7777精品伊人久久久大香线蕉完整版 | 欧美一区日本一区韩国一区| 日本免费新一区视频| 久久这里只有精品首页| 成人免费毛片app| 亚洲色图在线视频| 色噜噜狠狠一区二区三区果冻| 午夜天堂影视香蕉久久| 欧美一级高清片| 国产精品综合久久| 亚洲人成影院在线观看| 欧美日韩一区在线| 麻豆国产91在线播放| 国产日韩视频一区二区三区| av福利精品导航| 亚洲成人手机在线| 精品国产乱码久久| 99国产精品久久久久久久久久| 亚洲精品中文在线影院| 7777精品伊人久久久大香线蕉经典版下载| 捆绑变态av一区二区三区| 国产亚洲人成网站| 欧洲另类一二三四区| 精品一区二区三区的国产在线播放| 国产网站一区二区| 欧美日韩视频在线第一区| 国内精品伊人久久久久av影院| 国产精品高潮呻吟久久|