Daftar Isi:

Komputer Sepuluh Bit - VHDL: 4 Langkah
Komputer Sepuluh Bit - VHDL: 4 Langkah

Video: Komputer Sepuluh Bit - VHDL: 4 Langkah

Video: Komputer Sepuluh Bit - VHDL: 4 Langkah
Video: Adder/Subtractor of 4 bits in VHDL 2024, Juli
Anonim
Komputer Sepuluh Bit - VHDL
Komputer Sepuluh Bit - VHDL

Dibuat oleh: Tyler Starr dan Ezzeedden Gazali

pengantar

Proyek ini diselesaikan sebagai bagian dari tugas akhir untuk CPE 133 di Cal Poly SLO. Ini adalah proyek yang bagus untuk seseorang yang ingin memahami bagaimana komputer berfungsi pada tingkat terendah mereka dan bagaimana mereka mencapai tugas mereka. Proyek ini dimodelkan setelah komputer SAP 8-bit yang dijelaskan dalam buku Albert Malvino Digital Computer Electronics. Namun, kami telah meningkatkan komputer menjadi 10-bit untuk memungkinkan penerapan lebih banyak kode operasi (kode operasi). Pengguna dapat memprogram komputer untuk melakukan serangkaian operasi dengan memasukkan instruksi tertentu.

Arsitektur Sistem dan Sirkuit:

Komputer ditulis dalam VHDL dan akan dimuat di papan Basys 3 dari Digilent. Input akan dipetakan ke sakelar di bagian bawah papan. Dua sakelar taktil akan digunakan untuk fungsi Reset dan Write. Output akan ditampilkan pada layar 7 segmen papan.

Komputer akan dipecah menjadi sirkuit (modul) yang lebih kecil yang menangani operasi yang berbeda. Setiap modul akan dijelaskan secara rinci dalam langkah-langkah berikut.

Langkah 1: Bahan

Bahan
Bahan

Semua yang diperlukan untuk proyek ini adalah papan Basys3 FPGA dari Digilent dan kabel micro USB untuk menghubungkan papan ke komputer Anda.

Langkah 2: Blok Diagram Modul Sirkuit

Diagram Blok Modul Sirkuit
Diagram Blok Modul Sirkuit
Diagram Blok Modul Sirkuit
Diagram Blok Modul Sirkuit
Diagram Blok Modul Sirkuit
Diagram Blok Modul Sirkuit

Diagram blok di atas menunjukkan modul sirkuit yang berbeda yang membentuk komputer 10-bit. Di bawah ini adalah deskripsi untuk masing-masing bagian/modul individual yang ditunjukkan pada diagram di atas.

Penghitung Program

Deskripsi Input: input adalah input 5 bit untuk memuat angka ke penghitung program. Cp saat tinggi penghitung mengandalkan tepi jam yang jatuh. Clr me-reset penghitung ke 0. Ep ketika tinggi penghitung mengeluarkan hitungan saat ini. Sp ketika tinggi penghitung mengatur hitungan ke angka pada input

  • Deskripsi Keluaran:

    output adalah salinan hitungan untuk digunakan pada LED 0-15. Hitungan menampilkan hitungan saat ini.

  • Tempat Keseluruhan di Sistem: Penghitung ini melacak lokasi memori tempat program itu berada. Semua program dimulai pada alamat memori 00000 (0) dan naik ke 11111 (31), kecuali penghentian digunakan. Dalam pernyataan lompat, penghitung program terus menghitung dari alamat tempat program melompat.

Masukan MUX

  • Deskripsi Input: Alamat mengambil input dari switch 11 sampai 15. MAR mengambil input dari register 10 bit yang digunakan sebagai MAR. Program mengontrol input mana yang akan dirutekan ke output.
  • Deskripsi Keluaran: keluaran merutekan masukan yang dipilih ke RAM.
  • Tempat Keseluruhan di Sistem: MUX ini menentukan apakah akan merutekan alamat dari sakelar atau bus ke RAM. Dalam mode program alamat dari switch dirutekan dan dalam mode run alamat dari bus dirutekan.

