Desain prosesor Logisim

Bagian I
Bagian II
Bagian III
Bagian iv
Bagian v

Salah satu bab dari buku "Kode" oleh Charles Petzold didedikasikan untuk desain CPU dan pada awal bab ini menjelaskan perangkat yang memungkinkan Anda untuk meringkas set angka yang tersimpan dalam memori. Desain sirkuit ini di Logisim . Ambil satu set angka delapan digit dan sambungkan ke multiplexer, kami akan beralih dari satu nomor ke yang lain menggunakan penghitung yang terhubung ke input pemilih multiplexer, dan hubungkan adder dan baterai ke output multiplexer. Kami akan menggunakan tombol sebagai generator jam. Data akan dimuat ke dalam baterai ketika tombol dilepaskan (ini dilakukan dengan menggunakan elemen TIDAK yang terhubung ke tombol).



Kami akan menyimpan angka dalam RAM.

RAM dapat direpresentasikan sebagai satu set register, yang diakses menggunakan demultiplexer dan multiplexer (DMX dan MUX).


Misalkan satu set angka disimpan dalam RAM, dan kita perlu menambahkan semua angka dan menyimpan hasilnya (dalam sel gratis). Kami akan menyimpan perintah ("tambah" dan "simpan") dalam satu RAM, dan angka-angka sedang diproses di RAM lain. Metode penyimpanan ini adalah ciri khas arsitektur Harvard .
Perintah "1" akan menulis nomor dari penambah ke baterai, perintah "2" akan menulis nomor dari akumulator ke RAM ke-2.

Misalkan dalam RAM beberapa array angka disimpan. Yaitu kami membutuhkan
  • memuat angka dari RAM ke baterai
  • memuat nomor dari penambah ke dalam baterai
  • menghemat angka dari baterai ke RAM

Kami akan menggunakan multiplexer MUX untuk memilih data dari RAM.
Instruksi baru "5" mengaktifkan multiplexer MUX di sepanjang tepi naik dari generator jam, dan menulis ke baterai di sepanjang tepi jatuh (pada penurunan).


Selanjutnya, kami akan menyimpan instruksi dan data dalam satu RAM. Metode penyimpanan ini adalah ciri khas arsitektur von Neumann .
Perintah akan disimpan dalam empat digit pertama dari sel memori delapan-bit, alamat akan disimpan dalam empat digit kedua ( pengalamatan langsung ).

Kami akan memuat alamat dan perintah ke register terpisah, dan kemudian menggunakan multiplexer untuk pergi ke alamat yang disimpan. Untuk menulis data ke RAM, pertama-tama kita akan memuat data ke dalam register sementara Temp (jika tidak, instruksi akan ditulis ke RAM, bukan data), dan kemudian ke Ass baterai. Merekam data dalam Temp dan Ass akan dilakukan pada trailing edge.

Kami akan menambahkan, misalnya, angka 2 dan 3, yang terletak di sel 8 dan 9, dan menyimpan hasilnya dalam sel dengan alamat a.


Kami juga menambahkan kemampuan untuk melakukan lompatan tanpa syarat.
Kami menerapkan perangkat di mana hanya satu perintah yang akan dieksekusi - perintah lompatan tanpa syarat. Untuk melakukan ini, kami akan mengirimkan empat bit paling tidak signifikan (alamat, pada kenyataannya) ke penghasil yang menghasilkan alamat, dan kami akan mengirimkan perintah yang tersimpan dalam bit tinggi sel memori ke port unduhan.
Misalnya, untuk melompat ke sel dengan alamat 2, gunakan perintah 82.


Tambahkan perintah ke lompatan tanpa syarat ke skema sebelumnya.


Secara umum, di geektimes sudah ada artikel yang ditujukan untuk desain CPU di Logisim.

Semua skema yang disajikan di atas dapat diunduh dalam satu file .
Logisim dapat diunduh di sini .

Pertimbangkan bagaimana adder bekerja pada contoh chip 155im3 (7483). Untuk sirkuit mikro dari seri ke-155, kami setuju bahwa input memiliki resistor internal yang menarik ke plus (jika kaki "menggantung di udara", maka ada "satu" logis di atasnya), oleh karena itu, ketika daya terhubung ke sirkuit mikro, semua LED yang terhubung ke output akan menyala .

Gambar menunjukkan MS 74ls283 (analog modern dari 155im3).

Untuk mendesain chip seperti itu di Logisim, Anda harus memilih "Menu" - "Project" - "Add Scheme".

Beginilah tampilan MS ini di dalam subcircuit. Ini adalah empat penambah setengah digabungkan menjadi penambah penuh.

gambar


Sebagai baterai, kami akan menggunakan chip 155tm8 (74175) - pemicu D-quadruple.

Pemicu yang merupakan bagian dari MS melewati semua waktu sampai ada 1 pada input sinkronisasi, dan tidak hanya di tepi (pemicu dengan kontrol statis), tetapi dalam program Logisim kami hanya memiliki pemicu dengan kontrol dinamis, tetapi dalam hal ini tidak masalah ; kami akan menggunakan apa yang ada.

Anda dapat membaca lebih lanjut tentang pemicu di Wikipedia.

Mari kita kumpulkan model MS 155tm8 dari D-flip-flop.

gambar

Selanjutnya, kami mengumpulkan skema yang memungkinkan Anda untuk menambahkan set angka.

Misalnya, jika Anda menambahkan satu set angka 2 (0010), kami mendapatkan 2 (0010), 4 (0100), 6 (0110), dll.

gambar


gambar

Pertama, 2 muncul pada output penambah (LED merah), kemudian 2 dimuat ke dalam quad D-flip-flop (LED kuning), dan 4 muncul pada output penambah, kemudian 4 dimuat ke 155tm8, dan 6 muncul pada output penambah, dll.

Untuk merancang modul memori sederhana, kita membutuhkan multiplexer. Kami merancang 155kp2 dual multiplexer.
gambar

Kami juga membutuhkan penghitung. Kami akan merancang chip 155ie5.

Ini adalah penghitung empat digit, tetapi kita hanya perlu dua bit paling tidak signifikan.
Kami akan menyimpan angka, misalnya, 2 (0010), 3 (0011), 5 (0101).
gambar




Gabungkan semua komponen dalam satu sirkuit. Kami akan menambahkan angka yang disimpan di "memori"
2 + 3 + 5.


Logisim dapat diunduh di sini .

PS Artikel tentang buku “Kode. Bahasa rahasia ilmu komputer. " ada di Habré di sini .
Z.Y. Artikel yang diterjemahkan (diterjemahkan oleh PatientZero ) tentang arsitektur prosesor di sini , di sini dan di sini

Source: https://habr.com/ru/post/id406157/


All Articles