Bagaimana cara mendesain prosesor berbasis ARM saya sendiri?

37

Saya punya beberapa pertanyaan tentang bagaimana saya mendesain CPU berbasis ARM sendiri?

  • Bagaimana cara seseorang memulai dengan lisensi ARM dan berakhir dengan paket yang siap disolder ke papan?
  • Apa yang saya dapatkan dari ARM (saya yakin mereka memiliki beberapa opsi lisensi untuk dibagikan - Lisensi Arsitektur (gaya Qualcomm Snapdragon) dan Lisensi Inti (gaya TI OMAP))?
  • Alat apa yang saya perlukan untuk melanjutkan setelah saya mendapatkan 'sesuatu' dari ARM?
  • Apa yang saya kirim ke fab?
  • Saya percaya hanya beberapa pendiri yang memiliki lisensi untuk mengetsa inti ARM ke wafer silikon. Apakah saya benar?
  • Sebagai seorang siswa, dapatkah saya melakukan ini di FPGA? Bagaimana cara mendapatkan pengalaman untuk hal seperti ini?
Tuan Loh.
sumber
9
Jawaban yang jelas adalah berbicara dengan ARM.
Olin Lathrop
3
Lihatlah opencores.com - ada banyak inti prosesor yang ada di berbagai negara bagian kelengkapan dan fungsionalitas. Sejauh mendapatkan sumber inti ARM yang sebenarnya ... seperti yang dikatakan @OlinLathrop ... bicaralah dengan ARM.
akohlsmith
6
Saya tidak mengerti downvotes, ini mungkin pertanyaan naif, tapi jelas IMO sah.
Jon L
2
Masalahnya adalah bahwa pertanyaan Anda khusus untuk alur kerja yang tidak akan Anda ikuti. Alur kerja yang dapat Anda ikuti - menggunakan desain asli atau yang tersedia secara bebas dalam HDL untuk menargetkan FPGA - sama berbedanya dengan spekulasi yang sebenarnya.
Chris Stratton
2
Inti Cortex-M1 tampaknya dimaksudkan untuk berjalan di setiap FPGA yang mampu. Vendor FPGA utama memiliki lisensi IP, dan mengirimkannya ke perancang seperti halnya soft core lainnya. Saya berasumsi tidak gratis, tetapi ada kemungkinan program yang tersedia khusus untuk penggunaan akademik.
RBerteig

Jawaban:

68

Inilah cara perusahaan melakukannya:

  1. Naikkan sekitar US $ 10 juta.
  2. Bernegosiasi dengan ARM untuk mendapatkan lisensi. Ini mungkin akan menelan biaya setidaknya US $ 1 juta.
  3. Dapatkan file desain dari ARM. Ini mungkin dalam beberapa bentuk VHDL, Verilog, atau netlist "terenkripsi".
  4. Rancang chip Anda sendiri menggunakan campuran logika Anda sendiri (untuk periferal) dan apa yang ARM berikan kepada Anda. Langkah ini kemungkinan akan membutuhkan beberapa perangkat lunak CAD yang mahal dan tim ahli yang kecil. Berharap untuk menghabiskan setidaknya US $ 5 juta dan beberapa tahun lagi.
  5. Dapatkan topeng yang dibuat untuk chip itu sendiri. Jika Anda menggunakan proses semikonduktor modern maka ini akan berjalan sekitar US $ 1 juta.
  6. Dapatkan chip itu sendiri dibuat. Harganya bervariasi, tetapi harus kurang dari US $ 0,5 juta.
  7. Debug chip yang Anda buat, perbaiki bug, lalu kembali ke Langkah 5 hingga Anda memiliki sesuatu yang dapat Anda jual.

Inilah cara ANDA melakukannya:

  1. Ikuti kursus arsitektur komputer tingkat pascasarjana di universitas setempat.
  2. Ambil lebih banyak kursus dalam logika digital dan apa pun yang lainnya.
  3. Desain CPU dari awal di VHDL atau Verilog.
  4. Desain CPU lain dari awal.
  5. Lihatlah set instruksi ARM dan rancang CPU yang kompatibel.
  6. Jadikan CPU Anda yang Kompatibel dengan ARM bekerja dalam FPGA.
  7. Jangan mendistribusikan kode sumber VHDL / Verilog Anda kecuali Anda ingin digugat.
  8. Gunakan pengalaman ARM Anda untuk menulis disertasi yang bagus untuk PhD Anda.
  9. Gunakan PhD Anda untuk mendapatkan pekerjaan di ARM, atau TI, atau siapa pun. Kemudian ulangi proses dengan menggunakan 7 langkah sebelumnya tentang bagaimana perusahaan melakukannya.

Ok, jadi daftar ini sedikit membingungkan tetapi pada dasarnya benar. Intinya, jangan repot-repot berurusan dengan ARM secara langsung karena kemungkinan Anda tidak memiliki uang. Dan jangan lakukan apa pun yang akan membuat Anda dituntut oleh ARM.


