اطلاعیه

Collapse
No announcement yet.

mp3 player بدون ic

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

    #16
    پاسخ : mp3 player بدون ic

    با سلام
    دوست عزیز کاری که می خوای انجام بدی قابل تحسین ولی بسیار سنگین و وقت گیره!
    چون توی این فرمت از توابع ریاضی زیادی مخصوصا FFT و IFFT استفاده شده که الگوریتم های پیچیده و سنگین و حافظه بری داره!!!
    از لحاظ سرعت نیز دوستان اشاره کردن که با یه میکروی 32 بیتی برای اینکه بتونی تمام بیت ریت ها رو پلی کنی نیاز به حداقل 30mips سرعت نیاز داری! البته شاید برای بیت ریت های پایین به سختی بشه با 20mip میکروی هشت بیتی از عهدش بر اومد.
    ولی مسئله اصلی فعلا اینها نیست.مسئله اینه که این فرمت دارای لانسنس هست و اطلاعات کامل برای توضیح این فرمت روی وب وجود نداره (اطلاعات کلی وجود داره ولی وقتی نیاز به جزئیات پیدا میشه سر در گم می مونی)
    من خودم دو سال پیش تا حدود بسیار زیادی از دیکود این فرمت پیش رفتم (شاید 80 90 درصد) ولی در انتها پاسخی که می گرفتم با ورودی برابر نبود و چرت و پرت بود و اونهم بدلیل قدم گذاشتن توی دنیای تاریک جزئیات این فرمت بود.
    من اینکارو می کنم که :
    اول برنامرو روی کامپیوتر می نویسم و اگه جواب گرفتم می رم سراغ پیاده سازی روی میکرو (برای دیکود jpeg همین کارو کردم)
    در کل اگه وقت این کارو داری و واقعا عشقت دیکود این فرمته به موانعشم فکر کن بعد برو جلو وگرنه استاد گفته و نمره داره و این حرفا انرژی دو هفته از کارو بهت میده در حالی که حداقل حداقل اگه خیلی باهوش باشی شش ماه تمام وقت باید روش کار کنی و آخرشم تضمینی برای نتیجه گیری نداری!
    اینم چند منبع که روی این فرمت کمی توضیح داده
    mp32.pdf
    Thesis_report-_MP3_Decoder.pdf

    [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

    دیدگاه


      #17
      پاسخ : mp3 player بدون ic

      فهرست وار میشه گفت
      ولی شما باید به mega,xmega و C مسلط باشی اگر نه اصلا نمیتونی حتی بعضی گزینه هارو بررسی کنی
      باید مموری کارت و فت ،تایمر ها و DAC و نحوه کار برروی Xmega و کامپایلرشو هم کارکرده باشی

      1.در وهله اول باید یک کد پورت شده رو یک میکرو که ارم هست رو پیدا کنید و شروع به تحلیل کنید
      2.با فرمت mp3 اشنا بشی و نحوه اینکریپت رو تو نسخه های مختلف بدونی
      3.شروع کنی به دیکد برروی میکرو که xmega یا ارم باشه
      و اطلاعاتتو بعد از دیکد نمایش بدی و با یک دیکدر برروی سیستم مشابهت بدی که درست دیکد کردی
      بعد هم خروجی برروی dac
      مطمئنا سرعت پخشت پایین خواهد بود
      پس اینجا سراغ dma و بهینه کردن میری تا بتونی حداقل بیت ریت یک فایل صوتی رو بخونی
      بعدم همونجوری که دوستان گفتن اطلاعات کم هست ولی هست
      و پروژه 2 هفته ای نیست ،حداقل 1 ماه تا دوماه باید سروکله بزنی اونهم حرفه ای
      هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
      بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
      میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

      تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

      دیدگاه


        #18
        پاسخ : mp3 player بدون ic

        نوشته اصلی توسط MAKHORSANDI
        سلام دوستان
        من تو ECA زیاد فعال نبودم ولی برای این کار پایه هستم و میتونید روم حساب کنید. زبان من هم خوبه اگر مطالبی هست میتونم براتون ترجمه کنم.
        دادا من فعلا خودم دارم رو فرمت ها کار میکنم شما میشه انگلیسی یکم سرچ کنی ببینی به کجا میرسی؟

        دیدگاه


          #19
          پاسخ : mp3 player بدون ic

          up pas kojan unae ke mikhastan hamkari konan?

          دیدگاه


            #20
            پاسخ : mp3 player بدون ic

            نوشته اصلی توسط n340
            دادا تیم بشید ولی رو mega حداقل کارنکنید چون نمیشه
            xmega فکر میکنم قابلیت این قضیه رو داره
            با توجه با امکاناتی نظیر dma,dac
            xmega یک میکرو 8 بیتی است تازه پ کد تقسیم نداره . ولی باینکه پ کد ضرب 8 بیتی (یک پالس ساعتی) داره باز هم میکرو تو کار های پردازشی و محاسباتی قابل استفاده نیست.

            یک عیار بهتون میدم .

            8 بیت یعنی عددی مابین 0 الی 255 . فرض کنی میخواهید 300 *257 را محاسبه کنید . بااینکه اعداد بسار کوچکی هستند ولی با این حال برا محاسبه شما به 40 الی 50 سیکل ساعت نیاز دارید .
            بنابر این وقتی که میکرو با فرکانس 20 مگ کار میکنه در حقیقت فرکانس واقعیش 400 کیلو سیکل است.

            برا انجام عمل تقسیم که واقعا افتضاه است . شما به 250 تا 260 پالس ساعت نیاز دارید.

            ولی همین عمل ضرب و تقسیم 32 بیتی که شامل اعداد 0 تا 4294967296 است در یک میکرو 32 بیتی به یک الی دو پالس نیاز دارد. یعنی مثلا ضرب اعداد بسیار بزرگ مثلا 3294967296*4294967296 فقط یک پالس ساعت نیاز دارد .
            در حالی که قیمت یک میکرو 32 بیتی آرم با کلاک 48 مگ ارزان تر از یک میکرو 20 مگ ( برا فرکانس حقیقی باید تقسیم بر 50 بکنید ) شرکت اتمل است.
            تنها موردی که همه آدما یقین دارن خدا در حقش زیاد لطف کرده
            داشتن عقله زیادتر از دیگر آدم ها است

            دیدگاه


              #21
              پاسخ : mp3 player بدون ic

              برا اینکه از صفر شروع نکنیم میشه رو همون مدار mp3 vs1011 ر.و برنامشو استفاده کنیم فقط قسمت دیکدودینگ رو تغییر بدیم؟ دقیقا کدوم قسمت میشه دوستان؟
              $regfile = "M128def.dat" T AVR-CHIPS
              $crystal = 8000000 'BUT this NOT TESTED
              $baud = 128000
              '-------------------------------------------------------------------------------
              $swstack = 128
              $hwstack = 128
              $framesize = 1024
              Config Date = Dmy , Separator = .
              Config Lcdpin = Pin , Db4 = Pinf.3 , Db5 = Pinf.2 , Db6 = Pinf.1 , Db7 = _
              Pinf.0 , Rs = Pinf.5 , E = Pinf.4
              Config Lcd = 16 * 2
              Cursor Off
              Cls
              Config Portd = Input
              Portd = 255

              '-------------------------------------------------------------------------------
              Avanti Alias Pind.0
              Led Alias Portg.1
              Vs_miso Alias Portc.0
              Vs_mosi Alias Portc.1
              Vs_clock Alias Portc.2
              Xcs Alias Portc.3
              Xreset Alias Portc.5
              Dreq Alias Pinc.4
              Bsync Alias Portc.6
              '-------------------------------------------------------------------------------
              Config Avanti = Input
              Config Led = Output
              Config Vs_miso = Input
              Config Vs_mosi = Output
              Config Vs_clock = Output
              Config Xcs = Output
              Config Xreset = Output
              Config Dreq = Input
              Config Bsync = Output
              '-------------------------------------------------------------------------------
              Declare Sub Vs_init()
              Declare Sub Soft_reset()
              Declare Sub Vs_write(byval Vs_address As Byte , Byval Data1 As Byte , Byval Data2 As Byte)
              Declare Function Vs_read(byval Vs_address As Byte) As Word
              Declare Sub Send_mp3(byval Filename As String)
              '-------------------------------------------------------------------------------
              Const Vs_rd = &B0000_0011
              Const Vs_wr = &B0000_0010
              Const Vs_mode = 0
              Const Vs_status = 1
              Const Vs_clockf = 3
              Const Vs_decode_time = 4
              Const Vs_audata = 5
              Const Vs_volume = 11
              '-------------------------------------------------------------------------------
              Dim B As Byte
              Dim Test As Byte
              Dim I As Integer
              Dim J As Long
              Dim Curbyte As Long
              Dim S As String * 20
              Dim Sample_rate As Word
              Dim Bit_rate As Word
              Dim Is_stereo As Word
              Dim Audata As Word
              Dim Filename As String * 11
              Dim Mmc_data(512) As Byte
              Dim Tempo_new As Word
              Dim Tempo_old As Word
              Dim Flag_read As Bit
              Dim Flag_play As Bit
              Dim Comando As String * 10
              Dim Mode_low As Byte
              Dim Mode_hig As Byte
              Dim Volume As Word
              Dim Volume_low As Byte
              Dim Volume_hig As Byte
              '-------------------------------------------------------------------------------
              $include "Config_MMC.bas"
              If Gbdriveerror <> 0 Then
              Locate 2 , 1
              Lcd "ERROR" ; Gbdriveerror
              End
              End If
              $include "Config_AVR-DOS.BAS"

              B = Initfilesystem(1)
              If B <> 0 Then Lcd "Errore MMC"
              '-------------------------------------------------------------------------------
              Bsync = 0
              Xreset = 0
              Xcs = 1

              Flag_play = 0
              Flag_read = 1
              '-------------------------------------------------------------------------------
              '-------------------------- PROGRAM START -------------------------------------
              '-------------------------------------------------------------------------------
              Cls
              '-------------------------------------------------------------------------------
              '---------------------- crea una lista dei brani mp3 presenti sulla MMC --------
              '-------------------------------------------------------------------------------
              Open "List.txt" For Output As #9
              S = Dir( "*.mp3&quot
              While Len(s) > 0
              Print S ; " " ; Filedate() ; " " ; Filetime() ; " " ; Filelen()
              Print #9 , S
              S = Dir()
              Wend
              Close #9
              '-------------------------------------------------------------------------------
              Locate 2 , 1
              Lcd "VS1011 Init"
              Vs_init
              '-------------------------------------------------------------------------------
              '--------------------------- MAIN PROGRAMM -------------------------------------
              '-------------------------------------------------------------------------------
              Do
              Open "List.txt" For Input As #9
              While Eof(#9) = 0
              Line Input #9 , S
              Call Send_mp3(s)
              Wend
              Close #9
              Loop
              End
              '-------------------------------------------------------------------------------
              '------------------------------ MP3 SUBROUTINES --------------------------------
              '-------------------------------------------------------------------------------
              Function Vs_read(byval Vs_address As Byte) As Word
              Xcs = 0
              B = Vs_rd
              Shiftout Vs_mosi , Vs_clock , B , 1
              Shiftout Vs_mosi , Vs_clock , Vs_address , 1
              B = 0
              Shiftin Vs_miso , Vs_clock , B , 1
              Vs_read = B
              Shift Vs_read , Left , 8
              B = 0
              Shiftin Vs_miso , Vs_clock , B , 1
              Vs_read = Vs_read + B
              Xcs = 1
              End Function
              '-------------------------------------------------------------------------------
              '-------------------------------- WRITE ROUTINE --------------------------------
              '-------------------------------------------------------------------------------
              Sub Vs_write(byval Vs_address As Byte , Byval Data1 As Byte , Byval Data2 As Byte)
              Xcs = 0
              B = Vs_wr
              Shiftout Vs_mosi , Vs_clock , B , 1
              Shiftout Vs_mosi , Vs_clock , Vs_address , 1
              Shiftout Vs_mosi , Vs_clock , Data1 , 1
              Shiftout Vs_mosi , Vs_clock , Data2 , 1
              Xcs = 1
              End Sub
              '-------------------------------------------------------------------------------
              '------------------------------------- RESET -----------------------------------
              '-------------------------------------------------------------------------------
              Sub Vs_init()
              Xreset = 0
              Waitms 5
              Xreset = 1
              Waitms 10

              Do : Led = Dreq : Loop Until Dreq = 1
              Vs_write Vs_mode , &H0 , &H4

              Do : Led = Dreq : Loop Until Dreq = 1
              Mode_low.7 = 1
              Vs_write Vs_mode , &H0 , Mode_low

              Do : Led = Dreq : Loop Until Dreq = 1
              Vs_write Vs_clockf , &H0 , &H0

              Do : Led = Dreq : Loop Until Dreq = 1
              Vs_write Vs_volume , &H0 , &H0

              End Sub
              '-------------------------------------------------------------------------------
              '--------------------------- SOFT RESET VS1001 ---------------------------------
              '-------------------------------------------------------------------------------
              Sub Soft_reset
              Do : Led = Dreq : Loop Until Dreq = 1
              Vs_write Vs_mode , &H0 , &H4
              End Sub
              '-------------------------------------------------------------------------------
              '---------------------------- SEND FILE MP3 ------------------------------------
              '-------------------------------------------------------------------------------
              Sub Send_mp3(byval Filename As String)
              Cls
              Lcd "Play : " ; Filename
              Soft_reset
              Flag_read = 1
              Flag_play = 0

              Open Filename For Binary As #10

              Do : Led = Dreq : Loop Until Dreq = 1

              While Eof(#10) = 0
              Get #10 , Mmc_data(1) , , 512
              Do : Led = Dreq : Loop Until Dreq = 1

              For I = 1 To 16
              For J = 1 To 32
              Bsync = 1
              Shiftout Vs_mosi , Vs_clock , Mmc_data(curbyte) , 1
              Bsync = 0
              Incr Curbyte
              Next J
              Do : Led = Dreq : Loop Until Dreq = 1
              Next I
              Curbyte = 1
              Debounce Avanti , 0 , Esci , Sub
              Flag_play = 1
              If Pind.1 = 0 And Volume_low < 250 Then
              Volume_hig = Volume_hig + 5
              Volume_low = Volume_low + 5
              Bsync = 0
              Vs_write Vs_volume , Volume_hig , Volume_low
              End If
              If Pind.2 = 0 And Volume_low > 0 Then
              Volume_hig = Volume_hig - 5
              Volume_low = Volume_low - 5
              Bsync = 0
              Vs_write Vs_volume , Volume_hig , Volume_low
              End If
              Wend

              Esci:
              Flag_play = 0
              Close #10
              For I = 1 To 2048
              B = 0
              Shiftout Vs_mosi , Vs_clock , B , 1
              Next I
              Locate 2 , 1
              Lcd "MP3 End"

              Waitms 100
              End Sub
              '-----------------------

              دیدگاه


                #22
                پاسخ : mp3 player بدون ic

                جناب mohsen23esf
                فکر میکنم صندوقتون پره؟
                Someone who can change the world
                ELECTRONIC ENGINEER

                دیدگاه


                  #23
                  پاسخ : mp3 player بدون ic

                  برا اینکه از صفر شروع نکنیم میشه رو همون مدار mp3 vs1011 ر.و برنامشو استفاده کنیم فقط قسمت دیکدودینگ رو تغییر بدیم؟ دقیقا کدوم قسمت میشه دوستان؟
                  این برنامه که فایل رو میفرسته به چیپ و چیپ دیکد رو انجام میده! ربطی به دیکد کردن Mp3 نداره.
                  در ضمن انتظار نداشته باشید برنامش یکی دو صفحه بشه!
                  [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                  دیدگاه


                    #24
                    پاسخ : mp3 player بدون ic

                    همکار نبود ؟

                    دیدگاه

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