اطلاعیه

Collapse
No announcement yet.

مشکل با سرعت رم بلوکی در fpga

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

    مشکل با سرعت رم بلوکی در fpga

    سلام دوستان و اساتید محترم
    من با استفاده اسپارتان 6 از adc که سرعتش 80MSPS نمونه دراری کردم ولی مشکلی هست اینکه وقتی نمونه سیکنال نمایش می دم حداکثر فرکانش 2 مگاهرتز هست که این نشون میده تاخیری در ذخیره وجود داره.سوالم جطور تاخیر به وجود اومده کم یا حذف کنم؟
    جدیدترین ویرایش توسط MM320; ۰۲:۱۶ ۱۳۹۷/۰۶/۲۸.

    #2
    پاسخ : مشکل با سرعت رم بلوکی در fpga

    خیلی سوال کلی هست

    اینکه روش ذخیره؟ ابتدا در بلاک رم قرار میدهید بعد با پورت سریال یا SPI میخوانید؟
    چطور متوجه شدید 2 مگا هرتز هست
    آیا از کلاکی که سر ADC می رود مطمین هستید؟

    دیدگاه


      #3
      پاسخ : مشکل با سرعت رم بلوکی در fpga

      [QUOTE=Faateh;684058]خیلی سوال کلی هست?
      من اول با امدن لبه بالا رونده کلاک ۸۰ مگاهرتز دیتا رو توی رم ذخیره کردم بعد برای UART ارسال کردم.درمورد سوال دومتون من روی ال سی دی دیتا نشون دادم و اونجا متوجه شدم.و کلاک که برای ADCمیره ۸۰ مگاهرتز.در واقع مقدار PLL روی پایه خروجی گذاشتم .چند روز دارم کار می کنم هنوز نتونستم مشکله حل کنم
      جدیدترین ویرایش توسط MM320; ۱۵:۲۴ ۱۳۹۷/۰۶/۲۸.

      دیدگاه


        #4
        پاسخ : مشکل با سرعت رم بلوکی در fpga

        [QUOTE=MM320;684083]
        نوشته اصلی توسط Faateh نمایش پست ها
        خیلی سوال کلی هست?
        من اول با امدن لبه بالا رونده کلاک ۸۰ مگاهرتز دیتا رو توی رم ذخیره کردم بعد برای UART ارسال کردم.درمورد سوال دومتون من روی ال سی دی دیتا نشون دادم و اونجا متوجه شدم.و کلاک که برای ADCمیره ۸۰ مگاهرتز.در واقع مقدار PLL روی پایه خروجی گذاشتم .چند روز دارم کار می کنم هنوز نتونستم مشکله حل کنم
        روش چینش داده در رم چطور هست؟ اگر ممکن هست بخش ازدیاگرام کد را قرار بدهید یا بخش دریافت در رم و ارسال به PC را بفرستید تا بشود نظر داد. شکل موج هم اگر داشته باشید خیلی کمک میکنه.

        دیدگاه


          #5
          پاسخ : مشکل با سرعت رم بلوکی در fpga

          سلام
          متاسفانه مشکلم حل نشد من با استفاده از دستور TYPE RAM IS ARRAY (0 TO 2400) OF STD_LOGIC_VECTOR(11 DOWNTO 0); رم رو تعریف کردم ولی مدار درست کار نمی کنه مثلا فرکانس 2 مگارهرتز دادم روی دیدم که سیگنال نمیشه درست باز کرداین نشون میده تاخیری در مدار هست .به نظر شما مشکل از کجاست؟.(کد قسمت نمونه بردای و خواندن از رم وclk1=80MHZ هست)
          کد:
          --        --sampling adc------
                  process (clk1,rst)
          
                  begin
                  if rst='1' then
                  cunt<=0;
                  end_conv<='0';
                  elsif rising_edge(clk1) then
              
                  if conv ='1' then
                  if flag_rr='0' then
                  cc <= cc+ x"000001";
                  if (cc=sam_rate OR NO_DELAY='1') then    
                  if cunt < 2400 then
                      cc <=x"000000";
                          din_r<=din;
                          memory(conv_integer(cunt)) <=din_r;
                          cunt <=cunt + 1;
                          else
                          cunt <=0;
                          end_conv<='1';
                          
                  end if;
                  end if;
                  else
                  data_ram<=memory(conv_integer(counter));
                  
                  
                  end if;
                  end if;
                  end if;
                  end process;
          جدیدترین ویرایش توسط MM320; ۲۰:۱۸ ۱۳۹۷/۰۶/۳۱.

          دیدگاه


            #6
            پاسخ : مشکل با سرعت رم بلوکی در fpga

            نوشته اصلی توسط MM320 نمایش پست ها
            سلام
            متاسفانه مشکلم حل نشد من با استفاده از دستور TYPE RAM IS ARRAY (0 TO 2400) OF STD_LOGIC_VECTOR(11 DOWNTO 0); رم رو تعریف کردم ولی مدار درست کار نمی کنه مثلا فرکانس 2 مگارهرتز دادم روی دیدم که سیگنال نمیشه درست باز کرداین نشون میده تاخیری در مدار هست .به نظر شما مشکل از کجاست؟.(کد قسمت نمونه بردای و خواندن از رم وclk1=80MHZ هست)
            کد:
            --        --sampling adc------
                    process (clk1,rst)
            
                    begin
                    if rst='1' then
                    cunt<=0;
                    end_conv<='0';
                    elsif rising_edge(clk1) then
                
                    if conv ='1' then
                    if flag_rr='0' then
                    cc <= cc+ x"000001";
                    if (cc=sam_rate OR NO_DELAY='1') then    
                    if cunt < 2400 then
                        cc <=x"000000";
                            din_r<=din;
                            memory(conv_integer(cunt)) <=din_r;
                            cunt <=cunt + 1;
                            else
                            cunt <=0;
                            end_conv<='1';
                            
                    end if;
                    end if;
                    else
                    data_ram<=memory(conv_integer(counter));
                    
                    
                    end if;
                    end if;
                    end if;
                    end process;
            در کد شما CC ظاهرا سرعت نمونه برداری را تعیین می کند! خیلی عدد بزرگیه باید ببینید شاید کد شما به مشکل تایمنگ داره، در قسمت گزارش آخر ببینید ارروری گزارش نشده باشه. کلا خیلی از فضای FPGA گرفته شده احتمال زیاد هست این اتفاق افتاده.

            کد:
            data_ram<=memory(conv_integer(counter));
            این بخش را هم متوجه نمیشم!

            چند درصد FPGA مصرف شده ؟؟ و آیا کد شما از بلاک رم استفاده کرده است یا از distributed ram استفاده کرده است؟
            جدیدترین ویرایش توسط Faateh; ۲۰:۴۷ ۱۳۹۷/۰۶/۳۱.

            دیدگاه


              #7
              پاسخ : مشکل با سرعت رم بلوکی در fpga

              با این کدdata_ram<=memory(conv_integer(counter));
              مقدار رم می خونم درون data_ram ریختم در پروسس uart برای ارسال تحویل دادم.
              در مورد سوال دومتون ۷% fpga مصرف شده و نوع رم بلوکی هست با دستور VHDL استفاده شده البته با روش IP CORE رم بلوکی ایجاد کردم ولی بازم همین مشکل داشتم

              دیدگاه


                #8
                پاسخ : مشکل با سرعت رم بلوکی در fpga

                نوشته اصلی توسط MM320 نمایش پست ها
                با این کدdata_ram<=memory(conv_integer(counter));
                مقدار رم می خونم درون data_ram ریختم در پروسس uart برای ارسال تحویل دادم.
                در مورد سوال دومتون ۷% fpga مصرف شده و نوع رم بلوکی هست با دستور VHDL استفاده شده البته با روش IP CORE رم بلوکی ایجاد کردم ولی بازم همین مشکل داشتم
                مشکل تایمینگ یا ارور در place and route?

                دیدگاه


                  #9
                  پاسخ : مشکل با سرعت رم بلوکی در fpga

                  اگر به صورت موازی دارید هم میخونید هم میفرستید؟ ممکنه تا شما میرید بفرستید و عدد بعدی رو بردارید، بر مبنای کدی که فرستادید دوباره عدد بعدی اپدیت میشه،

                  مثلا تا ارسالعدد 10 انجام بشه حدود 10/9600 ( با فرض ریت 9600 پورت سریال) ثانیه طول میکشه در این بازه دوباره کد 2500 عدد رو پر کرده و عدد 11 آپدیت شده و شما این عدد به روز شده رو می فرستید و سمپلینگ به هم میریزه
                  جدیدترین ویرایش توسط Faateh; ۲۳:۰۴ ۱۳۹۷/۰۶/۳۱.

                  دیدگاه


                    #10
                    پاسخ : مشکل با سرعت رم بلوکی در fpga

                    سلام
                    نمی دونم مشکل از کجاست با سرعت نمونه برداری 80MSPS فرکانس ورودی 200 کیلوهرتز بدون تاخیر در نمونه برداری شکل موج این طوری هست:

                    /
                    به نظر شما مشکل از کچاست؟



                    دلیل: ادغام دو پست برای جلوگیری از اسپم

                    نوشته اصلی توسط Faateh نمایش پست ها
                    اگر به صورت موازی دارید هم میخونید هم میفرستید؟ ممکنه تا شما میرید بفرستید و عدد بعدی رو بردارید، بر مبنای کدی که فرستادید دوباره عدد بعدی اپدیت میشه،

                    مثلا تا ارسالعدد 10 انجام بشه حدود 10/9600 ( با فرض ریت 9600 پورت سریال) ثانیه طول میکشه در این بازه دوباره کد 2500 عدد رو پر کرده و عدد 11 آپدیت شده و شما این عدد به روز شده رو می فرستید و سمپلینگ به هم میریزه
                    سرعت باودریت من 1000000 هست . بصورت پارالل 12 بیت دیتاADC می خونم
                    جدیدترین ویرایش توسط MM320; ۱۸:۳۱ ۱۳۹۷/۰۷/۰۱.

                    دیدگاه


                      #11
                      پاسخ : مشکل با سرعت رم بلوکی در fpga

                      نوشته اصلی توسط MM320 نمایش پست ها
                      سلام
                      نمی دونم مشکل از کجاست با سرعت نمونه برداری 80MSPS فرکانس ورودی 200 کیلوهرتز بدون تاخیر در نمونه برداری شکل موج این طوری هست:

                      /
                      به نظر شما مشکل از کچاست؟



                      دلیل: ادغام دو پست برای جلوگیری از اسپم



                      سرعت باودریت من 1000000 هست . بصورت پارالل 12 بیت دیتاADC می خونم
                      فعلا همزمان نخوانید و پلات کنید؛ 2400 نمونه را خوانده و وقتی کامل شد بفرستید، دوباره ریست را بزنید تا دوباره پک 2400 جدید شروع بشود.
                      برای هر 12 بیت 2 بایت در پورت سریال ارسال میکنید یا بیشتر؟

                      دیدگاه


                        #12
                        پاسخ : مشکل با سرعت رم بلوکی در fpga

                        من دقیقا همین کار رو می کنم با دستور 'R'اول ریست مدار بعدبا دستور'N' نوع تاخیر انتخاب می کنم که عکس نشون دادم تاخیر در نظر نگرفتم بعد با دستور 'C'تبدیل آغاز کردم منتظر میشم نمونه برداری تمام بشه دیتا ها توی رم ذخیره بشه بعد با دستور 'H' دیتا از رم می خونم بری ارسال به واحد UART تحویل میدم.

                        دیدگاه


                          #13
                          پاسخ : مشکل با سرعت رم بلوکی در fpga

                          نوشته اصلی توسط MM320 نمایش پست ها
                          من دقیقا همین کار رو می کنم با دستور 'R'اول ریست مدار بعدبا دستور'N' نوع تاخیر انتخاب می کنم که عکس نشون دادم تاخیر در نظر نگرفتم بعد با دستور 'C'تبدیل آغاز کردم منتظر میشم نمونه برداری تمام بشه دیتا ها توی رم ذخیره بشه بعد با دستور 'H' دیتا از رم می خونم بری ارسال به واحد UART تحویل میدم.
                          در کد
                          کد:
                          [FONT=Yekan]		[/FONT][FONT=Yekan]if flag_rr='0' then[/FONT]			...
                          		else
                          			data_ram<=memory(conv_integer(counter));
                          [FONT=Yekan]		[/FONT][FONT=Yekan]end if;[/FONT]
                          شما دارید با فرکانس 80 مگ برای پورت سریال داده میفرستید؟ ؟؟

                          دلیل: ادغام دو پست برای جلوگیری از اسپم

                          در عکسی که فرستادید فرکانس سیگنال حدود 170 کیلو هست که به نظر درست میرسه!

                          دیدگاه


                            #14
                            پاسخ : مشکل با سرعت رم بلوکی در fpga

                            فکر نکنم مشکلی داشته باشه چون بین هر ارسال من چک می کنم که TX_BUSY='0' هست یا نه و باودریت روی 1000000 یعنی 80 برابر کمتر
                            جدیدترین ویرایش توسط MM320; ۱۹:۰۲ ۱۳۹۷/۰۷/۰۱.

                            دیدگاه


                              #15
                              پاسخ : مشکل با سرعت رم بلوکی در fpga

                              در عکس حدودا فرکانس درسته ظاهرا؟؟ مشکل دقیق چی هست؟

                              چیزی که من در قسمت کد دیدم، مدام داره یک بخشی با clk1 با counter خوانده میشه؟ که من در مورد counter چیزی نمیدونم؟ اصولا پورت سریال با این ریت داده قبول نمیکنه

                              دیدگاه

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