Isi kandungan:

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

Video: Sepuluh Bit Komputer - VHDL: 4 Langkah

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

Dibuat oleh: Tyler Starr dan Ezzeedden Gazali

Pengenalan

Projek ini disiapkan sebagai sebahagian daripada projek akhir untuk CPE 133 di Cal Poly SLO. Ini adalah projek yang bagus untuk seseorang yang ingin memahami bagaimana komputer berfungsi pada tahap terendah dan bagaimana mereka mencapai tugasnya. Projek ini dimodelkan setelah komputer SAP 8-bit yang dijelaskan dalam buku Albert Malvino Digital Computer Electronics. Walau bagaimanapun, kami telah meningkatkan komputer menjadi 10-bit untuk membolehkan pelaksanaan lebih banyak kod op (kod operasi). Pengguna dapat memprogram komputer untuk melakukan satu set operasi dengan memasukkan petunjuk tertentu.

Senibina Sistem dan Litar:

Komputer ditulis dalam VHDL dan akan terdapat di papan Basys 3 dari Digilent. Input akan dipetakan ke suis di bahagian bawah papan. Dua suis taktil akan digunakan untuk fungsi Reset dan Tulis. Keluaran akan dipaparkan pada paparan 7 segmen papan.

Komputer akan dipecah menjadi litar yang lebih kecil (modul) yang mengendalikan operasi yang berbeza. Setiap modul akan dijelaskan secara terperinci dalam langkah-langkah berikut.

Langkah 1: Bahan

Bahan
Bahan

Yang diperlukan untuk projek ini ialah papan Basys3 FPGA dari Digilent dan wayar USB mikro untuk menyambungkan papan ke komputer anda.

Langkah 2: Blok Diagram Modul Litar

Blok Diagram Modul Litar
Blok Diagram Modul Litar
Blok Diagram Modul Litar
Blok Diagram Modul Litar
Blok Diagram Modul Litar
Blok Diagram Modul Litar

Gambarajah blok di atas menunjukkan modul litar yang berbeza yang membentuk komputer 10-bit. Berikut adalah penerangan untuk setiap bahagian / modul individu yang ditunjukkan dalam rajah di atas.

Kaunter Program

Penerangan Input: input adalah input 5 bit untuk memuatkan nombor ke kaunter program. Cp ketika tinggi kaunter bergantung pada tepi jam yang jatuh. Clr menetapkan semula kaunter ke 0. Ep apabila tinggi pembilang menghasilkan kiraan semasa. Sp ketika tinggi kaunter menetapkan kiraan ke nombor pada input

  • Penerangan Hasil:

    output adalah salinan kiraan untuk digunakan pada LEDS 0-15. Kira menghasilkan kiraan semasa.

  • Tempat Keseluruhan dalam Sistem: Kaunter ini melacak lokasi memori di mana program berada. Semua program bermula pada alamat memori 00000 (0) dan naik ke 11111 (31), kecuali jika berhenti digunakan. Dalam pernyataan lompatan, kaunter program terus mengira dari alamat yang programnya lompat.

Input MUX

  • Huraian Input: Alamat mengambil input dari suis 11 hingga 15. MAR mengambil input dari daftar 10 bit yang digunakan sebagai MAR. Program mengawal input mana yang menuju ke output.
  • Penerangan mengenai Output: output mengarahkan input yang dipilih ke RAM.
  • Tempat Keseluruhan dalam Sistem: MUX ini menentukan sama ada merutekan alamat dari suis atau bas ke RAM. Dalam mod program alamat dari suis diarahkan dan dalam mod jalan alamat dari bus dihala.

ramMUX

  • Huraian Input: userInput adalah input yang dimasukkan pengguna semasa mod program. aRegInput adalah data yang terdapat dalam daftar A, ini digunakan selama operasi bergerak. kawalan adalah pilihan untuk MUX ini.
  • Penerangan mengenai Output: output adalah input data 10-bit ke RAM.
  • Tempat Keseluruhan dalam Sistem: MUX ini mengeluarkan data input 10-bit yang digunakan dalam modul RAM. Apabila bit kawalan tinggi, MUX mengeluarkan data yang dimasukkan pengguna dalam mod program. Apabila bit kawalan rendah, MUX mengeluarkan data pada bas kawalan.

