Saturday 22 July 2017

Moving Average Filter Fpga


High Definition, Delay Rendah, Transmisi Video Berbasis SDR dalam Aplikasi UAV Transceiver gesit RF terpadu tidak hanya digunakan secara luas dalam arsitektur radio yang didefinisikan perangkat lunak (SDR) 1 di pangkalan telepon seluler, seperti multiservice distributed access system (MDAS) dan kecil Sel, tapi juga transmisi video HD nirkabel untuk aplikasi industri, komersial, dan militer, seperti kendaraan udara tak berawak (UAV). Artikel ini akan memeriksa implementasi rangkaian sinyal video nirkabel wideband menggunakan AD9361 AD9364 2,3 IC transceiver terintegrasi, jumlah data yang dikirimkan, bandwidth sinyal RF yang sesuai, jarak transmisi, dan daya pemancar. Ini juga akan menjelaskan penerapan lapisan PHY OFDM dan menyajikan hasil uji frekuensi hop hopping untuk menghindari interferensi RF. Akhirnya, kita akan membahas kelebihan dan kekurangan antara Wi-Fi dan transceiver gesit RF pada aplikasi nirkabel wideband. Rantai Sinyal Gambar 1 mengilustrasikan skema transmisi video nirkabel yang disederhanakan menggunakan AD9361AD9364 dan BBIC. Kamera menangkap gambar dan mentransmisikan data video ke prosesor baseband via Ethernet, HDMI reg. USB, atau antarmuka lain. Image codingdecoding dapat ditangani oleh perangkat keras atau FPGA. Bagian depan RF mencakup pengalih, LNA, dan PA ke transceiver terpadu yang dapat diprogram. Berapa Banyak Data Perlu Ditransmisikan Tabel 1 menunjukkan perbedaan ukuran yang signifikan antara kecepatan data yang tidak terkompres dan terkompresi. Dengan menggunakan video coding efisiensi tinggi (HEVC), juga dikenal sebagai H.265 dan MPEG-H Bagian 2, kita dapat menurunkan laju data dan menghemat bandwidth. H.264 saat ini adalah salah satu format yang paling umum digunakan untuk perekaman, kompresi, dan distribusi konten video. Ini menyajikan sebuah langkah maju yang besar dalam teknologi kompresi video dan merupakan salah satu dari beberapa penerus potensial AVC yang banyak digunakan (H.264 atau MPEG-4 Part 10). Tabel 1 merangkum kecepatan data terkompresi dan kompresi dalam format video yang berbeda. Asumsi meliputi kedalaman bit video 24 bit dan frame rate 60 fps. Pada contoh 1080p, kecepatan data 14,93 Mbps setelah kompresi, yang kemudian dapat dengan mudah ditangani oleh prosesor baseband dan lapisan PHY nirkabel. Tabel 1. Bandwidth Bandwidth Rate Compressed Bandwidth AD9361AD9364 mendukung bandwidth saluran dari lt200 kHz sampai 56 MHz dengan mengubah tingkat sampel, filter digital, dan penipisan. AD9361AD9364 adalah transceiver nol-IF dengan kanal I dan Q untuk mentransmisikan data kompleks. Data kompleks mencakup bagian nyata dan imajiner, sesuai dengan I dan Q masing-masing, yang menemukan pada bandwidth frekuensi yang sama untuk melipatgandakan efisiensi spektrum bila dibandingkan dengan satu bagian. Data video terkompresi dapat dipetakan ke saluran I dan Q untuk membuat titik konstelasi, yang dikenal sebagai simbol. Gambar 2 menunjukkan contoh QAM 16 di mana masing-masing simbol mewakili empat bit. Untuk sistem pengangkut tunggal, bentuk gelombang digital I dan Q harus melewati filter pembentuk pulsa sebelum DAC membentuk sinyal yang ditransmisikan dalam bandwidth terbatas. Filter FIR dapat digunakan untuk pembentukan pulsa, dan respons filter diilustrasikan pada Gambar 4. Untuk menjaga kesetiaan informasi, ada bandwidth sinyal minimum yang sesuai dengan tingkat simbol. Dan tingkat simbol sebanding dengan kecepatan data video terkompresi seperti yang ditunjukkan pada persamaan di bawah ini. Untuk sistem OFDM, data kompleks harus dimodulasi ke subcarrier menggunakan IFFT, yang juga mentransmisikan sinyal dalam bandwidth terbatas. Jumlah bit yang ditransmisikan dengan masing-masing simbol bergantung pada urutan modulasi. Di mana alpha adalah parameter bandwidth filter. Dari rumus sebelumnya, kita dapat menyimpulkan persamaan ini, Jadi kita dapat menghitung bandwidth sinyal yang diduduki RF seperti yang dirangkum pada Tabel 2. Tabel 2. Bandwidth Sinyal RF yang Diduduki dengan Jenis Modulasi Order (alpha 0,25) AD9361AD9364, dengan sinyal hingga 56 MHz Bandwidth, mendukung semua transmisi video format Tabel 2 dan bahkan frame rate yang lebih tinggi. Modulasi orde tinggi menempati bandwidth yang lebih kecil dan simbol mewakili lebih banyak informasi, namun SNR yang lebih tinggi dibutuhkan untuk melakukan demodulasi. Jarak Transmisi dan Daya Transmitter Dalam aplikasi seperti UAV, jarak transmisi maksimum adalah parameter kritis. Namun, sama pentingnya komunikasi tidak terputus bahkan pada jarak yang terbatas. Oksigen, air, dan hambatan lainnya (kecuali redaman ruang bebas) bisa menipiskan sinyalnya. Gambar 6 menunjukkan model kehilangan saluran komunikasi nirkabel. Sensitivitas penerima biasanya diambil sebagai sinyal input minimum (S min) yang diperlukan untuk melakukan demodulasi atau pemulihan informasi dari pemancar. Setelah mendapatkan sensitivitas receiver, jarak transmisi maksimum dapat dihitung dengan beberapa asumsi, seperti yang ditunjukkan di sini: (SN) min adalah rasio sinyal-ke-noise minimum yang diperlukan untuk memproses sinyal NF adalah figur noise pada receiver k adalah Boltzmannrsquos Konstan 1,38 kali 10 ndash23 joulek T 0 adalah suhu absolut dari input penerima (Kelvin) 290 KB adalah bandwidth penerima (Hz) Parameter (SN) min tergantung pada urutan modulasidemodulasi. Dengan SNR yang sama, modulasi orde rendah mendapatkan error simbol yang lebih rendah, dan dengan kesalahan simbol yang sama, modulasi orde tinggi membutuhkan SNR yang lebih tinggi untuk melakukan demodulasi. Jadi ketika pemancar jauh dari penerima, sinyal lebih lemah dan SNR tidak dapat mendukung demodulasi orde tinggi. Agar pemancar tetap online dan mempertahankan format video dengan kecepatan data video yang sama, baseband harus menggunakan modulasi orde rendah dengan mengorbankan peningkatan bandwidth. Ini membantu memastikan gambar yang diterima tidak buram. Untungnya, radio yang didefinisikan perangkat lunak dengan modulasi digital dan demodulasi menawarkan kemampuan untuk mengubah modulasi. Analisis sebelumnya didasarkan pada asumsi bahwa daya RF pemancar konstan. Sementara daya pemancar RF yang lebih besar dengan gain antena yang sama akan menjangkau penerima yang lebih jauh dengan sensitivitas penerima yang sama, daya pemancar maksimum harus sesuai dengan standar radiasi FCCCE. Selain itu, frekuensi pembawa akan memiliki pengaruh pada jarak transmisi. Saat gelombang menyebar melalui ruang angkasa, ada kerugian akibat dispersi. Kehilangan ruang bebas ditentukan oleh Di mana R adalah jaraknya, lambda adalah panjang gelombang, f adalah frekuensi, dan C adalah kecepatan cahaya. Oleh karena itu, frekuensi yang lebih besar akan memiliki lebih banyak kerugian dari jarak ruang bebas yang sama. Misalnya, frekuensi pembawa pada 5,8 GHz akan dilemahkan lebih dari 7,66 dB dibandingkan dengan 2,4 GHz pada jarak transmisi yang sama. Frekuensi RF dan Switching AD9361AD9364 memiliki rentang frekuensi yang dapat diprogram dari 70 MHz sampai 6 GHz. Ini akan memenuhi sebagian besar aplikasi frekuensi NLOS, termasuk berbagai jenis frekuensi berlisensi dan tidak berlisensi, seperti 1,4 GHz, 2,4 GHz, dan 5,8 GHz. Frekuensi 2,4 GHz banyak digunakan untuk Wi-Fi, Bluetooth reg. Dan komunikasi singkat dari IOD, sehingga semakin ramai. Menggunakannya untuk transmisi video nirkabel dan sinyal kontrol meningkatkan kemungkinan gangguan sinyal dan ketidakstabilan. Hal ini menciptakan situasi yang tidak diinginkan dan sering berbahaya bagi UAV. Menggunakan frekuensi switching untuk menjaga frekuensi bersih akan menjaga agar data dan koneksi kontrol lebih dapat diandalkan. Saat pemancar merasakan frekuensi yang ramai, otomatis akan beralih ke band lain. Sebagai contoh, dua UAV menggunakan frekuensi dan beroperasi dalam jarak dekat akan mengganggu komunikasi other otherququos. Secara otomatis mengganti frekuensi LO dan memilih ulang pita akan membantu menjaga hubungan nirkabel yang stabil. Adaptif memilih frekuensi pembawa atau saluran selama periode power-up adalah salah satu fitur unggulan UAV kelas atas. Frekuensi Hopping Lompatan frekuensi cepat, yang banyak digunakan pada electronic countermeasures (ECM), juga membantu menghindari gangguan. Biasanya jika kita ingin hop frekuensi, PLL perlu relock setelah prosedur. Ini termasuk menulis register frekuensi, dan melewati waktu kalibrasi VCO dan waktu penguncian PLL sehingga interval frekuensi hopping mendekati ratusan mikrodetik. Gambar 7 menunjukkan contoh frekuensi pemancar LO dari 816.69 MHz menjadi 802,03 MHz. AD9361 digunakan dalam mode perubahan frekuensi normal dan frekuensi keluaran RF pemancar melonjak dari 814.69 MHz menjadi 800.03 MHz dengan frekuensi referensi 10 MHz. Waktu frekuensi melompat diuji dengan menggunakan E5052B seperti yang ditunjukkan pada Gambar 7. Kalibrasi VCO dan waktu kunci PLL sekitar 500 mikron sesuai dengan Gambar 7b. Alat analisis sumber sinyal E5052B dapat digunakan untuk menangkap respons PLL sementara. Gambar 7a menunjukkan mode pengukuran transient wideband, sedangkan Gambar 7b dan 7d memberikan resolusi resolusi frekwensi dan fase transien yang sangat baik dengan frekuensi hopping. Gambar 7c menunjukkan respons daya output. 500 mikron adalah interval yang sangat panjang untuk aplikasi hopping. Namun, AD9361AD9364 menyertakan mode kunci cepat yang memungkinkan untuk dicapai lebih cepat dari pada perubahan frekuensi normal dengan menyimpan kumpulan informasi pemrograman synthesizer (disebut profil) di register devicersquos atau ruang memori processorrsquos baseband. Gambar 8 menunjukkan hasil pengujian dengan menggunakan mode fast lock untuk menerapkan frekuensi hopping dari 882 MHz ke 802 MHz. Waktunya turun sampai kurang dari 20 mikron, sesuai dengan respons fase Gambar 8d. Kurva fasa ditarik dengan mengacu pada fase 802 MHz. Waktu penulisan SPI dan waktu kalibrasi VCO keduanya dieliminasi dalam mode itu karena informasi frekuensi dan hasil kalibrasi disimpan dalam profil. Seperti yang dapat kita lihat, Gambar 8b menunjukkan kemampuan melompat cepat dari AD9361AD9364. Implementasi divisi multiplexing frekuensi Orthogonal PHY LayermdashOFDM (OFDM) adalah bentuk modulasi sinyal yang membagi arus modulasi laju data tinggi ke banyak subcarrier jarak dekat sempit yang diodulasi dengan lamban. Hal ini membuatnya kurang sensitif terhadap frekuensi frase selektif. Kelemahannya adalah puncak yang tinggi terhadap rasio daya rata-rata dan sensitivitas terhadap carrier offset dan drift. OFDM banyak diterapkan pada lapisan komunikasi nirkabel wideband PHY. Teknologi kritis OFDM meliputi IFFTFFT, sinkronisasi frekuensi, sinkronisasi waktu sampling, dan sinkronisasi simbolframe. IFFTFFT harus diimplementasikan melalui FPGA dengan cara tercepat. Hal ini juga sangat penting untuk memilih interval subcarrier. Interval harus cukup besar untuk menahan komunikasi mobilitas dengan pergeseran frekuensi Doppler dan cukup kecil untuk membawa lebih banyak simbol dalam bandwidth frekuensi terbatas untuk meningkatkan efisiensi spektrum. COFDM mengacu pada kombinasi teknologi pengkodean dan modulasi OFDM. COFDM dengan ketahanan tinggi terhadap redaman sinyal dan koreksi kesalahan ke depan (FEC) dapat mengirim sinyal video dari benda yang bergerak. Encoding akan meningkatkan bandwidth sinyal namun biasanya bernilai trade-off. Dengan menggabungkan desain berbasis model dan alat pembuat kode otomatis dari MathWorks dengan Xilinx reg Zynq SoCs dan Analog Devices yang terintegrasi, transceiver RF, desain sistem SDR, verifikasi, pengujian, dan implementasi dapat lebih efektif daripada sebelumnya, yang mengarah ke radio berkinerja lebih tinggi. Sistem dan mengurangi waktu ke pasar. 7 Apa Keuntungan dari Wi-Fi Drones yang dilengkapi dengan Wi-Fi sangat mudah terhubung ke ponsel, laptop, dan perangkat mobile lainnya, yang membuat mereka sangat nyaman digunakan. Tapi untuk transmisi video nirkabel di aplikasi UAV, solusi FPGA plus AD9361 menawarkan banyak kelebihan dibanding Wi-Fi. Pertama-tama, di layer PHY, switching frekuensi tangkas dan cepat melompat dari AD9361AD9364 membantu menghindari gangguan. Sebagian besar chip Wi-Fi terintegrasi juga beroperasi pada pita frekuensi 2,4 GHz yang berkokok dan tidak memiliki mekanisme pemilihan pita frekuensi untuk membuat koneksi nirkabel lebih stabil. Kedua, dengan solusi FPGA plus AD9361, protokol transmisi dapat didefinisikan dan dikembangkan secara fleksibel oleh perancang. Protokol Wi-Fi standar dan berdasarkan jabat tangan dua arah dengan setiap paket data. Dengan Wi-Fi, setiap paket data harus memastikan bahwa paket telah diterima, dan bahwa semua 512 byte dalam paket telah diterima secara utuh. Jika satu byte hilang, seluruh paket 512 byte harus dikirim kembali. 8 Meskipun protokol ini memastikan keandalan data, namun rumit dan memakan waktu untuk membangun kembali tautan data nirkabel. Protokol TCPIP akan menyebabkan latency tinggi yang menghasilkan video dan kontrol nonreal-time, yang dapat menyebabkan kecelakaan UAV. Solusi SDR (FPGA plus AD9361) menggunakan aliran data satu arah, yang berarti dengung di langit mentransmisikan sinyal video seperti siaran TV. Tidak ada waktu untuk mengirim ulang paket saat video real-time menjadi tujuannya. Selain itu, Wi-Fi tidak menawarkan tingkat keamanan yang tepat untuk banyak aplikasi. Dengan memanfaatkan algoritma enkripsi dan protokol yang ditentukan pengguna, solusi FPGA plus AD9361AD9364 jauh lebih rentan terhadap ancaman keamanan. Selanjutnya, salah satu cara menyiarkan aliran data memberikan kemampuan jarak transmisi dua sampai tiga kali pendekatan Wi-Fi. 8 Fleksibilitas dari kemampuan radio yang ditentukan perangkat lunak memungkinkan penyesuaian modulasi digital untuk memenuhi persyaratan jarak atau dan menyesuaikan diri dengan perubahan SNR di lingkungan radiasi ruang yang kompleks. Kesimpulan Artikel ini menggambarkan parameter kritis penggunaan solusi FPGA plus AD9361AD9364 untuk implementasi transmisi video definisi tinggi. Dengan perpindahan pita frekuensi tangkas dan frekuensi melompat cepat, dimungkinkan untuk membuat tautan nirkabel yang lebih stabil dan andal untuk menahan radiasi yang semakin kompleks di ruang angkasa dan mengurangi kemungkinan kecelakaan. Pada lapisan protokol, solusinya lebih fleksibel, menggunakan transmisi satu arah untuk mengurangi waktu pembentukan nirkabel dan menciptakan koneksi latency yang lebih rendah. Dalam aplikasi industri dan komersial seperti pertanian, inspeksi jalur listrik, dan pengawasan, transmisi yang stabil, aman, dan andal sangat penting untuk kesuksesan. Referensi 2 AD9361 lembar data. Analog Devices, Inc. 3 AD9364 lembar data. Analog Devices, Inc. 4 Ken Gentile. Catatan Aplikasi AN-922, Dasar-Dasar Dasar Pembuatan Pulse Digital. Analog Devices, Inc. 5 Scott R. Bullock. Desain Transceiver dan Sistem untuk Komunikasi Digital. Edisi ke-4 SciTech Publishing, Edison, NJ, 2014. Wei Zhou adalah seorang insinyur aplikasi untuk Analog Devices, Inc. yang mendukung desain dan pengembangan produk dan aplikasi transceiver RF, terutama di bidang transmisi video nirkabel dan bidang komunikasi nirkabel. Dia telah bekerja di Pusat Aplikasi Pusat ADI yang berlokasi di Beijing, China, selama lima tahun mendukung berbagai produk termasuk DDS, PLL, DACADC kecepatan tinggi, dan jam. Sebelum bergabung dengan ADI, ia menerima B. S. Gelar dari Universitas Wuhan, Wuhan, China, pada tahun 2006, dan M. S. Gelar dari Institute of Electronics, Chinese Academy of Science (CAS), Beijing, China, pada tahun 2009. Dia bekerja sebagai sirkuit RF dan microwave dan insinyur desain sistem untuk perusahaan teknologi dirgantara dari tahun 2009 sampai 2011. Artikel Terkait Produk Terkait RF Agile TransceiverEmbedded Teknik Di pos. Saya akan menunjukkan cara menerapkan filter filter rata-rata sederhana yang mungkin dilakukan. Meski sangat mudah diimplementasikan namun masih dalam banyak aplikasi ini lebih dari cukup baik. Misalnya mengurangi noise acak dari sinyal. Ofcourse ketika sangat sederhana itu memang memiliki masalah seperti. Tidak ada respon filter yang sangat tajam. Masukan saluran 1 Menyapu dari 20Hz sampai 6Khz, Channel 4 (Green) 15 titik disaring output, M (Red) output di domain freq Sabtu, 1 Oktober 2016 Proyek ini adalah bagian terakhir dalam Membuat Cahaya Surya yang sangat kuat. Dalam proyek ini kami mengenalkan LTC3478 berbasis philips driver Driver dan BQ24650 Berbasis MPPT Solar Li-Ion charge Controller. Kami akan menggunakan total 3 9 Watt masing-masing papan Driver LED dan satu pengendali biaya untuk mengisi baterai Cell 76 20000mah li-lion 6 Cell, Ada 4 tampilan grafik batang LED untuk menunjukkan perkiraan tingkat baterai dan satu tombol untuk mengendalikan Onoff, Tingkat yang Berbeda Kecerahan. Dan pilih salah satunya. Semua atau beberapa papan LED menyala. Tidak banyak yang bisa dijelaskan dalam hal schmeatic dan firmware karena semua Firmware dan Schmeatic aer sudah ada di akun github saya. Panel antarmuka pengguna terbuat dari PCB dengan 4 status baterai LED port untuk panel surya Connector dan tombol kontrol. Bila baterai chargin status LED ditampilkan sesuai dan saat baterai diberhentikan, status pemuatan diperbarui sesuai dengan itu. Sebagai tambahan pada proyek pencahayaan matahari kecil yang sedang saya tangani, saya telah menciptakan pengontrol biaya matahari kecil ini untuk mengisi baterai lithium ion (li-ion). Sirkuit Memanfaatkan Texas Instrument BQ24650 di jantung lingkaran untuk mengendalikan muatan. Karena rangkaian memiliki MOSFET eksternal sehingga arus maksimum 160charge dapat disesuaikan dengan nilai yang sangat tinggi. 160Circuit menerima Nilai Panel Surya dari 5V ke 28V. Saya telah mengujinya dengan nominal 12V (17Volts open circuit) 160. dan 24 Volts nominal panel surya pada Battery Charge current hingga 4A. Saat ini dipasang di rumah saya sejak beberapa bulan Mengisi baterai mah li-ion 20000. Sirkuit memiliki konektor arus besar dengan kapasitas 4 pin Molex untuk panel surya. 6 pin konektor untuk baterai dan beban beralih. Hal ini juga memungkinkan untuk menghubungkan NTC untuk pemantauan temprature baterai. BQ24650 bisa otomatis memantau temprature baterai. Mikrokontroler telah mendedikasikan 3 output PWM untuk LED redup dan 6 gpio pin header untuk status yang lebih baik yang dipimpin dan tombol antarmuka pengguna. Hallo zu Deutsch Leser. Das ist mein erste Artikel auf Deutsch. Saya habe viel aufrufe aus Deutschland deshalb Jetzt ab, ich werde auch auf Deutsch publizieren weil ich Detusch lerne und ich mchte mehr bungen. Jedes Artikel wird auf Deutsch und English. wenn wir Widerspruch zwischen dem Artikel auf Deutsch und Englisch haben, die English berwiegt weil Meine erfahrungen auf deutsch kurze ist.160 160 160 160Jadi beginnen wir. Heutzutage arbeite ich sebuah proin Proin. QuotMPPT Solar li-ion Laderquot. Bei diesem projekt brauche ich eine160sehr160vollmacht 25W LED leicht. Aber 25W ist viel fur ein160LED-Triber. Es erforden viele kentnisse ein 25 W LED-Triber zu entwerfen. Hauptsorge auf die Projket quotMPPT Solar - lon Laderquot ist zu Lernen wie der MPPT Larder Arbeitet dan matikan perangkat lunak Algorithmus sind. Das Projektin ein teil von ein Projekt adalah publiziere ich spter.160 160 160 160 Terus terang saya sedang mengerjakan proyek pencahayaan Solar ringan , Saya membutuhkan lampu penerangan 25W 160LED yang sangat terang. Tapi masalah untuk 25W itu banyak kekuatan untuk LED dan memerlukan beberapa keterampilan untuk membuat seperti driver LED watt tinggi. Tujuan utama dari proyek ini adalah untuk mendapatkan pengetahuan tentang pengontrol muatan MPPT dan algoritma pengisian daya MPPT. Proyek ini merupakan bagian dari proyek. Yang akan saya posting nanti. 160160160 Posting ini akan menjadi bagian ke 4 dalam rangkaian pembuatan Board ARM yang mampu Linux di rumah. Klik Pertama. Kedua dan ketiga untuk pergi ke bagian sebelumnya, jadi mari kita mulai. Apa itu Bootloader, Mengapa kita membutuhkannya? Boot loader adalah program yang merupakan program pertama yang dijalankan oleh CPU. Ini menghasilkan beberapa tujuan yang sangat spesifik untuk menentukan beberapa hal yang sangat penting sebelum memuat program utama (mungkin OS) ke dalam memori utama. Itulah sebabnya disebut boot loader. Tergantung pada kebutuhan boot loader mungkin melakukan beberapa tugas lain (kita akan membahasnya disini). Ada berbagai bentuk dan ukuran bootloader. Mereka semua melayani tujuan yang hampir sama. Dengan mikrokontroler Beberapa kali tidak benar-benar memuat program utama ke dalam memori tapi meneruskan pointer eksekusi ke program utama sehingga program utama dapat berjalan langsung membentuk memori di tempat itu. Board Dengan LCD 4,3 inci yang menjalankan aplikasi Qt5 untuk menampilkan Gambar JPEG dan Penerima GPS TimeHomemade Digambarkan di atas adalah mixer mixer depan dan penguat pertama dari penerima GPS eksperimental. SMA paling kiri terhubung ke antena komersial dengan filter LNA dan SAW integral. Osilator lokal pertama yang disintesis menggerakkan SMA bagian bawah. Pin header ke kanan adalah input power dan output IF. Yang terakhir terhubung ke FPGA Xilinx yang tidak hanya melakukan DSP, tapi juga menampung synthesizer frekuensi pecahan-N. Lebih lanjut tentang ini nanti. Saya termotivasi untuk merancang receiver ini setelah membaca karya Matjax017E Vidmar, S53MV, yang mengembangkan receiver GPS dari nol, menggunakan komponen yang sangat terpisah, lebih dari 20 tahun yang lalu. Penggunaan DSP-nya mengikuti IF yang membatasi dan ADC 1-bit yang menarik perhatian saya. Penerima yang dijelaskan di sini bekerja berdasarkan prinsip yang sama. ADC 1-bitnya adalah IC 6-pin di dekat pin header, sebuah komparator LVDS-output. Tersembunyi di bawah kebisingan namun tidak dilenyapkan dalam bi-level quantised bubur yang muncul adalah sinyal dari setiap satelit yang di lihat. Semua satelit GPS mentransmisikan pada frekuensi yang sama, 1575,42 MHz, menggunakan direct sequence spread spectrum (DSSS). Pembawa L1 tersebar di atas bandwidth 2 MHz dan kekuatannya di permukaan Bumi adalah -130 dBm. Kekuatan thermal noise pada bandwidth yang sama adalah -111 dBm, jadi sinyal GPS pada antena penerima adalah 20 dB di bawah lantai kebisingan. Bahwa salah satu sinyal yang ada, dilapiskan satu pada yang lain dan dikubur dalam kebisingan, dapat dipulihkan setelah kuantisasi tingkat dua nampak kontra intuitif, saya menulis sebuah simulasi untuk meyakinkan diri saya sendiri. GPS bergantung pada sifat korelasi urutan pseudo-random yang disebut Gold Codes untuk memisahkan sinyal dari noise dan satu sama lain. Setiap satelit mentransmisikan urutan yang unik. Semua sinyal yang tidak berkorelasi adalah kebisingan, termasuk kesalahan kuantisasi satelit dan hard-limiter lainnya. Mencampur dengan kode yang sama pada fase yang benar de-menyebarkan sinyal yang diinginkan dan selanjutnya menyebarkan hal-hal lain. Sempit-band penyaringan kemudian menghapus suara pita lebar tanpa mempengaruhi (sekali lagi mempersempit) sinyal yang diinginkan. Hard-limiting (1-bit ADC) mendegradasi SNR kurang dari 3 dB, sebuah harga layak bayar untuk menghindari hardware AGC. Update Mei 2013 Sekarang ini receiver GPS 12-channel yang benar-benar portabel, bertenaga baterai, dengan perangkat lunak turnkey, yang mengakuisisi dan melacak satelit, dan terus menghitung ulang posisinya, tanpa campur tangan pengguna. Sistem lengkap (di bawah, kiri) terdiri dari: layar LCD 16x2, komputer model Raspberry Pi A, dua papan sirkuit cetak kustom, antena patch komersial dan baterai Li-Ion. Total konsumsi sistem saat ini adalah 0.4A untuk masa pakai baterai 5 jam. Raspberry Pi didukung melalui kabel pita yang menghubungkan header GPIO-nya ke papan FPGA Frac7 dan tidak memerlukan koneksi lain. Saat ini, Pi menjalankan Raspbian Linux. Sebuah distro yang lebih kecil akan memperpendek waktu untuk memperbaiki terlebih dahulu. Setelah melakukan booting dari SD-Card, perangkat lunak aplikasi GPS akan dimulai secara otomatis. Saat keluar, ini memberi cara untuk benar mematikannya sebelum menyalakan power-off. Pengembangan perangkat lunak Pi dilakukan tanpa kepala melalui SSH dan FTP melalui dongle USB Wi-Fi. Kode sumber dan dokumentasi dapat ditemukan di bagian bawah halaman ini. Kedua PCB custom adalah papan PTH 2 lapis sederhana dengan bidang tanah kontinyu di bagian bawah. Pergi searah jarum jam di sekitar Spartan Xilinx 3 pada papan FPGA Frac7: dari 12 oclock sampai 3 oclock adalah filter loop, VCO, power splitter dan prescaler dari synthesizer frekuensi gelombang mikro tepat di bawah adalah joystick dan konektor JTAG dan, pada 6 oclock, a Pin header untuk kabel pita Raspberry Pi. Jauh ke kiri adalah konektor LCD. Di dekat kiri adalah osilator kristal terkontrol voltase dengan kompensasi suhu (TCVCXO) yang menyediakan frekuensi referensi yang stabil, penting untuk penerimaan GPS. TCVCXO bagus namun tidak sesuai dengan standar GPS saat mengoperasikan un-boxed di lokasi berangin. Hembusan di atasnya menggantikan osilator kristal 10.000000 MHz sekitar 1 bagian dalam 10 juta atau 1 Hz, yang diperbesar 150 kali oleh PLL synthesizer. Ini cukup untuk sementara membuka loop pelacak satelit, jika dilakukan tiba-tiba. Perangkat juga sedikit sensitif terhadap infra merah mis. Dari lampu halogen dan remote TV Ketika pertama kali diposting pada tahun 2011, ini adalah penerima empat saluran, yang berarti hanya bisa melacak empat satelit secara bersamaan. Setidaknya ada empat yang dibutuhkan untuk memecahkan bias posisi pengguna dan penerima namun akurasi yang lebih besar dimungkinkan dengan lebih banyak. Dalam versi aslinya, empat contoh modul tracker yang identik memenuhi FPGA. Tapi sebagian besar jepit hanya diberi clock sekali per milidetik. Sekarang, CPU soft-core kustom di dalam FPGA serializes pengolahan dan hanya 50 dari kain FPGA yang dibutuhkan untuk penerima 8 saluran atau 67 untuk 12 saluran. Jumlah saluran adalah parameter dalam sumber dan bisa naik lebih tinggi. Keakuratan posisi paling baik bila antena bisa melihat 360deg langit dan menerima sinyal dari segala arah. Umumnya, semakin banyak satelit yang di lihat, semakin baik. Dua atau lebih satelit pada bantalan yang sama dapat menyebabkan apa yang disebut geometri buruk. Perbaikan terbaik sejauh ini adalah plusmn1 meter di lokasi yang sangat terbuka dengan menggunakan 12 satelit namun ketepatannya biasanya berukuran plusmn5 meter di lokasi yang lebih miskin dengan satelit yang lebih sedikit. September 2014 Update Kode sumber untuk proyek ini telah dirilis ulang di bawah GNU General Public License (GPL). Pengolahan Arsitektur dibagi antara FPGA dan Pi oleh kompleksitas dan urgensi. Pi menangani latihan intensif matematika dengan kecepatannya sendiri. FPGA mensintesis osilator lokal pertama, layanan acara dengan prioritas tinggi secara real-time dan melacak satelit secara mandiri. Pi mengendalikan FPGA melalui antarmuka SPI. Mudah, SPI yang sama digunakan untuk memuat konfigurasi FPGA bitstream dan kode biner yang dapat dieksekusi untuk CPU yang disematkan. FPGA juga dapat dikendalikan melalui kabel JTAG Platform Xilinx USB dari PC Windows dan mendeteksi secara otomatis antarmuka mana yang sedang digunakan. Frekuensi L1 diubah turun menjadi 1 JIKA 22,6 MHz dengan mencampur dengan osilator lokal 1552,82 MHz pada papan depan GPS3. Semua pemrosesan sinyal IF dan baseband berikutnya dilakukan secara digital di FPGA. Dua pengendali proporsional-integral (PI) per satelit, pembawa jalur dan fase kode. Data NAV yang dikirimkan oleh satelit dikumpulkan dalam memori FPGA. Ini diupload ke Pi, yang memeriksa paritas dan mengekstrak ephemerides dari aliran bit. Bila semua parameter orbital yang dibutuhkan dikumpulkan, sebuah snapshot diambil dari counter FPGA internal tertentu, dari mana waktu transmisi dihitung menjadi presisi 15n plusmn. Sebagian besar synthesizer 1552.82 MHz diimplementasikan di FPGA. Orang mungkin mengharapkan masalah jitter, co-hosting detektor fasa dengan logika lain, tapi berhasil. Synthesizer output spektral-kemurnian sangat baik, meskipun inti FPGA toggling pergi dengan marah dan tidak semua pada harmonis-frekuensi terkait. Pendekatan ini diambil karena sebuah dewan yang mirip dengan Frac7 sudah ada dari proyek synthesizer sebelumnya. Menambahkan front-end adalah rute terpendek ke receiver prototipe. Tapi versi pertama tidak portabel: itu memiliki persyaratan daya yang tidak nyaman dan tidak ada standar frekuensi on-board. Pengolahan sinyal sampai dan termasuk hard-limiter: Komparator LMH7220 memiliki tegangan offset masukan maksimal 9.5mV. Kebisingan termal yang diperkuat harus dengan nyaman melebihi ini agar tetap aktif. Sinyal GPS yang lemah hanya mempengaruhi komparator di dekat penyeberangan nol. Mereka diambil sampel oleh kebisingan. Untuk memperkirakan tingkat kebisingan pada input komparator, kita menumpuk keuntungan, kerugian penyisipan dan angka kebisingan: Suara in-band pada output mixer adalah -1740.828-1.5-3.920- 610log10 (2,5e6) -73 dBm atau 52microV RMS. Alat pencampur dilepas secara resistif dalam 50-ohm dan tahap selanjutnya bekerja pada impedansi yang lebih tinggi. Strip IF diskrit memiliki gain tegangan keseluruhan 1000 sehingga tingkat masukan komparator adalah RMS 52mV. LMH7220 menambahkan 59 dB gain yang menghasilkan total 119 dB untuk keseluruhan IF. Menyebarkan begitu banyak keuntungan pada satu frekuensi adalah sebuah risiko. Untuk meminimalkannya, sirkuit seimbang di atas bidang tanah padat digunakan dan disaring twisted-pair membawa keluaran ke FPGA. Motivasi itu sederhana, menghindari pertobatan kedua. Dalam prakteknya, sirkuitnya stabil, sehingga berjudi terbayar. Active decoupler Q1 memasok 5V untuk remote LNA. Penguat MMIC U2 memberikan gain 20 dB (tidak pada IF) dan memastikan angka noise sistem secara keseluruhan rendah, bahkan jika kabel antena panjang digunakan. L1 dan L2 adalah choke dengan luka tangan dengan frekuensi resonansi diri yang sangat tinggi, dipasang tegak lurus satu sama lain dan bersih dari bidang tanah. Angin 14 berbelok, berventilasi air, berdiameter 1 mm dari panjang kawat tembaga kawat tembaga sepanjang 7cm. Diperiksa dengan generator pelacakan pada SA Marconi 2383, ini bagus untuk 4 GHz. DBM Mini-Circuits MBA-15L dipilih karena kehilangan konversi 6 dB yang rendah pada 1,5 GHz dan kebutuhan hard drive 4 dBm rendah. R9 mengakhiri port IF. Tiga tahap penguat IF diferensial sepenuhnya mengikuti mixer. Sirkuit paralel Q-rendah yang digantung di antara kolektor mengatur bandwidth -3 dB sekitar 2,5 MHz dan mencegah pembentukan offset DC. L4, L5 dan L6 disaring kumparan Toko 7mm. BFS17 dipilih untuk tinggi (tapi tidak terlalu tinggi) 1 GHz f T. Saya adalah 2mA untuk noise terendah dan betar wajar. The 22.6 MHz 1st JIKA digital down-dikonversi menjadi 2,6 MHz oleh under-sampling pada 10 MHz di FPGA. 2,6 MHz terletak dekat dengan pusat bandwidth Nyquist 5 MHz. Cara terbaik adalah menghindari pusat yang tepat, untuk alasan yang akan dijelaskan nanti. Beberapa frekuensi IF pertama lainnya dimungkinkan: 27,5 MHz, yang menghasilkan inversi spektrum pada IF 2, juga telah berhasil dicoba. Ada trade-off antara masalah gambar pada gain BFS17 yang lebih rendah dan yang tersedia pada frekuensi yang lebih tinggi. Deteksi sinyal memerlukan pemecahan tiga hal yang tidak diketahui: satelit apa yang ada dalam pandangan, pergeseran dan fase kode Doppler mereka. Pencarian sekuensial dari ruang tiga dimensi ini dari awal yang dingin disebut bisa memakan waktu beberapa menit. Awal yang hangat menggunakan data almanak untuk memprediksi posisi dan kecepatan masih memerlukan pencarian kode. Semua 1023 tahap kode harus diuji untuk mengetahui puncak korelasi maksimum. Menghitung 1023 korelasi integral dalam domain waktu sangat mahal dan berlebihan. Penerima GPS ini menggunakan algoritma berbasis FFT yang menguji semua fase kode secara paralel. Dari dingin, dibutuhkan 2,5 detik pada Pentium 1,7 GHz untuk mengukur kekuatan sinyal, pergeseran Doppler dan fase kode setiap satelit yang terlihat. Raspberry Pi agak lebih lambat. Dengan over-bar yang menunjukkan konjugasi, fungsi korelasi silang y (Tau) dari sinyal kompleks s (t) dan kode c (t) digeser oleh offset Tau adalah: Teorema Korelasi menyatakan bahwa transformasi Fourier dari integral korelasi sama dengan Produk konjugat kompleks dari transformasi Fourier dari fungsi pertama dan transformasi Fourier dari fungsi kedua: FFT (y) CONJUGATE (FFT (s)) FFT (c) Korelasi dilakukan pada baseband. Kode CA 1.023 Mbps adalah 1023 chip atau 1ms. Panjang FFT ke depan harus kelipatannya. Sampling pada 10 MHz untuk 4 ms menghasilkan ukuran bin FFT 250 Hz. 41 Pergeseran doppler harus diuji dengan memutar data domain frekuensi, satu bin pada satu waktu, sampai plusmn20 bins plusmn5 KHz. Rotasi bisa diaplikasikan ke salah satu fungsi. The 22.6 MHz 1st IF dari ADC 1 bit kurang sampel dengan clock 10 MHz di FPGA, secara digital mengubahnya menjadi 2 IF 2.6 MHz. Dalam perangkat lunak, JIKA ke-2 diubah menjadi baseband kompleks (IQ) dengan menggunakan osilator lokal kuadratur. Untuk sinyal tingkat dua, mixer adalah gerbang XOR sederhana. Meskipun tidak ditunjukkan di atas, sampel sementara buffer dalam memori FPGA. Pi tidak dapat menerima mereka pada 10 Mbps. 1,023 Mbps dan 2,6 MHz dihasilkan oleh akumulator fase terkontrol-osilator (NCO). Frekuensi ini cukup besar dibandingkan dengan laju sampling, dan bukan sub harmonik yang tepat darinya. Akibatnya, NCO memiliki taji fraksional. Jumlah sampel per kode chip dithers antara 9 dan 10. Untungnya, receiver DSSS toleran terhadap interferer band sempit, eksternal atau self-generated. Baseband kompleks ditransformasikan ke domain frekuensi oleh FFT ke depan yang hanya perlu dihitung satu kali. Sebuah FFT dari setiap kode CA satelit telah dihitung sebelumnya. Waktu pemrosesan didominasi oleh loop paling dalam yang melakukan pergeseran, konjugasi, perkalian kompleks dan satu invers-FFT per uji satelit-Doppler. GPU Raspberry Pis Videocore bisa dimanfaatkan untuk mempercepatnya. Pada tingkat sampling 10 MHz, fase kode dipecahkan sampai 100ns terdekat. Output CCF khas diilustrasikan di bawah ini: Menghitung daya puncak ke rata-rata di atas data ini memberikan perkiraan SNR yang baik dan digunakan untuk menemukan sinyal terkuat. Berikut ini diterima pada pukul 20:14 GMT pada tanggal 4 Maret 2011 di Cambridge, Inggris dengan antena di tepi luar yang menghadap ke utara: Dari garis lintang utara, lebih banyak satelit GPS umumnya dapat ditemukan di langit selatan yaitu menuju khatulistiwa. Mengambil sampel yang lebih lama meningkatkan SNR, menunjukkan sinyal yang lebih lemah namun pembatalan terjadi saat penangkapan mencakup transisi data NAV. FFT Forward Forward adalah jumlah integral milidetik, FFT terbalik bisa dipersingkat, cukup dengan membuang data di tempat sampah frekuensi yang lebih tinggi. SNR dipertahankan namun fase kode tidak begitu terpecahkan. Namun demikian, perkiraan posisi puncak yang baik diperoleh dengan rata-rata tertimbang dua tempat sampah terdekat dan uji di luar pesawat menunjukkan ini bisa bekerja bahkan sampai ke panjang FFT terbalik. Setelah mendeteksi sinyal, langkah selanjutnya adalah penguncian, pelacakan dan demodulasi data NAV 50 bps. Ini memerlukan dua loop terkunci fase inter-dependent (PLLs) untuk melacak fase kode dan carrier. PLL ini harus beroperasi secara real-time dan diimplementasikan sebagai fungsi DSP di FPGA. Perangkat lunak Pi memiliki peran pengawasan: menentukan satelit mana yang akan dilacak, memantau status kunci dan memproses data NAV yang diterima. Pelacakan loop bagus untuk menjaga kunci, karena bandwidthnya sangat sempit, karakteristik yang sama membuat mereka miskin dalam memperoleh kunci tanpa bantuan. Mereka tidak dapat melihat melampaui bandwidth loop untuk menangkap apa pun lebih jauh. Fase awal dan frekuensi harus diatur ke fase kode yang diukur dan pergeseran Doppler dari satelit target. Ini diatur dalam kontrol Pi. Loop harus di-lock sejak awal dan tetap begitu. Fase kode diukur relatif terhadap sampel FFT. Kode NCO di FPGA direset pada awal pengambilan sampel dan terakumulasi pada fixed 1.023 MHz. Hal ini kemudian selaras dengan kode yang diterima dengan sebentar menghentikan akumulator fase. Pergeseran doppler pada carrier 1575.42 MHz plusmn5 KHz atau plusmn3 ppm. Ini juga mempengaruhi tingkat kode 1,023 Mbps oleh chip plusmn3 per detik. Panjang jeda disesuaikan untuk creep kode dalam waktu sejak sampel diambil. Untungnya, kode Doppler sebanding dengan carrier Doppler yang kami punya perkiraan bagus. Pembagian perangkat lunak perangkat keras Pada diagram di bawah ini, pengkodean warna menunjukkan bagaimana penerapan DSP pelacakan sekarang terbagi antara perangkat keras dan perangkat lunak. Sebelumnya, semua ini dilakukan di perangkat keras, dengan contoh paralel identik diulang untuk setiap saluran, membuat penggunaan sumber daya FPGA tidak efisien. Kini, pemrosesan 1 KHz yang lebih lambat dilakukan oleh perangkat lunak, dan dua kali lebih banyak kanal dapat diakomodasi dalam setengah real estat FPGA. Keenam akumulator gabungan dan akumulasi (Sigma) dilekatkan ke dalam register geser pada zaman kode. Tanda permintaan layanan memberi sinyal pada CPU, yang membaca bit data secara serial. Dengan 8 saluran aktif, 8 waktu CPU dihabiskan untuk mengeksekusi instruksi oprdBit Tetapi ada banyak waktu, dan serial IO menggunakan kain FPGA secara ekonomis. Kemewahan seperti pencatatan RSSI dan IQ (misalnya untuk plot tersebar) sekarang dapat diberikan. Fungsi transfer loop F (z) menelan 2 dari bandwidth CPU per channel aktif. Ini adalah pengendali proporsional-integral (PI) standar: presisi 64-bit digunakan dan mendapatkan koefisien KI dan KP, walaupun dibatasi pada kekuatan 2, dapat disesuaikan secara dinamis. Setiap saluran harus menunggu gilirannya, update rate NCO dapat tertunda oleh puluhan atau ratusan mikrodetik setelah zaman kode tapi ini menunjukkan pergeseran fasa yang tidak berarti pada frekuensi dimana fasa ditentukan. Jejak tipis 1-bit, notionally mewakili plusmn1. Operator 2,6 MHz pertama kali disebarkan oleh pencampuran dengan kode awal, terlambat dan tepat waktu. Produk baseband I dan Q yang kompleks dari peringkat kedua dari mixer gerbang XOR dijumlahkan lebih dari 10.000 sampel atau 1ms. Penyaringan low-pass ini secara dramatis mengurangi bandwidth noise dan dengan demikian meningkatkan SNR. Downsampling ke 1 KHz memerlukan jalur data lebih jauh ke depan di domain perangkat lunak. Fase kode dilacak menggunakan loop delay-locked konvensional atau gerbang awal-akhir. Daya pada saluran awal dan akhir dihitung dengan menggunakan P I 2 Q 2 yang tidak sensitif terhadap fase. Kode awal dan akhir adalah satu chip terpisah, yaitu chip frac12 di depan dan di belakang tepat waktu. Diagram ini membantu untuk mendapatkan pengertian kesalahan yang benar: A Costas Loop digunakan untuk pelacakan carrier dan pemulihan data NAV di saluran tepat waktu. Data NAV, m, diambil dari tanda tangan I-arm dengan ketidakpastian fase 180deg. K diterima amplitudo sinyal dan theta adalah perbedaan fasa antara pembawa yang diterima (modulasi sans) dan NCO lokal. K bervariasi dari sekitar 400 untuk sinyal terpulihkan yang dapat dipulihkan hingga lebih dari 2000 untuk yang terkuat. Perhatikan bagaimana istilah kesalahan yang diberikan kembali ke pengontrol pabrik F (z) di Costas Loop sebanding dengan kekuatan sinyal yang diterima ksup2. Melacak kemiringan, dan karena itu gain loop, juga berbeda dengan kekuatan sinyal dalam loop kode. Berikut adalah plot Bode gain loop terbuka untuk Costas Loop di k500: Bandwidth Costas Loop sekitar 20 Hz, yang hampir optimal untuk pelacakan carrier. Bandwidth loop kode adalah 1 Hz. Kebisingan dalam bandwidth seperti itu kecil dan loop bisa melacak sinyal yang sangat lemah. KI di atas dan kP bekerja untuk sebagian besar sinyal, namun perlu menjatuhkan satu takik yang paling kuat. Scilab memprediksi, dan scatter plot mengkonfirmasi, onset ketidakstabilan pada kge1500. Kesalahan paritas tidak terjadi kecuali sampel menyimpang ke bagian berlawanan dari bidang IQ. (I) Ketidakstabilan pada kge1500 Berikut adalah 2 frame berturut-turut dari 5 subframes masing-masing. Subframes berukuran 300-bit dan membutuhkan waktu 6 detik untuk mentransmisikan. Kolom 1 adalah pembukaan 10001011. Ini muncul di awal setiap subframe namun dapat terjadi di manapun dalam data. Penghitung 17-bit di kolom 5 adalah time-of-week (TOW) dan disetel ulang menjadi nol pada tengah malam hari Minggu. Penghitung 3-bit pada kolom 7 adalah subframe ID 1 sampai 5. Subframes 4 dan 5 masing-masing dibagi ke dalam 25 halaman dan pesan data lengkap yang terdiri dari 25 frame penuh membutuhkan 12,5 menit untuk mentransmisikan. Saya hanya menggunakan data di subframes 1, 2 dan 3 saat ini. Memecahkan posisi pengguna Setiap satelit GPS mentransmisikan posisinya dan waktunya. Mengurangkan waktu yang dikirim dari waktu yang diterima dan mengalikan dengan kecepatan cahaya adalah bagaimana receiver mengukur jarak antara dirinya dan satelit. Melakukan hal itu dengan tiga satelit akan menghasilkan tiga persamaan simultan dalam tiga hal yang tidak diketahui (posisi pengguna: x, y, z) jika waktu yang tepat tersedia. Dalam prakteknya, jam penerima tidak cukup akurat, waktu yang tepat adalah yang keempat diketahui, empat satelit karenanya dibutuhkan dan empat persamaan simultan harus dipecahkan: Metode iteratif digunakan karena persamaannya tidak linier. Dengan menggunakan pusat bumi (0, 0, 0) dan perkiraan waktu sebagai titik awal, algoritma hanya menyatukan lima atau enam iterasi. Solusinya ditemukan meski kesalahan jam pengguna besar. Satelit membawa jam atom tapi ini juga memiliki kesalahan dan koefisien koreksi pada subframe 1 harus diterapkan pada saat transmisi. Penyesuaian tipikal bisa ratusan mikrodetik. Waktu transmisi yang tidak terkoreksi dibentuk dengan menskalakan dan menambahkan beberapa penghitung. Time-of-week (TOW) dalam hitungan detik sejak tengah malam hari Minggu dikirim setiap subframe. Tepi data menandai interval 20ms dalam subframe 300-bit. Kode berulang 20 kali per bit data. Panjang kode 1023 chip dan chip rate adalah 1.023 Mbps. Akhirnya, 6 bit paling penting dari kode fase NCO ditambahkan, memperbaiki waktu transmisi ke plusmn 15ns. Posisi satelit pada waktu transmisi yang dikoreksi dihitung dengan menggunakan ephemeris pada subframes 2 dan 3. Posisi orbit pada waktu referensi toe (waktu ephemeris) disediakan bersamaan dengan parameter yang memungkinkan (x, y, z) posisi dihitung sampai beberapa Jam sebelum atau sesudah Ephemerides diperbarui secara teratur dan satelit hanya mentransmisikannya sendiri. Orbital jangka panjang dari keseluruhan rasi dapat diprediksi kurang akurat dengan menggunakan data Almanac pada subframes 4 dan 5, namun ini tidak penting jika pencarian berbasis FFT cepat digunakan. Solusi dihitung dalam koordinat bumi-terpusat, bumi-tetap (ECEF). Lokasi pengguna diubah menjadi garis lintang, bujur dan ketinggian dengan koreksi eksentrisitas bumi, yang menonjol di khatulistiwa. Diagram scatter di bawah menggambarkan pengulangan, manfaat rata-rata dan pengaruh pilihan satelit yang buruk. Kotak kotak adalah 0.001deg di setiap sisinya. Titik biru menandai 1000 perbaikan. Segitiga kuning menandai pusat gravitasi: (i) lengkungan teras yang menghadap ke utara (ii) Antena atap (iii) Tepian jendela yang menghadap ke timur Cluster ketat (ii) diperoleh dengan menggunakan satelit di empat penjuru langit yang berbeda. Hanya antena atap yang memiliki pandangan jernih di segala penjuru. Tapi perbaikan bagus diperoleh dengan rata-rata, bahkan saat setengah langit dikaburkan. Perbaikan atap juga menunjukkan penyebaran seperti (i) dan (iii) jika satelit yang salah dipilih. Solusi di atas dihasilkan tanpa mengkompensasi penundaan propagasi ionosfer dengan menggunakan parameter pada halaman 18 dari subframe 4 yang harus diterapkan karena ini adalah penerima frekuensi tunggal. Refraksi ionosfer meningkatkan panjang jalur antara pengguna dan satelit. Pada bulan April 2012, saya memperbaiki bug yang menyebabkan kesalahan signifikan pada solusi posisi pengguna. Awalnya, dengan tidak mengubah posisi satelit dari koordinat ground-centered-earth-fixed (ECEF) ke bumi-berpusat-inersia (ECI), saya secara efektif mengabaikan rotasi Bumi selama 60 sampai 80 ms bahwa sinyal sedang dalam penerbangan. Saya sekarang melihat akurasi solusi posisi plusmn 5 meter setelah rata-rata, bahkan dengan jarak pandang satelit yang terbatas. Saya telah membuat sebuah lampiran yang menjelaskan bagaimana solusi iteratif dikembangkan, mulai dari persamaan rentang geometris, yang linearised menggunakan ekspansi Seri Taylor, dan dipecahkan dengan metode matriks, untuk kasus khusus dari empat satelit atau kasus umum lebih banyak, dengan Pilihan untuk menggunakan kuadrat terkecil tertimbang untuk mengendalikan pengaruh satelit tertentu. Anda akan menemukan ini dan solusi kode sumber C di link di bagian bawah halaman. Saya berterima kasih kepada Dan Doberstein karena telah mengirimi saya draf awal buku GPS 2 yang membantu saya memahami algoritma solusinya. Spesifikasi Antarmuka GPS Pemerintah AS yang resmi 3 adalah referensi penting. Monitor Sinyal Pengaturan rangkaian di atas, sebagian besar diimplementasikan pada FPGA, de-spread dengan mengambil produk dari kode IF dan kode 1-bit, sehingga menghasilkan modulasi data sebesar bps bps. Sebuah notch kecil karena penindasan carrier BPSK dapat dilihat: Spektrum ini menunjukkan transmisi de-spread yang sama pada rentang bandwidth dan resolusi yang berbeda (RBW). Pergeseran doppler adalah -1,2 KHz. Lantai kebisingan adalah thermal noise antena yang diperkuat dan disaring oleh strip IF. -3 dB bandwidth terlihat sekitar 3 MHz, sedikit lebih lebar dari yang direncanakan. Pembawa de-spread adalah 5 dB di atas noise pada RBW 30 KHz dan 25 dB di atas 300 Hz RBW. Kekuatan sinyal yang diterima pada antena dapat diperkirakan sebagai -174110log10 (30e3) 5 -123 dBm. Masih mengherankan saya seberapa baik informasi domain frekuensi dipelihara melalui hard-limiting Pemancar LVDS memiliki arus keluaran konstan 1mW dalam 100 ohm. Daya puncak yang terlihat di SA tidak bisa melebihi 0 dBm. Di sini, kita melihat kekuatan yang tersedia ini tersebar di berbagai frekuensi. Kepadatan spektral daya Wideband terpadu harus menjadi osilator lokal pertama Saya telah membangun synthesizer pecahan-N eksperimental menggunakan logika programmable untuk tujuan umum selama beberapa tahun: Xilinx Spartan 3 FPGA Frac7 dibangun untuk tujuan ini tapi saya tidak tahu Frac5 akan digunakan di GPS Penerima ketika saya awalnya dirancang itu. Foto di bawah ini menunjukkan bagaimana keluaran ROS-1455 VCO pada Frac5 secara resistif terbelah antara keluaran SMA dan sebuah preseter Hetit HMC363. Output pembagi 200 MHz disalurkan (berbeda) ke dalam FPGA yang menguncipnya ke referensi induk menggunakan metode yang didokumentasikan dalam proyek saya yang terdahulu. Sirkuit mikro pada Frac7 serupa namun menggunakan pembagi Mini-Circuits 3dB. Stabilitas tinggi dan noise fase rendah tercapai, seperti yang dapat dilihat pada spektrum keluaran VCO yang ditunjukkan di bawah ini. Ketika Frac5 awalnya dikembangkan, sebagai synthesizer frekuensi khusus, Toggling secara simultan pada frekuensi yang tidak berhubungan secara harmonis dihindari untuk meminimalkan dorongan intermodulasi. The FPGA adalah statis ketika jam pulsa yang toggled output detektor fasa melintasi kain. Tidak ada kemewahan seperti itu praktis ketika FPGA hosting penerima GPS Namun, untungnya, output osilator lokal cukup baik: Analisis spektrum Marconi 2383 50 MHz STD OUTPUT digunakan sebagai sumber referensi utama untuk Frac5 dan semua penerima GPS internal jam. Penerima GPS memerlukan akurasi yang lebih baik dari 1 ppm (bagian per juta) untuk mengukur Dmpler plusmn5 KHz bergeser pada operator L1 1575.42 MHz. Setiap ketidakpastian frekuensi akan memerlukan jangkauan pencarian yang lebih luas. CPU Tertanam Penerima GPS asli saya hanya bisa melacak 4 satelit. Kain yang tersedia tidak digunakan secara efisien dan FPGA penuh. Identical logic was replicated for each channel and only clock-enabled at the 1 KHz code epoch. GPS update rates are quite un-demanding and most of the parallel processing can easily be done sequentially. Embedding a CPU for this task has both increased the number of channels and freed space in the FPGA. This CPU directly executes FORTH primitives as native instructions. Visitors to my Mark 1 FORTH Computer page will already be aware of my interest in the language. FORTH is not mainstream and its use here might be an esoteric barrier however, I could not resist doing another FORTH CPU, this time in FPGA, after seeing the excellent J1 project, which was an inspiration. FORTH is a stack-based language, which basically means the CPU has stacks instead of general purpose registers. Wikipedia has a good overview. FPGA resources: 360 slices 2 BRAMs Single-cycle instruction execution FORTH-like, dual-stack architecture 32-bit stack and ALU data paths 64-bit double-precision operations Hardware multiplier 2k byte (expandable to 4k byte) code and data RAM Macro assembler code development Memory and IO Two BRAMs are used: one for main memory, the other for stacks. Xilinx block RAM is dual ported, allowing one instance to host both data and return stacks. Each stack pointer ranges over half of the array. Dual porting of the main memory permits data access concurrent with instruction fetch. One memory port is addressed by the program counter, the other by T, the top of stack. Writes to the PC-addressed port are also used for code download, the program counter providing incrementing addresses. Code and data share the main memory, which is organised as 1024 (expandable to 2048) 16-bit words. Memory accesses can be 16-, 32- or 64-bits, word-aligned. All instructions are 16-bit. Total code plus data size of the GPS application is less than 750 words, despite all loops being unrolled. IO is not memory-mapped, occupying its own 36 bit-select space (12 in 12 out 12 events). One-hot encoding is used to simplify select decoding. IO operations are variously 1-bit serial, 16- or 32-bit parallel. Serial data shifts 1 bit per clock cycle. Events are used mainly as hardware strobes and differ from writes by not popping the stack. Instruction format 24 instructions out of a possible 32 are currently allocated in the opcode space h80XX - h9FXX. These are mostly zero-operand stack ALU operations. The ret option, which performs return from subroutine, executes in parallel, in the same cycle. Add-immediate is the only one-operand instruction. A carry-in option extends (stack, implied) addition precision. hF0000 - hFFFF is spare. Stack and ALU data paths are 32-bit however, 16-, 32- and 64-bit operations are supported. 64-bit values occupy two places on the stack, with least significant bits on top. Top of stack, T, and next on stack, N, are registered outside the BRAM for efficiency. Apart from the 64-bit left shift (opshl64) which is hard-wired for single-cycle execution, all other double precision functions are software subroutines. Assembly language The GPS embedded binary was created using Microsofts Macro Assembler MASM. This only supports x86 mnemonics but opcodes are declared using equ and code is assembled using dw directives. MASM not only provides label resolution, macro expansion and expression evaluation but even data structures The MASM dup() operator is used extensively to unroll loops e. g. dw N dup(opcall dest) calls a subroutine N times. This fragment gives some flavour of source style. Stack-effect is commented on every line: opfetch16 and opstore16 are primitives. opstore32 and opstore64 are subroutines or compound instructions usable as if they were primitives. T is actually 15:0,31:16 after opswap16 . but we dont care about the upper 16-bits here. opstore16 leaves the address stack depth can only change plusmn1 per cycle. Purists might prefer: dw N addi Host serial interfaces The FPGA can be controlled via SPI by the Raspberry Pi, or by a Windows PC using a Xilinx Platform USB JTAG cable. There are two levels of request priority: Send new command and poll for response to previous New code images are copied to main memory via a third BRAM which bridges the CPU and serial clock domains. Thus downloaded, binary images execute automatically. Host commands are captured in the bridge BRAM and the CPU is signalled to action them. Its responses are collected by the host from the bridge on the next scan. The top-level main loop polls for host service requests. The first word of any host message is a command code. Requests are dispatched through the Commands jump table: optor moves vector to the return stack. Some host requests (e. g. CmdGetSamples) elicit lengthy responses. Data ports on the CPU side of the bridge are 16-bit. The CPU can read and write these via the data stack however, more direct paths exist for uploading main memory and GPS IF samples. The instruction opwrEvt GETMEMORY transfers a memory word directly to the bridge, using T as an auto-incrementing pointer. GETMEMORY is the only event which has stack effect. The instruction opwrEvt GETSAMPLES transfers 16 bits from the IF sampler: Unrolling loops at assembly time with dup() trades code size for performance, avoiding a decrement-test-branch hit and the entire application binary is still tiny however, long loops must be nested, as illustrated above. CHANNEL data structure An array of structures holds state variables and buffered NAV data for the channels. MASM has excellent support for data structures. Field offsets are automatically defined as constants and the sizeof operator is useful. The epoch service routine (labelled Method: ) is called with a pointer to a CHANNEL structure on the stack. Affecting OO-airs, stack-effect comments refer to it as this throughout the routine. A copy is conveniently kept on the return stack for accessing structure members like so: The Chans array is regularly uploaded to the host. Raspberry Pi application software The Raspberry Pi software is multi-tasked using what are variously known as coroutines, continuations, user-mode or light-weight threads. These co-operatively yield control, in round-robin fashion, using the C library setjmplongjmp non-local goto, avoiding the cost of a kernel context-switch: Up to 16 threads can be active:

No comments:

Post a Comment