ramMUX

  • Deskripsi Input: userInput adalah input yang dimasukkan pengguna selama mode program. aRegInput adalah data yang terkandung dalam register A, ini digunakan selama operasi pemindahan. control adalah pilihan untuk MUX ini.
  • Deskripsi Output: output adalah input data 10 bit ke RAM.
  • Tempat Keseluruhan di Sistem: MUX ini mengeluarkan data input 10-bit yang digunakan dalam modul RAM. Ketika bit kontrol tinggi, MUX mengeluarkan data yang dimasukkan pengguna dalam mode program. Ketika bit kontrol rendah, MUX mengeluarkan data pada bus kontrol.

ramModul

  • Deskripsi Input: inputData adalah data yang disimpan dalam RAM. inputAddress adalah lokasi penyimpanan data. program menunjukkan apakah komputer dalam mode program atau run. readWrite menunjukkan apakah operasi baca atau tulis sedang terjadi. notCE adalah bit kontrol untuk modul RAM. move menunjukkan bahwa operasi pemindahan sedang dilakukan.
  • Deskripsi Keluaran: keluaranDataToBus adalah data yang masuk dari RAM ke bus. outputData dan output Alamat adalah data dan alamat yang masuk ke register instruksi.
  • Tempat Keseluruhan di Sistem: RAM memungkinkan program dan penyimpanan data dalam memori sebelum program dijalankan. Setelah program berjalan, RAM menerima alamat dari MAR dan mengeluarkan data dari alamat tersebut ke bus.

alamatROM

  • Deskripsi Input: opCode adalah input yang berisi alamat opcode yang sedang dilakukan oleh komputer
  • Deskripsi Keluaran: opCodeStart adalah alamat memori yang menunjukkan lokasi instruksi mikro pertama dari opCode yang sesuai.
  • Tempat Keseluruhan dalam Sistem: Modul ini mengambil instruksi mikro yang terkunci dan mengeluarkan lokasi memori yang sesuai dengan awal urutan instruksi mikro tersebut.

ringCounter

  • Deskripsi Input: reset mengatur penghitung kembali ke 100000 ("keadaan T" pertama). Clk menambah penghitung satu per satu di tepi jam yang jatuh. NOP menunjukkan bahwa status/siklus saat ini adalah siklus "tidak ada operasi".
  • Deskripsi Output: count adalah output dari counter.
  • Tempat Keseluruhan dalam Sistem: Penghitung cincin mengontrol penghitung yang dapat diatur sebelumnya dan menggambarkan enam langkah mikro dalam setiap siklus instruksi (T1-T6).

pra-konter

  • Deskripsi Input: opCodeStart adalah lokasi memori dari instruksi mikro untuk opCode yang sedang dijalankan. T1 mengatur ulang penghitung ke 0 saat tinggi. Ketika T3 tinggi, opCodeStart dimuat dan penghitungan berlanjut dari lokasi tersebut selama 3 siklus tersisa (T4-T6). Clr menyetel penghitung ke 0. Clk menambah penghitung satu per satu di tepi jatuh.
  • Deskripsi Output: controlWordLocation menampilkan lokasi memori dari kata kontrol yang akan dieksekusi.
  • Tempat Keseluruhan di Sistem: Setiap op-code memiliki 3 instruksi mikro. Penghitung bertambah 1 mulai dari 0 untuk 3 siklus pertama (siklus pengambilan). Penghitung kemudian dipicu oleh penghitung cincin untuk memuat alamat pada opCodeStart dan bertambah 1 untuk 3 siklus tersisa. Dengan cara ini, preCounter mengontrol urutan instruksi mikro yang akan dilakukan.

controlROM

  • Deskripsi Input: controlWordLocation adalah alamat dari controlWord yang akan dikeluarkan oleh controlROM. NOP menunjukkan bahwa lokasi tersebut adalah lokasi "tidak ada operasi".
  • Deskripsi Keluaran: controlWord adalah kata kontrol yang mengaktifkan/menonaktifkan modul komputer yang berbeda untuk melakukan operasi yang diinginkan.
  • Tempat Keseluruhan di Sistem: Modul ini mendekode lokasi memori dari preCounter dan mengeluarkan controlWord untuk operasi yang diinginkan.

