bu proje, cpu turkey 2008 türkiye İşlemcisini tasarlıyor yarışması için
DESCRIPTION
Bu proje, CPU TURKEY 2008 Türkiye İşlemcisini Tasarlıyor yarışması için “Logic and Computer Design Fundamentals”, M.Morris Mano, Charles Kime, Prentice Hall 2nd Edition, 2000. İsimli Kitap Temel alınarak MOMENTUM PROJE GRUBU tarafından hazırlanmıştır. MOMENTUM FİZİKSEL İŞLEMCİSİ. - PowerPoint PPT PresentationTRANSCRIPT
Bu proje, CPU TURKEY 2008CPU TURKEY 2008
Türkiye İşlemcisini Tasarlıyor yarışması için
“Logic and Computer Design Fundamentals”, M.Morris Mano, Charles Kime, Prentice Hall 2nd Edition, 2000.
İsimli Kitap Temel alınarakMOMENTUM PROJE GRUBUMOMENTUM PROJE GRUBU
tarafından hazırlanmıştır.
MOMENTUM MOMENTUM FİZİKSEL İŞLEMCİSİFİZİKSEL İŞLEMCİSİ
İÇİNDEKİLER
• Sistemin Temel Özellikleri
• İşlemcinin Yapısı ve İşleyişi
• Dış bağlantılar
• Momentum Komut Çevirici
• Deney çıktıları
• Sonuçlar
SİSTEMİN TEMEL ÖZELLİKLERİBu çalışmada;
• 16 bitlik veri yoluna sahip,• Memory to register, register to memory, register to
register veri transferlerini gerçekleştirebilen,• 8’i kullanıcı tarafından kontrol edilebilen toplam 17 adet
ACC yazmaçlı yazmaç ünitesine sahip,• CISC ve Von-Neumann Mimarisi mimarisinde, • 40 Mhz maksimum çalışma frekanslı,
• 8 ayrı adresleme modunda 45 değişik komutu koşturabilen • 1 veya 2 kelimelik komutlara sahip• 10 farklı koşul için dallanma yeteneği olan• Derleyici desteği ile program yazabilen• Mikroprogram kontrollü
bir işlemci tasarlanmıştır.
• Tasarım, Xlinx Webpack programında yapılmış olup simulasyonda ModelSim programı kullanılmıştır.
• Hazırlanan sanal işlemci Spartan-3E Starter Kit’e gömülerek fiziksel işlemci hazırlandı.
• Son olarak da Board’un klavye, LCD , Monitör ve Seri Port ile haberleşmesi sağlanarak kontrolü kolaylaştırıdı.
Desteklenen Adresleme Kipleri
• Saklayıcı kipi (register)• Saklayıcı dolaylı kip (register indirect)• İvedi adresleme (immediate)• Doğrudan adresleme (direct)• Bağıl adresleme (relative)• Dolaylı bağıl adresleme (relative indirect)• Sıralı adresleme (indexed)• Dolaylı sıralı adresleme (indirect indexed)
Komut Kümesi
• NOP
• PSHR
• POPR
• RET
• RTI
• HALT
• PUSH• POP• INC• DEC• NEG• COM• SHR• SHL• SHRA• SHLA• ROR• ROL• RORC• ROLC
• MOVE• XCH• ADD• ADDC• SUB• SUBB• MUL• DIV• CMP• AND• OR• XOR• MULH• MULS
• JMP• CALL• BZ• BNZ• BC• BNC• BN• BNN• BV• BNV• SYSCALL
Operandsız Bir operand İki operand Program kontrol
Komut Kümesi• NOP No operation• PSHR Push registers• POPR Pop registers• RET Return (from a subroutine)• RTI Return from interrupt• HALT Halt• PUSH Push • POP Pop • INC Increment• DEC Decrement• NEG Negate• COM Complement
Komut Kümesi• SHR Shift right (logical)• SHL Shift left (logical)• SHRA Shift right arithmetic• SHLA Shift left arithmetic• ROR Rotate right• ROL Rotate left• RORC Rotate right with carry• ROLC Rotate left with carry• MOVE Move• XCH Exchange• ADD Add• ADDC Add with carry• SUB Subtract
Komut Kümesi
• SUBB Subtract with borrow• MUL Multiply (with microprogram)• DIV Division• CMP Compare• AND And• OR Or • XOR Executive-Or• MULH Multiply (with hardware)• MULS Multiply (with software)• JMP Jump• CALL Call ( a subroutine)• BZ Branch if zero• BNZ Branch if not zero• BC Branch if carry
Komut Kümesi
• BNC Branch if not carry
• BN Branch if negative
• BNN Branch if not negative
• BV Branch if overflow
• BNV Branch if not overflow
• SYSCALL System call (software interrut)
• Sistem CISC mimarisindedir tasarlanmıştır VHDL yazımında öncelikle her eleman component halinde tasarlanmıştır. Daha sonra bu componentler birleştirilerek CPU oluşturulmuştur.
• İşlemlerin koşması için gerekli olan mikroinstruction ve kodlar donanımın içine yüklenmiştir.
Sistem yapısı donanım ve yazılım olarak ikiye ayrılır:
İŞLEMCİNİN YAPISI VE İŞLEYİŞİ
I. Donanım
Temel olarak 3 birimden oluşur. Bunlar:
1. Veri yolu(Datapath)
2. Hafıza elamanı(Memory)
3. Kontrol ünitesi (Control Unit) dir.
1. Veri Yolu
Veri yolu, alınan bilginin işlendiği kısımdır. Dört ana birimden oluşur. Bunlar ;
• Yazmaçlar (register file),
• Muxlar (mux A, mux B,mux D),
• Fonksiyon Ünitesi,
• PSR ile MSTS
olarak düşünülebilir.
A) Register File
• 8’i kullanıcı tarafından, 8’i ise kullanıcı kullanımına kapalı olup mikro-komutlarca kullanılan toplam 16 adet ACC tipi yazmaçtan oluşur.
B) Multipilexerler
• Verini gideceği yolu seçmek için kullanılır.
• Veriyolunda Mux A, Mux B ve Mux D çoklayıcıları vardır. Mux A ve Mux B fonksiyon ünitesi ve belleğe girişleri, Mux D ise veri yolundan çıkışları denetler
C) Fonksiyon Ünitesi
• Fonksiyon ünitesi asıl isi yapan bölümdür. Gelen sinyali aritmetik, lojik veya kaydırma işlemlerine tabi tutarak işler.
• Yapısında bir adet aritmetik lojik ünite (ALU) ve bir adet kaydırıcı (Shifter) bulunur.
• ALU ise 2 ana bölümden oluşur, birincisi aritmetik işlemle yapan aritmetik ünitesi (AU), diğeri ise lojik işlemleri gerçekleştiren lojik ünitesidir.
• Fonksiyon ünitesinin ayrıca 4 adet çıkısı vardır. Bunlar gerçeklenen işlemin sonucu hakkında yorum yapan çıkışlardır.
İşlemin sonucunda taşma varsa “V” çıkısı, elde varsa ” C” çıkısı, işlemi sonucu negatif ise “N” çıkısı, “0” ise “Z” çıkısı lojik ‘1’ verir. ‘0’ iken lojik ‘1’ verir.
• Fonksiyon ünitesinin, yapılacak fonksiyon seçen 5 bitlik FS girişi vardır.
D) PSR ile MSTS
• PSR, makro durum bitlerinin saklandığı yazmaçtır. Bir önceki komut hakkındaki durum bayrağını saklar.
• PSR 4’ ü V C N Z bir biti EI olmak üzere 5 bitliktir.
• PSR ile MSTS Durum bayraklarının saklandığı yazmaçlardır.
• MSTS, mikro-durum bitlerinin saklandığı yazmaçtır. Bir önceki mikro-rutin satırı hakkındaki durum bayrağını saklar.
• MSTS ise sadece 4 bitlik v, c, n, z’yi hafızalamaktadır.
2. Hafıza Ünitesi(Memory)
• Memory ünitemiz standart hafıza biriminin giriş ve çıkışlarına sahiptir.
• Data in, address in ve MO olmak üzere üç girişi, data out olarak da bir çıkışı bulunmaktadır.
• “Data in” ve “Address” girişleri, registerlardan çıkan “Data out” ve “Addres out” ana hatlarına bağlanmıştır.
• Belleğimizin hücre genişliğini işlemcimizdeki veri yolu genişliği belirlemektedir. Veri yolu genişliğimiz 16 bit olduğu için hücre genişliği 16 bittir.
• Satır sayısını belirlemek için ise belleğin adres girişine veri yolunun adres çıkışının LSB 7 biti bağlanmıştır.
3. Kontrol Ünitesi
• İşlemlerin akışı için kendini kontrol edecek kodları ve bu işlemlerin uygulandığı veri yolunu kontrol eden komutları üreten kısımdır.
• Kontrol ünitesi Genel olarak 4 ana kısım içerir;
• 1. Instruction Register: 16 bitlik Instruction Word’ün yazıldığı bölümdür. Veri, veri yolundan veya bellekten gelebilir.
• 2. Instruction to Microaddress Mapper: IRden gelen bilgiye ve o andaki Control Romun yolladığı bilgiye göre kendi içindeki romdan bir adresi seçer ve o adresteki bilgiyi Microsequencer’a yollar.
• 3.Microsequencer: Kontrol ünitesinin kalbidir. Komut akışının düzenini sağlayıp Control Rom’a uygulanacak olan komutun adresini yollar.
• 4.Kontrol ROM: Microsequencer’dan gelen adres bilgisinin karşılığı olan veriyi hem kontrol ünitesine hem de veri yoluna uygular.
II. Yazılım
• Proje kapsamında yazılım ile kastedilen, mapping (haritalayıcı) ROM, kontrol ROM ve memory (hafıza elemanı)’e yazılması gereken kodlardır.
• Bu kodlar veri yolunda işlenecek bilgiyi seçer ve sıralar, ardından işlenen bilginin istenen konuma yazılmasını sağlar.
• Yazılım için gerekli olan ASM aşağıdadır.
Komut türüne göre değişiklik gösterse de genel olarak komutları işleme işi 5 mikro-rutinde gerçekleşir. Buna göre;
• İlk olarak hafıza elemanında işlenecek kod alınarak instruction register (komut yazmacı)’a yazılır.
• Buradan operasyon kodu(opcode)’nun ilk üç bitine bakılarak yapılacak işlemin operand sayısı belirlenir. Eğer operand sayısı “0”dan farklı ise operand alımı yapılır.
• Daha sonra her işlem kendi operand sayısına göre yürütülür (EX,execution mikrorutini). Yürütülmekten kasıt, kontrol ünitesi çıkışlarının veri yoluna uygulanarak gerekli işlem sonuçlarının alınmasıdır.
• Executiondan sonra ise sıra veri yolundan çıkan sonucun ne yapılacağına karar vermeye gelmiştir. İşlemin özel durumlarına göre gerekli görülen sonuçlar memory veya yazmaçlara yazılır(WB, write-back mikro-rutini).
• Seçilen işlemin dallanma olması durumu ise veri yolundan bağımsız, tamamen program sıralaması ile ilgili olup Hafıza elemanlarına yazılma yapılmaz.
• Son olarak ise dışarıdan bir kesme isteğinin olup olmadığını kontrol etmek için gerekli kesme sinyalleri kontrol edilir ve eğer yoksa yeni bir komut alabilmek için IF e yönlendirilir(INT, interrupt handling mikro-rutini).
DIŞ BAĞLANTILAR
• Anahtar ve ledler
• Klavye
• Lcd
• Vga
• Rs-232
Anahtar ve Ledler
Klavye
• Klavyenin ikincil karakter özellikleri kullanılmamaktadır. Bunun yerine bazı tuşlara bazı görevler yüklenmiştir ve bu proje için yeterli olmaktadır.
• Klavyede bilgi girişi hexadecimal olarak yapılmalıdır.
• Görevli tuşlar ve görevleri şunlardır:
• 0,1,2,3,...,9,A,B,C,D,E,F: Hexadecimal sayı girmek için kullanılır.
• Esc: Clear_All(Reset) tuşudur. İşlemcideki bütün elemanların ilk halini geri yükler.
• Enter: Klavyeden bilgi yükleme işleminde kullanılır. Load ve Stop açıkken istenilen bilgi ekrana yazılır. Yama işlemi bittikten sonra load “0”a çekilip “enter”e basılırsa yükleme gerçekleşir.
• TAB: Adres ve Data arasında geçişi sağlar. Yani adres yazıldıktan sonra taba basılarak dataya yada data konumundan adres konumuna devamlı geçişi sağlar.
• F1,F2,...,F7: LCD den görüntülenen bilgileri seçer. Detaylı bilgi raporda da verilmişti.
• G tuşu: Halt komutundan kurtarmak için gerekli “go” anahtarıdır
• S tuşu: LCD ekrana yazılan adres yada data bilgisinin tamamını temizler.
• R tuşu: PC’nin içeriğini sıfırlar. Daha önceki sürümde PC’yi sıfırlamak için Load ve Stop aynı anda ‘1’ yapılıyordu. Bu sürümde bu özellik Kaldırıldı. Nedeni ise bazı durumlarda sakıncaları olmasıydı. Bu sürümde PC’yi sıfırlamak için klavyeden “R” tuşuna basılır.
• Backspace: Silme tuşudur. Ekrana yazılan son harfi siler.
LCD• Hâlihazırdaki işlemcide LCD’nin
modları ve modlardaki kalıplar şu şekildedir:
Mod= “000” için • REG1=0 x XX• REG2=0 x XX
Mod= “001” için • REG3=0 x XX• REG4=0 x XX
Mod= “010” için
• REG5=0 x XX
• REG6=0 x XX
Mod= “011” için
• REG7=0 x XX
• IR=0 x XX
Mod= “100” için
• PC=0 x XX
• SP=0 x XX
***NOT: LCD ekrandaki bilgiler 16’lık tabanda gösterilir.
Mod= “111” için
• MOMENTUM• 2008
.
Mod= “101” için • M-ADR =0 x XX
• M-DATA=0 x XX
Mod= “110” için
• M-ADR =0 x XX•
M-DATA=0 x XX
VGA• CPU nun içindeki bazı verileri öğrenebilmek için ekrana
çıktı aldık böylece CPU MOMENTUM’un hangi aşamada olduğunu veya yapılan işlemin sonuçları görebiliyoruz
RS-232 Seri Port
• RS'232 seri portunun amacı işlemci çalışırken belleğe yeni komutlar yazabilmektir. Bu sayede sistem board üzerine bir kez kurulduktan sonra, tekrar tekrar derlenip yüklemeye gerek bırakmadan seri port aracılığıyla harici bir bilgisayardan programlanabilecektir.
• Ayrıca seri port ile Momentum Komut Çevirici haberleştirilerek, MKC yardımıyla işlemcinin diline çevrilen komutlar direk olarak işlemciye de yüklenebilmektedir.
MOMENTUM KOMUT ÇEVİRİCİ
• Kullanıcı tarafından yazılan kodları CPU’nun tanıyacağı makine koduna çevirmek amacıyla MKC isimli kod çevirme programı hazırlanmış ve ekte kullanıma sunulmuştur.
• Kullanım için gerekli detaylı bilgi yardım mönüsünden rahatlıkla edinilebilinir.
• MKC kodu, çevirmenin yanında, çevirilen kodu alansal olarak inceleme, hata ayıklama, hex olarak çıktı verme olarak detaylı şekilde inceler.
• Çevrilen komutları “dosyaya yaz “ özelliği ile istenen bölümleri istenen dosyaya yazar.
• Bunu yanında komutlar “mikroişlemciye yükle” butonu ile, RS232 seri portu yardımıyla mikroişlemciye yüklenebilir. Bunun için butona basıldıktan sonra gerekli talimatlara uymak yeterli olacaktır.
DENEY ÇIKTILARI
Sanal işlemci tasarlandıktan sonra tasarım boarda yüklendi ve board üzerine deneyler yapılmaya başlandı. Bunlardan bir örnek aşağıda fotoğraflarıyla beraber gösterilmiştir;
• Öncelikli olarak Project nevigatordan boarda yükleme yapılırken belleğe aşağıda görülen iki komut initial olarak yazılmıştır. Daha sonra bütün kodlar derlenerek boarda gömülmüştür.
• Ardından boarda yüklenen tasarımın memorisinin içeriği F6 tuşuna basılarak kontol edilmiş ve girilen init memory datalarının belrtilen adreslere gerçekten yüklenmiş olduğu görülmüştür.
• Regsterlerin ilk değerleri, sanal tasarımın yazmaç ünitesinde kendi register numaraları olarak atanmıştı. Bu durumda yazılan koda göre işlem sonucu olarak 3 numaralı registere hexadecimal olarak “18” sayısının yani “12” nin yazılmış olması gerekmektedir ki gerçekten sonuç doğru olarak görülmektedir.
• Ardından dışarıdan girilecek olan bir kodun belleğe yazılıp, koşturulması amacıyla bir deney yapılmıştır. Buna göre MKC’ye bir add, bir jump ve bir halttan oluşan aşağıdaki programcık yazılmış;
• Ve opcodeları klavye yardımıyla aşağıdaki gibi girilmiştir;
• ve beklenildiği gibi aşağıdaki başarılı çıktılar alınmıştır;
• Görüldüğü gibi toplam sonucu olan “9” 4 numaralı yazmaca yazılmış ve PC, 12 numaralı adrese gitmiş ve halt komutu olduğu için oada beklemeye başlamıştır.
• Bu gibi deneylerin hemen hepsi başarılı sonuç vermiş ve denenen komutların tamamından doğru sonuçlar alınmıştır.
SONUÇLAR
• Kodların derlenmesi sonucu alınan derleme sonuçları aşağıdaki gibidir:
HDL Synthesis ReportMacro Statistics
• # ROMs : 9• 16x6-bit ROM : 1• 16x7-bit ROM : 8• # Multipliers : 1• 8x8-bit multiplier : 1• # Adders/Subtractors : 10• 10-bit adder : 1• 16-bit adder : 3• 16-bit subtractor : 1• 17-bit adder carry in : 1• 17-bit subtractor : 1• 5-bit adder : 1• 8-bit adder : 2• # Counters : 6• 10-bit up counter : 2• 2-bit up counter : 2• 32-bit up counter : 1• 4-bit up counter : 1• # Registers : 217• 1-bit register : 49• 10-bit register : 4• 11-bit register : 1• 16-bit register : 153• 3-bit register : 1• 32-bit register : 3• 5-bit register : 1• 64-bit register : 1• 8-bit register : 4• # Latches : 32• 1-bit latch : 19• 16-bit latch : 2• 4-bit latch : 8• 5-bit latch : 1• 6-bit latch : 1• 8-bit latch : 1
• # Comparators : 22• 10-bit comparator greatequal : 2• 10-bit comparator less : 1• 11-bit comparator greatequal : 4• 11-bit comparator lessequal : 4• 3-bit comparator not equal :1• 32-bit comparator greatequal : 2• 32-bit comparator less : 2• 32-bit comparator not equal : 2• 5-bit comparator greatequal : 1• 5-bit comparator less : 1• 7-bit comparator greatequal : 1• 7-bit comparator lessequal : 1• # Multiplexers : 18• 1-bit 16-to-1 multiplexer : 1• 1-bit 8-to-1 multiplexer : 1• 16-bit 128-to-1 multiplexer : 2• 16-bit 16-to-1 multiplexer : 2• 16-bit 4-to-1 multiplexer : 4• 16-bit 7-to-1 multiplexer : 2• 4-bit 4-to-1 multiplexer : 1• 4-bit 8-to-1 multiplexer : 4• 8-bit 4-to-1 multiplexer : 1• # Tristates : 6• 1-bit tristate buffer : 4• 31-bit tristate buffer : 1• 8-bit tristate buffer : 1• # Xors : 18• 1-bit xor2 : 18
Advanced HDL Synthesis ReportMacro Statistics
• # FSMs : 1• # ROMs : 9• 16x6-bit ROM : 1• 16x7-bit ROM : 8• # Multipliers : 1• 8x8-bit multiplier : 1• # Adders/Subtractors : 10• 10-bit adder : 1• 16-bit adder : 3• 16-bit subtractor : 1• 17-bit adder carry in : 1• 17-bit subtractor : 1• 5-bit adder : 1• 8-bit adder : 2• # Counters : 6• 10-bit up counter : 2• 2-bit up counter : 2• 32-bit up counter : 1• 4-bit up counter : 1• # Registers : 2734• Flip-Flops : 2734• # Latches : 32• 1-bit latch : 19• 16-bit latch : 2• 4-bit latch : 8• 5-bit latch : 1• 6-bit latch : 1• 8-bit latch : 1
• # Comparators : 22• 10-bit comparator greatequal : 2• 10-bit comparator less : 1• 11-bit comparator greatequal : 4• 11-bit comparator lessequal : 4• 3-bit comparator not equal : 1• 32-bit comparator greatequal : 2• 32-bit comparator less : 2• 32-bit comparator not equal : 2• 5-bit comparator greatequal : 1• 5-bit comparator less : 1• 7-bit comparator greatequal : 1• 7-bit comparator lessequal : 1• # Multiplexers : 78• 1-bit 128-to-1 multiplexer : 32• 1-bit 16-to-1 multiplexer : 33• 1-bit 8-to-1 multiplexer : 1• 16-bit 4-to-1 multiplexer : 4• 16-bit 7-to-1 multiplexer : 2• 4-bit 4-to-1 multiplexer : 1• 4-bit 8-to-1 multiplexer : 4• 8-bit 4-to-1 multiplexer : 1• # Xors : 18• 1-bit xor2 : 18
• Speed Grade: -4
• Minimum period: 26.173ns (Maximum Frequency: 38.207MHz)
• Minimum input arrival time before clock: 14.114ns
• Maximum output required time after clock: 13.283ns
• Maximum combinational path delay: 5.760ns
İzlediğiniz için teşekkür ederiz…