citius-altius-fortius processor · 2016. 8. 29. · latince de bu kelimeler sirasiyla “daha...

32
CITIUS-ALTIUS- FORTIUS PROCESSOR Versiyon 1.00 15/04/2008 PROJE SORUMLUSU : BERKAY AYBAR MURAT GOKSEL E-MAIL : [email protected] , [email protected]

Upload: others

Post on 12-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CITIUS-ALTIUS-FORTIUS

PROCESSOR

Versiyon 1.00

15/04/2008

PROJE SORUMLUSU : BERKAY AYBAR

MURAT GOKSEL

E-MAIL : [email protected], [email protected]

Page 2: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 2

ICINDEKILER

Tablo Listesi.............................................................................................................................

Figur Listesi.............................................................................................................................

1 GIRIS....................................................................................................................................

1.1 FPGA .................................................................................................................

1.2 RISC Islemci .......................................................................................................

1.3 EDA Yazilimlari ..................................................................................................

2 FPGA ile Fiziksel Islemci Tasarimi Uygulamasi................................................................

2.1 RISC Komut Seti Mimarisi....................................................................................

2.2 RISC Islemci Mimarisi ............................................................................................

2.3 RISC Islemci Verilog Uygulamasi..........................................................................

2.3.1 Komut Yakalama Birimi.........................................................................

2.3.2 Komut Cozumleme Birimi....................................................................

2.3.3 Kontrol Unitesi....................................................................................

2.3.4 Calisma Unitesi....................................................................................

2.3.5 Hafiza Birimleri..................................................................................

2.4 16 bitlik Pipeline Islemci Uygulamasi

2.4.1 Pipeline Tehlikeleri..................................................................................

2.5 Donanim Uygulamasi....................................................................................................

3 Sonuclar ....................................................................................................................................

4 Gelicekte Yapilmasi Gereken Calismalar..................................................................................

5 Sonuc........................................................................................................................................

Referanslar...............................................................................................................................

Appendiks.................................................................................................................................

A. Kaynaklar............................................................................................................................

B. Kisaltmalar ve Tanimlar.....................................................................................................

C. CAF Processor Verilog Kodu................................................................................................

D. Simulasyon .........................................................................................................................

Page 3: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 3

CAF PROCESSOR PROJE OZETI

Bu proje kapsaminda verilen komut setinin tasarimda oncelikli olarak en verimli sekilde

gerceklenmesi on gorulmustur. Tasarimi zenginlestirmek icin verilen komut setine ek olarak

guncel islemcilerde kullanilan yaygin komutlar da eklenicektir(orn: POP, PUSH… ). Tasarim 16-

bitlik pipelined RISC mimarisi gerceklestirilerek uygulanacaktir. CAF_Processor tasariminin dort

farkli bolumden olusmasi on gorulmustur, bunlar sirasiyla;

1) Komut Yakalama Bolumu (Instruction Fetch Stage)

2) Komut Cozumleme Bolumu (Instruction Decoding Stage)

3) Calisma Bolumu (Execution Stage)

4) Geri Okuma Bolumu( Write Back Stage)

Her bolum bir veya birden fazla verilog modulunden olusacaktir.

Projenin iki fazdan olusturulmasi on gorulmustur. Birinci faz verilen komut kumesinin ve buna

ek olarak guncel komutlarin kullanilacagi 16-bitlik RISC islemci tasarimidir. Ikinci faz da ek olarak

IEEE 754 Floating Point Unitesi nin de donanima entegre edilip komut kumesini zenginlestirmek

ayni zamanda tasarlanicak islemcinin islem yapabilme gucunu artirmak olarak hedeflenmistir.

Proje kapsamin da tasarlanicak islemci ile ornek bir FIR filtre uygulamasi yapilmasi

planlanmaktadir.

Proje kapsaminda ozellikle fonksyonel simulasyonlari ve post-synthesis simulasyonlarini

gerceklestirmek icin gerekli olan EDA yazilimlari ve bir gelistirme boardi talep edilmektedir.

‘C’, ‘A’, ‘F’ harfleri latince Citius- Altius- Fortius kelimelerinin bas harflerinden gelmektedir.

Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir.

Tasarlanicak islemcininde butun bu ozellikleri saglamasi hedeflendigi icin bu isim proje icin

uygun gorulmustur.

Page 4: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 4

Add Addition 1

Addi Addition (immediate) 2

Sub Subtraction 3

Subi Subtraction (immediate) 4

Mul Multiplication 5

Muli Multiplication (immediate) 6

Mulu Multiplication (unsigned) 7

Cmp Compare 8

And AND 9

Andi AND (immediate) 10

Or OR 11

Ori OR (immediate) 12

Not NOT 13

Xor XOR 14

Xori XOR (immediate) 15

Sll Logical shift left 16

Srl Logical shift right 17

Sla Arithmetic shift left 18

Sra Arithmetic shift right 19

Lw Load word 20

Sw Store word 21

Mov Move data between registers 22

Movi Move data (immediate) 23

Beq Branch if equal to 0 24

Bne Branch if not equal to 0 25

Ba Branch always 26

BL Branch and Link 27

Nop No operation 28

Hlt Halt 29

Syscall System call (software interrupt) 30

Page 5: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 5

Page 6: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 6

1 GIRIS

1.1 FPGA Bu projenin amaci FPGA icerisinde 16 bitlik RISC islemci tasarlamak ve bu islemciyi kullanarak bir

uygulama gerceklestirmektir. Bu p roje raporu ileride egitim amacli kullanicagi dusunulerek sayisal

tasarim ve FPGA teknolojisi hakkinda genel bilgilerde icermektedir.

FPGA teknolojisi sayisal tasarimcilara cok buyuk esneklik saglamaktadir.Bunun en buyuk sebeplerinden

biri FPGA in tekrar programlanabilmesidir. Ayni zamanda FPGA lerin kismen dusuk fiyatli olmasi ve FPGA

sirketlerinin(Xilinx, Altera, Actel gibi...) sagladiklari gelismis yazilim araclari sayisal tasarimla ugrasan

donanim muhendislerinin hayatini kolaylastirir.

FPGA ile yeni calismaya baslayan genc muhensdiler genellikle FPGA yi farkli bir tur mikroislemci sanarlar.

Fakat FPGA kullanim amaci ile mikroislemcinin kullanim amaci bir cok zaman birbirlerinden cok farklidir.

FPGA in iki farkli kullanim alani vardir bunlardan ilki ASIC prototip gerceklemesidir. ASIC tasarimcilari

yaptiklari tasarimlari bilgisayar uzerinde yaptiklari simulasyonlardan sonra FPGA uzerine tasirlar. Cunku

FPGA uzerine tasinan bir tasarim gercek zamanda fonksyonellik gosterir . Tasarimci kendisinden istenen

tasarimin kriterleri gerceklesip gerceklesmedigini bu evrede test etme sansi bulunur.Tasarim

muhendisleri icin tasarimlarinin kriterleri olusturup olusturmadigini gormelerini saglayan onemli bir

firsattir. Bundan sonraki adim tasarimin ASIC(Chip) in fabrikasyonu icin proses e gonderilmesidir. FPGA

baska bir kullanim alani ise dusuk hacimde sistem uretimlerinde ASIC ye bir alternatiftir. ASIC uretimi cok

maliyetli bir is oldugu icin ancak yuksek hacimde uretim yapildigi zaman ASIC in birim fiyati makul bir

degere ulasir. Ama eger yuksek hacimli bir uretim yapilmayacaksa ASIC uretimi cok pahali olabilir. Bu

noktada FPGA boslugu doldurur tasarimcilara hem fiyat hemde tasarim kolayligi acisindan cok fazla

avantaj saglar. Tasarlanicak olan spesifik devre FPGA icinde gerceklestirilir ve sistem icinde calistirilir.

Page 7: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 7

1.2 RISC Islemci Bu projede yer alan islemci mimarisi RISC islemci mimarisidir. RISC (Reduced Instruction Set

Computer )”Komut Seti Azaltilmis Bilgisayar” anlamina gelmektedir. Komut setinin azaltilmasi,

cogu zaman islemcinin komut kumesindeki kompleks komutlarin cikartilmasi ile gerceklesir. Bu

RISC islemci mimarisini daha az kompleks yapar. RISC islemcilerde asil amac tasarlanan komut

kumesini basit yapmak ve bunun sonucunda komutlari hizli isleyen bir islemci elde etmektir.

RISC islemcilerde komutlarin islenmesi bir saat cevrimi surer ve komutlarin uzunlugu sabittir.

RISC islemci mimarisi bir baska islemci mimarisi olan CISC(Complex Instruction Set Computer)