ramModul

  • Penerangan Input: inputData adalah data yang disimpan dalam RAM. inputAddress adalah lokasi di mana data disimpan. program menunjukkan jika komputer dalam mod program atau jalankan. readWrite menunjukkan sama ada operasi membaca atau menulis sedang berlaku. notCE adalah bit kawalan untuk modul RAM. bergerak menunjukkan bahawa operasi bergerak sedang dilakukan.
  • Penerangan Output: outputDataToBus adalah data yang pergi dari RAM ke bas. outputData dan Alamat output adalah data dan alamat yang masuk ke daftar arahan.
  • Tempat Keseluruhan dalam Sistem: RAM membolehkan penyimpanan program dan data dalam memori sebelum program dijalankan. Setelah program dijalankan, RAM akan menerima alamat dari MAR dan mengeluarkan data pada alamat tersebut ke bus.

alamatROM

  • Penerangan Input: opCode adalah input yang mengandungi alamat opcode yang sedang dilakukan oleh komputer
  • Penerangan Keluaran: opCodeStart adalah alamat memori yang menunjukkan lokasi arahan mikro pertama dari opCode yang sesuai.
  • Tempat Keseluruhan dalam Sistem: Modul ini mengambil arahan mikro yang terkunci dan mengeluarkan lokasi memori yang sesuai dengan permulaan urutan arahan mikro itu.

kaunter cincin

  • Penerangan Input: reset menetapkan kaunter kembali ke 100000 ("keadaan T" pertama). Clk menambah kaunter satu demi satu di tepi jam yang jatuh. NOP menunjukkan bahawa keadaan / kitaran semasa adalah kitaran "tanpa operasi".
  • Huraian Keluaran: kiraan adalah output pembilang.
  • Tempat Keseluruhan dalam Sistem: Penghitung cincin mengawal pembilang yang dapat diselesaikan dan menggambarkan enam langkah mikro dalam setiap kitaran arahan (T1-T6).

pra kaunter

  • Penerangan Input: opCodeStart adalah lokasi ingatan arahan mikro untuk opCode yang dijalankan. T1 menetapkan semula pembilang ke 0 ketika tinggi. Apabila T3 tinggi, opCodeStart dimuat dan kiraan berterusan dari lokasi itu untuk baki 3 kitaran (T4-T6). Clr menetapkan kaunter ke 0. Clk menambah kaunter satu lawan satu di tepi jatuh.
  • Huraian Output: controlWordLocation mengeluarkan lokasi memori kata kawalan yang akan dilaksanakan.
  • Tempat Keseluruhan dalam Sistem: Setiap op-code mempunyai 3 arahan mikro. Pembilang bertambah dengan 1 bermula pada 0 untuk 3 kitaran pertama (kitaran pengambilan). Kaunter kemudian dipicu oleh penghitung cincin untuk memuatkan alamat di opCodeStart dan kenaikan sebanyak 1 untuk baki 3 kitaran. Dengan cara ini preCounter mengawal urutan arahan mikro yang akan dijalankan.

kawalanROM

  • Penerangan Input: controlWordLocation adalah alamat controlWord yang akan dikeluarkan oleh controlROM. NOP menunjukkan bahawa lokasi tersebut adalah lokasi "tanpa operasi".
  • Huraian Keluaran: controlWord adalah kata kawalan yang membolehkan / mematikan modul komputer yang berbeza untuk menjalankan operasi yang diinginkan.
  • Tempat Keseluruhan dalam Sistem: Modul ini menyahkod lokasi memori dari praCounter dan mengeluarkan controlWord untuk operasi yang diinginkan.

