اطلاعیه

Collapse
No announcement yet.

پورت VGA

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

    پورت VGA

    سلام . میدونم این موضوع برای بعضی از شما ها خیلی اسون و پیش و پا افتادست .
    ولی خب من واقعا دنبالش رفتم ولی هر چی گشتم توی نت گیج شدم ، (حرفا فرق میکرد با هم )

    من تازه کار رو با FPGA شروع کردم . مثلا در این حد که میتونم یه SRAM یا یک شیفت رجیستر و کانتر پارامتری شبیه سازی کنم با وریلاگ .

    و دارم کنار تمرینم در مورد پورت ها هم تحقیق میکنم که فکر کنم در اینده برای کار با fpga یک نیاز باشه اشنایی با پورت ها

    سوال من در مورد پورت vga یه چیزایی خوندم در موردش ولی خب نمیتونم درست درک کنم .

    این پورت 3 تا خروجی داره برای رنگ که 3 تا رنگ اصلی هستن و به صورت انالوگ تمام رنگ ها ساخته میشه اینو درک میکنم .



    ولی پایه های H-SYNC و V-SYNC رو درست نمیفهمم . مثلا ما رنگ ابی کم رنگ رو درست کردیم چند میکرو یا نانو ثانیه قبلش باید بگیم این رنگ کجای صفحه نمایش بشینه درسته ؟؟؟
    حالا این دوتا کارشون همینه ؟؟؟ چطوری اطلاعات رو میفرستن و مثلا میگن این رنگی که الان درست شد رو بشون دقیقا اون نقطه ی دلخواه ؟؟؟با چه الگویی این رنگ ها به ترتیب روی صفحه نمایش داده میشن مثلا بالا سمت چپ شروع میشه به سمت راست مییاد بعد میبره یه خونه پایین به سمت چپ میاد بعد دوباره میپره یه خونه پایین تر به سمت راست میره و ادامه ؟؟؟




    میشه اگر کسی یه کد وریلاگ داره در مورد VGA بزاره و تحلیل کنه ، فکر کنم برای خیلی ها خوب باشه

    ممنونم


    #2
    پاسخ : پورت VGA

    ولی پایه های H-SYNC و V-SYNC رو درست نمیفهمم . مثلا ما رنگ ابی کم رنگ رو درست کردیم چند میکرو یا نانو ثانیه قبلش باید بگیم این رنگ کجای صفحه نمایش بشینه درسته ؟؟؟
    حالا این دوتا کارشون همینه ؟؟؟ چطوری اطلاعات رو میفرستن و مثلا میگن این رنگی که الان درست شد رو بشون دقیقا اون نقطه ی دلخواه ؟؟؟با چه الگویی این رنگ ها به ترتیب روی صفحه نمایش داده میشن مثلا بالا سمت چپ شروع میشه به سمت راست مییاد بعد میبره یه خونه پایین به سمت چپ میاد بعد دوباره میپره یه خونه پایین تر به سمت راست میره و ادامه ؟؟؟
    انتخاب پیکسل ها به کمک این 2 سیگنال انجام میشه.رنگی که روی خطوط رنگ قرار گرفته به پیکسلی که انتخاب شده منتقل میشه. در لحظه ی شروع پیکسل سمت چپ بالای صفحه انتخاب شده.با دادن پالس به سیگنال افقی انتخاب گر پیکسل ها یک پیکسل به سمت راست منتقل میشه. این روند تا آخر سطر اول انجام میشه وقتی به انتهای سطر رسیدیم پالس بعدی باعث انتخاب چپ ترین پیکسل سطر 2 میشه. این روند تا آخر صفحه صورت میگیره. وقتی به آخرین پیکسل یعنی پاییت سمت راست رسیدیم با ایجاد یه پالس روی سیگنال عمودی انتخاب گر رو به پیکسل 0و0 منتقل میکنیم و دوباره.....
    برای زمان بندی این کار شما باید از استاندارد های تعریف شده استفاده کنید. معمولا صفحه باید 60 بار در هر ثانیه رفرش بشه( 60 پالس عمودی) . ابعاد صفحه هم که معلوم هست پس زمان بندی سیگال ها قابل محاسبه هست. فقط قراموش نکنید که صفحه ای که تو محاسبات در نظر میگیریم از صفحه اصلی(فیزیکی) بزرگتر هست.دلیل این بزرگتر در نظر گرفتن هم برگشت تفنگ الکترونی به ابتدای سطر در سیستم های قدیمی هست.اصطلاحا به این فاصله Back porch و front porch میگن. شما VGA Timing رو گوگل کنید. اندازه ای که برای هر صفحه باید در نظر بگیرید و مقدار رفرش و فرکانس هر پالس و... رو میبینید.(یه جدول هست که به صورت استاندارد استفاده میشه)
    [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

    دیدگاه


      #3
      پاسخ : پورت VGA

      ممنونم shahinbahari

      حالا یک سوال . فرض میکنیم که الان با FPGA یک مدار رو طراحی کردیم که رنگ ابی پر رنگ رو داره توی یه اندازه مشخص طبق استاندارد روی صفحه مانیتور نشون میده ..

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

      حالا FPGA ما یک ورودی اطلاعات داره مثلا کیبرد . که یک کد رو میفرسته به FPGA که مفهومش حرف "B" و به طور پیشفرض توی ای سی برنامه ریزی شده که گوشه بالا سمت چپ شروع کن به نمایش دادن حروف . همچی معلومه

      ولی خب سوالم اینه این حرف "B" رو چجوری باید با همین فونت با همین شکل بفهمونم به FPGA که این کدی که از کیبرد میاد یعنی این پیکسل هات رو سیاه کن مثل عکس زیر ... یا مثلا اطلاعات پیکسل های یک عکس رو چجوری میشه استخراج کرد که بعد ارسال کرد به FPGA با حافظه هایی که همه میدونیم ...
      بازم ممنونم

      دیدگاه


        #4
        پاسخ : پورت VGA

        ببینید شما باید یه فضایی از رم برای بافر گرافیکی در نظر بگیرید.در هر لحظه امکان بدست آوردن رنگ هر پیکسل نیست و باید رنگ ها از اون بافر لود بشه. حالا با اون بافر میشه مثل LCd های گرافیکی که براشون فونت میساختیم و..... رفتار کنیم.
        برای شروع پیشنهاد میدم سایز تصویر رو کوچیک در نظر بگیرید و یه رم dual port تعریف کنید.یه پورت به درایور VGA و یه پورت هم برای قسمتی که میخواد متن یا.... رو بسازه. یه کم که با سیستمش آشنا شدید میتونید از چند بافر برای اسکن استفاده کنید تا بتونید حتی تصاویر متحرک رو هم به نرمی روی صفحه حرکت بدید و یا الگوریتم های اصلاح تصویر مثل anti aliasing روش پیاده کنید.
        [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

        دیدگاه


          #5
          پاسخ : پورت VGA

          ممنونم که جوابم رو خوب و کامل میدی

          اره همین کاری که گفتی خیلی خوبه

          راجعب رم ...

          برای من که تازه شروع کردم برای این کارهای سبک به نظرت چه نوع فلش رم و DRAM بهتره که استفاده کنم ...

          دیدگاه


            #6
            پاسخ : پورت VGA

            متوجه منظورت از فلش رم نشدم که چی رو میگی!
            اگر منظورت رم برای سیستم هست که به نظر من sdram ها برای این کار مناسب هستند. رم های سری k4s برای این کارا خوبند. توی بازار من فقط K4S561632C رو دیدم که 7-8 تومن قیمتش هست و اگه اشتباه نکنم 128 مگابیت حجمش هست. برای راه اندازی این رم ها core های آماده براش هست و دیگه نیازی به درگیری با رفرش و تایمینگ و... نیست.
            اگر برای نگه داشتن media سیستم نیاز به فلش داری نند فلش های سری k9s مناسب هستند. البته برای ساده تر شدن کار میشه از nor flash هم استفاده کرد که راه اندازیش شبیه به sram هست. گزینه بعدی هم که قابل فکر کردن هست فلش های spi مثلat45db هستند.برای راه اندازی این مورد هم به یه core برای spi نیاز هست.

            [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

            دیدگاه


              #7
              پاسخ : پورت VGA

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

              اگر نیاز باشه که فرکانس چند تا ماژول رو توی fpga خیلی بیاریم پایین مثلا برای پروژه ساعت یا شیفت دادن نوشته روی ال سی دی .

              از ماژول DLL که نمیشه استفاده کرد برای تقسیم فرکانس چون فرکانس من 40 مگا هرتزه و ضریب تقسیم فکر میکنم توی DLL ماکسیمم 36 باشه .

              خب چجوری این کارو میشه کرد ؟؟؟

              دیدگاه


                #8
                پاسخ : پورت VGA

                سلام. میتونی یک کانتر با مقدار اولیه 0 رو داخل ی پروسس زیاد کنی هر وقت رسید به مقدار تقسیم فرکانس مورد نظرت مقدارشو دوباره صفر کنی و مقدار سیگنالی که به عنوان کلاک میخوای استفاده کنی 1 کنی. من با VHDL مینویسم.
                کد PHP:
                signal clk_div std_logic := '0';
                constant div_const integer := 100;

                div_procprocess(clk)
                  
                variable count integer range 0 to div_const := 0;
                begin
                  
                if count div_count then
                   clk_div 
                <= '1';
                   
                count := 0;
                  else
                   
                clk_div <= '0';
                   
                count := count 1;
                  
                end if;
                end process

                سیگنال clk_div فرکانسش 100 برابر از کلاک اصلی که clk هست کمتره.
                لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                دیدگاه


                  #9
                  پاسخ : پورت VGA

                  نوشته اصلی توسط هـادی
                  سلام. میتونی یک کانتر با مقدار اولیه 0 رو داخل ی پروسس زیاد کنی هر وقت رسید به مقدار تقسیم فرکانس مورد نظرت مقدارشو دوباره صفر کنی و مقدار سیگنالی که به عنوان کلاک میخوای استفاده کنی
                  ممنونم از جوابت با این روش درست کار میکنه ولی اگر بخوام یه کلاک 40 مگا هرتزی رو با این روش خیلی بیارم پایین فرکانسش رو ، الکی کلی از قسمت های FPGA رو اشغال کردم با یه کانتر یا تایمر خیلی بزرگ . یعنی راه بهینه تر دیگه ای نیست ؟؟
                  البته میشه یه کلاک دیگه برای اون ماژول ها از بیرون FPGA اورد داخل .ولی میخوام ببینم روش دیگه ای هم هست براش که بهینه باشه

                  دیدگاه


                    #10
                    پاسخ : پورت VGA

                    گر بخوام یه کلاک 40 مگا هرتزی رو با این روش خیلی بیارم پایین فرکانسش رو ، الکی کلی از قسمت های FPGA رو اشغال کردم با یه کانتر یا تایمر خیلی بزرگ . یعنی راه بهینه تر دیگه ای نیست ؟؟
                    به کارگیری یک کانتر تو این ابعاد فضای خیلی کمی از FPGA اشغال میکنه و از این بابت نباید نگران بود.

                    اگر DCM استفاده میکنید علاوه بر تقسیم بر 32 میتونید از یک تقسیم بر 2 هم تو ورودی استفاده کنید که مجموعا میشه 64.
                    یا علی.

                    دیدگاه

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