Mündəricat:

On Bit Kompüter - VHDL: 4 addım
On Bit Kompüter - VHDL: 4 addım

Video: On Bit Kompüter - VHDL: 4 addım

Video: On Bit Kompüter - VHDL: 4 addım
Video: WINDOWS XP 😨 2024, Iyul
Anonim
On Bit Kompüter - VHDL
On Bit Kompüter - VHDL

Hazırladı: Tyler Starr və Ezzeedden Gazali

Giriş

Bu layihə Cal Poly SLO -da CPE 133 üçün son layihə çərçivəsində tamamlandı. Kompüterlərin ən aşağı səviyyədə necə işlədiyini və vəzifələrinə necə çatdıqlarını anlamaq istəyənlər üçün əla bir layihədir. Layihə Albert Malvinonun Digital Computer Electronics kitabında təsvir edilən 8 bitlik SAP kompüterindən sonra modelləşdirilmişdir. Bununla birlikdə, daha çox əməliyyat kodunun (əməliyyat kodlarının) tətbiqinə icazə vermək üçün kompüteri 10 bitə qaldırdıq. İstifadəçi, müəyyən təlimatları daxil etməklə kompüteri bir sıra əməliyyatlar yerinə yetirmək üçün proqramlaşdıra bilər.

Sistem və Dövrə Memarlığı:

Kompüter VHDL -də yazılıb və Digilent -dən Basys 3 lövhəsində yer alacaq. Girişlər lövhənin altındakı açarlara uyğunlaşdırılacaq. Sıfırla və Yaz funksiyaları üçün iki toxunma açarı istifadə ediləcək. Çıxış lövhənin 7 seqmentli ekranında göstəriləcək.

Kompüter fərqli əməliyyatları idarə edən kiçik sxemlərə (modullara) bölünəcək. Hər bir modul aşağıdakı addımlarda ətraflı izah ediləcəkdir.

Addım 1: Materiallar

Materiallar
Materiallar

Bu layihə üçün lazım olan tək şey, Digilent -dən Basys3 FPGA lövhəsi və lövhəni kompüterinizə bağlamaq üçün mikro USB telidir.

Addım 2: Dövrə Modullarının Blok Şeması

Dövrə Modullarının Blok Şeması
Dövrə Modullarının Blok Şeması
Dövrə Modullarının Blok Şeması
Dövrə Modullarının Blok Şeması
Dövrə Modullarının Blok Şeması
Dövrə Modullarının Blok Şeması

Yuxarıdakı blok diaqramları 10 bitlik kompüteri təşkil edən müxtəlif sxemlərin modullarını göstərir. Aşağıda yuxarıdakı diaqramlarda göstərilən ayrı -ayrı hissələrin/modulların hər birinin təsviri verilmişdir.

Proqram sayğacı

Girişlərin təsviri: giriş, proqram sayacına bir ədəd yükləmək üçün 5 bitlik bir girişdir. Yüksək olduqda sayğac düşən saat kənarlarını sayır. Clr sayacı 0 -a sıfırlayır. Sayğac yüksək olduqda cari sayını çıxardır. Sp yüksək olduqda sayğac sayını girişdəki saya təyin edir

  • Çıxışların təsviri:

    Çıxış, 0-15 LEDS-də istifadə üçün sayının bir nüsxəsidir. Say cari sayını çıxarır.

  • Sistemdəki Ümumi Yer: Bu sayğac, proqramın yerləşdiyi yaddaş yerini izləyir. Bütün proqramlar 00000 (0) yaddaş ünvanından başlayır və bir dayanma istifadə edilmədikdə, 11111 (31) -ə qədər yüksəlir. Atlama ifadələrində, proqram sayacı, proqramın atladığı ünvandan saymağa davam edir.

MUX daxil edin

  • Girişlərin təsviri: Ünvan 11 -dən 15 -ə keçən açarlardan giriş alır. MAR, MAR olaraq istifadə olunan 10 bitlik registrdən giriş alır. Proqram hansı girişin çıxışa yönəldiləcəyini nəzarət edir.
  • Çıxışların təsviri: çıxış seçilmiş girişi RAM -a yönləndirir.
  • Sistemdəki Ümumi Yer: Bu MUX, ünvanı açarlardan və ya avtobusdan RAM -a yönləndirməyi təyin edir. Proqram rejimində açarlardan ünvan yönləndirilir və iş rejimində avtobusdan olan ünvan yönləndirilir.