mimarisine alternatif olarak tasarlanmistir. Gunumuzde kullanilan bir cok kisisel bilgasayar CISC

mimarisi icerir. 1970 lerin basinda ilk mikroislemci tasarlandiginda hafiza birimleri pahali

oldugundan komutlari mumkun oldugu kompleks tasarlayip olusturulucak programlarin hafizada

daha az yer kaplanmasi amaclanmistir. O donemde hafiza birimleri maliyetli oldugu icin islemci

tasarimcilarini bu yola yoneltmistir. Hafiza maliyetlerinin dusmesi tasarimcilari RISC islemci

mimarisine yoneltmistir.

RISC ve CISC komut setleri arasindaki iliskiyi guzel bir analoji yaparak aciklamaya calisalim.

Ornegin latin alfabesi kullanarak yazilmis bir kitap in toplam sayfa sayisi ile ayni kitabin Cince

yazilmis versiyonu ayni sayida degildir. Cince yazilan kitap cok daha az sayfadan olusur bunun

sebebi Cın alfabesinde 4000 den fazla farkli sembolun olusudur. Semboller cok spesifik anlamlar

icerebilirler fakat bunun sonucunda cok kompleks ve ogrenmesi cok zordur. Latin alfabesinde ise

sadece 26 farkli sembol vardir. Bununla beraber atni kitap cok daha fazla sayfa icermektedir.

RISC islemci ve CISC islemci komut seti arasindaki farkda buna cok benzerdir. CISC islemcileri

cozumlemek cok daha karisik ve zordur.

Genel RISC mimarisi dort bolumden olusmustur. Bunlar sirasiyla

1. Komut Yakalama Evresi(Instruction Fetch Stage)

2. Komut Cozumleme Evresi(Instruction Decode Stage)

3. Komut Calistirma Evresi (Instruction Execution Stage)

4. Geri Yazma Evresi(Write Back)

Ilerleyen bolumlerde CAF islemci tasarimi ve mimarisi ile ilgili daha detayli bilgi verilecektir.

Page 8: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 8

1.3 EDA Yazilimlari

Page 9: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 9

2 FPGA ile Fiziksel Islemci Uygulamasi

2.1 Komut Seti Mimarisi

CAF_Processor Komut Kumesi Komut Sembol Opcode Ornek Anlam Yorum

Toplama add 00 0001

Toplama Immediate

addi 00 0010

Cikarma sub 00 0011

Cikarma Immediate

Subi 00 0100

Carpma Mul 00 0101

Carpma Immediate

Muli 00 0110

Carpma Isaretsiz

mulu 00 0111

Kiyaslama Cmp 00 1000

Ve And 00 1001

Ve Immediate

Andi 00 1010

Veya Or 00 1011

Veya Immediate

Ori 00 1100

Not Not 00 1101

Xor Xor 00 1110

Xor immediate

Xori 00 1111

Mantiksal sola

kaydirma

Sll 01 0000

Mantiksal saga

kaydirma

Sri 01 0001

Aritmetik sola

kaydirma

Sla 01 0010

Aritmetik saga

Sra 01 0011

Page 10: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 10

kaydirma Kelime

Yukleme Lw 01 0100

Kelime Depolama

Sw 01 0101

Tasima

mov 01 0110

Tasima Immediate

Movi 01 0111

Kosul(Eger ‘0’ a esit

ise)

Beq 01 1000

Kosul (Eger ‘0’ esit degil

ise)

Bne 01 1001

Kosul her zaman

Ba 01 1010

Kosul ve baglama

BL 01 1011

İslem yok Nop 01 1100

Dur Halt 01 1101

Kesme Syscall 01 1110

Page 11: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 11

2.2 RISC Islemci Mimarisi

Page 12: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 12

Page 13: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 13

Apendiks A : Komut Aciklamalari

1) ADD(Toplama) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 1 X Ra Rb Rc

Opcode

2 ) Addi(Toplama-Immediate) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 1 0 Ra Immediate

Opcode

3)Sub(Cikarma) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 1 1 X Ra Rb Rc

Opcode

Page 14: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 14

4)Subi(Cikarma-Immediate) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 1 0 0 Ra Immediate

Opcode

5) Mul(Carpma) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 1 0 1 X Ra Rb Rc

Opcode

6 ) Muli(Carpma-Immediate) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 1 1 0 Ra Immediate

Opcode

Page 15: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 15

7) Mulu(Carpma-Isaretsiz) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 1 1 1 X Ra Rb Rc

Opcode

8)Cmp(Kiyaslama) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 0 0 0 X Ra Rb Rc

Opcode

9)And(Ve) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 0 0 1 X Ra Rb Rc

Opcode

Page 16: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 16

10)Andi(Ve-Immediate) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 0 1 0 Ra Immediate

Opcode

11 )Or(Veya) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 0 1 1 X Ra Rb Rc

Opcode

12)Ori (Veya-Immediate) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 1 0 0 Ra Immediate

Opcode

Page 17: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 17

13)Xori(Exor-Immediate) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 1 0 1 Ra Immediate

Opcode

14)Xor(Exor) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 1 1 0 X Ra Rb Rc

Opcode

15)Sll(Mantiksal – Sola Kaydirma) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 1 1 1 Immediate Rb Rc

Opcode

Page 18: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 18

16)Srl(Mantiksal – Saga Kaydirma) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 0 0 0 0 Immediate Rb Rc

Opcode

17)Sra(Aritmatik-Saga Kaydirma) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 0 0 0 1 Immediate Rb Rc

Opcode

18)Sla(Aritmatik-Sola Kaydirma) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 0 0 1 0 Immediate Rb Rc

Opcode

Page 19: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 19

19)Not 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 0 0 1 1 X Ra Rb Rc

Opcode

20)Lw(Kelime Yukleme) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 0 1 0 0 X Ra Rb Rc

Opcode

21)Sw(Kelime Depolama) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 0 1 0 1 X Ra Rb Rc

Opcode

Page 20: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 20

22) Movi(Veri tasima Immediate) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 0 1 1 1 Ra Immediate

Opcode

23) Mov(Veri Tasima) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 0 1 1 0 X XXX Rb Rc

Opcode

24)Beq(Brans Esit) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 0 0 0 Kosul Immediate

Opcode

Page 21: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 21

25)Bnq(Brans Esit Degil) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 0 0 1 Kosul Immediate

Opcode

26)Ba(Branch always) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 0 1 0 Immediate

Opcode

27)Nop(No Operation) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 0 1 1 Kosul Immediate

Opcode

Page 22: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 22

28)Hlt(Halt) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 1 0 0 Kosul Immediate

Opcode

29)Syscall(System calll) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 1 0 1 Kosul Immediate

Opcode

Page 23: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 23

Apendiks B : Verilog Kodu

// CAF_Processor.v

`include "global_parameters_def.v" 1

2

module (clk, reset_n, read_instruction_n, instruction_address, 3

instruction, read_data_n, write_data_n,data_address, data); 4

input clk; 5

input reset_n; 6

input read_instruction_n; 7

input [`WORD_SIZE-1:0] instruction_address; 8

input [`WORD_SIZE-1:0] instruction; 9

10

output read_data_n; 11

output write_data_n; 12

output [`WORD_SIZE-1:0] data_address; 13

Page 24: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 24

output [`WORD_SIZE-1:0] data; 14

//Signal declarations for chip inputs and outputs 15

reg read_instruction_n; 16

reg read_data; 17

reg write_data_n; 18

reg [`WORD_SIZE-1:0] PC; //program counter 19

reg [`WORD_SIZE-1:0] LR; //link register 20

reg [`WORD_SIZE-1:0] SP; //stack pointer 21

reg [`WORD_SIZE-1:0] R[`reg_file_size-1:0];// general regs 22

reg N_FLAG; //condition flags (N = negative) 23

reg Z_FLAG; //Zero 24

reg C_FLAG; //Carry 25

reg V_FLAG; //Overflow 26

//signal declarations used to aid in the verilog description 27

reg branch_taken; 28

reg [`WORD_SIZE-1:0] branch_target; 29

reg [`WORD_SIZE-1:0] ALU_out_reg; 30

reg [`WORD_SIZE-1:0] DR; 31

integer i, ex_i; 32

integer found_i, found_ex_i; 33

//pipeline regs 34

reg [`WORD_SIZE-1:0] IF_IR; 35

reg [`WORD_SIZE-1:0] IF_PC; 36

reg [`WORD_SIZE-1:0] ID_PC; 37

reg [`WORD_SIZE-1:0] ID_Ra; 38

reg [`WORD_SIZE-1:0] ID_Rb; 39

reg [`WORD_SIZE-1:0] ID_Rc; 40

Page 25: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 25

reg [`WORD_SIZE-1:0] EX_ALU_out; 41

reg [5:0] ID_opcode; 42

reg [5:0] EX_opcode; 43

reg [10:0] ID_Imm_offset; 44

reg [7:0] EX_Imm_offset; 45

reg [3:0] ID_cond; 46

reg [2:0] ID_Rd_code; 47

reg [2:0] EX_Rd_code; 48

49

50

//ASSIGN_STATEMENTS// 51

assign instruction_address = PC; 52

assign data = (~write_data_n) ? DR : `bz; //tri-state data 53

54

//Komut_Yakalama: Komut Yakalama Evresi 55

always@(posedge clk or posedge reset_n) begin 56

if(~reset_n) begin 57

PC <= 0; //program sayaci ilk kosulu 58

read_instruction_n <= 0; 59

end 60

else begin 61

read_instruction_n <= 0; 62

PC <= PC + 2; 63

IF_IR <= instruction; // Komut Yakalama Komut Yazicisi 64

IF_IR <= PC + 2; 65

end 66

end process; 67

Page 26: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 26

68

//Komut_Cozucu Evresi 69

always@(posedge clk) begin 70

case(IF_IR[15:10]) 71

6'b00_0001:begin 72

ID_opcode <= `ADD; 73

ID_Ra <= R[IF_IR[8:6]]; 74

ID_Rb <= R[IF_IR[5:3]]; 75

ID_Rc <= R[IF_IR[2:0]]; 76

6'b00_0010:begin 77

ID_opcode <= `ADDi; 78

ID_Ra <= R[10:8]; 79

ID_imm_offset[7:0] <= IF_IR[7:0]; 80

6'b00_0011:begin 81

ID_opcode <=`SUB; 82

ID_Ra <= R[IF_IR[8:6]]; 83

ID_Rb <= R[IF_IR[5:3]]; 84

ID_Rc <= R[IF_IR[2:0]]; 85

6'b00_0100:begin 86

ID_opcode <= `SUBi; 87

ID_Ra <= R[10:8]; 88

ID_imm_offset[7:0] <= IF_IR[7:0]; 89

6'b00_0101:begin 90

ID_opcode <= `MUL; 91

ID_Ra <= R[IF_IR[8:6]]; 92

ID_Rb <= R[IF_IR[5:3]]; 93

ID_Rc <= R[IF_IR[2:0]]; 94

Page 27: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 27

6'b00_0110:begin 95

ID_opcode <= `MULi; 96

ID_Ra <= R[IF_IR[10:8]]; 97

ID_imm_offset <= R[IF_IR[7:0]]; 98

99

6'b00_0111:begin 100

ID_opcode <= `MULu; 101

ID_Ra <= R[IF_IR[8:6]]; 102

ID_Rb <= R[IF_IR[5:3]]; 103

ID_Rc <= R[IF_IR[2:0]]; 104

6'b00_1000:begin 105

ID_opcode <= `CMP; 106

ID_Ra <= R[IF_IR[8:6]]; 107

ID_Rb <= R[IF_IR[5:3]]; 108

ID_Rc <= R[IF_IR[2:0]]; 109

6'b00_1001:begin 110

ID_opcode <= `AND; 111

ID_Ra <= R[IF_IR[8:6]]; 112

ID_Rb <= R[IF_IR[5:3]]; 113

ID_Rc <= R[IF_IR[2:0]]; 114

115

6'b00_1010:begin 116

ID_opcode <= `ANDi; 117

ID_Ra <= R[IF_IR[10:8]]; 118

ID_imm_offset <= R[IF_IR[7:0]]; 119

120

6'b00_1011:begin 121

Page 28: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 28

ID_opcode <= `OR; 122

ID_Ra <= R[IF_IR[8:6]]; 123

ID_Rb <= R[IF_IR[5:3]]; 124

ID_Rc <= R[IF_IR[2:0]]; 125

126

6'b00_1100:begin 127

ID_opcode <= `ORi; 128

ID_Ra <= R[10:8]; 129

ID_imm_offset[7:0] <= IF_IR[7:0]; 130

131

6'b00_1101:begin 132

ID_opcode <= `XOR; 133

ID_Ra <= R[IF_IR[8:6]]; 134

ID_Rb <= R[IF_IR[5:3]]; 135

ID_Rc <= R[IF_IR[2:0]]; 136

137

6'b00_1110:begin 138

