Sunday 20 August 2017

Bergerak rata rata verilog


Berita Terbaru Bahasa Pemrograman Berikutnya 50 Daftar bahasa berikut menunjukkan 51 sampai 100. Karena perbedaannya relatif kecil, bahasa pemrograman hanya terdaftar (menurut abjad). (Visual) FoxPro, ABC, ActionScript, APL, AutoLISP, bc, shell Bourne, shell C, CFML, cg, CL (OS400), Clipper, Common Lisp, Crystal, Eiffel, Elixir, Elm, Emacs Lisp, Factor, Forth, Hack, Icon, IDL, Inform, Io, J, Julia, Korn shell, Kotlin, Maple, ML, NATURAL, NXT-G, OCaml, OpenCL, OpenEdge ABL, Oz, PLI, PowerShell, Data Murni, REXX, S, Smalltalk , SPARK, SPSS, Standard ML, Stata, Tcl, VBScript, Verilog Perubahan Monthaposs dalam Indeks Bulan ini, perubahan berikut telah dilakukan pada definisi indeks: ClojureScript telah ditambahkan ke entri Clojure. Ini adalah saran dari Alex Miller. Olaf Buddenhagen dan beberapa lainnya bertanya-tanya mengapa Nim bukan bagian dari indeks TIOBE. Memang, Nim memenuhi syarat untuk indeks. Ini memasuki indeks TIOBE di posisi 129 bulan ini. Di samping Lua juga LuaJIT diterima sebagai pintu masuk Lua. Ini berkat Szbnwer. Akhirnya, Mahmoud Fayed mengusulkan untuk menambahkan bahasa pemrograman Ring ke indeks. Bahasa ini memulai debutnya di posisi 104. Ada banyak surat yang masih perlu diolah. Segera setelah ada lebih banyak waktu yang tersedia, surat Anda akan dijawab. Harap bersabar. Sejarah Jangka Panjang Untuk melihat gambaran yang lebih besar, temukan di bawah posisi 10 bahasa pemrograman teratas beberapa tahun yang lalu. Harap dicatat bahwa ini adalah posisi rata-rata untuk jangka waktu 12 bulan. Bugs amp Change Requests Ini adalah 5 perubahan dan bug yang paling banyak diminta. Jika Anda memiliki saran bagaimana memperbaiki indeks donapost ragu untuk mengirim e-mail ke tpcitiobe. Terlepas dari teknik pemrograman kuota, juga kueri lainnya seperti pemrograman dengan ltlanguagegtquot, pengembangan kuotasi dan pengkodean quotltlanguagegt harus dicoba. Tambahkan kueri untuk bahasa alami lainnya (selain bahasa Inggris). Idenya adalah memulai dengan mesin pencari Baidu. Ini sudah dilaksanakan sebagian dan akan selesai beberapa bulan ke depan. Tambahkan daftar semua permintaan istilah penelusuran yang telah ditolak. Ini untuk meminimalkan jumlah kiriman berulang tentang Rails, JQuery, JSP, dll. Mulailah indeks TIOBE untuk database, sistem manajemen konfigurasi perangkat lunak dan kerangka aplikasi. Beberapa mesin pencari mengizinkan halaman query yang telah ditambahkan tahun lalu. Indeks TIOBE seharusnya hanya melacak halaman yang baru saja ditambahkan. Pertanyaan yang Sering Diajukan (FAQ) T: Apakah saya diperbolehkan untuk menunjukkan indeks TIOBE di weblogpresentationpublication saya A: Ya, satu-satunya syarat adalah mengacu pada sumber quottiobequot aslinya. T: Bagaimana saya bisa mencalonkan bahasa baru untuk ditambahkan ke indeks TIOBE A: Jika sebuah bahasa memenuhi kriteria untuk dicantumkan (yaitu Turing lengkap dan memiliki entri Wikipedia sendiri yang mengindikasikan bahwa ini menyangkut bahasa pemrograman) dan itu Cukup populer (lebih dari 5.000 klik untuk pemrograman kuantum untuk Google), lalu tulis e-mail ke tpcitiobe. T: Saya ingin memiliki kumpulan data lengkap dari indeks TIOBE. Apakah ini mungkin A: Kami menghabiskan banyak usaha untuk mendapatkan semua data dan menjaga indeks TIOBE tetap up to date. Untuk mengimbangi sedikit untuk ini, kami meminta biaya 5.000 dolar AS untuk kumpulan data yang lengkap. Kumpulan data berjalan dari bulan Juni 2001 sampai hari ini. Ini dimulai dengan 25 bahasa kembali pada tahun 2001, dan sekarang mengukur lebih dari 150 bahasa sebulan sekali. Data tersedia dalam format yang dipisahkan koma. Silahkan hubungi salestiobe untuk informasi lebih lanjut. T: Mengapa jumlah maksimum dihitung untuk menghitung rangking untuk pengelompokan, mengapa bukan jumlah A: Baiklah, Anda bisa melakukannya dengan cara apa pun dan keduanya salah. Jika Anda mengambil jumlah, maka Anda mendapatkan persimpangan dua kali. Jika Anda mengambil max, maka Anda merindukan perbedaan. Yang mana yang harus dipilih Misalkan seseorang datang dengan istilah pencarian baru yaitu 10 dari yang asli. Jika Anda mengambil maks, tidak ada perubahan. Jika Anda mengambil jumlah maka peringkat akan naik 10. Jadi mengambil jumlah itu akan menjadi insentif bagi beberapa orang untuk mengemukakan berbagai jenis istilah yang tidak jelas untuk sebuah bahasa. Thataposs mengapa kami memutuskan untuk mengambil maks. Cara yang tepat untuk memecahkan ini adalah tentu saja mengambil jumlah dan mengurangi persimpangan. Ini akan menimbulkan ledakan pertanyaan tambahan yang harus dilakukan. Misalkan bahasa memiliki pengelompokan 15 istilah, maka Anda harus melakukan 32.768 kueri (semua kombinasi persimpangan). Jadi sepertinya ini juga tidak mungkin. Jika seseorang memiliki solusi untuk ini, beri tahu kami. T: Apa yang terjadi di Jawa pada bulan April 2004 Apakah Anda mengubah metodologi Anda A: Tidak, kami tidak mengubah metodologi kami saat itu. Google mengubah metodologinya. Mereka melakukan tindakan menyapu umum untuk menyingkirkan semua jenis situs web yang telah didorong ke atas. Akibatnya, ada penurunan besar untuk bahasa seperti Java dan C. Untuk meminimalkan fluktuasi tersebut di masa depan, kami menambahkan dua mesin pencari lagi (MSN dan Yahoo) beberapa bulan setelah kejadian ini. T: Mengapa YouTube digunakan sebagai mesin pencari untuk indeks TIOBE A: Pertama-tama, jumlah YouTube kurang dari 10 dari semua peringkat, sehingga hampir tidak ada pengaruhnya terhadap indeks. YouTube telah ditambahkan sebagai eksperimen. Ini memenuhi syarat untuk indeks TIOBE karena rangkingnya yang tinggi pada Alexa. YouTube adalah platform muda (jadi indikator untuk popularitas) dan ada beberapa ceramah, presentasi, tip pemrograman dan perkenalan bahasa yang tersedia di YouTube. TIOBE memeriksa lebih dari 586 juta baris kode perangkat lunak untuk pelanggannya di seluruh dunia, realtime, setiap hari. Penerima GPS buatan sendiri Digambarkan di atas adalah mixer mixer depan dan penguat pertama 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 daya dan output IF. Yang terakhir terhubung ke FPGA Xilinx yang tidak hanya melakukan DSP, tapi juga menghosting fraksional-N frequency synthesizer. 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 ADC IF dan ADC 1-bit yang sulit membedakan 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 tapi 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 spektrum penyebaran sekuens langsung (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, ditumpangkan satu pada yang lain dan dikubur dalam kebisingan, dapat dipulihkan setelah penguapan tingkat dua nampaknya kontra intuitif, saya menulis sebuah simulasi untuk meyakinkan diri saya sendiri. GPS bergantung pada sifat korelasi urutan pseudo-random yang disebut Kode Emas untuk memisahkan sinyal dari kebisingan 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 dimulai secara otomatis. Saat keluar, ini memberi sarana untuk benar mematikan Pi sebelum mematikannya. 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 yang terus menerus 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 yang dikoreksi dengan kompensasi suhu-suhu (TCVCXO) yang menyediakan frekuensi referensi yang stabil, penting untuk penerimaan GPS. TCVCXO bagus namun tidak sesuai dengan standar GPS saat beroperasi tanpa kotak 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 ini juga sedikit sensitif terhadap infra merah mis. Dari lampu halogen dan TV remote 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 jam 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 terlihat, 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 bit stream. Ketika semua parameter orbital yang diperlukan 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, menjadi 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 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 maksimum 9.5mV. Kebisingan termal yang diperkuat harus dengan nyaman melebihi ini agar tetap aktif. Sinyal GPS 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 di dalam band pada output mixer adalah -1740.828-1.5-3.920- 610log10 (2,5e6) -73 dBm atau 52microV RMS. Mixer secara resistif diakhiri 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 adalah kesederhanaan, menghindari konversi 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 penyelesaian tiga hal yang tidak diketahui: satelit apa yang ada dalam tampilan, pergeseran dan fase kode Doppler mereka. Sebuah pencarian sekuensial dari ruang tiga dimensi ini dari awal yang disebut dingin 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. Pi Raspberry 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. Meski tidak ditunjukkan di atas, sampel tersebut sementara disangga 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 lingkaran 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 luar jendela: 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 dipelihara 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 batas FFT terbalik yang cukup singkat. 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 memiliki bandwidth yang sangat sempit, karakteristik yang sama membuat mereka kurang 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 terukur dan pergeseran Doppler dari satelit target. Ini diatur dalam kontrol Pi. Loop harus di-lock dari awal dan tetap begitu. Fase kode diukur relatif terhadap sampel FFT. Kode NCO di FPGA di-reset pada awal pengambilan sampel dan terakumulasi fase 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 dengan 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. Pembagi perangkat lunak terbelah 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 yang 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. Ke enam akumulator integrator dan integer (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 menjalankan 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 koefisien gain 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 dari 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-lengan 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 dimasukkan kembali ke pengontrol tanaman 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. Kekuatan suara dalam bandwidth seperti itu kecil dan loop bisa melacak sinyal yang sangat lemah. KI di atas dan kP bekerja untuk sebagian besar sinyal, tapi perlu menjatuhkan satu tingkat untuk 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 dibagi menjadi 25 halaman masing-masing dan sebuah 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 tidak diketahui, empat satelit diperlukan 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 di subframe 1 harus diterapkan pada saat transmisi. Penyesuaian tipikal bisa ratusan mikrodetik. Waktu transmisi yang tidak dikoreksi 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 tersebut 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 kaki (waktu ephemeris) diberikan 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 panjang dari keseluruhan konstelasi 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 jendela yang menghadap ke utara (ii) antena atap (iii) lengkung 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 arah. 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 di halaman 18 dari subframe 4 yang harus diterapkan karena ini adalah receiver 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-inersial (ECEF) yang berpusat di bumi-bumi-bumi, 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 menunjukkan bagaimana solusi iteratif dikembangkan, dimulai dari persamaan rentang geometrik, yang linearised menggunakan ekspansi Taylor Series, 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 mengirimkan draf awal buku GPS 2 yang membantu saya memahami algoritma solusinya. Spesifikasi Antarmuka GPS Pemerintah AS 3 merupakan referensi penting. Monitor Sinyal Pengaturan sirkuit di atas, sebagian besar diimplementasikan pada FPGA, de-spread dengan mengambil produk IF 1-bit dan kode tepat waktu, menghasilkan modulasi data 50 bps. Sebuah notch kecil karena penumpukan 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 pembatas keras 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 yang terintegrasi 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 bisa 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. 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 pergeseran Dmpler plusmn5 KHz pada operator L1 1575.42 MHz. Any frequency uncertainty would necessitate a wider search range. Embedded CPU My original GPS receiver could only track 4 satellites. The available fabric was not used efficiently and the FPGA was full. 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:Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. Jika Anda terus browsing situs, Anda setuju dengan penggunaan cookies di situs ini. Lihat Perjanjian Pengguna dan Kebijakan Privasi kami. Slideshare menggunakan cookies untuk meningkatkan fungsionalitas dan performa, dan memberi Anda iklan yang relevan. Jika Anda terus browsing situs, Anda setuju dengan penggunaan cookies di situs ini. Lihat Kebijakan Privasi dan Perjanjian Pengguna kami untuk rinciannya. Explore all your favorite topics in the SlideShare app Get the SlideShare app to Save for Later even offline Continue to the mobile site Upload Login Signup Double tap to zoom out Designing of 8 BIT Arithmetic and Logical Unit and implementing on Xilinx Vertex 4 FPGA Share this SlideShare LinkedIn Corporation copy 2017

No comments:

Post a Comment