ramMUX

  • Girişlərin təsviri: userInput, istifadəçinin proqram rejimində daxil etdiyi girişdir. aRegInput, A qeydində olan məlumatdır, bu hərəkət əməliyyatı zamanı istifadə olunur. nəzarət bu MUX üçün seçimdir.
  • Çıxışların təsviri: çıxış RAM-a 10 bitlik məlumat girişidir.
  • Sistemdəki Ümumi Yer: Bu MUX, RAM modulunda istifadə olunan 10 bitlik giriş məlumatlarını çıxarır. Nəzarət biti yüksək olduqda, MUX istifadəçinin proqram rejiminə daxil etdiyi məlumatları çıxarır. Nəzarət biti aşağı olduqda, MUX nəzarət avtobusundakı məlumatları çıxarır.

ramModule

  • Girişlərin təsviri: inputData, RAM -da saxlanılan məlumatlardır. inputAddress, məlumatların saxlandığı yerdir. Proqram, kompüterin proqram və ya iş rejimində olduğunu göstərir. readWrite oxu və ya yazma əməliyyatının baş verdiyini göstərir. notCE, RAM modulu üçün nəzarət bitidir. hərəkət, bir hərəkət əməliyyatının həyata keçirildiyini göstərir.
  • Çıxışların Təsviri: outputDataToBus, RAM -dan avtobusa gedən məlumatlardır. outputData və çıxış ünvanı, təlimat reyestrinə gedən məlumatlar və ünvanlardır.
  • Sistemdəki Ümumi Yer: RAM, proqram başlamazdan əvvəl proqramı və məlumatları yaddaşda saxlamağa imkan verir. Proqram işlədikdən sonra RAM MAR -dan bir ünvan alır və həmin ünvandakı məlumatları avtobusa çıxarır.

ünvan ROM

  • Girişlərin təsviri: opCode, kompüter tərəfindən yerinə yetirilən kodun ünvanını ehtiva edən girişdir
  • Çıxışların təsviri: opCodeStart, müvafiq opCode-un ilk mikro təlimat yerini göstərən yaddaş ünvanıdır.
  • Sistemdəki Ümumi Yer: Bu modul bağlanmış mikro təlimatı alır və həmin mikro təlimat ardıcıllığının başlanmasına uyğun olan yaddaş yerini bildirir.

üzük sayğacı

  • Girişlərin təsviri: sıfırlama sayğacı 100000 -ə qaytarır (ilk "T vəziyyəti"). Clk, sayğacı düşən saat kənarında bir -bir artırır. NOP, mövcud vəziyyətin/dövrünün "heç bir əməliyyat" dövrü olmadığını göstərir.
  • Çıxışların təsviri: sayğacın çıxışıdır.
  • Sistemdəki Ümumi Yer: Üzük sayğacı əvvəlcədən təyin edilə bilən sayğacı idarə edir və hər təlimat dövründə altı mikro addımı ayırır (T1-T6).

əvvəlcədən hesablaşma

  • Girişlərin təsviri: opCodeStart, həyata keçirilən opCode üçün mikro təlimatların yaddaş yeridir. T1, sayğac yüksək olduqda sıfıra sıfırlanır. T3 yüksək olduqda, opCodeStart yüklənir və qalan 3 dövr üçün bu yerdən say davam edir (T4-T6). Clr sayacı 0 -a təyin edir. Clk düşən kənarda sayaçları bir -bir artırır.
  • Çıxışların təsviri: controlWordLocation, yerinə yetiriləcək nəzarət sözünün yaddaş yerini göstərir.
  • Sistemdəki Ümumi Yer: Hər bir kodda 3 mikro təlimat var. Sayğac ilk 3 dövr üçün 0 -dan başlayaraq 1 artırır (alma dövrü). Bundan sonra sayğac, zəng sayğacı tərəfindən ünvanı opCodeStart -a yükləmək və qalan 3 dövr üçün 1 artırmaqla işə salınır. PreCounter bu şəkildə yerinə yetiriləcək mikro təlimatların ardıcıllığını nəzarət edir.

nəzarət ROM

  • Girişlərin təsviri: controlWordLocation, controlROM -un çıxış edəcəyi controlWord ünvandır. NOP, yerin "əməliyyatsız" bir yer olduğunu göstərir.
  • Çıxışların Təsviri: controlWord, fərqli bir kompüter modulunun istədiyi bir əməliyyatı yerinə yetirməsini təmin edən/söndürən nəzarət sözüdür.
  • Sistemdəki Ümumi Yer: Bu modul yaddaş yerini əvvəlcədən sayğacdan çıxarır və istədiyiniz əməliyyat üçün controlWord -u çıxarır.

