ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

صفحه 5 از 6 نخست 123456 آخرین
نمایش نتایج: از 41 به 50 از 56
  1. #41
    2011/05/12
    366
    9

    پاسخ : یک سوال در مورد vhdl

    نقل قول نوشته اصلی توسط electronics
    اشکال از تعداد آرایه های بالا بود

    3 متغییر که هر کدوم 15000 عضو داره باعث کند شدن برنامه میشه و وقتی تعداد رو پایین آوردم( 150 تا ) مشکل حل شد از نظر شما باید چه کار کرد؟

    برای داده های حقیقی هم اعداد رو integer در نظر گرفتم تا بعدا از دو رقم کم ارزش تر چشم پوشی کنم
    برای تعداد بالای اعضای آرایه دو راه بیشتر نیست، یکی اینکه فرمولی بنویسید که ایندکس رو بگیره و عدد رو برگردونه، البته زمانی قابل اجراست که داده های آرایه نسبت خواصی دارن و از یک پترن طبعیت میکنن. راه دوم که برای داده های غیر پترن به کار میره استفاده از رم هستش، به جای آرایه یک ماژول مینویسید که ایندکس آرایه رو بگیره، اون رو به آدرسی از رم ترجمه کنه، از رم اون مقدار روبخونه و اون رو بر گردونه، این روش کلاک بالاتری برای ماژول رم لازم داره تا بتونه خودش رو به برنامهذ اصلی برسونه و معمولا کلاک رم رو یک انشعاب میگیرن و با پایین آوردنش به برنامه اصلی میدن که همه رفتار مدار سینک باشه. یک قسمتی هم باید پیاده سازی کنبد تا داده ها رو از یک اینترفیس خارجی بگیره و در رم لود کنه.
    اسمایل، تومورو ویل بی وُرس
  2. #42
    2008/01/01
    111
    0

    پاسخ : یک سوال در مورد vhdl

    سلام

    اگر بخوام تبدیل انواع انجام بدم باید چه کار کنم

    مثلا در برنامه داده ای تولید شده به صورت integer که باید روی lcd نمایش داده بشه در حالی خروجی رو به صورت std_logic_vector

    به همین دلیل برنامه ایراد میگیره


    حالا باید چه کنم؟

    باز هم متشکرم
    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.
  3. #43
    2008/01/01
    111
    0

    پاسخ : یک سوال در مورد vhdl

    با سلام

    مشکل قبل رو یه جورایی حل کردم.

    به نظر شما چه طور میتونیم یک عدد که اصلا هیچ اطلاعی دربارش نداریم حتی نمیدونیم چند رقمیه. دونه دونه از یکان شروع کنیم یا برعکس از با ارزش ترین رقم

    و روی lcd نشون بدیم؟

    این مرحله آخر از پروژه است :wow:

    با تشکر :angry:
    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.
  4. #44
    2011/05/12
    366
    9

    پاسخ : یک سوال در مورد vhdl

    نقل قول نوشته اصلی توسط electronics
    با سلام

    مشکل قبل رو یه جورایی حل کردم.

    به نظر شما چه طور میتونیم یک عدد که اصلا هیچ اطلاعی دربارش نداریم حتی نمیدونیم چند رقمیه. دونه دونه از یکان شروع کنیم یا برعکس از با ارزش ترین رقم

    و روی lcd نشون بدیم؟

    این مرحله آخر از پروژه است :wow:

    با تشکر :angry:
    سلام،
    فکر کنم با استفاده از این پکیج دیگه مشکلی نداشته باشید
    فقط بخش چاپ lcd رو چایگزین بخش فابل بکنید.

    library ieee;
    use ieee.std_logic_1164.all;
    use std.textio.all;


    package txt_util is

    -- prints a message to the screen
    procedure print(text: string);

    -- prints the message when active
    -- useful for debug switches
    procedure print(active: boolean; text: string);

    -- converts std_logic into a character
    function chr(sl: std_logic) return character;

    -- converts std_logic into a string (1 to 1)
    function str(sl: std_logic) return string;

    -- converts std_logic_vector into a string (binary base)
    function str(slv: std_logic_vector) return string;

    -- converts boolean into a string
    function str(b: boolean) return string;

    -- converts an integer into a single character
    -- (can also be used for hex conversion and other bases)
    function chr(int: integer) return character;

    -- converts integer into string using specified base
    function str(int: integer; base: integer) return string;

    -- converts integer to string, using base 10
    function str(int: integer) return string;

    -- convert std_logic_vector into a string in hex format
    function hstr(slv: std_logic_vector) return string;


    -- functions to manipulate strings
    -----------------------------------

    -- convert a character to upper case
    function to_upper(c: character) return character;

    -- convert a character to lower case
    function to_lower(c: character) return character;

    -- convert a string to upper case
    function to_upper(s: string) return string;

    -- convert a string to lower case
    function to_lower(s: string) return string;



    -- functions to convert strings into other formats
    --------------------------------------------------

    -- converts a character into std_logic
    function to_std_logic(c: character) return std_logic;

    -- converts a string into std_logic_vector
    function to_std_logic_vector(s: string) return std_logic_vector;



    -- file I/O
    -----------

    -- read variable length string from input file
    procedure str_read(file in_file: TEXT;
    res_string: out string);

    -- print string to a file and start new line
    procedure print(file out_file: TEXT;
    new_string: in string);

    -- print character to a file and start new line
    procedure print(file out_file: TEXT;
    char: in character);

    end txt_util;




    package body txt_util is




    -- prints text to the screen

    procedure print(text: string) is
    variable msg_line: line;
    begin
    write(msg_line, text);
    writeline(output, msg_line);
    end print;




    -- prints text to the screen when active

    procedure print(active: boolean; text: string) is
    begin
    if active then
    print(text);
    end if;
    end print;


    -- converts std_logic into a character

    function chr(sl: std_logic) return character is
    variable c: character;
    begin
    case sl is
    when 'U' => c:= 'U';
    when 'X' => c:= 'X';
    when '0' => c:= '0';
    when '1' => c:= '1';
    when 'Z' => c:= 'Z';
    when 'W' => c:= 'W';
    when 'L' => c:= 'L';
    when 'H' => c:= 'H';
    when '-' => c:= '-';
    end case;
    return c;
    end chr;



    -- converts std_logic into a string (1 to 1)

    function str(sl: std_logic) return string is
    variable s: string(1 to 1);
    begin
    s(1) := chr(sl);
    return s;
    end str;



    -- converts std_logic_vector into a string (binary base)
    -- (this also takes care of the fact that the range of
    -- a string is natural while a std_logic_vector may
    -- have an integer range)

    function str(slv: std_logic_vector) return string is
    variable result : string (1 to slv'length);
    variable r : integer;
    begin
    r := 1;
    for i in slv'range loop
    result(r) := chr(slv(i));
    r := r + 1;
    end loop;
    return result;
    end str;


    function str(b: boolean) return string is

    begin
    if b then
    return "true";
    else
    return "false";
    end if;
    end str;


    -- converts an integer into a character
    -- for 0 to 9 the obvious mapping is used, higher
    -- values are mapped to the characters A-Z
    -- (this is usefull for systems with base > 10)
    -- (adapted from Steve Vogwell's posting in comp.lang.vhdl)

    function chr(int: integer) return character is
    variable c: character;
    begin
    case int is
    when 0 => c := '0';
    when 1 => c := '1';
    when 2 => c := '2';
    when 3 => c := '3';
    when 4 => c := '4';
    when 5 => c := '5';
    when 6 => c := '6';
    when 7 => c := '7';
    when 8 => c := '8';
    when 9 => c := '9';
    when 10 => c := 'A';
    when 11 => c := 'B';
    when 12 => c := 'C';
    when 13 => c := 'D';
    when 14 => c := 'E';
    when 15 => c := 'F';
    when 16 => c := 'G';
    when 17 => c := 'H';
    when 18 => c := 'I';
    when 19 => c := 'J';
    when 20 => c := 'K';
    when 21 => c := 'L';
    when 22 => c := 'M';
    when 23 => c := 'N';
    when 24 => c := 'O';
    when 25 => c := 'P';
    when 26 => c := 'Q';
    when 27 => c := 'R';
    when 28 => c := 'S';
    when 29 => c := 'T';
    when 30 => c := 'U';
    when 31 => c := 'V';
    when 32 => c := 'W';
    when 33 => c := 'X';
    when 34 => c := 'Y';
    when 35 => c := 'Z';
    when others => c := '?';
    end case;
    return c;
    end chr;



    -- convert integer to string using specified base
    -- (adapted from Steve Vogwell's posting in comp.lang.vhdl)

    function str(int: integer; base: integer) return string is

    variable temp: string(1 to 10);
    variable num: integer;
    variable abs_int: integer;
    variable len: integer := 1;
    variable power: integer := 1;

    begin

    -- bug fix for negative numbers
    abs_int := abs(int);

    num := abs_int;

    while num >= base loop -- Determine how many
    len := len + 1; -- characters required
    num := num / base; -- to represent the
    end loop ; -- number.

    for i in len downto 1 loop -- Convert the number to
    temp(i) := chr(abs_int/power mod base); -- a string starting
    power := power * base; -- with the right hand
    end loop ; -- side.

    -- return result and add sign if required
    if int < 0 then
    return '-'& temp(1 to len);
    else
    return temp(1 to len);
    end if;

    end str;


    -- convert integer to string, using base 10
    function str(int: integer) return string is

    begin

    return str(int, 10) ;

    end str;



    -- converts a std_logic_vector into a hex string.
    function hstr(slv: std_logic_vector) return string is
    variable hexlen: integer;
    variable longslv : std_logic_vector(67 downto 0) := (others => '0'
    variable hex : string(1 to 16);
    variable fourbit : std_logic_vector(3 downto 0);
    begin
    hexlen := (slv'left+1)/4;
    if (slv'left+1) mod 4 /= 0 then
    hexlen := hexlen + 1;
    end if;
    longslv(slv'left downto 0) := slv;
    for i in (hexlen -1) downto 0 loop
    fourbit := longslv(((i*4)+3) downto (i*4));
    case fourbit is
    when "0000" => hex(hexlen -I) := '0';
    when "0001" => hex(hexlen -I) := '1';
    when "0010" => hex(hexlen -I) := '2';
    when "0011" => hex(hexlen -I) := '3';
    when "0100" => hex(hexlen -I) := '4';
    when "0101" => hex(hexlen -I) := '5';
    when "0110" => hex(hexlen -I) := '6';
    when "0111" => hex(hexlen -I) := '7';
    when "1000" => hex(hexlen -I) := '8';
    when "1001" => hex(hexlen -I) := '9';
    when "1010" => hex(hexlen -I) := 'A';
    when "1011" => hex(hexlen -I) := 'B';
    when "1100" => hex(hexlen -I) := 'C';
    when "1101" => hex(hexlen -I) := 'D';
    when "1110" => hex(hexlen -I) := 'E';
    when "1111" => hex(hexlen -I) := 'F';
    when "ZZZZ" => hex(hexlen -I) := 'z';
    when "UUUU" => hex(hexlen -I) := 'u';
    when "XXXX" => hex(hexlen -I) := 'x';
    when others => hex(hexlen -I) := '?';
    end case;
    end loop;
    return hex(1 to hexlen);
    end hstr;



    -- functions to manipulate strings
    -----------------------------------


    -- convert a character to upper case

    function to_upper(c: character) return character is

    variable u: character;

    begin

    case c is
    when 'a' => u := 'A';
    when 'b' => u := 'B';
    when 'c' => u := 'C';
    when 'd' => u := 'D';
    when 'e' => u := 'E';
    when 'f' => u := 'F';
    when 'g' => u := 'G';
    when 'h' => u := 'H';
    when 'i' => u := 'I';
    when 'j' => u := 'J';
    when 'k' => u := 'K';
    when 'l' => u := 'L';
    when 'm' => u := 'M';
    when 'n' => u := 'N';
    when 'o' => u := 'O';
    when 'p' => u := 'P';
    when 'q' => u := 'Q';
    when 'r' => u := 'R';
    when 's' => u := 'S';
    when 't' => u := 'T';
    when 'u' => u := 'U';
    when 'v' => u := 'V';
    when 'w' => u := 'W';
    when 'x' => u := 'X';
    when 'y' => u := 'Y';
    when 'z' => u := 'Z';
    when others => u := c;
    end case;

    return u;

    end to_upper;


    -- convert a character to lower case

    function to_lower(c: character) return character is

    variable l: character;

    begin

    case c is
    when 'A' => l := 'a';
    when 'B' => l := 'b';
    when 'C' => l := 'c';
    when 'D' => l := 'd';
    when 'E' => l := 'e';
    when 'F' => l := 'f';
    when 'G' => l := 'g';
    when 'H' => l := 'h';
    when 'I' => l := 'i';
    when 'J' => l := 'j';
    when 'K' => l := 'k';
    when 'L' => l := 'l';
    when 'M' => l := 'm';
    when 'N' => l := 'n';
    when 'O' => l := 'o';
    when 'P' => l := 'p';
    when 'Q' => l := 'q';
    when 'R' => l := 'r';
    when 'S' => l := 's';
    when 'T' => l := 't';
    when 'U' => l := 'u';
    when 'V' => l := 'v';
    when 'W' => l := 'w';
    when 'X' => l := 'x';
    when 'Y' => l := 'y';
    when 'Z' => l := 'z';
    when others => l := c;
    end case;

    return l;

    end to_lower;



    -- convert a string to upper case

    function to_upper(s: string) return string is

    variable uppercase: string (s'range);

    begin

    for i in s'range loop
    uppercase(i):= to_upper(s(i));
    end loop;
    return uppercase;

    end to_upper;



    -- convert a string to lower case

    function to_lower(s: string) return string is

    variable lowercase: string (s'range);

    begin

    for i in s'range loop
    lowercase(i):= to_lower(s(i));
    end loop;
    return lowercase;

    end to_lower;



    -- functions to convert strings into other types


    -- converts a character into a std_logic

    function to_std_logic(c: character) return std_logic is
    variable sl: std_logic;
    begin
    case c is
    when 'U' =>
    sl := 'U';
    when 'X' =>
    sl := 'X';
    when '0' =>
    sl := '0';
    when '1' =>
    sl := '1';
    when 'Z' =>
    sl := 'Z';
    when 'W' =>
    sl := 'W';
    when 'L' =>
    sl := 'L';
    when 'H' =>
    sl := 'H';
    when '-' =>
    sl := '-';
    when others =>
    sl := 'X';
    end case;
    return sl;
    end to_std_logic;


    -- converts a string into std_logic_vector

    function to_std_logic_vector(s: string) return std_logic_vector is
    variable slv: std_logic_vector(s'high-s'low downto 0);
    variable k: integer;
    begin
    k := s'high-s'low;
    for i in s'range loop
    slv(k) := to_std_logic(s(i));
    k := k - 1;
    end loop;
    return slv;
    end to_std_logic_vector;






    ----------------
    -- file I/O --
    ----------------



    -- read variable length string from input file

    procedure str_read(file in_file: TEXT;
    res_string: out string) is

    variable l: line;
    variable c: character;
    variable is_string: boolean;

    begin

    readline(in_file, l);
    -- clear the contents of the result string
    for i in res_string'range loop
    res_string(i) := ' ';
    end loop;
    -- read all characters of the line, up to the length
    -- of the results string
    for i in res_string'range loop
    read(l, c, is_string);
    res_string(i) := c;
    if not is_string then -- found end of line
    exit;
    end if;
    end loop;

    end str_read;


    -- print string to a file
    procedure print(file out_file: TEXT;
    new_string: in string) is

    variable l: line;

    begin

    write(l, new_string);
    writeline(out_file, l);

    end print;


    -- print character to a file and start new line
    procedure print(file out_file: TEXT;
    char: in character) is

    variable l: line;

    begin

    write(l, char);
    writeline(out_file, l);

    end print;



    -- appends contents of a string to a file until line feed occurs
    -- (LF is considered to be the end of the string)

    procedure str_write(file out_file: TEXT;
    new_string: in string) is
    begin

    for i in new_string'range loop
    print(out_file, new_string(i));
    if new_string(i) = LF then -- end of string
    exit;
    end if;
    end loop;

    end str_write;




    end txt_util;




    اسمایل، تومورو ویل بی وُرس
  5. #45
    2008/01/01
    111
    0

    پاسخ : یک سوال در مورد vhdl

    سلام







    آقا من اینهارو چه طوری بفهمم؟!!

    یه توضیحی چیزی؟

    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.
  6. #46
    2008/01/01
    111
    0

    پاسخ : یک سوال در مورد vhdl

    و یک سوال جزیی البته برای شما

    چه طور میتونم باقی مانده تقسیم یک عدد بر عدد دیگه رو پیدا کنم

    چون وقتی از rem استفاده می کنم سنتز کننده این پیغاو رو میده که عملوندها یا باید ثابت باشند و یا از قوه دو باشند؟

    اگه اینو حل کنم مشکلم تا حدود زیادی حل میشه؟؟؟
    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.
  7. #47
    2011/05/12
    366
    9

    پاسخ : یک سوال در مورد vhdl

    نقل قول نوشته اصلی توسط electronics
    و یک سوال جزیی البته برای شما

    چه طور میتونم باقی مانده تقسیم یک عدد بر عدد دیگه رو پیدا کنم

    چون وقتی از rem استفاده می کنم سنتز کننده این پیغاو رو میده که عملوندها یا باید ثابت باشند و یا از قوه دو باشند؟

    اگه اینو حل کنم مشکلم تا حدود زیادی حل میشه؟؟؟
    باید ابتدا عددتون رو به unsigned تبدیل کنید و براش تقسیم باینری بنویسید، توی تقسیم باینری میشه باقیمانده رو هم حساب کرد.

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    اسمایل، تومورو ویل بی وُرس
  8. #48
    2008/01/01
    111
    0

    پاسخ : یک سوال در مورد vhdl

    سلام،
    فکر کنم با استفاده از این پکیج دیگه مشکلی نداشته باشید
    فقط بخش چاپ lcd رو چایگزین بخش فابل بکنید.

    library ieee;
    use ieee.std_logic_1164.all;
    use std.textio.all;


    package txt_util is

    -- prints a message to the screen
    procedure print(text: string);

    -- prints the message when active
    -- useful for debug switches
    procedure print(active: boolean; text: string);

    -- converts std_logic into a character
    function chr(sl: std_logic) return character;

    -- converts std_logic into a string (1 to 1)
    function str(sl: std_logic) return string;

    -- converts std_logic_vector into a string (binary base)
    function str(slv: std_logic_vector) return string;

    -- converts boolean into a string
    function str(b: boolean) return string;

    -- converts an integer into a single character
    -- (can also be used for hex conversion and other bases)
    function chr(int: integer) return character;

    -- converts integer into string using specified base
    function str(int: integer; base: integer) return string;

    -- converts integer to string, using base 10
    function str(int: integer) return string;

    -- convert std_logic_vector into a string in hex format
    function hstr(slv: std_logic_vector) return string;


    -- functions to manipulate strings
    -----------------------------------

    -- convert a character to upper case
    function to_upper(c: character) return character;

    -- convert a character to lower case
    function to_lower(c: character) return character;

    -- convert a string to upper case
    function to_upper(s: string) return string;

    -- convert a string to lower case
    function to_lower(s: string) return string;



    -- functions to convert strings into other formats
    --------------------------------------------------

    -- converts a character into std_logic
    function to_std_logic(c: character) return std_logic;

    -- converts a string into std_logic_vector
    function to_std_logic_vector(s: string) return std_logic_vector;



    -- file I/O
    -----------

    -- read variable length string from input file
    procedure str_read(file in_file: TEXT;
    res_string: out string);

    -- print string to a file and start new line
    procedure print(file out_file: TEXT;
    new_string: in string);

    -- print character to a file and start new line
    procedure print(file out_file: TEXT;
    char: in character);

    end txt_util;




    package body txt_util is




    -- prints text to the screen

    procedure print(text: string) is
    variable msg_line: line;
    begin
    write(msg_line, text);
    writeline(output, msg_line);
    end print;




    -- prints text to the screen when active

    procedure print(active: boolean; text: string) is
    begin
    if active then
    print(text);
    end if;
    end print;


    -- converts std_logic into a character

    function chr(sl: std_logic) return character is
    variable c: character;
    begin
    case sl is
    when 'U' => c:= 'U';
    when 'X' => c:= 'X';
    when '0' => c:= '0';
    when '1' => c:= '1';
    when 'Z' => c:= 'Z';
    when 'W' => c:= 'W';
    when 'L' => c:= 'L';
    when 'H' => c:= 'H';
    when '-' => c:= '-';
    end case;
    return c;
    end chr;



    -- converts std_logic into a string (1 to 1)

    function str(sl: std_logic) return string is
    variable s: string(1 to 1);
    begin
    s(1) := chr(sl);
    return s;
    end str;



    -- converts std_logic_vector into a string (binary base)
    -- (this also takes care of the fact that the range of
    -- a string is natural while a std_logic_vector may
    -- have an integer range)

    function str(slv: std_logic_vector) return string is
    variable result : string (1 to slv'length);
    variable r : integer;
    begin
    r := 1;
    for i in slv'range loop
    result(r) := chr(slv(i));
    r := r + 1;
    end loop;
    return result;
    end str;


    function str(b: boolean) return string is

    begin
    if b then
    return "true";
    else
    return "false";
    end if;
    end str;


    -- converts an integer into a character
    -- for 0 to 9 the obvious mapping is used, higher
    -- values are mapped to the characters A-Z
    -- (this is usefull for systems with base > 10)
    -- (adapted from Steve Vogwell's posting in comp.lang.vhdl)

    function chr(int: integer) return character is
    variable c: character;
    begin
    case int is
    when 0 => c := '0';
    when 1 => c := '1';
    when 2 => c := '2';
    when 3 => c := '3';
    when 4 => c := '4';
    when 5 => c := '5';
    when 6 => c := '6';
    when 7 => c := '7';
    when 8 => c := '8';
    when 9 => c := '9';
    when 10 => c := 'A';
    when 11 => c := 'B';
    when 12 => c := 'C';
    when 13 => c := 'D';
    when 14 => c := 'E';
    when 15 => c := 'F';
    when 16 => c := 'G';
    when 17 => c := 'H';
    when 18 => c := 'I';
    when 19 => c := 'J';
    when 20 => c := 'K';
    when 21 => c := 'L';
    when 22 => c := 'M';
    when 23 => c := 'N';
    when 24 => c := 'O';
    when 25 => c := 'P';
    when 26 => c := 'Q';
    when 27 => c := 'R';
    when 28 => c := 'S';
    when 29 => c := 'T';
    when 30 => c := 'U';
    when 31 => c := 'V';
    when 32 => c := 'W';
    when 33 => c := 'X';
    when 34 => c := 'Y';
    when 35 => c := 'Z';
    when others => c := '?';
    end case;
    return c;
    end chr;



    -- convert integer to string using specified base
    -- (adapted from Steve Vogwell's posting in comp.lang.vhdl)

    function str(int: integer; base: integer) return string is

    variable temp: string(1 to 10);
    variable num: integer;
    variable abs_int: integer;
    variable len: integer := 1;
    variable power: integer := 1;

    begin

    -- bug fix for negative numbers
    abs_int := abs(int);

    num := abs_int;

    while num >= base loop -- Determine how many
    len := len + 1; -- characters required
    num := num / base; -- to represent the
    end loop ; -- number.

    for i in len downto 1 loop -- Convert the number to
    temp(i) := chr(abs_int/power mod base); -- a string starting
    power := power * base; -- with the right hand
    end loop ; -- side.

    -- return result and add sign if required
    if int < 0 then
    return '-'& temp(1 to len);
    else
    return temp(1 to len);
    end if;

    end str;


    -- convert integer to string, using base 10
    function str(int: integer) return string is

    begin

    return str(int, 10) ;

    end str;



    -- converts a std_logic_vector into a hex string.
    function hstr(slv: std_logic_vector) return string is
    variable hexlen: integer;
    variable longslv : std_logic_vector(67 downto 0) := (others => '0'
    variable hex : string(1 to 16);
    variable fourbit : std_logic_vector(3 downto 0);
    begin
    hexlen := (slv'left+1)/4;
    if (slv'left+1) mod 4 /= 0 then
    hexlen := hexlen + 1;
    end if;
    longslv(slv'left downto 0) := slv;
    for i in (hexlen -1) downto 0 loop
    fourbit := longslv(((i*4)+3) downto (i*4));
    case fourbit is
    when "0000" => hex(hexlen -I) := '0';
    when "0001" => hex(hexlen -I) := '1';
    when "0010" => hex(hexlen -I) := '2';
    when "0011" => hex(hexlen -I) := '3';
    when "0100" => hex(hexlen -I) := '4';
    when "0101" => hex(hexlen -I) := '5';
    when "0110" => hex(hexlen -I) := '6';
    when "0111" => hex(hexlen -I) := '7';
    when "1000" => hex(hexlen -I) := '8';
    when "1001" => hex(hexlen -I) := '9';
    when "1010" => hex(hexlen -I) := 'A';
    when "1011" => hex(hexlen -I) := 'B';
    when "1100" => hex(hexlen -I) := 'C';
    when "1101" => hex(hexlen -I) := 'D';
    when "1110" => hex(hexlen -I) := 'E';
    when "1111" => hex(hexlen -I) := 'F';
    when "ZZZZ" => hex(hexlen -I) := 'z';
    when "UUUU" => hex(hexlen -I) := 'u';
    when "XXXX" => hex(hexlen -I) := 'x';
    when others => hex(hexlen -I) := '?';
    end case;
    end loop;
    return hex(1 to hexlen);
    end hstr;



    -- functions to manipulate strings
    -----------------------------------


    -- convert a character to upper case

    function to_upper(c: character) return character is

    variable u: character;

    begin

    case c is
    when 'a' => u := 'A';
    when 'b' => u := 'B';
    when 'c' => u := 'C';
    when 'd' => u := 'D';
    when 'e' => u := 'E';
    when 'f' => u := 'F';
    when 'g' => u := 'G';
    when 'h' => u := 'H';
    when 'i' => u := 'I';
    when 'j' => u := 'J';
    when 'k' => u := 'K';
    when 'l' => u := 'L';
    when 'm' => u := 'M';
    when 'n' => u := 'N';
    when 'o' => u := 'O';
    when 'p' => u := 'P';
    when 'q' => u := 'Q';
    when 'r' => u := 'R';
    when 's' => u := 'S';
    when 't' => u := 'T';
    when 'u' => u := 'U';
    when 'v' => u := 'V';
    when 'w' => u := 'W';
    when 'x' => u := 'X';
    when 'y' => u := 'Y';
    when 'z' => u := 'Z';
    when others => u := c;
    end case;

    return u;

    end to_upper;


    -- convert a character to lower case

    function to_lower(c: character) return character is

    variable l: character;

    begin

    case c is
    when 'A' => l := 'a';
    when 'B' => l := 'b';
    when 'C' => l := 'c';
    when 'D' => l := 'd';
    when 'E' => l := 'e';
    when 'F' => l := 'f';
    when 'G' => l := 'g';
    when 'H' => l := 'h';
    when 'I' => l := 'i';
    when 'J' => l := 'j';
    when 'K' => l := 'k';
    when 'L' => l := 'l';
    when 'M' => l := 'm';
    when 'N' => l := 'n';
    when 'O' => l := 'o';
    when 'P' => l := 'p';
    when 'Q' => l := 'q';
    when 'R' => l := 'r';
    when 'S' => l := 's';
    when 'T' => l := 't';
    when 'U' => l := 'u';
    when 'V' => l := 'v';
    when 'W' => l := 'w';
    when 'X' => l := 'x';
    when 'Y' => l := 'y';
    when 'Z' => l := 'z';
    when others => l := c;
    end case;

    return l;

    end to_lower;



    -- convert a string to upper case

    function to_upper(s: string) return string is

    variable uppercase: string (s'range);

    begin

    for i in s'range loop
    uppercase(i):= to_upper(s(i));
    end loop;
    return uppercase;

    end to_upper;



    -- convert a string to lower case

    function to_lower(s: string) return string is

    variable lowercase: string (s'range);

    begin

    for i in s'range loop
    lowercase(i):= to_lower(s(i));
    end loop;
    return lowercase;

    end to_lower;



    -- functions to convert strings into other types


    -- converts a character into a std_logic

    function to_std_logic(c: character) return std_logic is
    variable sl: std_logic;
    begin
    case c is
    when 'U' =>
    sl := 'U';
    when 'X' =>
    sl := 'X';
    when '0' =>
    sl := '0';
    when '1' =>
    sl := '1';
    when 'Z' =>
    sl := 'Z';
    when 'W' =>
    sl := 'W';
    when 'L' =>
    sl := 'L';
    when 'H' =>
    sl := 'H';
    when '-' =>
    sl := '-';
    when others =>
    sl := 'X';
    end case;
    return sl;
    end to_std_logic;


    -- converts a string into std_logic_vector

    function to_std_logic_vector(s: string) return std_logic_vector is
    variable slv: std_logic_vector(s'high-s'low downto 0);
    variable k: integer;
    begin
    k := s'high-s'low;
    for i in s'range loop
    slv(k) := to_std_logic(s(i));
    k := k - 1;
    end loop;
    return slv;
    end to_std_logic_vector;






    ----------------
    -- file I/O --
    ----------------



    -- read variable length string from input file

    procedure str_read(file in_file: TEXT;
    res_string: out string) is

    variable l: line;
    variable c: character;
    variable is_string: boolean;

    begin

    readline(in_file, l);
    -- clear the contents of the result string
    for i in res_string'range loop
    res_string(i) := ' ';
    end loop;
    -- read all characters of the line, up to the length
    -- of the results string
    for i in res_string'range loop
    read(l, c, is_string);
    res_string(i) := c;
    if not is_string then -- found end of line
    exit;
    end if;
    end loop;

    end str_read;


    -- print string to a file
    procedure print(file out_file: TEXT;
    new_string: in string) is

    variable l: line;

    begin

    write(l, new_string);
    writeline(out_file, l);

    end print;


    -- print character to a file and start new line
    procedure print(file out_file: TEXT;
    char: in character) is

    variable l: line;

    begin

    write(l, char);
    writeline(out_file, l);

    end print;



    -- appends contents of a string to a file until line feed occurs
    -- (LF is considered to be the end of the string)

    procedure str_write(file out_file: TEXT;
    new_string: in string) is
    begin

    for i in new_string'range loop
    print(out_file, new_string(i));
    if new_string(i) = LF then -- end of string
    exit;
    end if;
    end loop;

    end str_write;




    end txt_util;
    یه توضیح کوچولو!!! :angry: :redface:
    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.
  9. #49
    2008/01/01
    111
    0

    پاسخ : یک سوال در مورد vhdl

    باز هم سلام

    در مورد استفاده از مقادیر حقیقی در بدنه برنامه های vhdl چند تا تابع کتابخانه ای توسط شخصی به نام david bishop نوشته شده

    که من اینارو قرار میدم

    www.eda.org/fphdl/Float_ug.pdf

    سوال من اینجاست که چه طور میتونم از یک تابع کتابخانه در برنامه استفاده کنم.

    باز هم از شما ممنونم
    حضرت محمد (ص):بدانید،کسی که نمی داند نباید از آموختن شرم کند،که قیمت هر کس به قدر معلو مات اوست.
  10. #50
    2011/05/12
    366
    9

    پاسخ : یک سوال در مورد vhdl

    http://www.cs.columbia.edu/~sedwards/classes/2010/4840/tut_lpms_vhdl.pdf
    اسمایل، تومورو ویل بی وُرس
صفحه 5 از 6 نخست 123456 آخرین
نمایش نتایج: از 41 به 50 از 56

موضوعات مشابه

  1. یه سوال خیلی مبتدیانه در مورد VHDL
    توسط masoud58 در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 5
    آخرين نوشته: 2015/04/03, 15:04
  2. سوال در مورد برنامه نويسي fpga با زبان vhdl
    توسط ajapyy در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 11
    آخرين نوشته: 2013/02/23, 00:15
  3. سوال در مورد VHDL
    توسط hamid256 در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 1
    آخرين نوشته: 2010/12/07, 10:12
  4. یه سوال فنی VHDL
    توسط nimooly در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 8
    آخرين نوشته: 2010/11/06, 20:46
  5. سوال در مورد vhdl
    توسط 8423067 در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 3
    آخرين نوشته: 2009/02/16, 17:14

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •