اطلاعیه

Collapse
No announcement yet.

n bit decoder binary to 7seg

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

    n bit decoder binary to 7seg

    سلام خدمت همه.
    عاغا به ما واسه این تعطیلات نوروز یه تمرین دادن که یک دیکدور باینری یه سون سگمت n bit طراحی کنیم.
    ولی من هر کار میکنم نمیتونم یک خروجی واسش تعریف کنم.منظورم اینه که الگویه خاصی نداره.مثلا اگه n=5 باشه عددمون دو رقمیه ک2*7 تا خروجی میشه.همینطور n=6,4 ولی اگه n=7,8,9 باشه سه رقمیه عدد(حداکثر)و n=10,11,12,13 چهار رقمیه و همینطور ادامه داره.حالا من نمیتونم یه رابطه ای بر حسب n پیدا کنم که بشه تعداد خروجی رو تعریف کرد.
    حل تمرین گفت که میتونیم از کتابخونه های خودش استفاده کنیم که من اصن هیچ نظری در این مورد ندارم.
    لطفا اگه کسی میتونه کمکم کنه.
    با تشکر

    #2
    پاسخ : n bit decoder binary to 7seg

    به چه روشی باس انجام بدی؟؟؟
    کد های پروژت رو بزار تا دوستان راهنماییت کنن
    اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

    اگه دوس دارید سریع به جواب برسید :
    1) قبل از پرسیدن سوال، بسرچید.
    2) سوالاتون رو با جزئیات کامل مطرح کنید.

    دیدگاه


      #3
      پاسخ : n bit decoder binary to 7seg

      فرمول رو پیدا کردم.میشه [ceil(n*log(2)/log(10
      کد entity رو واسه خروجی که اینجوری مینویسم ut std_logic_vector (ceil(n*(log(real(2)))-real(1)) downto 0
      اخطار میده:can not have such operands in this context
      و وقتی اینجوری مینویسم :
      out std_logic_vector (ceil(real(n)*real(log(real(2)))-real(1)) downto 0)
      اخطار میده که:Range declaration does not match type definition.
      n رو هم از نوع generic و integer یا natural تعریف کردم.
      کلا قراره که به انذازه ی تعداد ارقام ماکسیمم عددی که ّبا n بیت میشه ساخت در 7 که ضرب کنیم(تعداد خروجی برای یک سون سگمنت) بشه تعداد خروجی ها.
      و این عدد رو هی بر 10 تقسیم کنیم و یه loop بزنیم و....من کدشو ننوشتم هنوز چون تو تعریف خروجی مشکل پیدا کردم.
      اگه راهی به ذهنتون میرسه لطفا کمک کنید.

      دیدگاه


        #4
        پاسخ : n bit decoder binary to 7seg

        به نظرم کد ها رو کامل بزاری و ارور ها رو هم بنویسی خیلی بهتره تا این طور
        اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

        اگه دوس دارید سریع به جواب برسید :
        1) قبل از پرسیدن سوال، بسرچید.
        2) سوالاتون رو با جزئیات کامل مطرح کنید.

        دیدگاه


          #5
          پاسخ : n bit decoder binary to 7seg

          آخه من بدنشو ننوشتم.
          ولی entity اینجوریه:

          library IEEE;
          use IEEE.std_logic_1164.all;
          use IEEE.numeric_std.all;
          use IEEE.std_logic_unsigned.all;
          use IEEE.MATH_REAL.ALL;
          entity ex2 is
          generic(n:integer:=13);
          port(
          i:in std_logic_vector (n-1 downto 0);
          out std_logic_vector (real(7)*(real(n)*(log(real(2)))-real(1)) downto 0)
          );
          end ex2;
          که ارور زیر رو میده:

          Line 42. Range declaration does not match type definition.
          لاین 42 همون لاینی هستش که output تعریف شده.......

          دیدگاه


            #6
            پاسخ : n bit decoder binary to 7seg

            https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=decoder+to+7+segment%2BVHDL
            :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

            یه کد نمونه بیبن به کارت میاد..... :job:
            [code=vhdl]library IEEE;
            ise IEEE.std_logic_1164.all;
            library unisim;
            use unisim.vcomponents.all;

            entity decoder is
            port( BCD: in STD_LOGIC_VECTOR (3 downto 0);
            ( SEGS_L: out STD_LOGIC_VECTOR(5 downto 0);
            ( DIGEN_L: out STD_LOGIC_VECTOR(3 downto 0));
            end decoder;

            architecture decoder_arc of decoder is
            begin
            process(BCD)
            begin
            DIGEN_L <= "0111";
            case BCD is
            when "0000"=> SEGS_L <="1111110"; -- '0'
            when "0001"=> SEGS_L <="0110000"; -- '1'
            when "0010"=> SEGS_L <="1101101"; -- '2'
            when "0011"=> SEGS_L <="1111001"; -- '3'
            when "0100"=> SEGS_L <="0110011"; -- '4'
            when "0101"=> SEGS_L <="1011011"; -- '5'
            when "0110"=> SEGS_L <="1011111"; -- '6'
            when "0111"=> SEGS_L <="1110000"; -- '7'
            when "1000"=> SEGS_L <="1111111"; -- '8'
            when "1001"=> SEGS_L <="1111011"; -- '9'
            when others=> SEGS_L <="-";
            end case;
            end process;
            end decoder_arc;[/code]
            اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

            اگه دوس دارید سریع به جواب برسید :
            1) قبل از پرسیدن سوال، بسرچید.
            2) سوالاتون رو با جزئیات کامل مطرح کنید.

            دیدگاه


              #7
              پاسخ : n bit decoder binary to 7seg

              دوست عزیز فک کنم منظورمو خوب نفهمیدید...
              من تو تعریف خروجی واسه N بیتی کدی که گذاشتید مشکل دارم.....

              دیدگاه


                #8
                پاسخ : n bit decoder binary to 7seg

                والا بازم متوجه نشدم.....اساتید لطفا راهنمایی کنن..
                یعنی میخوای هر ورودی/خروجی رو به پایه های تراشه انتساب بدی؟؟؟(برا عملی بستن مدار)
                اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                اگه دوس دارید سریع به جواب برسید :
                1) قبل از پرسیدن سوال، بسرچید.
                2) سوالاتون رو با جزئیات کامل مطرح کنید.

                دیدگاه


                  #9
                  پاسخ : n bit decoder binary to 7seg

                  نه این قراره فقط یه طرح برنامه نویسی باشه نه عملی.....
                  ببینید!
                  مثلا ما وقتی یک دیکودر ان بیتی میخوایم تعریف کنیم چی می گیم؟ یه generic مینویسیم و ورودی رو از n-1 تا 0 تعریف میکنیم و خروجی رو از 2 به توان n منهای 1 تا صفر تعریف میکنیم.حالا مثلا اگه به n بدیم 4.4 تا ورودی و 16 تا ورودی در مدارمون خواهیم داشت در تئوری البته! که بعدش اینو میتونیم در عمل پیاده سازی کنیم....
                  حالا همین کارو واسه همین icمیخام انجام بدم.یعنی یک این چنین ic ای در حالت n بیتی (که با generic مینویسیم) باید ورودی و خروجی هارو بر حسب n تعریف کنیم دیگه.حالا در حالت n بیتی که ورودی های ما n تا و خروجی های ما باید هفت ضربدر (جزء صحیح( n ضربدر لگاریتم2))باشه دیگه.(البته منظورم از جزء صحیح همون ceil هستش) این یعنی این که وقتی ما n رو بگیم 10 یعنی عدد ورودی 10 بیتی هستش که در حالت ماکس میشه 1023 که میشه 4 رقم و طبق فرمولی که برای خروجی تعریف کردم خروجی باید بشه 7*4 (ceil اعداد رو به بالا گرد میکنه) که هر کدوم ازین هفت ها رو میشه داد به بک سون سگمنت.(من حالت حداکثر رو در نظر گرفتم یعنی در حالت n=4 ممکنه عدد ورودی دو رقمی باشه که در این حالت 14 خروجی خاموش خواهد بود)
                  حالا مشکل همین تعریف کردنه.چون ارور میده که بالا نوشتمش.واسه این که ceil و log رو بشناسونیم باید library_math_real رو use کنیم و اعداد رو باید real بذاریم ولی باز هم همون مشکل بالا رو دارم که اروری که نوشتم رو میده.
                  نمیدونم کامل منظورمو رسوندم یا نه.ایشالا که رسونده باشم.
                  اگه مشکلشو فهمیدی لطفا بگید چون دو سه روز دیگه باس تحویل بدم!!!!!
                  با تشکر

                  دیدگاه


                    #10
                    پاسخ : n bit decoder binary to 7seg

                    سلام. کد کاملشو نوشتم ولی چون فعلاً فقط قسمت Entity رو مشکل داری فقط همین قسمت رو میذارم، بقیه اش کار خاصی نداره و خودت میتونی انجام بدی.
                    [code=vhdl]
                    entity Bin2Sev is
                    Generic (
                    bits : integer := 12 -- maximum is 16
                    );
                    Port (
                    bin : in STD_LOGIC_VECTOR (bits-1 downto 0); -- maximum is 99999
                    sev : out STD_LOGIC_VECTOR ( 7*(integer(real(bits)*log10(2.0)))-1 downto 0)
                    );
                    end Bin2Sev;
                    [/code]
                    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                    دیدگاه


                      #11
                      پاسخ : n bit decoder binary to 7seg

                      سلام مرسی.میتونید کد کاملشو بذارید چون واقعیتش خودم هم بالاخره رسیدم به همین ولی من اینجوری نوشته بودم.
                      [code=vhdl]entity ex2 is
                      generic(n:integer:=13);
                      port(
                      input:in std_logic_vector (n-1 downto 0);
                      out std_logic_vector ((7*(integer(ceil(real(n*integer(log(real(2)-real(1)))))))) downto 0)
                      );
                      end ex2;[/code]
                      ولی بعدش توی تقسیم بر 10 به مشکل خوردم!که باز ارور میداد که عملوند باید توانی از دو باشد و ....
                      اگه بتونید کد کاملشو برام بذارید واقعا ممنون میشم.
                      و اینکه چرا تو مدتون ماکسیمم n=16 هستش؟؟؟؟

                      دیدگاه


                        #12
                        پاسخ : n bit decoder binary to 7seg

                        محدودیت ها مربوط به قسمت architecture میشه به خاطر الگوریتمی که نوشتم، شما میتونی برای تعداد بیت / رقم بیشتر همین رو گسترش بدی یا میتونی برنامت رو طوری بنویسی که محدودیت نداشته باشه که یکم سخت تر میشه و باید یکم فکر کنی.

                        کد خودم رو میذارم ولی اگه این برنامه تکلیفت هست لطفاً حداقل خودت قبل از نگاه کردن بهش فکر کن و سعی خودت رو بکن :read:

                        [code=vhdl]
                        library IEEE;
                        use IEEE.STD_LOGIC_1164.ALL;
                        use IEEE.STD_LOGIC_UNSIGNED.ALL;
                        use IEEE.MATH_REAL.ALL;
                        use IEEE.NUMERIC_STD.ALL;

                        entity Bin2Sev is
                        Generic (
                        bits : integer := 12 -- maximum is 16
                        );
                        Port (
                        bin : in STD_LOGIC_VECTOR (bits-1 downto 0); -- maximum is 99999
                        sev : out STD_LOGIC_VECTOR ( 7*(integer(real(bits)*log10(2.0)))-1 downto 0)
                        );
                        end Bin2Sev;

                        architecture Behavioral of Bin2Sev is
                        type sarray_type is array (0 to 10) of std_logic_vector(6 downto 0);
                        constant sarray : sarray_type := ("1111110",
                        "0110000",
                        "1101101",
                        "1111001",
                        "0110011",
                        "1011011",
                        "1011111",
                        "1110000",
                        "1111111",
                        "1111011",
                        "0000000"
                        signal sbin : std_logic_vector(16 downto 0) := (others => '0'
                        signal ssev : std_logic_vector(7*5-1 downto 0);
                        begin

                        sbin(bin'high downto bin'low) <= bin;

                        Decode_proc: process(sbin)
                        variable remainder : std_logic_vector(16 downto 0);
                        variable prefig : std_logic;
                        begin
                        remainder := sbin;
                        if (remainder >= 100_000) then
                        ssev(7*5-1 downto 7*4) <= sarray(10);
                        ssev(7*4-1 downto 7*3) <= sarray(10);
                        ssev(7*3-1 downto 7*2) <= sarray(10);
                        ssev(7*2-1 downto 7*1) <= sarray(10);
                        ssev(7*1-1 downto 7*0) <= sarray(10);
                        end if;
                        --
                        if (remainder >= 10_000) then
                        if (remainder >= 90_000) then
                        remainder := remainder - 90_000;
                        ssev(7*5-1 downto 7*4) <= sarray(9);
                        prefig := '1';
                        elsif (remainder >= 80_000) then
                        remainder := remainder - 80_000;
                        ssev(7*5-1 downto 7*4) <= sarray(8);
                        prefig := '1';
                        elsif (remainder >= 70_000) then
                        remainder := remainder - 70_000;
                        ssev(7*5-1 downto 7*4) <= sarray(7);
                        prefig := '1';
                        elsif (remainder >= 60_000) then
                        remainder := remainder - 60_000;
                        ssev(7*5-1 downto 7*4) <= sarray(6);
                        prefig := '1';
                        elsif (remainder >= 50_000) then
                        remainder := remainder - 50_000;
                        ssev(7*5-1 downto 7*4) <= sarray(5);
                        prefig := '1';
                        elsif (remainder >= 40_000) then
                        remainder := remainder - 40_000;
                        ssev(7*5-1 downto 7*4) <= sarray(4);
                        prefig := '1';
                        elsif (remainder >= 30_000) then
                        remainder := remainder - 30_000;
                        ssev(7*5-1 downto 7*4) <= sarray(3);
                        prefig := '1';
                        elsif (remainder >= 20_000) then
                        remainder := remainder - 20_000;
                        ssev(7*5-1 downto 7*4) <= sarray(2);
                        prefig := '1';
                        else
                        remainder := remainder - 10_000;
                        ssev(7*5-1 downto 7*4) <= sarray(1);
                        prefig := '1';
                        end if;
                        else
                        ssev(7*5-1 downto 7*4) <= sarray(10);
                        prefig := '0';
                        end if;
                        --
                        if (remainder >= 1000) then
                        if (remainder >= 9000) then
                        remainder := remainder - 9000;
                        ssev(7*4-1 downto 7*3) <= sarray(9);
                        prefig := '1';
                        elsif (remainder >= 8000) then
                        remainder := remainder - 8000;
                        ssev(7*4-1 downto 7*3) <= sarray(8);
                        prefig := '1';
                        elsif (remainder >= 7000) then
                        remainder := remainder - 7000;
                        ssev(7*4-1 downto 7*3) <= sarray(7);
                        prefig := '1';
                        elsif (remainder >= 6000) then
                        remainder := remainder - 6000;
                        ssev(7*4-1 downto 7*3) <= sarray(6);
                        prefig := '1';
                        elsif (remainder >= 5000) then
                        remainder := remainder - 5000;
                        ssev(7*4-1 downto 7*3) <= sarray(5);
                        prefig := '1';
                        elsif (remainder >= 4000) then
                        remainder := remainder - 4000;
                        ssev(7*4-1 downto 7*3) <= sarray(4);
                        prefig := '1';
                        elsif (remainder >= 3000) then
                        remainder := remainder - 3000;
                        ssev(7*4-1 downto 7*3) <= sarray(3);
                        prefig := '1';
                        elsif (remainder >= 2000) then
                        remainder := remainder - 2000;
                        ssev(7*4-1 downto 7*3) <= sarray(2);
                        prefig := '1';
                        else
                        remainder := remainder - 1000;
                        ssev(7*4-1 downto 7*3) <= sarray(1);
                        prefig := '1';
                        end if;
                        else
                        if (prefig = '0&#039 then
                        ssev(7*4-1 downto 7*3) <= sarray(10);
                        else
                        ssev(7*4-1 downto 7*3) <= sarray(0);
                        end if;
                        end if;
                        --
                        if (remainder >= 100) then
                        if (remainder >= 900) then
                        remainder := remainder - 900;
                        ssev(7*3-1 downto 7*2) <= sarray(9);
                        prefig := '1';
                        elsif (remainder >= 800) then
                        remainder := remainder - 800;
                        ssev(7*3-1 downto 7*2) <= sarray(8);
                        prefig := '1';
                        elsif (remainder >= 700) then
                        remainder := remainder - 700;
                        ssev(7*3-1 downto 7*2) <= sarray(7);
                        prefig := '1';
                        elsif (remainder >= 600) then
                        remainder := remainder - 600;
                        ssev(7*3-1 downto 7*2) <= sarray(6);
                        prefig := '1';
                        elsif (remainder >= 500) then
                        remainder := remainder - 500;
                        ssev(7*3-1 downto 7*2) <= sarray(5);
                        prefig := '1';
                        elsif (remainder >= 400) then
                        remainder := remainder - 400;
                        ssev(7*3-1 downto 7*2) <= sarray(4);
                        prefig := '1';
                        elsif (remainder >= 300) then
                        remainder := remainder - 300;
                        ssev(7*3-1 downto 7*2) <= sarray(3);
                        prefig := '1';
                        elsif (remainder >= 200) then
                        remainder := remainder - 200;
                        ssev(7*3-1 downto 7*2) <= sarray(2);
                        prefig := '1';
                        else
                        remainder := remainder - 100;
                        ssev(7*3-1 downto 7*2) <= sarray(1);
                        prefig := '1';
                        end if;
                        else
                        if (prefig = '0&#039 then
                        ssev(7*3-1 downto 7*2) <= sarray(10);
                        else
                        ssev(7*3-1 downto 7*2) <= sarray(0);
                        end if;
                        end if;
                        --
                        if (remainder >= 10) then
                        if (remainder >= 90) then
                        remainder := remainder - 90;
                        ssev(7*2-1 downto 7*1) <= sarray(9);
                        prefig := '1';
                        elsif (remainder >= 80) then
                        remainder := remainder - 80;
                        ssev(7*2-1 downto 7*1) <= sarray(8);
                        prefig := '1';
                        elsif (remainder >= 70) then
                        remainder := remainder - 70;
                        ssev(7*2-1 downto 7*1) <= sarray(7);
                        prefig := '1';
                        elsif (remainder >= 60) then
                        remainder := remainder - 60;
                        ssev(7*2-1 downto 7*1) <= sarray(6);
                        prefig := '1';
                        elsif (remainder >= 50) then
                        remainder := remainder - 50;
                        ssev(7*2-1 downto 7*1) <= sarray(5);
                        prefig := '1';
                        elsif (remainder >= 40) then
                        remainder := remainder - 40;
                        ssev(7*2-1 downto 7*1) <= sarray(4);
                        prefig := '1';
                        elsif (remainder >= 30) then
                        remainder := remainder - 30;
                        ssev(7*2-1 downto 7*1) <= sarray(3);
                        prefig := '1';
                        elsif (remainder >= 20) then
                        remainder := remainder - 20;
                        ssev(7*2-1 downto 7*1) <= sarray(2);
                        prefig := '1';
                        else
                        remainder := remainder - 10;
                        ssev(7*2-1 downto 7*1) <= sarray(1);
                        prefig := '1';
                        end if;
                        else
                        if (prefig = '0&#039 then
                        ssev(7*2-1 downto 7*1) <= sarray(10);
                        else
                        ssev(7*2-1 downto 7*1) <= sarray(0);
                        end if;
                        end if;
                        --
                        if (remainder < 10) then
                        ssev(7*1-1 downto 7*0) <= sarray(to_integer(unsigned(remainder)));
                        end if;
                        end process;

                        sev <= ssev(sev'high downto sev'low);

                        end Behavioral;
                        [/code]
                        لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                        لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                        با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                        اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                        يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                        دیدگاه


                          #13
                          پاسخ : n bit decoder binary to 7seg

                          سلام واقعا مرسی و متشکر.به نظرم برنامتون یکم طولانی دراومده. :rolleyes:
                          والا منم بعد دو سه روز تونستم یکی بنویسم
                          تبدیل کردم به bcd بهدش به 7 seg.به نظرم اینجوری راحت تر شده......
                          [code=vhdl]--
                          library IEEE;
                          use IEEE.std_logic_1164.all;
                          use IEEE.std_logic_unsigned.all;
                          use ieee.math_real.all;
                          USE IEEE.NUMERIC_STD.ALL;
                          use ieee.math_complex.all;
                          entity seg7 is
                          generic(n:integer:=13);
                          port(
                          input:in std_logic_vector (n-1 downto 0);
                          out std_logic_vector (7*integer(ceil(real(n)*log10(real(2))))-1 downto 0)
                          );
                          end seg7;
                          architecture Behavioral of seg7 is
                          begin
                          process(input)
                          variable shift:unsigned(4*integer(ceil(real(n)*log10(real(2 ))))+n-1 downto 0);
                          alias number is shift(n-1 downto 0);
                          begin
                          shift:=(others=>'0'
                          number:=unsigned(input);
                          for i in 0 to n-1 loop
                          for j in 0 to integer(ceil(real(n)*log10(real(2))))-1 loop
                          if shift(4*j+3+n downto 4*j+n) >= 5 then
                          shift(4*j+3+n downto 4*j+n):=shift(4*j+3+n downto 4*j+n)+3;
                          end if;
                          end loop;
                          shift:=shift_left(shift,1);
                          end loop;
                          for z in 0 to integer(ceil(real(n)*log10(real(2))))-1 loop
                          if shift(4*z+3+n downto 4*z+n)="0000" then
                          o(7*z+6 downto 7*z)<="0111111";
                          elsif shift(4*z+3+n downto 4*z+n)="0001" then
                          o(7*z+6 downto 7*z)<="0110000";
                          elsif shift(4*z+3+n downto 4*z+n)="0010" then
                          o(7*z+6 downto 7*z)<="1101101";
                          elsif shift(4*z+3+n downto 4*z+n)="0011" then
                          o(7*z+6 downto 7*z)<="1111001";
                          elsif shift(4*z+3+n downto 4*z+n)="0100" then
                          o(7*z+6 downto 7*z)<="1110010";
                          elsif shift(4*z+3+n downto 4*z+n)="0101" then
                          o(7*z+6 downto 7*z)<="1011011";
                          elsif shift(4*z+3+n downto 4*z+n)="0110" then
                          o(7*z+6 downto 7*z)<="0011111";
                          elsif shift(4*z+3+n downto 4*z+n)="0111" then
                          o(7*z+6 downto 7*z)<="0110001";
                          elsif shift(4*z+3+n downto 4*z+n)="1000" then
                          o(7*z+6 downto 7*z)<="1111111";
                          elsif shift(4*z+3+n downto 4*z+n)="1001" then
                          o(7*z+6 downto 7*z)<="1111011";
                          else o(7*z+6 downto 7*z)<="ZZZZZZZ";
                          end if;
                          end loop;
                          end process;
                          end Behavioral;


                          [/code]
                          بازم متشکرم ازتون که توجه کردید و وقت گذاشتید.... :nice:

                          دیدگاه


                            #14
                            پاسخ : n bit decoder binary to 7seg

                            سلام amin5659
                            میشه در مورد variable shift توی برنامت بهم یه توضیحی بدی :smile:

                            دیدگاه


                              #15
                              پاسخ : n bit decoder binary to 7seg

                              سلام.ایم کدو من یه سال پیش نوشتم تقریبا! زیاد یادم نیست!!
                              ولی چون این کد رو برای پیاده سازی روی spartan 3 نوشته بودم چون بلوک DSP نداره تقسیم بر ده نمیشد انجام بدی توش :angry:
                              واسه همین اول عدد رو اومدم BCD کردم بعدش تبدیل به سون سگمنت.
                              Variable shift هم به این منظور استفاده شده

                              دیدگاه

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