ALU

  • Girişlərin təsviri: A və B, ALU -nun hesab və məntiq əməliyyatlarını yerinə yetirdiyi A Qeydiyyatı və B Qeydiyyatından olan girişlərdir. Çıxarma aktiv olduqda, B -nin A -dan çıxarıldığını göstərir.
  • Çıxışların təsviri: nəticə A və B -nin əlavə edilməsi və ya B -dən A -nın çıxarılmasının nəticəsidir. (AB, ya da A = B) olub şərti atlama modulunda istifadə edildiyini göstərmək üçün daha böyük, daha az və bərabərdir. səhv, aktiv olduqda bir daşma və ya aşağı axını göstərir.
  • Sistemdəki Ümumi Yer: ALU, kompüterin həyata keçirdiyi hesab və məntiq əməliyyatlarının məntiqini ehtiva edir. Bu modul iki 10 bitlik ikili ədədləri əlavə edə və çıxara bilər. ALU, A> B, A olub olmadığını da təyin edə bilər

şərtiJmp

  • Girişlərin təsviri: inputCount cari sayını bağlamaq üçün istifadə olunur. inputAddress, atlanacaq ünvanı bağlamaq üçün istifadə olunur. loadFromRath low latches inputAddress olduqda qeydiyyatdan keçin. loadCount aşağı kilidləndikdə inputCount. outputEnable aşağı olduqda, çıxış to.gT, iT və eQ -ə keçmək üçün hansı vəziyyətin yoxlanıldığını təyin etmək üçün təyin olunur. böyükThan, azThan və bərabərTo, ALU -dan A və B arasındakı müqayisənin nəticəsini göstərən girişlərdir. Clk -in yüksələn saat kənarında inputCount və inputAddress qeydlərə oxunur.
  • Çıxışların Təsviri: outputJmp, proqram sayğacının oxuyacağı ünvandır.
  • Sistemdəki Ümumi Yer: Bu modul kompüter üçün şərti və şərtsiz atlamaları idarə edir. GT, iT və eQ girişlərinə əsaslanaraq, modul hansı şərtin yoxlanılacağını və bu şərtin doğru və ya yalan olduğunu müəyyən edir. Şərt doğrudursa, keçmək üçün təlimatın ünvanını çıxaracaq, əks halda növbəti təlimatın sayını çıxaracaq.

binToBCD

  • Girişlərin təsviri: ikili kodlu onluğa çevirmək üçün 10 bit nömrəni nömrələyin.
  • Çıxışların təsviri: ikili ədədin yüzlərlə yerindəki yüzlərlə rəqəm. ikilik ədədin onluğundakı rəqəm onlarla. ikili ədədin bir yerindəki rəqəm.
  • Sistemdəki Ümumi Yer: Bu modul, dörd rəqəmsal ekran sürücümüzün 7 seqmentli ekranda ondalık sayını göstərməsi üçün çıxış qeydindəki 10 bit nömrəni BCD -ə çevirir.

fourDigitDriver

  • Girişlərin təsviri: nömrə, kod çözücüyə yönəldilən 16 bitlik ikili girişdir. inClk, Basys lövhələrinin daxili saatıdır və saat bölücü üçün istifadə olunur. RST rəqəmləri idarə etmək üçün istifadə olunan saatı sıfırlayır.
  • Çıxışların təsviri: anod hansı rəqəm yerinin işıqlandırılacağını təyin edir. rəqəm, dekoderin giriş nömrəsidir.
  • Sistemdəki Ümumi Yer: Bu modul dekoderi BCD nömrəsini ekrana çıxarmağa məcbur edir.

dekoder

  • Girişlərin təsviri: inputNumber, sürücüdən gələn və kodunun açılacağı rəqəmdir.
  • Çıxışların Təsviri: Katodlar istənilən rəqəmi göstərmək üçün hansı katotların açılacağını təyin edir.
  • Sistemdəki Ümumi Yer: Bu modul 7 seqmentli ekranda göstəriləcək rəqəmi açır.

fourDigitDisplay

  • Girişlərin təsviri: nömrə 7 seqmentli ekranda göstəriləcək rəqəmdir. səhv, ekranın "Err" yazmalı olduğunu göstərir. Clk, ekranın işlədiyini göstərən saat siqnalıdır. Ekranın eyni anda 4 rəqəmli yerləri göstərə bilməsi üçün bu siqnal 60 Hz ətrafında olmalıdır.
  • Çıxışların təsviri: anod hansı rəqəm yerinin aktiv olduğunu təyin edir. katod, istənilən rəqəmi göstərmək üçün hansı katotların aktivləşdirildiyini təyin edir.
  • Sistemdəki Ümumi Yer: Bu modul 7 seqmentli ekranda bir rəqəm göstərir. Ekrandan istifadə etmək üçün hansı katodların və anodların aktivləşdiyi haqqında məlumat üçün Basys 3 lövhəsinin təlimat kitabçasına baxın. Xəta biti yüksək olduqda ekranda "Err" göstərilir.

outputMUX

  • Girişlərin təsviri: progModeInput proqramlaşdırma rejimində hansı ledlərin açıldığını təyin edir. runModeInput, iş rejimində hansı ledlərin açıldığını təyin edir. modeSelect, MUX üçün seçim və ya nəzarət bitidir.
  • Çıxışların Təsviri: ledOutput hansı ledlərin açılacağını göstərir.
  • Sistemdəki Ümumi Yer: Kompüterin işlədiyi rejimdən (proqram və ya rom) asılı olaraq, MUX fərqli ledləri açacaq. Proqram rejimində (modeSelect '0'), MUX, kompüterin yerləşdiyi yaddaş yerini və içərisində olanı xatırlatmaq üçün ledləri açır. İşləmə rejimində (modeSelect '1' dir), MUX ayıklama üçün istifadə olunur, lakin başqa bir şeyi göstərmək üçün qurula bilər.

saatDivider

  • Girişlərin təsviri: stop, dayandırma əmrini ('11111') aşkar etmək üçün avtobusdan gələn beş MSB bitini oxuyur və saatı dayandırır. inputClk, Basys 3 lövhəsinin daxili saat siqnaldır.
  • Çıxışların təsviri: ouputClk yavaşlatılmış yeni saatdır.
  • Sistemdəki Ümumi Yer: Bu saat, istifadəçinin nələrin baş verdiyini təyin etməsini təmin etmək üçün kompüteri yavaşlatmaq üçün istifadə olunur. Saat daha sürətli işləyə bilər, lakin hazırda 2 Hz -ə təyin edilmişdir.

triStateBuffer

  • Girişlərin təsviri: Din buferə daxil olan 5 bitlik girişdir. Ep nəzarət bitidir.
  • Çıxışların Təsviri: Dout buferin 5 bitlik çıxışıdır
  • Sistemdə Ümumi Yer: Nəzarət biti Ep aktiv olduqda tampon girişi çıxarır. Nəzarət biti aktiv olmadıqda, tampon heç nə çıxarmır.

tenBitDRegister

  • Girişlərin təsviri: Dbus, reyestrin daxil olduğu girişdir. Clk, reyestrin yüksələn bir saat kənarındakı məlumatları oxumasına imkan verir. ARST reyestri asenkron olaraq 0 olaraq təyin edir. OutputEnable aşağı olduqda, qeydin məzmunu çıxışdır. ReadIn aşağı olduqda, reyestr yüksələn saatın kənarında Dbus -ı kilidləyir.
  • Çıxışların Təsviri: Qbus registrin çıxışıdır
  • Sistemdəki Ümumi Yer: Qeyd kompüter boyunca dəfələrlə istifadə olunur və əməliyyatlar apararkən məlumatları saxlamaq üçün istifadə olunur.

fiveBitDRegister

  • Girişlərin təsviri: Dbus, reyestrin daxil olduğu girişdir. Clk, reyestrin yüksələn bir saat kənarındakı məlumatları oxumasına imkan verir. ARST reyestri asenkron olaraq 0 olaraq təyin edir. OutputEnable aşağı olduqda, qeydin məzmunu çıxışdır. ReadIn aşağı olduqda, reyestr yüksələn saatın kənarında Dbus -ı kilidləyir.
  • Çıxışların Təsviri: Qbus registrin çıxışıdır.
  • Sistemdəki Ümumi Yer: Qeyd kompüter boyunca dəfələrlə istifadə olunur və əməliyyatlar apararkən məlumatları saxlamaq üçün istifadə olunur.

Addım 3: Kod

Aşağıda 10 bitlik kompüter üçün məhdudiyyət və mənbə faylları olan bir qovluq var.

Addım 4: Demo və Nümunə Kod

Yuxarıdakı video Basys 3 FPGA lövhəsində 10 bitlik kompüterin necə proqramlaşdırılacağını göstərir. Op kodları və nümunə proqramı olan bir pdf də aşağıda əlavə edilmişdir.

Tövsiyə: