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

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

?? l_conversions_b.vhd

?? 8237 VHDL代碼
?? VHD
?? 第 1 頁 / 共 2 頁
字號:
-- Altera Microperipheral Reference Design Version 0802
--------------------------------------------------------------------------------
--  File Name: l_conversions_b.vhd
--------------------------------------------------------------------------------
--  Copyright (C) 1997, 1998 Free Model Foundation
-- 
--  This program is free software; you can redistribute it and/or modify
--  it under the terms of the GNU General Public License version 2 as
--  published by the Free Software Foundation.
-- 
--  This package was written by SEVA Technologies, Inc. and donated to the FMF.
--  www.seva.com
--
--  MODIFICATION HISTORY:
-- 
--  version: |  author:  | mod date: | changes made:
--    V1.0     R. Steele   97 DEC 05   Added header and formatting to SEVA file
--    V1.1     R. Munden   98 NOV 28   Corrected function b
-- 
--------------------------------------------------------------------------------

PACKAGE BODY conversions IS

    -- private declarations for this package 
    type basetype     is (binary, octal, decimal, hex);

    function max(x,y: integer) return integer is
    begin
      if x > y then return x; else return y; end if;
    end max;

    function min(x,y: integer) return integer is
    begin
      if x < y then return x; else return y; end if;
    end min;

    -- consider function sizeof for string/slv/???, return natural

    --  function size(len: natural) return natural is
    --  begin
    --    if len=0 then
    --      return 31;
    --    else return len;
    --    end if;
    --  end size;

      function nextmultof (x    : positive;
                           size : positive) return positive is
      begin
        case x mod size is
          when 0      => return size * x/size;
          when others => return size * (x/size + 1);
        end case;
      end nextmultof;

      function rtn_base (base : basetype) return character is
      begin
        case base is
          when binary  => return 'b';
          when octal   => return 'o';
          when decimal => return 'd';
          when hex     => return 'h';
        end case;
      end rtn_base;

      function format (r          : string;
                       base       : basetype;
                       rtn_len    : natural     ;
                       justify    : justify_side;
                       basespec   : b_spec) return string is
        variable int_rtn_len : integer; 
      begin
        if basespec=yes then 
          int_rtn_len := rtn_len - 3;
        else 
          int_rtn_len := rtn_len;
        end if;
        if int_rtn_len <= r'length then
          case basespec is
            when no  => return r ;
            when yes => return rtn_base(base) & '"' & r & '"';
          end case;
        else 
          case justify is
            when left  =>
              case basespec is
                when no  => 
                  return r & fill(' ',int_rtn_len - r'length);
                when yes  => 
                  return rtn_base(base) & '"' & r & '"' & 
                         fill(' ',int_rtn_len - r'length);
              end case;
            when right =>
              case basespec is
                when no  => 
                  return fill(' ',int_rtn_len - r'length) & r ;
                when yes  => 
                  return fill(' ',int_rtn_len - r'length) & 
                         rtn_base(base) & '"' & r & '"';
              end case;
          end case;
        end if;
      end format;

      -- convert numeric string of any base to natural
      function cnvt_base (x      : string;
                          inbase : natural range 2 to 16) return natural is
        -- assumes x is an unsigned number string of base 'inbase'
        -- values larger than natural'high are not supported
        variable r,t   : natural  := 0;
        variable place : positive := 1;
      begin
        for i in x'reverse_range loop
          case x(i) is
            when '0'     => t := 0;
            when '1'     => t := 1;
            when '2'     => t := 2;
            when '3'     => t := 3;
            when '4'     => t := 4;
            when '5'     => t := 5;
            when '6'     => t := 6;
            when '7'     => t := 7;
            when '8'     => t := 8;
            when '9'     => t := 9;
            when 'a'|'A' => t := 10;
            when 'b'|'B' => t := 11;
            when 'c'|'C' => t := 12;
            when 'd'|'D' => t := 13;
            when 'e'|'E' => t := 14;
            when 'f'|'F' => t := 15;
            when '_'     => t := 0;    -- ignore these characters
                            place := place / inbase;
            when others  => 
              assert false 
                report lf &
                       "CNVT_BASE found input value larger than base: " & lf &
                       "Input value: " & x(i) &
                         " Base: " & to_int_str(inbase) & lf &
                       "converting input to integer 0"
                severity warning;
              return 0;   
          end case;
          if t / inbase > 1 then       -- invalid value for base
            assert false 
              report lf &
                     "CNVT_BASE found input value larger than base: " & lf &
                     "Input value: " & x(i) &
                       " Base: " & to_int_str(inbase) & lf &
                     "converting input to integer 0"
              severity warning;
            return 0;
          else
            r     := r + (t * place);   
            place := place * inbase;
          end if;
        end loop;
        return r;
      end cnvt_base;

    function extend (x   : std_logic;
                     len : positive) return std_logic_vector is
      variable v : std_logic_vector(1 to len) := (others => x); 
    begin
      return v; 
    end extend;


    -- implementation of public declarations

    function to_bin_str(x          : std_logic_vector;
                        rtn_len    : natural      := 0;
                        justify    : justify_side := right;
                        basespec   : b_spec       := yes) return string is

      variable int : std_logic_vector(1 to x'length):=x;
      variable r   : string(1 to x'length):=(others=>'$');
    begin
      for i in int'range loop
        r(i to i) := to_bin_str(int(i),basespec=>no);
      end loop;
      return format (r,binary,rtn_len,justify,basespec);
    end to_bin_str;

    function to_bin_str(x          : std_logic;
                        rtn_len    : natural      := 0;
                        justify    : justify_side := right;
                        basespec   : b_spec       := yes) return string is
      variable r   : string(1 to 1);
    begin
        case x is
          when '0'    => r(1) := '0';
          when '1'    => r(1) := '1';
          when 'U'    => r(1) := 'U';
          when 'X'    => r(1) := 'X';
          when 'Z'    => r(1) := 'Z';
          when 'W'    => r(1) := 'W';
          when 'H'    => r(1) := 'H';
          when 'L'    => r(1) := 'L';
          when '-'    => r(1) := '-';
        end case;
      return format (r,binary,rtn_len,justify,basespec);
    end to_bin_str;

    function to_bin_str(x          : natural;
                        rtn_len    : natural      := 0;
                        justify    : justify_side := right;
                        basespec   : b_spec       := yes) return string is
      variable int : natural := x;
      variable ptr : positive range 2 to 32 := 32;
      variable r   : string(2 to 32):=(others=>'$');
    begin
      if int = 0 then 
        return format ("0",binary,rtn_len,justify,basespec);
      end if;

      while int > 0 loop
        case int rem 2 is
          when 0 => r(ptr) := '0';
          when 1 => r(ptr) := '1';
          when others =>
            assert false report lf & "TO_BIN_STR, shouldn't happen" 
            severity failure;
            return "$";
           null;
        end case;
        int := int / 2;
        ptr := ptr - 1;
      end loop;
      return format (r(ptr+1 to 32),binary,rtn_len,justify,basespec);
    end to_bin_str;

    function to_hex_str(x          : std_logic_vector;
                        rtn_len    : natural      := 0;
                        justify    : justify_side := right;
                        basespec   : b_spec       := yes) return string is
      -- will return x'length/4
      variable nxt : positive := nextmultof(x'length,4);
      variable int : std_logic_vector(1 to nxt):= (others => '0');
      variable ptr : positive range 1 to (nxt/4)+1 := 1;
      variable r   : string(1 to nxt/4):=(others=>'$');
      subtype slv4 is std_logic_vector(1 to 4);
    begin
      int(nxt-x'length+1 to nxt) := x;
      if nxt-x'length > 0 and x(x'left) /= '1' then 
        int(1 to nxt-x'length) := extend(x(x'left),nxt-x'length);
      end if;
      for i in int'range loop
        next when i rem 4 /= 1;
        case slv4'(int(i to i+3)) is
          when "0000" => r(ptr) := '0';
          when "0001" => r(ptr) := '1';
          when "0010" => r(ptr) := '2';
          when "0011" => r(ptr) := '3';
          when "0100" => r(ptr) := '4';
          when "0101" => r(ptr) := '5';
          when "0110" => r(ptr) := '6';
          when "0111" => r(ptr) := '7';
          when "1000" => r(ptr) := '8';
          when "1001" => r(ptr) := '9';
          when "1010" => r(ptr) := 'A';
          when "1011" => r(ptr) := 'B';
          when "1100" => r(ptr) := 'C';
          when "1101" => r(ptr) := 'D';
          when "1110" => r(ptr) := 'E';
          when "1111" => r(ptr) := 'F';
          when "ZZZZ" => r(ptr) := 'Z';
          when "WWWW" => r(ptr) := 'W';
          when "LLLL" => r(ptr) := 'L';
          when "HHHH" => r(ptr) := 'H';
          when "UUUU" => r(ptr) := 'U';
          when "XXXX" => r(ptr) := 'X';
          when "----" => r(ptr) := '-';
          when others =>
            assert false 
              report lf &
                     "TO_HEX_STR found illegal value: " & 
                       to_bin_str(int(i to i+3)) & lf &
                     "converting input to '-'"
              severity warning;
            r(ptr) := '-';
        end case;
        ptr := ptr + 1;
      end loop;
      return format (r,hex,rtn_len,justify,basespec);
    end to_hex_str;

    function to_hex_str(x          : natural;
                        rtn_len    : natural      := 0;
                        justify    : justify_side := right;
                        basespec   : b_spec       := yes)     return string is
      variable int : natural := x;
      variable ptr : positive range 1 to 20 := 20;
      variable r   : string(1 to 20):=(others=>'$');
    begin
      if x=0 then return format ("0",hex,rtn_len,justify,basespec); end if;
      while int > 0 loop
        case int rem 16 is
          when 0  => r(ptr) := '0';
          when 1  => r(ptr) := '1';
          when 2  => r(ptr) := '2';
          when 3  => r(ptr) := '3';
          when 4  => r(ptr) := '4';
          when 5  => r(ptr) := '5';
          when 6  => r(ptr) := '6';
          when 7  => r(ptr) := '7';
          when 8  => r(ptr) := '8';
          when 9  => r(ptr) := '9';
          when 10 => r(ptr) := 'A';
          when 11 => r(ptr) := 'B';
          when 12 => r(ptr) := 'C';
          when 13 => r(ptr) := 'D';
          when 14 => r(ptr) := 'E';
          when 15 => r(ptr) := 'F';
          when others =>
            assert false report lf & "TO_HEX_STR, shouldn't happen"
            severity failure;
            return "$";
        end case;
        int := int / 16;
        ptr := ptr - 1;
      end loop;
      return format (r(ptr+1 to 20),hex,rtn_len,justify,basespec);
    end to_hex_str;

      function to_oct_str(x          : std_logic_vector;
                          rtn_len    : natural      := 0;
                          justify    : justify_side := right;
                          basespec   : b_spec       := yes) return string is
        -- will return x'length/3
        variable nxt : positive := nextmultof(x'length,3);
        variable int : std_logic_vector(1 to nxt):= (others => '0');
        variable ptr : positive range 1 to (nxt/3)+1 := 1;
        variable r   : string(1 to nxt/3):=(others=>'$');
        subtype slv3 is std_logic_vector(1 to 3);
      begin
        int(nxt-x'length+1 to nxt) := x;
        if nxt-x'length > 0 and x(x'left) /= '1' then 
          int(1 to nxt-x'length) := extend(x(x'left),nxt-x'length);
        end if;
        for i in int'range loop
          next when i rem 3 /= 1;
          case slv3'(int(i to i+2)) is
            when "000" => r(ptr) := '0';
            when "001" => r(ptr) := '1';
            when "010" => r(ptr) := '2';
            when "011" => r(ptr) := '3';
            when "100" => r(ptr) := '4';
            when "101" => r(ptr) := '5';
            when "110" => r(ptr) := '6';
            when "111" => r(ptr) := '7';
            when "ZZZ" => r(ptr) := 'Z';
            when "WWW" => r(ptr) := 'W';
            when "LLL" => r(ptr) := 'L';
            when "HHH" => r(ptr) := 'H';
            when "UUU" => r(ptr) := 'U';
            when "XXX" => r(ptr) := 'X';
            when "---" => r(ptr) := '-';
            when others =>
              assert false 
                report lf &
                       "TO_OCT_STR found illegal value: " & 
                         to_bin_str(int(i to i+2)) & lf &
                       "converting input to '-'"
                severity warning;
              r(ptr) := '-';
          end case;
          ptr := ptr + 1;
        end loop;
        return format (r,octal,rtn_len,justify,basespec);
      end to_oct_str;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产色产综合色产在线视频 | 天天操天天色综合| 久久er99热精品一区二区| 色综合咪咪久久| 久久精品网站免费观看| 青青青伊人色综合久久| 在线观看日产精品| 国产精品午夜免费| 国产精品一区二区男女羞羞无遮挡 | 中文字幕亚洲视频| 国产麻豆精品视频| 欧美videofree性高清杂交| 亚洲综合图片区| 91老师国产黑色丝袜在线| 亚洲国产精品国自产拍av| 精品一区二区三区在线播放| 欧美一区二区三区视频在线| 亚洲综合久久久| 91麻豆高清视频| 综合激情网...| 99国内精品久久| 亚洲男人的天堂一区二区| 成人短视频下载| 亚洲国产成人在线| 成人动漫av在线| 国产精品亲子伦对白| 大胆亚洲人体视频| 中文字幕精品—区二区四季| 国产精品一区二区x88av| 2020国产精品| 国产成人综合视频| 国产精品国产a级| 99九九99九九九视频精品| 亚洲欧美怡红院| 91首页免费视频| 一个色综合网站| 欧美日韩中文国产| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美日本视频在线| 亚洲成人精品一区二区| 666欧美在线视频| 老司机一区二区| 国产香蕉久久精品综合网| 福利一区二区在线观看| 亚洲欧美在线观看| 欧美在线视频全部完| 日本在线不卡视频| 精品福利在线导航| 成人综合日日夜夜| 亚洲一区二区三区影院| 91精品国产品国语在线不卡| 国产一区二区三区最好精华液| 久久久久综合网| 色视频一区二区| 日韩成人一区二区| 久久精品夜色噜噜亚洲a∨| 暴力调教一区二区三区| 亚洲一区二区三区四区五区黄| 91精品国产麻豆国产自产在线| 国产精品一级片| 亚洲综合无码一区二区| 精品国产99国产精品| 一本色道综合亚洲| 日本中文字幕一区二区视频| 国产精品久久综合| 在线不卡的av| 99re这里都是精品| 亚洲bt欧美bt精品777| 久久久精品国产免大香伊| 色综合色综合色综合色综合色综合| 日本不卡1234视频| 国产精品久久久久久久久久免费看 | 久久久亚洲欧洲日产国码αv| 91一区在线观看| 免费在线观看成人| 综合欧美一区二区三区| 日韩欧美一区二区视频| 色欧美片视频在线观看在线视频| 黑人巨大精品欧美一区| 亚洲黄色性网站| 中日韩av电影| 日韩视频在线永久播放| 在线亚洲高清视频| 国产福利一区二区| 日韩av在线发布| 亚洲精品综合在线| 欧美国产日韩亚洲一区| 日韩欧美国产一区二区三区| 日本久久电影网| 成人手机电影网| 韩国三级在线一区| 日韩在线观看一区二区| 亚洲综合色成人| 亚洲色图丝袜美腿| 国产免费观看久久| 精品欧美久久久| 欧美一级在线视频| 欧美午夜片在线看| 在线视频你懂得一区| 99精品视频在线观看| 国产不卡视频一区| 韩国av一区二区三区| 美女视频黄a大片欧美| 天天免费综合色| 亚洲超碰精品一区二区| 亚洲国产精品一区二区www| 亚洲精品成人精品456| 亚洲欧洲三级电影| 国产精品美女久久久久久| 欧美国产禁国产网站cc| 国产人久久人人人人爽| 久久久久国产免费免费| 精品成人在线观看| 欧美大胆一级视频| 精品国产一区二区三区四区四| 日韩视频一区在线观看| 日韩亚洲国产中文字幕欧美| 欧美国产日韩亚洲一区| 亚洲男人天堂av网| 国产精品高潮呻吟| 欧美国产禁国产网站cc| 中文文精品字幕一区二区| 欧美国产成人在线| 亚洲色图在线播放| 亚洲一区免费视频| 婷婷亚洲久悠悠色悠在线播放| 亚洲一二三专区| 石原莉奈在线亚洲二区| 秋霞av亚洲一区二区三| 国产伦精品一区二区三区视频青涩 | 秋霞成人午夜伦在线观看| 麻豆91小视频| 国产精品正在播放| 成人va在线观看| 在线视频观看一区| 日韩亚洲电影在线| 欧美激情一区三区| 亚洲国产一区二区视频| 麻豆精品一区二区综合av| 成人福利电影精品一区二区在线观看| 91在线视频网址| 91精品免费在线观看| 国产日产欧美一区| 亚洲www啪成人一区二区麻豆 | 日本亚洲天堂网| 国产成人亚洲综合色影视| 一本到不卡精品视频在线观看| 欧美一区二区日韩一区二区| 国产精品美女久久久久久久久久久 | 日韩美女视频一区二区在线观看| 国产亚洲精品中文字幕| 亚洲自拍都市欧美小说| 国产中文字幕精品| 在线免费不卡视频| 国产日韩精品视频一区| 亚洲成人精品在线观看| 国产+成+人+亚洲欧洲自线| 欧美日韩不卡在线| 国产精品久久久一区麻豆最新章节| 亚洲电影第三页| www..com久久爱| 日韩免费高清电影| 一二三四区精品视频| 国产精品主播直播| 欧美一区二区三区在| 亚洲特黄一级片| 国产一区二区美女诱惑| 欧美剧情片在线观看| 国产精品麻豆视频| 国内精品久久久久影院色| 色噜噜狠狠成人中文综合| 国产日韩三级在线| 久久国产精品第一页| 欧美日本精品一区二区三区| 国产精品久久毛片a| 国产麻豆精品在线观看| 日韩三级av在线播放| 五月激情综合网| 色婷婷av一区| **网站欧美大片在线观看| 国产成人精品综合在线观看 | 99精品在线免费| 久久精品无码一区二区三区| 看片网站欧美日韩| 91精品视频网| 免费精品视频在线| 欧美高清精品3d| 亚洲成人精品在线观看| 欧美色图激情小说| 亚洲激情自拍视频| 色综合久久久久网| 亚洲欧洲美洲综合色网| 99久久精品免费看| 中文字幕欧美一区| 色网综合在线观看| 亚洲精品日韩专区silk| 日本韩国欧美一区| 亚洲黄色片在线观看| 欧美亚洲一区二区在线| 亚洲一本大道在线|