Isi kandungan:
Video: Buat Sensor Daripada FPGA: 4 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Sebilangan besar pembuat cuba membina termometer sekurang-kurangnya sekali dalam hidup mereka, mungkin yang mereka ada di rumah tidak cukup pintar, atau mungkin mereka berfikir bahawa mereka dapat membina NEST seterusnya. Walaupun begitu, pada suatu ketika mereka mempunyai mikrokontroler dengan perisian canggih mereka yang terhubung dengan sensor suhu (dan mungkin sensor lain: tekanan, cahaya). Sehingga kini semuanya sempurna, perisian sedang berjalan dan sensornya terasa. Mari mengujinya!
Hmmmm … mungkin dia harus memanaskan sensor menggunakan pengering rambut dan menyejukkannya menggunakan ais, ia berfungsi untuk sementara waktu. Tetapi ia tidak kelihatan profesional, sensor mengubah nilai terlalu cepat jika anda memanaskannya, ia tidak akan memanas lebih dari beberapa darjah. Projek ini adalah bust! Tetapi algoritma itu baru, mengambil kira banyak faktor, sungguh memalukan bahawa dia terjebak dengan perkara kecil yang bodoh ini.
Penyelesaian saya adalah ini: jadikan FPGA bertindak sebagai sensor dengan nilai yang dialirkan dari PC (atau disimpan dalam memori, atau dibuat ad-hoc di dalam FPGA). Jadi untuk MCU berharga anda, FPGA kelihatan seperti sensor, tetapi bukan sensor apa pun: sensor mana yang anda suka. Mungkin anda memutuskan bahawa anda memerlukan lebih banyak resolusi atau masa tindak balas yang lebih pantas daripada yang dijangkakan, anda harus menukar sensor. Pesan secara dalam talian, ia akan tiba dalam beberapa hari, beberapa bulan, siapa tahu. Balas PCB anda atau pesan modul dengan sensor baru. Atau … beberapa klik dan FPGA dikonfigurasikan sebagai sensor baru anda dan ia dapat meniru konfigurasi dalaman yang tepat.
Pada saat menulis ini, FPGA dapat bertindak sebagai LM75 dengan data suhu disimpan di BRAM (pada FPGA).
Langkah 1: MCU
Pilihan MCU saya adalah LPC4337 pada LPCXpresso. Di atasnya saya mempunyai perisai (LPC General Purpose Shield) dengan paparan dan sensor LM75 sebenar. LPC4337 adalah ARM Cortex M4 yang berjalan pada 200MHz dan Cortex M0 yang lebih kecil (tidak digunakan di sini). Sensor sebenar disambungkan ke periferal I2C1 dan maya kami akan disambungkan ke I2C0. Sumbernya terdapat di GitHub saya.
Bagaimana membinanya? Muat turun LPCXpresso IDE bersama perpustakaan LPCOpen. Import perpustakaan itu ke dalam IDE dan juga buka projek dari GitHub. Semuanya harus dikonfigurasi dan anda boleh mengklik "Debug" di sudut kiri bawah.
Keseluruhan projek ini berdasarkan salah satu contoh NXP (untuk menunjukkan bahawa projek saya mensimulasikan sensor sebenar dan tidak memerlukan kod khas di sisi MCU). Dalam fail utama (dipanggil iox_sensor.cpp) terdapat kod ini:
#tentukan SENSORS_ON_SHIELD
#jika ditentukan (SENSORS_ON_SHIELD) #tentukan SHIELD_I2C I2C1 #elif ditentukan (SENSORS_ON_FPGA) #tentukan SHIELD_I2C I2C0 #endif
Dengan menukar SENSOR_ON_SHIELD dan SENSOR_OR_FPGA pengguna dapat beralih pada masa kompilasi ke sensor mana yang boleh dibincangkan, yang sebenar atau yang maya, kerana mereka berada pada pin I2C yang berbeza.
Langkah 2: FPGA
Papan pilihan saya FPGA adalah Artix 7 yang dibuat oleh Digilent, mempunyai Xilinx Arty 7. Dua dari penyambung PMod digunakan, satu untuk debug dan satu untuk muatan sebenar, hubungan dengan papan MCU.
Sekali lagi, kod sumber untuk FPGA boleh didapati di GitHub saya (folder fpgaSide).
Bagaimana membinanya? Muat turun, beli atau buka Xilinx Vivado IDE. Import fail projek dari GitHub. Salah satu fail (content.coe) adalah data suhu dalam format mentah yang akan dialirkan ke sensor palsu. Terdapat juga fail Excel dengan nama yang sama yang membantu menukar data suhu yang boleh dibaca manusia menjadi data LM75 mentah. Saya merancang untuk mengubahnya menjadi proses automatik dengan perisian yang ditulis di Java tetapi sehingga penyelesaian ini berjaya. Sintesis dan Implemantasi perlu sedikit masa, pertimbangkan perkara ini.
Langkah 3: Bagaimana Ia Berfungsi?
Seperti yang saya katakan, untuk MCU, FPGA kelihatan seperti sensor, lebih tepatnya sensor I2C. Keluaran periferal I2C disambungkan ke input FPGA. Di dalam FPGA terdapat 3 komponen utama: - Pengawal I2C- Peranti I2C- DataPengawal I2C menerima data I2C dari pin FPGA dan mengirimkannya ke FPGA yang lain dan melakukan perkara yang sama dalam urutan terbalik. Ia mengekalkan mesin keadaan dalaman untuk Protokol I2C (by the way, inilah dokumentasinya). Apa yang dihantar oleh komponen ini ke Peranti I2C? Byte yang sedang diterima, kedudukan bait itu dalam komunikasi semasa dan sama ada MCU sedang menulis atau membaca dari FPGA. Peranti I2C menerima bait yang dihantar dan mengemas kini struktur dalaman simulasi sensor. Mungkin hanya mengemas kini penunjuk daftar atau meminta data baru dari sumber data. Komponen Data mengalirkan titik data baru. Pada masa ini ia hanya memori ROM yang alamatnya meningkat (kira-kira) dua kali sesaat.
Apakah tujuan akhir saya? Ia ditunjukkan dalam gambar kedua. Iaitu: memungkinkan lebih banyak peranti I2C (sensor dan lain-lain) dapat disimulasikan pada masa yang sama di dalam FPGA. Data di bahagian belakang sensor akan di-cache dalam FPGA dan dialirkan dari PC melalui USB atau Ethernet. Sokong sensor yang lebih maju dan Peranti I2C lain (memori, pemacu LED dll).
Langkah 4: Menggabungkan Semuanya
Sekarang adalah masa untuk menghubungkan semuanya lebih tinggi. Secara teorinya, mudah: papan mcu mempunyai penyambung PMod (I2C0 & SSP0 (boleh berfungsi seperti SPI)). Papan Artix mempunyai 4 PMod penyambung yang boleh digunakan mengikut kehendak anda. Saya memilih penyambung D untuk bercakap dengan MCU dan penyambung B untuk disambungkan ke Penganalisis Logik saya.
Amaran
Anda tidak boleh menghubungkan kedua-dua papan itu begitu sahaja. Kenapa? PMod dibina untuk memudahkan penyambungan papan Master / Host (yang memberi kuasa) ke papan Slave / Sensor (yang menerima kuasa). Tetapi dalam projek ini kedua-dua papan memberi kuasa dan jika anda menyambungkan output 3.3V dari satu papan ke output 3.3V dari papan yang lain, perkara buruk boleh berlaku. Tetapi mereka mungkin tidak dan anda mungkin hanya mengubah parameter rel kuasa FPGA (mereka dirancang dengan teliti). Oleh itu, jangan ambil risiko ini dan gerakkan penyambung satu pin ke kiri (dan juga balikkan papan FPGA) seperti yang dilihat pada gambar di atas. Inilah spesifikasi PMod, anda boleh mempelajarinya, apa yang saya buat dengan kata pendek adalah tidak menghubungkan VCC kedua-dua papan.
Disyorkan:
Dinding Ubin LED Interaktif (Lebih Mudah Daripada Kelihatannya): 7 Langkah (dengan Gambar)
Dinding Ubin LED Interaktif (Lebih Mudah Daripada Kelihatannya): Dalam projek ini saya membina paparan dinding LED interaktif menggunakan bahagian bercetak Arduino dan 3D. Inspirasi untuk projek ini sebahagiannya berasal dari jubin Nanoleaf. Saya ingin menghasilkan versi saya sendiri yang bukan hanya lebih berpatutan, tetapi juga
Robo-Dog Sederhana (diperbuat daripada Piano Keys, Toy Gun dan Mouse): 20 Langkah (dengan Gambar)
Robo-Dog Ringkas (diperbuat daripada Piano Keys, Toy Gun dan Mouse): Oh, Azerbaijan! Tanah api, keramahan yang hebat, ramah orang dan wanita cantik (… maaf, wanita! Tentu saja saya hanya mempunyai mata untuk anda, isteri saya balaca ana ördəkburun!). Tetapi secara jujur, ini adalah tempat yang sangat sukar bagi pembuatnya, terutamanya apabila anda
Penguat IPhone Diperbuat daripada Bahan Murah: 6 Langkah
IPhone Amplifier Diperbuat daripada Bahan Murah: Anda ingin meningkatkan jumlah muzik iPhone? Tidak mahu membeli pembesar suara yang mahal? Anda sedang dalam perjalanan berkhemah atau di pejabat dan ingin mendengar muzik? Di sini anda akan mendapat jawapannya
Buat Unit Pendedahan PCB yang Benar daripada Lampu Penyembuhan Kuku UV yang Murah: 12 Langkah (dengan Gambar)
Buat Unit Pendedahan PCB yang Benar daripada Lampu Penyembuhan Kuku UV yang Murah: Apa persamaan pengeluaran PCB dan kuku palsu? Mereka berdua menggunakan sumber cahaya UV dengan intensiti tinggi dan, seperti nasib, sumber cahaya itu mempunyai panjang gelombang yang sama. Hanya untuk pengeluaran PCB biasanya agak mahal
Buat Mesin Pembersih Rekod Profesional Anda sendiri dengan Kurang daripada $ 80 dan Jimat Hingga $ 3000 dan Lebih Banyak: 6 Langkah (dengan Gambar)
Buat Mesin Pembersih Rekod Profesional Anda Sendiri dengan Harga Kurang Dari $ 80 dan Jimat Hingga $ 3000 dan Lebih Banyak lagi: Maafkan bahasa Inggeris saya. Selepas saya mengetahui bunyi vinil lama yang baik, saya menghadapi masalah setiap penggemar rakaman. Bagaimana membersihkan rekod dengan betul!? Terdapat banyak cara di Internet. Cara yang lebih murah seperti Knosti atau Discofilm tetapi juga