ID_opcode <= `XORi; 139

ID_Ra <= R[10:8]; 140

ID_imm_offset[7:0] <= IF_IR[7:0]; 141

142

6'b00_1111:begin 143

ID_opcode <= `SLL; 144

ID_imm_offset[4:0] <= R[IF_IR[8:6]]; 145

ID_Rb <= R[IF_IR[5:3]]; 146

ID_Rc <= R[IF_IR[2:0]]; 147

148

Page 29: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 29

6'b01_0000:begin 149

ID_opcode <= `SRL; 150

ID_imm_offset[4:0] <= R[IF_IR[8:6]]; 151

ID_Rb <= R[IF_IR[5:3]]; 152

ID_Rc <= R[IF_IR[2:0]]; 153

154

6'b01_0001:begin 155

ID_opcode <= `SLA; 156

ID_imm_offset[4:0] <= R[IF_IR[8:6]]; 157

ID_Rb <= R[IF_IR[5:3]]; 158

ID_Rc <= R[IF_IR[2:0]]; 159

160

6'b01_0010:begin 161

ID_opcode <= `SRA; 162

ID_imm_offset[4:0] <= R[IF_IR[8:6]]; 163

ID_Rb <= R[IF_IR[5:3]]; 164

ID_Rc <= R[IF_IR[2:0]]; 165

166

167

6'b01_0011:begin 168

ID_opcode <= `NOT; 169

ID_Ra <= R[IF_IR[8:6]]; 170

ID_Rb <= R[IF_IR[5:3]]; 171

ID_Rc <= R[IF_IR[2:0]]; 172

173

6'b01_0100:begin 174

ID_opcode <= `LW; 175

Page 30: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 30

ID_Ra <= R[IF_IR[8:6]]; 176

ID_Rb <= R[IF_IR[5:3]]; 177

ID_Rc <= R[IF_IR[2:0]]; 178

179

6'b01_0101:begin 180

ID_opcode <= `SW; 181

ID_Ra <= R[IF_IR[8:6]]; 182

ID_Rb <= R[IF_IR[5:3]]; 183

ID_Rc <= R[IF_IR[2:0]]; 184

185

6'b01_0110:begin 186

ID_opcode <= `MOVi; 187

ID_Ra <= R[IF_IR[8:6]]; 188

ID_imm_offset[7:0] <= IF_IR[7:0]; 189

190

191

6'b01_0111:begin 192

ID_opcode <= `MOV; 193

ID_Ra <= R[IF_IR[5:3]]; 194

ID_Rb <= R[IF_IR[2:0]]; 195

196

6'b01_1000:begin 197

ID_opcode <= `BEQ; 198

ID_cond <= IF_IR[11:8]; 199

ID_imm_offset[7:0] <= IF_IR[7:0]; 200

201

202

Page 31: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 31

6'b01_1001:begin 203

ID_opcode <= `BNQ; 204

ID_cond <= IF_IR[11:8]; 205

ID_imm_offset[7:0] <= IF_IR[7:0]; 206

207

6'b01_1010:begin 208

ID_opcode <= `BA; 209

ID_imm_offset[9:0] <= IF_IR[9:0]; 210

211

6'b01_1011:begin 212

ID_opcode <= `NOP; 213

ID_Ra <= R[IF_IR[8:6]]; 214

ID_Rb <= R[IF_IR[5:3]]; 215

ID_Rc <= R[IF_IR[2:0]]; 216

217

6'b01_1100:begin 218

ID_opcode <= `HLT; 219

ID_Ra <= R[IF_IR[8:6]]; 220

ID_Rb <= R[IF_IR[5:3]]; 221

ID_Rc <= R[IF_IR[2:0]]; 222

223

6'b01_1101:begin 224

ID_opcode <= `SYSCALL; 225

ID_Ra <= R[IF_IR[8:6]]; 226

ID_Rb <= R[IF_IR[5:3]]; 227

ID_Rc <= R[IF_IR[2:0]]; 228

229

Page 32: CITIUS-ALTIUS-FORTIUS PROCESSOR · 2016. 8. 29. · Latince de bu kelimeler sirasiyla “Daha hizli, Daha Yuksek, Daha Guclu” anlamina gelmektedir. ... Komut Sembol Opcode Ornek

CAF Processor Versiyon1.00

FPGA ile CPU tasarimi Page 32

endcase 230

end 231

endmodule 232