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

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

?? io_utils.vhd

?? 基于VHDL編寫的SDR-SDRAM控制器的編程
?? VHD
字號:
LIBRARY ieee;
USE std.textio.ALL;
USE ieee.std_logic_1164.ALL;

PACKAGE io_utils IS

    PROCEDURE write_string(l : INOUT line;
                           value : IN string;
                           justified : IN side := right;
                           field : IN width := 0);

    TYPE radix IS (binary, octal, decimal, hex);

    -- read a number from the line 
    -- use this if you have hex numbers that are not in VHDL pound-sign format
    PROCEDURE read(l : INOUT line; value : OUT integer;  radix : IN positive);

    -- read a number that might be in VHDL pound-sign format
    PROCEDURE read_based(l : INOUT line; value : OUT integer);

    PROCEDURE write(l : INOUT line;
                    value : IN std_logic_vector;
                    justified : IN side := right;
                    field : IN width := 0;
                    base : IN radix;
                    use_pound : boolean := false);

    PROCEDURE write(l : INOUT line;
                    value : IN integer;
                    justified : IN side := right;
                    field : IN width := 0;
                    base : IN radix;
                    use_pound : boolean := false);
END io_utils;

PACKAGE BODY io_utils IS

    PROCEDURE write_string(l : INOUT line;
                           value : IN string;
                           justified : IN side := right;
                           field : IN width := 0)
    IS
    BEGIN
        write(l, value, justified, field);
    END;

    PROCEDURE shrink_line(l : INOUT line; pos : integer) IS
        VARIABLE tmpl : line;
    BEGIN
        tmpl := l;
        l := NEW string'(tmpl(pos TO tmpl'high));
        deallocate(tmpl);
    END;

    PROCEDURE read(l : INOUT line;
                   value : OUT integer;
                   radix : IN positive)
    IS
        CONSTANT not_digit : integer := -999;

        -- convert a character to a value from 0 to 15
        FUNCTION digit_value(c : character) RETURN integer IS
        BEGIN
            IF (c >= '0') AND (c <= '9') THEN
                RETURN (character'pos(c) - character'pos('0'));
            ELSIF (c >= 'a') AND (c <= 'f') THEN
                RETURN (character'pos(c) - character'pos('a') + 10);
            ELSIF (c >= 'A') AND (c <= 'F') THEN
                RETURN (character'pos(c) - character'pos('A') + 10);
            ELSE
                RETURN not_digit;
            END IF;
        END;

        -- skip leading white space in the line
        PROCEDURE skip_white(VARIABLE l : IN line; pos : OUT integer) IS
        BEGIN
            pos := l'low;
            FOR i IN l'low TO l'high LOOP
                CASE l(i) IS
                    WHEN ' ' | ht  =>
                        pos := i + 1;
                    WHEN OTHERS =>
                        EXIT;
                END CASE;
            END LOOP;
        END;

        VARIABLE digit : integer;
        VARIABLE result : integer := 0;
        VARIABLE pos : integer;
    BEGIN
        -- skip white space
        skip_white(l, pos);

        -- calculate the value
        FOR i IN pos TO l'right LOOP
            digit := digit_value(l(i));
            EXIT WHEN (digit = not_digit) OR (digit >= radix);
            result := result * radix + digit;
            pos := i + 1;
        END LOOP;
        value := result;

        -- remove the "used" characters from the line
        shrink_line(l, pos);
    END;

    PROCEDURE read_based(l : INOUT line; value : OUT integer) IS
        VARIABLE digit : integer;
        VARIABLE num : integer;
        VARIABLE base : integer;
    BEGIN
        read(l, num, 10);
        IF (l'length > 1) AND (l(l'left) = '#') THEN
            shrink_line(l, l'left+1);
            base := num;
            read(l, num, base);
            IF (l'length >= 1) AND (l(l'left) = '#') THEN
                shrink_line(l, l'left+1);
            END IF;
        END IF;
        value := num;
    END;

    PROCEDURE write(l : INOUT line;
                    value : IN std_logic_vector;
                    justified : IN side := right;
                    field : IN width := 0;
                    base : IN radix;
                    use_pound : boolean := false)
    IS
        FUNCTION to_int(bv : std_logic_vector) RETURN integer
        IS
            VARIABLE result : integer := 0;
        BEGIN
            FOR i IN bv'RANGE LOOP
                result := result * 2;
                IF (bv(i) = '1') THEN
                    result := result + 1;
                END IF;
            END LOOP;
            RETURN result;
        END;
        
        TYPE array_of_widths IS ARRAY(radix) OF natural;
        CONSTANT nibble_widths : array_of_widths := (
            binary => 1,
            octal  => 3,
            hex    => 4,
            decimal=> 32);
        CONSTANT hex_digit : string(1 TO 16) := "0123456789ABCDEF";

        ALIAS input_val : std_logic_vector(value'length DOWNTO 1) IS value;
        CONSTANT nibble_width : natural := nibble_widths(base);
        CONSTANT result_width : natural := (value'length + nibble_width - 1)/nibble_width;
        
        VARIABLE result : string(1 TO result_width);  -- longest possible value
        VARIABLE result_pos : positive := 1;
        VARIABLE nibble_val : integer;
        VARIABLE bitcnt : integer;
    BEGIN
        IF base = decimal THEN
            write(l, to_int(value), justified, field, base, use_pound);
            RETURN;
        END IF;

        bitcnt := value'length MOD nibble_width;
        IF (bitcnt = 0) THEN
            bitcnt := nibble_width;
        END IF;
        FOR i IN input_val'RANGE LOOP
            nibble_val := nibble_val * 2;
            IF (input_val(i) = '1') THEN
                nibble_val := nibble_val + 1;
            END IF;
            bitcnt := bitcnt - 1;
            IF (bitcnt = 0) THEN
                result(result_pos) := hex_digit(nibble_val + 1);
                result_pos := result_pos + 1;
                nibble_val := 0;
                bitcnt := nibble_width;
            END IF;
        END LOOP;
        write(l, result, justified, field);
    END;

    PROCEDURE write(l : INOUT line;
                    value : IN integer;
                    justified : IN side := right;
                    field : IN width := 0;
                    base : IN radix;
                    use_pound : boolean := false)
    IS
        FUNCTION to_bv(int : integer) RETURN std_logic_vector
        IS
            VARIABLE bv : std_logic_vector(32 DOWNTO 1) := (OTHERS => '0');
            VARIABLE pos : integer := 0;
            VARIABLE tmpval : integer := int;
        BEGIN
            FOR i IN 1 TO 32 LOOP
                pos := pos + 1;
                IF (tmpval MOD 2) = 1 THEN
                    bv(i) := '1';
                END IF;
                tmpval := tmpval / 2;
                EXIT WHEN tmpval = 0;
            END LOOP;
            RETURN bv(pos DOWNTO 1);
        END;
            
        VARIABLE tmp : line;
    BEGIN
        IF (base = decimal) THEN
            IF (use_pound) THEN
                write_string(tmp, "10#");
            END IF;
            write(tmp, value);
            IF (use_pound) THEN
                write_string(tmp, "#");
            END IF;
            write(l, tmp.ALL, justified, field);
            deallocate(tmp);
        ELSE
            write(l, to_bv(value), justified, field, base, use_pound);
        END IF;
    END; 

END io_utils;



-- test the hex number reader
--ENTITY test IS END;

--USE std.textio.ALL;
--USE work.io_utils.ALL;
--ARCHITECTURE hex_test OF test IS
--BEGIN
--    PROCESS
--        VARIABLE val : integer;
--        FILE myfile : text IS IN "values";
--        VARIABLE inline : line;
--        VARIABLE outline : line;
--    BEGIN
--        WHILE NOT endfile(myfile) LOOP
--            readline(myfile, inline);

--            write(outline, inline.ALL);
--
--            read_based(inline, val);
 --           write_string(outline, " binary: ");
 --           write(outline, val, base => binary);
 --           write_string(outline, " octal: ");
  --          write(outline, val, base => octal);
 --           write_string(outline, " decimal: ");
 --           write(outline, val, base => decimal);
--            write_string(outline, " hex: ");
--            write(outline, val, base => hex);
--            writeline(output, outline);
--        END LOOP;
--        WAIT;
--    END PROCESS;
--END;
        

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品视频一区二区| 成人免费毛片高清视频| 国产人伦精品一区二区| 91麻豆视频网站| 久久国产精品无码网站| 亚洲视频网在线直播| 日韩视频中午一区| 99免费精品视频| 国产综合一区二区| 视频一区二区中文字幕| 国产精品免费人成网站| 欧美一级久久久久久久大片| av亚洲精华国产精华精华| 国产呦精品一区二区三区网站| 亚洲免费观看高清在线观看| 久久精品视频免费| 日韩精品一区二区三区视频播放| 欧美日韩免费高清一区色橹橹| 日韩精品资源二区在线| 国产一区二区三区国产| 亚洲尤物视频在线| 精品久久久久久久久久久久包黑料 | 亚洲亚洲精品在线观看| 国产日韩欧美a| 欧美国产欧美综合| 久久久久久免费网| 久久日韩精品一区二区五区| 欧美www视频| 国产日韩欧美麻豆| 亚洲嫩草精品久久| 亚洲高清免费在线| 午夜精品aaa| 日本午夜精品一区二区三区电影| 午夜精品久久久| 国产一区视频导航| 成人美女在线观看| 欧美中文字幕亚洲一区二区va在线| 91麻豆文化传媒在线观看| 欧美日韩精品免费| 欧美日韩成人在线一区| 精品欧美乱码久久久久久1区2区| 国产日产亚洲精品系列| 亚洲欧美日韩中文播放| 日韩精品亚洲一区二区三区免费| 蜜臀av一区二区| 99久久99久久久精品齐齐| 欧美午夜精品久久久久久超碰| 777色狠狠一区二区三区| 国产香蕉久久精品综合网| 一区二区三区四区在线免费观看| 麻豆精品在线看| 色狠狠av一区二区三区| 久久精品欧美一区二区三区不卡 | 国内精品伊人久久久久av影院 | 91色综合久久久久婷婷| 日韩午夜激情免费电影| 尤物av一区二区| 国产成人精品亚洲日本在线桃色| 在线亚洲欧美专区二区| 国产日韩欧美精品综合| 日本不卡一二三| 欧美少妇性性性| 国产精品成人网| 国产成人在线视频网站| 91精品婷婷国产综合久久性色| 亚洲一区二区3| 高清国产一区二区| 欧美r级在线观看| 久久国产精品99久久人人澡| 欧美日韩一区二区三区四区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 青娱乐精品视频在线| 88在线观看91蜜桃国自产| 亚洲宅男天堂在线观看无病毒| av影院午夜一区| 国产精品免费网站在线观看| 成人丝袜视频网| 亚洲日本丝袜连裤袜办公室| 91免费精品国自产拍在线不卡| 亚洲视频免费在线观看| 91丝袜美腿高跟国产极品老师| 国产精品国产成人国产三级| 波多野结衣中文字幕一区| 亚洲视频一二三区| 欧美性大战xxxxx久久久| 一区二区三区在线免费观看| 99精品欧美一区| 午夜av区久久| 精品成人一区二区三区四区| 国产九色精品成人porny | 大白屁股一区二区视频| 亚洲欧洲日本在线| 欧美日韩国产不卡| 国产精一品亚洲二区在线视频| 国产精品国产三级国产普通话蜜臀| 99re这里只有精品视频首页| 亚洲国产精品久久不卡毛片| 日韩亚洲欧美中文三级| va亚洲va日韩不卡在线观看| 午夜av一区二区三区| 亚洲在线观看免费| 日韩免费观看高清完整版 | 不卡视频在线看| 男人的j进女人的j一区| 夜夜嗨av一区二区三区中文字幕| 日韩一级黄色大片| 欧美色综合网站| bt7086福利一区国产| 首页国产欧美日韩丝袜| 亚洲色图第一区| 亚洲国产成人自拍| 精品欧美一区二区三区精品久久| 在线一区二区三区做爰视频网站| 狠狠色丁香婷婷综合久久片| 亚洲一区日韩精品中文字幕| 久久久久久久久久久久电影| 制服丝袜成人动漫| 欧美色成人综合| 欧美日韩一区二区三区视频| av电影一区二区| 成人av电影在线网| 国产98色在线|日韩| 国产福利一区在线| 国产成人啪午夜精品网站男同| 久久激情五月激情| 国产一区二区三区蝌蚪| 国产在线麻豆精品观看| 激情五月播播久久久精品| 久草中文综合在线| 玖玖九九国产精品| 韩国一区二区三区| 国产mv日韩mv欧美| av电影天堂一区二区在线观看| 高清在线不卡av| 91蜜桃免费观看视频| 一本色道**综合亚洲精品蜜桃冫| 色综合久久综合| 在线播放欧美女士性生活| 日韩免费成人网| 国产亚洲成年网址在线观看| 日本一区二区三级电影在线观看| 日韩精品一区二区三区视频播放 | 欧美日韩国产首页在线观看| 欧美精品在线视频| 久久这里只精品最新地址| 中文字幕av一区二区三区免费看 | 亚洲少妇中出一区| 亚洲电影一级黄| 国产精品一区二区x88av| 99精品在线免费| 日韩三级在线观看| 国产精品视频在线看| 天天色 色综合| 99在线视频精品| 日韩免费在线观看| 亚洲福中文字幕伊人影院| 国产精品亚洲а∨天堂免在线| 欧美三电影在线| 91精品国产高清一区二区三区蜜臀| 久久精品人人做人人爽97| 亚洲精品中文在线| 国产一区二区三区免费播放| 欧美日韩一区二区三区免费看| 久久无码av三级| 中文字幕一区二区三区视频| 午夜影院久久久| 日本久久电影网| 欧美韩日一区二区三区| 日本不卡中文字幕| 91猫先生在线| 国产精品久久久久久久久动漫 | 99亚偷拍自图区亚洲| 国产欧美日韩不卡免费| 韩国一区二区视频| 精品日韩99亚洲| 裸体健美xxxx欧美裸体表演| 欧美精选午夜久久久乱码6080| 亚洲欧美区自拍先锋| www.一区二区| 亚洲色图欧洲色图婷婷| 在线观看不卡视频| 亚洲国产视频一区二区| 欧美日韩色综合| 久久国产福利国产秒拍| 久久综合国产精品| 国产精品综合一区二区三区| 精品国产乱码久久久久久免费| 另类综合日韩欧美亚洲| 久久亚洲精品国产精品紫薇| 黄色日韩三级电影| 国产精品成人免费精品自在线观看 | 韩日欧美一区二区三区| 国产三级精品视频| 色妹子一区二区| 日本vs亚洲vs韩国一区三区二区 | 91蜜桃免费观看视频| 亚洲福中文字幕伊人影院| 欧美成人精品3d动漫h| 国产suv一区二区三区88区| 一区二区激情视频|