ALU

  • Huraian Input: A dan B adalah input dari Daftar A dan Daftar B yang mana ALU menjalankan operasi aritmetik dan logik. Apabila tolak aktif, ini menunjukkan bahawa B dikurangkan dari A.
  • Penerangan Keluaran: hasilnya adalah hasil penambahan A dan B, atau pengurangan B dari A. Keluaran lebih besarThan, kurangThan, dan samaUntuk menunjukkan jika (AB, atau A = B) dan digunakan dalam modul lompat bersyarat. ralat menunjukkan limpahan atau aliran masuk semasa aktif.
  • Tempat Keseluruhan dalam Sistem: ALU mengandungi logik untuk operasi aritmetik dan logik yang dilakukan oleh komputer. Modul ini dapat menambah dan mengurangkan dua nombor perduaan 10-bit. ALU juga dapat menentukan sama ada A> B, A

bersyaratJmp

  • Descriptoin of Inputs: inputCount digunakan untuk mengunci jumlah semasa. inputAddress digunakan untuk memasukkan alamat yang akan dilayari. loadFromRegister ketika input rendah selak. loadCount apabila inputCount rendah. ketika outputEnable rendah output diatur ke alamat untuk melompat ke.gT, iT, dan eQ menentukan keadaan mana yang diperiksa. lebih besarThan, kurangThan, dan samaTo adalah input dari ALU yang menunjukkan hasil perbandingan antara A dan B. Di pinggir jam Clk yang semakin meningkat, inputCount dan inputAddress dibaca ke dalam register.
  • Penerangan mengenai Output: outputJmp adalah alamat yang akan dibaca oleh kaunter program.
  • Tempat Keseluruhan dalam Sistem: modul ini menangani lompatan bersyarat dan bukan bersyarat untuk komputer. Berdasarkan input gT, iT, dan eQ, modul menentukan syarat mana yang harus diperiksa dan apakah syarat itu benar atau salah. Sekiranya syaratnya benar, ia akan mengeluarkan alamat arahan untuk melompat ke, jika tidak, ia akan menghasilkan jumlah arahan seterusnya.

binToBCD

  • Huraian Input: nombor nombor 10 bit untuk ditukar kepada perpuluhan berkod binari.
  • Huraian Hasil: ratusan digit di tempat beratus nombor binari. puluhan digit di tempat puluhan nombor perduaan. satu digit di tempat nombor perduaan.
  • Tempat Keseluruhan dalam Sistem: Modul ini menukar nombor 10 bit dari daftar output ke BCD agar pemacu paparan empat digit kami dapat menunjukkan nombor dalam bentuk perpuluhan pada paparan 7 segmen.

empatDigitDriver

  • Huraian Input: nombor adalah input binari 16 bit yang didorong ke penyahkod. inClk adalah jam dalaman papan Basys dan digunakan untuk pembahagi jam. RST menetapkan semula jam yang digunakan untuk menggerakkan digit.
  • Penerangan Keluaran: anod menentukan tempat digit mana yang akan diterangi. digit adalah nombor input ke penyahkod.
  • Tempat Keseluruhan dalam Sistem: Modul ini mendorong penyahkod untuk mengeluarkan nombor BCD ke paparan.

penyahkod

  • Huraian Input: inputNumber adalah digit yang berasal dari pemacu dan yang akan disahkod.
  • Penerangan Keluaran: katod menentukan katod mana yang akan dihidupkan untuk memaparkan digit yang diinginkan.
  • Tempat Keseluruhan dalam Sistem: Modul ini menyahkod digit yang akan dipaparkan pada paparan 7 segmen.

empatDigitDisplay

  • Huraian input: nombor adalah nombor yang akan ditunjukkan pada paparan 7 segmen. ralat menunjukkan bila paparan harus dibaca "Err". Clk adalah isyarat jam bahawa paparan sedang berjalan. Isyarat ini mestilah sekitar 60 Hz supaya paparan dapat menunjukkan semua 4 digit tempat secara serentak.
  • Penerangan Keluaran: anod menentukan tempat digit yang diaktifkan. katod menentukan katod mana yang diaktifkan untuk memaparkan digit yang diinginkan.
  • Tempat Keseluruhan dalam Sistem: Modul ini memaparkan nombor pada paparan 7 segmen. Rujuk manual arahan papan Basys 3 untuk maklumat mengenai katod dan anod yang diaktifkan untuk menggunakan paparan. Apabila bit ralat tinggi, paparan menunjukkan "Err".

