اطلاعیه

Collapse
No announcement yet.

barrel shift

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

    barrel shift

    سلام به همگی خسته نباشید

    در مورد barrel shift میخوام بدونم البته مفاهیم پایه ایشو مثلا چیزایی که در ذیل اشاره میکنمو میدونم اما در کل برام مبهمه به خصوص قسمت کنترلشو اینارو اگه کمک کنید ممنون میشم : :cry: :nerd:

    در بعضی از طراحی ها نیاز است که یک دیتا را چند بار شیفت دهیم اگر قرار باشد با یک دستور ساده شیفت این کار را انجام دهیم به تعداد شیفت ها ما به کلاک نیاز داریم که این کار بهینه نخواهد بود .برای این منظور از barrel shiftاستفاده میکنیم ...barrel shift یک مدار دیجیتال است که دیتا را میتواند در یک سیکل کلاک به تعداد مشخص میتواند داده ها را شیفت بدهد .

    نحوه انجام این شیفت به این گونه است که مقدار قسمت پر ارزش ریجستر با قسمت کم ارزش ریجستر جابجا میشود برای مثال اگر داده اصلی ما 11110000 باشد و ما بخواهیم با یک کلاک سه بار شیفت دهیم نتیجه نهایی میشود 00011110 .

    تقریبا در این حد میدونم البته برنامش تو vhdl , اینم میدونماااا

    مرررسی




    #2
    پاسخ : barrel shift

    برای کنترل شیفت از control input استفاده میشه.
    یه مثال میزنم:
    فرض کنیم کلمه input ما ABCDEFGHGIHKLMNOP باشه (هر کلمه یه بیت است)
    با control input 0101
    output ما کلمه FGHGIHKLMNOPABCDE خواهد شد
    به جهان خرم از انم که جهان خرم از اوست
    عاشقم بر همه عالم که همه عالم از اوست

    دیدگاه


      #3
      پاسخ : barrel shift

      نوشته اصلی توسط ic 555
      برای کنترل شیفت از control input استفاده میشه.
      یه مثال میزنم:
      فرض کنیم کلمه input ما ABCDEFGHGIHKLMNOP باشه (هر کلمه یه بیت است)
      با control input 0101
      output ما کلمه FGHGIHKLMNOPABCDE خواهد شد

      lمرسی

      یعنی با این شیفت از وسطم میشه ؟؟؟
      من فک میکردم فقط جای بیت های کم ارزش و پر ارزش تغییر میکنه ..
      با این حساب الگوریتمی که من نوشتم ایراد داره یا فقط باید control input اضافه کنم ؟؟؟

      use IEEE.STD_LOGIC_1164.ALL;

      -- Uncomment the following library declaration if using
      -- arithmetic functions with Signed or Unsigned values
      --use IEEE.NUMERIC_STD.ALL;

      -- Uncomment the following library declaration if instantiating
      -- any Xilinx primitives in this code.
      --library UNISIM;
      --use UNISIM.VComponents.all;
      entity fcn IS
      PORT (
      clk : IN std_logic;
      clk_enable : IN std_logic;
      reset : IN std_logic;
      u : IN std_logic_vector(7 DOWNTO 0);
      y : OUT std_logic_vector(7 DOWNTO 0));
      END fcn ;
      ARCHITECTURE fsm_SFHDL OF fcn IS
      BEGIN
      -- NIBBLE SWAP
      y <= u(3 DOWNTO 0) & u(7 DOWNTO 4);
      END fsm_SFHDL;

      ممنون از کمکتون ..

      دیدگاه


        #4
        پاسخ : barrel shift

        مشکلش کلا حل شد ..هرکسی سوالی داشت بپرسه حتمن جواب میدم

        دیدگاه

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