sumber
1
+1. Jawaban yang sangat bagus. Apa yang akan saya katakan, tetapi lebih baik.
Rocketmagnet
1
Setiap kursus yang baik akan mencakup struktur dasar berbagai jenis CPU dan cara kerjanya. Topik harus mencakup mikrokode, dekode instruksi, ALU, akses memori, cache, register, pipelining, data hazzard, prefetch instruksi, dll.
3
Apakah ada alasan bahwa set instruksi ARM, di dalam dan dari dirinya sendiri, akan lebih dipatenkan daripada CPU lain yang klonnya berlimpah? Tentu saja ada kecenderungan untuk menjadi beberapa fitur arsitektur yang dipatenkan, tetapi jika tujuan seseorang adalah merancang CPU yang akan bekerja dengan kompiler yang ada, akankah set instruksi itu sendiri menimbulkan masalah?
supercat
1
@supercat Biasanya instruksi itu sendiri tidak dapat dipatenkan kecuali mereka memasukkan beberapa hal arsitektur. MIPS melakukan ini dengan CPU mereka, di mana mereka mematenkan beberapa instruksi yang akan memuat / menyimpan kata-kata yang tidak selaras kata serta beberapa hal untuk secara dinamis beralih antara big dan little endian. Ini ditantang di pengadilan ketika MIPS menggugat pembuat klon MIPS, dan MIPS menang (sekitar tahun 2000). Tetapi sebagian besar paten adalah tentang masalah arsitektur. Sayangnya, Anda tidak dapat membuat CPU yang kompatibel dengan kompiler yang ada tanpa menyalin arsitektur dan set instruksi.
1
@ LordLoh, Anda mungkin menemukan pertanyaan-pertanyaan ini berguna: electronics.stackexchange.com/questions/28686/… electronics.stackexchange.com/a/7051/638
W5VO
32

ARM memiliki Program University DesignStart . Sebagai siswa, Anda hanya dapat mengakses materi dasar Cortex-M0. Tetapi jika Anda benar-benar tertarik, libatkan fakultas Anda dan kemudian Anda dapat memiliki akses ke materi desain yang jauh lebih banyak (kode Verilog FPGA, IP Evaluasi, Simulasi, dll.)

tertanam.kyle
sumber
4
Terima kasih :-) Saya akan mencoba meminta penasihat saya untuk meminta beberapa di antaranya.
Tuan Loh.
WFIW, jawaban ini sekarang sudah usang, baik Cortex-M0 dan Cortex-M3 tersedia, dan beberapa bagian dari produk ini terbuka untuk non-siswa / institusi.
Sean Houlihane
5

Lihatlah inti ARM ini di OpenCores.

plan9assembler
sumber
1
Tetapi berhati-hatilah: implementasi ulang seperti itu hanya dapat ditoleransi oleh ARM: eetimes.com/author.asp?section_id=36&doc_id=1287452 , Anda akan menjadi gencatan dan penghentian / gugatan hukum. Juga pertimbangkan lengkungan terbuka seperti RISC-V.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
3

ARM Cortex-M1 (mungkin yang paling sederhana dari prosesor ARM) adalah prosesor ARM pertama yang dirancang khusus untuk diimplementasikan sebagai prosesor lunak dalam FPGA. Ini dioptimalkan untuk jenis FPGA berikut :

Actel (M1 ProASIC3 and M1 Fusion)
Altera (Cyclone-II, Stratix-III)
Xilinx (Spartan-3, Virtex-5)

ARM sendiri membuat Kit Pengembangan Cortex-M1 untuk Altera Cyclone III meskipun harganya sedikit mahal yaitu $ 625 dari DigiKey . Anda mendapatkan semua IP ARM Cortex-M1, dan lisensi untuk melakukan pengembangan (ditambah hibah royalti gratis untuk 1000 papan bagi mereka yang akan berproduksi, cukup keren).

Mungkin ada beberapa opsi untuk mendapatkan IP sendiri (mungkin mereka memiliki program akademik, orang lain menyebutkan program universitas, tapi itu untuk M0). Maka Anda bisa membeli papan pengembangan secara terpisah.

Berikut adalah beberapa informasi lebih lanjut tentang ARM Cortex-M1 di Altera .

Berikut ini beberapa informasi tentang meletakkan ARM Cortex-M1 pada FPGA Actel.

Sementara itu ada beberapa minat pada versi lain dari ARM Cortex pada FPGA; di sini adalah kertas dari seseorang yang menerapkan ARM Cortex-M0 pada Xilinx FPGA.

tcrosley
sumber
Jika Anda ingin mengubah desain, cobalah membuat mesin 32-bit yang "layak". Saat ini, ARM membaca instruksi 32-bit 8 bit pada satu waktu, yang berarti kenaikan PC sebesar 4 untuk setiap instruksi pengambilan.
Alan Campbell
1

Anda sekarang bisa mendapatkan akses ke prosesor Cortex-M3 (dan subsistem AHB / APB yang dapat diperpanjang) melalui program DesignStart ARM.

Opsi Eval memberikan target FPGA (simulasi didukung, dengan RTL yang tidak jelas dari inti, semua yang lain di Verilog). Ini saat ini menargetkan ARM MPS2 + FPGA, dengan dukungan mbed.

Versi Pro (hanya tersedia untuk perusahaan / universitas yang dapat menandatangani lisensi) memungkinkan pembuatan, dan menyertakan inti prosesor di Verilog (ini mencakup Cortex-M0 dan Cortex-M3).

Sean Houlihane
sumber