اطلاعیه

Collapse
No announcement yet.

مشکل در یک function

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در یک function

    سلام بر دوستان و اساتید محترم.
    بنده تابعی نوشتم برای اینکه ورودی که به صورت ascii داده میشه رو اعم از اینکه با حروف بزرگ یا کوچک باشند همگی رو به حروف کوچک تبدیل کنه.
    اما نمی دونم چرا جواب نمیده؟ :cry:
    کد:
    function to_small(capital_or_small : std_logic_vector) return std_logic_vector is
    		variable tmp,small_tmp : std_logic_vector(7 downto 0);
    	begin
    		tmp := capital_or_small;
    		if( tmp < x"7b")then
    			if(x"60" < tmp)then
    				small_tmp := tmp;
    			end if;
    		elsif(tmp < x"5b")then
    				if(x"40" < tmp)then
    					small_tmp := (tmp + x"20");
    				end if;
    		else
    			small_tmp := x"00";
    		end if;
    		return small_tmp;
    	end function;
    ممنون میشم دوستان اشکالی اگر در کد بالا می بینن بفرمایند

    #2
    پاسخ : مشکل در یک function

    1- ترتیب شرط if و elsif باید عوض بشه چون به شکل فعلی هیچ وقت elsif اجرا نمیشه.
    2- در صورتی که ورودی میتونه در محدوده های پیش بینی نشده باشه باید یک مقدار خروجی مثلاً "X"00 در نظر بگیری.
    3- کتابخانه های لازم باید در فایل VHDL که تابع در اون نوشته فراخوانی بشن.(std_logic_unsigned و std_logic_arith).
    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

    دیدگاه


      #3
      پاسخ : مشکل در یک function

      نوشته اصلی توسط هـادی
      1- ترتیب شرط if و elsif باید عوض بشه چون به شکل فعلی هیچ وقت elsif اجرا نمیشه.
      2- در صورتی که ورودی میتونه در محدوده های پیش بینی نشده باشه باید یک مقدار خروجی مثلاً "X"00 در نظر بگیری.
      3- کتابخانه های لازم باید در فایل VHDL که تابع در اون نوشته فراخوانی بشن.(std_logic_unsigned و std_logic_arith).
      ضمن تشکر از شما.
      در باره مورد اول باید بگم تفاوتی نمیکنه که؛ فرض کنید ورودی 'A' یا 41هگز باشه. در شرط اول می گنجه ولی در شرط دوم نه. بنابراین مشمول بلوک شرطی اول نیست ولی در شرط سوم میگنجه و همچنین در شرط چهارم. بنابراین باید دستوراتشو عمل کنه. اما :angry:

      دیدگاه


        #4
        پاسخ : مشکل در یک function

        من کد رو اصلاح کردم. و جواب گرفتم. :wow: کد قبلی کمی بی خودی پیچیده بود.
        این کد حروف a-z اگه دریافت کنه یا 0-9 همونو بر میگردونه و اگه A-Z در یافت کنه a-z بر می گردونه.
        کد:
        	function to_small(capital_or_small : std_logic_vector) return std_logic_vector is
        		variable tmp,small_tmp : std_logic_vector(7 downto 0);
        	begin
        		tmp := capital_or_small;
        		if	( (x"60" < tmp and tmp < x"7b") or (x"2f" <= tmp and tmp <= x"3a") )then
        				small_tmp := tmp;			
        		elsif( x"40" < tmp and tmp < x"5b")then
        				small_tmp := (tmp + x"20");
        		else
        				small_tmp := x"00";
        		end if;
        		return small_tmp;
        	end function;

        دیدگاه


          #5
          پاسخ : پاسخ : مشکل در یک function

          نوشته اصلی توسط میثم شکیبا
          ضمن تشکر از شما.
          در باره مورد اول باید بگم تفاوتی نمیکنه که؛ فرض کنید ورودی 'A' یا 41هگز باشه. در شرط اول می گنجه ولی در شرط دوم نه. بنابراین مشمول بلوک شرطی اول نیست ولی در شرط سوم میگنجه و همچنین در شرط چهارم. بنابراین باید دستوراتشو عمل کنه. اما :angry:
          لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
          لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
          با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
          اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
          يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

          دیدگاه


            #6
            پاسخ : پاسخ : مشکل در یک function

            نوشته اصلی توسط هـادی
            کد قبلی مشکلو برطرف کرد.
            متشکر.

            دیدگاه

            لطفا صبر کنید...
            X