ALU

  • Deskripsi Input: A dan B adalah input dari Register A dan Register B dimana ALU melakukan operasi aritmatika dan logika. Saat pengurangan aktif, ini menunjukkan bahwa B sedang dikurangi dari A.
  • Deskripsi Keluaran: hasil adalah hasil penjumlahan A dan B, atau pengurangan B dari A. Keluaran lebih besarDari, kurangDari, dan samaUntuk menunjukkan jika (AB, atau A=B) dan digunakan dalam modul lompatan bersyarat. kesalahan menunjukkan overflow atau underflow saat aktif.
  • Tempat Keseluruhan dalam Sistem: ALU berisi logika untuk operasi aritmatika dan logika yang dilakukan oleh komputer. Modul ini dapat menambah dan mengurangi dua bilangan biner 10-bit. ALU juga dapat menentukan apakah A>B, A

bersyaratJmp

  • Deskripsi Input: inputCount digunakan untuk mengunci hitungan saat ini. inputAddress digunakan untuk mengunci alamat yang akan dilompati. loadFromRegister saat kait rendah inputAddress. loadCount ketika kait rendah inputCount. ketika outputEnable rendah, output diatur ke alamat untuk melompat ke.gT, iT, dan eQ menentukan kondisi mana yang sedang diperiksa. moreThan, lessThan, dan equalTo adalah input dari ALU yang menunjukkan hasil perbandingan antara A dan B. Pada tepi clock naik dari Clk inputCount dan inputAddress dibaca ke dalam register.
  • Deskripsi Keluaran: keluaranJmp adalah alamat yang akan dibaca oleh penghitung program.
  • Tempat Keseluruhan di Sistem: modul ini menangani lompatan bersyarat dan tidak bersyarat untuk komputer. Berdasarkan input gT, iT, dan eQ, modul menentukan kondisi mana yang harus diperiksa dan apakah kondisi itu benar atau salah. Jika kondisinya benar, itu akan menampilkan alamat instruksi untuk melompat, jika tidak, itu akan menampilkan hitungan instruksi berikutnya.

binToBCD

  • Deskripsi Input: angka angka 10 bit untuk dikonversi ke desimal berkode biner.
  • Deskripsi Keluaran: ratusan digit di tempat ratusan bilangan biner. puluhan digit di tempat puluhan bilangan biner. satuan angka di tempat satuan bilangan biner.
  • Tempat Keseluruhan di Sistem: Modul ini mengubah angka 10 bit dari register keluaran ke BCD agar driver tampilan empat digit kami menampilkan angka dalam desimal pada tampilan 7 segmen.

empatDigitDriver

  • Deskripsi Input: angka adalah input biner 16 bit yang digerakkan ke dekoder. inClk adalah jam internal papan Basys dan digunakan untuk pembagi jam. RST mengatur ulang jam yang digunakan untuk menggerakkan angka.
  • Deskripsi Keluaran: anoda menentukan tempat digit mana yang akan menyala. digit adalah nomor input ke decoder.
  • Tempat Keseluruhan di Sistem: Modul ini menggerakkan dekoder untuk menampilkan nomor BCD ke layar.

dekoder

  • Deskripsi Inputs:inputNumber adalah digit yang berasal dari driver dan yang akan di-decode.
  • Deskripsi Keluaran: katoda menentukan katoda mana yang akan dihidupkan untuk menampilkan digit yang diinginkan.
  • Tempat Keseluruhan di Sistem: Modul ini menerjemahkan digit yang akan ditampilkan pada tampilan 7 segmen.

empatDigitDisplay

  • Deskripsi input: angka adalah angka yang akan ditampilkan pada tampilan 7 segmen. kesalahan menunjukkan kapan tampilan harus membaca "Err". Clk adalah sinyal jam bahwa tampilan sedang berjalan. Sinyal ini harus sekitar 60 Hz agar tampilan dapat menampilkan semua 4 digit tempat secara bersamaan.
  • Deskripsi Keluaran: anoda menentukan tempat digit mana yang diaktifkan. katoda menentukan katoda mana yang diaktifkan untuk menampilkan digit yang diinginkan.
  • Tempat Keseluruhan dalam Sistem: Modul ini menampilkan angka pada tampilan 7 segmen. Lihat manual instruksi papan Basys 3 untuk informasi tentang katoda dan anoda mana yang diaktifkan untuk menggunakan tampilan. Ketika bit kesalahan tinggi, layar menunjukkan "Err".

keluaranMUX

  • Deskripsi Input: progModeInput menentukan led mana yang dihidupkan selama mode pemrograman. runModeInput menentukan led mana yang dihidupkan selama mode run. modeSelect adalah bit pilih atau kontrol untuk MUX.
  • Deskripsi Keluaran: ledOutput menunjukkan led mana yang akan dinyalakan.
  • Tempat Keseluruhan di Sistem: Tergantung pada mode komputer (program atau rum), MUX akan menyalakan led yang berbeda. Dalam mode program (modeSelect adalah '0'), MUX menyalakan led agar menyerupai lokasi memori komputer dan isinya. Dalam mode run (modeSelect adalah '1'), MUX digunakan untuk debugging tetapi dapat diatur untuk menampilkan hal lain.

pembagi jam

  • Deskripsi Input:stop membaca lima bit MSB dari bus untuk mendeteksi perintah berhenti ('11111') dan menghentikan jam. inputClk adalah sinyal clock internal dari board Basys 3.
  • Deskripsi Keluaran: ouputClk adalah jam baru yang telah diperlambat.
  • Tempat Keseluruhan di Sistem: Jam ini digunakan untuk memperlambat komputer agar pengguna dapat menentukan apa yang sedang terjadi. Jam dapat berjalan lebih cepat, namun saat ini disetel ke 2 Hz.

triStateBuffer

  • Deskripsi Input: Din adalah input 5 bit yang masuk ke buffer. Ep adalah bit kontrol.
  • Deskripsi Keluaran: Dout adalah keluaran 5 bit dari buffer
  • Tempat Keseluruhan di Sistem: Ketika bit kontrol Ep aktif, buffer mengeluarkan input. Ketika bit kontrol tidak aktif, buffer tidak mengeluarkan apa pun.

sepuluhBitDregister

  • Deskripsi Input: Dbus adalah input untuk register. Clk memungkinkan register untuk membaca data pada tepi jam yang meningkat. ARST mengatur register ke 0 secara tidak sinkron. Ketika outputEnable rendah, isi register adalah outputnya. Saat readIn rendah, register mengunci Dbus pada tepi clock naik.
  • Deskripsi Keluaran: Qbus adalah keluaran dari register
  • Tempat Keseluruhan dalam Sistem: Register digunakan beberapa kali di seluruh komputer dan digunakan untuk menyimpan informasi saat melakukan operasi.

limaBitDregister

  • Deskripsi Input: Dbus adalah input yang menjadi tujuan register. Clk memungkinkan register untuk membaca data pada tepi jam yang meningkat. ARST mengatur register ke 0 secara tidak sinkron. Ketika outputEnable rendah, isi register adalah outputnya. Saat readIn rendah, register mengunci Dbus pada tepi clock naik.
  • Deskripsi Keluaran: Qbus adalah keluaran dari register.
  • Tempat Keseluruhan dalam Sistem: Register digunakan beberapa kali di seluruh komputer dan digunakan untuk menyimpan informasi saat melakukan operasi.

Langkah 3: Kode

Di bawah ini adalah folder yang berisi file kendala dan sumber untuk komputer 10-bit.

Langkah 4: Demo dan Kode Contoh

Video di atas menunjukkan cara memprogram komputer 10-bit pada papan Basys 3 FPGA. Sebuah pdf yang berisi kode-op dan contoh program juga dilampirkan di bawah ini.

Direkomendasikan: