FPGA, langkah pertama

11

Nah ini adalah kelanjutan dari pertanyaan saya di FPGA di sini .

Akhirnya saya memilih Digilent Atlys dengan Spartan 6 FPGA, saya tidak punya pengalaman sebelumnya tentang FPGA walaupun saya telah melakukan sejumlah pekerjaan dengan micro-controller.

Saya menghabiskan beberapa hari terakhir membaca lembar data FPGA, dan saya pikir itu akan menjadi pilihan yang baik untuk memulai dengan Verilog. Saya tidak dapat menemukan contoh kode dan bahkan lembar data tidak ramah pemula.

Saya ingin mengerjakan pemrograman, simulasi, sintesis sekarang dan inilah yang ingin saya lakukan

  1. Hasilkan frekuensi aneh, katakanlah 54Mhz dari FPGA (ini berjalan pada clock 100Mhz) dan rutekan ke salah satu pin. Saya mungkin harus menggunakan DCM atau PLL untuk ini, tetapi tidak tahu bagaimana memulainya di sini?

  2. Terapkan semacam I2C baca tulis dari FPGA.

Apa yang saya cari adalah referensi, mungkin yang online atau buku yang memberi saya contoh kode dan deskripsi masing-masing komponen perangkat keras yang tersedia di dalam FPGA, seperti DCM, irisan, clb, dll.

Saya kira itu seharusnya membuat saya mulai masuk ke dunia FPGA.

Kevin Boyd
sumber

Jawaban:

13

Contoh Kode

Buka OpenCores dan Anda akan menemukan lusinan proyek sumber terbuka. Ada banyak yang ditulis dalam Verilog dan mencakup keseluruhan dari perangkat I / O hingga prosesor.

Juga, jangan lupa banyak Catatan Aplikasi yang tersedia dari Xilinx. Mereka sangat membantu dengan perangkat mereka sendiri.

Aliran Desain

Ambil satu atau dua buku tentang aliran desain sehingga Anda mendapatkan ikhtisar tentang langkah-langkah yang terlibat dalam desain FPGA. Singkatnya, mereka akan melibatkan:

  1. Entri desain - dalam kasus Anda, Verilog.
  2. Simulasi fungsional - menggunakan berbagai alat.
  3. Sintesis - dalam kasus Anda, menggunakan alat Xilinx ISE.
  4. Simulasi - untuk memverifikasi desain pasca sintesis Anda karena beberapa aspek Verilog tidak dapat disintesis.
  5. Tempat & Rute - menggunakan alat ISE Xilinx.
  6. Implementasi - mengunduh desain ke FPGA.
  7. Pengujian.

Komponen FPGA

Adapun untuk menggunakan komponen FPGA, ada berbagai cara untuk menggunakannya. Tetapi dengan asumsi bahwa Anda menggunakan entri desain Verilog, Anda dapat menyimpulkan atau membuat instance berbagai komponen.

Inferensi umumnya melibatkan mendapatkan alat sintesis untuk memilih komponen terbaik untuk digunakan berdasarkan fungsionalitas yang Anda butuhkan. Contoh terbaik dari ini adalah merancang penambah.

Dengan melakukan q <= a + batau q = a + bAnda dapat menyimpulkan penambah. Keduanya akan menyimpulkan adder tetapi ada perbedaan ketika Anda menggunakan sintaks pemblokiran / non-pemblokiran.

Instansiasi umumnya melibatkan pemanggilan komponen perpustakaan yang tepat dalam kode. Beberapa komponen tidak dapat dengan mudah disimpulkan dalam kode - seperti DCM. Anda dapat menggunakan alat dan contoh ISE untuk mempelajari lebih lanjut tentang ini.

Daftar sebenarnya komponen itu sendiri disediakan oleh Xilinx di Panduan Perpustakaan .

Protip

Cara terbaik untuk mempelajari ini sebenarnya adalah dengan bereksperimen dengan potongan kode pendek dan menjalankannya melalui sintesis ISE untuk melihat apa yang dimuntahkannya. Ada juga banyak contoh di toolset ISE itu sendiri.

sybreon
sumber
5

Referensi absolut Anda akan menjadi panduan pengguna Spartan 6 . Misalnya, panduan Sumber Daya Pencatatan Jam (UG382) mencakup cara mengkonfigurasi DCM. Untuk contoh bagaimana kode aktual terlihat, ISE memiliki database mereka. Buka Bahasa Templat (bola lampu di bilah alat), lalu lihat dalam bahasa (VHDL atau Verilog) -> Device Primitive Instantiation -> keluarga chip (Spartan-6) -> Komponen Jam.

Detail khusus untuk papan Anda tersedia dari Digilent, khususnya Anda ingin UCF (yang menamai semua IO) dan manual referensi (yang menjelaskan sirkuit periferal).

Struktur umum bahasa Anda, termasuk cara membuat komponen, mungkin lebih baik diambil dari buku dan contoh. Saya belum pernah menggunakan Verilog jadi tidak punya saran khusus. Namun, templat menyertakan cuplikan dari berbagai konstruksi umum juga.

Yann Vernier
sumber
Apakah Anda spesialis dalam VHDL? Mengenai UCF mengapa penting untuk bekerja dengan dewan Digilent?
Kevin Boyd
1
Saya tidak berspesialisasi seperti itu - hanya belum mempelajari Verilog. UCF adalah file yang menjelaskan pin mana yang terhubung dengan port Anda, serta permintaan pencatatan jam kerja. Tanpanya, pin ditetapkan secara acak, yang tidak akan cocok dengan papan yang ada.
Yann Vernier
Saya mengerti bagian penugasan pin, bagaimana dengan tuntutan pencatatan jam kerja?
Kevin Boyd
1
Batasan waktu mencakup hal-hal seperti frekuensi jam, pengaturan dan waktu penahanan. Anda masih akan mendapatkan informasi dalam analisis pengaturan waktu, tetapi dengan menentukan persyaratan dalam file kendala memungkinkan alat mendeteksi ketika mereka gagal, dan mungkin berusaha lebih keras untuk memenuhi kebutuhan Anda saat berada di ambang batas.
Yann Vernier
1

Untuk jam Anda menggunakan DLL / PLL megacore.

Brian Carlton
sumber
Spartan 6 memiliki DCM dan PLL, belum ditemukan DLL. Setelah mencari forum saya menemukan bahwa Xilinx memiliki alat yang disebut Core Generator yang dapat dikonfigurasi untuk menghasilkan sumber daya jam.
Kevin Boyd