keluaranMUX

  • Penerangan Input: progModeInput menentukan led mana yang dihidupkan semasa mod pengaturcaraan. runModeInput menentukan led mana yang dihidupkan semasa mod run. modeSelect adalah bit pilih atau kawalan untuk MUX.
  • Penerangan Keluaran: ledOutput menunjukkan led mana yang akan dihidupkan.
  • Tempat Keseluruhan dalam Sistem: Bergantung pada mod yang digunakan komputer (program atau rum), MUX akan menyalakan lampu LED yang berbeza. Dalam mod program (modeSelect adalah '0'), MUX menyalakan led untuk menyerupai lokasi memori di mana komputer berada dan apa yang ada di dalamnya. Dalam mod run (modeSelect adalah '1'), MUX digunakan untuk debugging tetapi dapat diatur untuk menampilkan yang lain.

jamDivider

  • Penerangan Input: berhenti membaca lima bit MSB dari bas untuk mengesan perintah berhenti ('11111') dan menghentikan jam. inputClk adalah isyarat jam dalaman papan Basys 3.
  • Penerangan Keluaran: ouputClk adalah jam baru yang telah diperlahankan.
  • Tempat Keseluruhan dalam Sistem: Jam ini digunakan untuk melambatkan komputer untuk memungkinkan pengguna menentukan apa yang sedang berlaku. Jam dapat berjalan lebih cepat, namun, saat ini ditetapkan ke 2 Hz.

triStateBuffer

  • Huraian Input: Din adalah input 5 bit yang masuk ke dalam penyangga. Ep adalah bit kawalan.
  • Penerangan Keluaran: Dout adalah keluaran 5 bit penyangga
  • Tempat Keseluruhan dalam Sistem: Apabila bit kawalan Ep aktif, penyangga mengeluarkan input. Apabila bit kawalan tidak aktif, penyangga tidak mengeluarkan apa-apa.

tenBitDRegister

  • Keterangan Input: Dbus adalah input yang hendak didaftarkan. Clk membolehkan daftar membaca data dalam kelebihan jam yang meningkat. ARST menetapkan daftar menjadi 0 secara tidak segerak. Apabila outputEnable rendah, kandungan register adalah output. Apabila readIn rendah, register mengaitkan Dbus di tepi jam yang meningkat.
  • Penerangan Keluaran: Qbus adalah output dari daftar
  • Tempat Keseluruhan dalam Sistem: Daftar digunakan berkali-kali di seluruh komputer dan digunakan untuk menyimpan maklumat semasa melakukan operasi.

FiveBitDRegister

  • Keterangan Input: Dbus adalah input yang hendak didaftarkan. Clk membolehkan daftar membaca data dalam kelebihan jam yang meningkat. ARST menetapkan daftar menjadi 0 secara tidak segerak. Apabila outputEnable rendah, kandungan register adalah output. Apabila readIn rendah, register mengaitkan Dbus di tepi jam yang meningkat.
  • Penerangan Keluaran: Qbus adalah output dari daftar.
  • Tempat Keseluruhan dalam Sistem: Daftar digunakan berkali-kali di seluruh komputer dan digunakan untuk menyimpan maklumat semasa melakukan operasi.

Langkah 3: Kod

Di bawah ini adalah folder yang mengandungi kekangan dan fail sumber untuk komputer 10-bit.

Langkah 4: Demo dan Contoh Kod

Video di atas menunjukkan cara memprogram komputer 10-bit pada papan Basys 3 FPGA. Pdf yang mengandungi op-code dan contoh program juga dilampirkan di bawah.

Disyorkan: