FPGA ile İşlemci Tasarımı / BT-I / #2 (İç Mimari)

BT-I işlemcisinin iç mimarisi aşağıda görülmektedir.

Modüller:

PC: Program Counter yani program sayacı. Yürütülecek komutun ROM'daki adres bilgisini tutar. Clock'un yükselen kenarında komut seti uzunluğu (16bit / 2Byte) kadar adresi arttırır. Branch komutu ile değeri relatif ya da doğrudan olmak üzere değiştirilebilir.

ROM: Program hafızası. Komutlar burada depolanır.

IR: Instruction Register, yani komut registeri. PC'nin ROM'da adreslediği veriyi, Clock'un düşen kenarı ile saklayan register.

Ins. Decoder: Instruction Decoder, yani komut çözücü. IR dan okuduğu veriyi çözüp, buna göre diğer modülleri konfigüre edip komutun yürütülmesini sağlar.

Flags: Bayraklar. ALU'dan gelen bayrak değerlerini saklayan registerler. Ins. Decoder bazı komutları yürütürken bu bayraklara bakar. Ayrıca "ADC" (Elde ile topla) komutunun yürütülmesinde de kullanılır.

General Purpose Registers: Genel amaçlı işlemci registerleri. BT-I'de 8 adet 16 bitlik genel amaçlı register bulunur.

ALU: Arithmetic Logic Unit, yani aritmetik mantık ünitesi. Matematiksel işlemleri yapan birimdir. İşlemcinin çekirdeğini oluşturur. BT-I'de ALU toplama, çıkarma, and, or ve not işlemlerini yapabilir.

Sinyaller:

Ins.: Instruction yani komut. ROM'dan gelen komutların taşındığı sinyaldir. 16 bit genişliğindedir.

Im_Data: İmmediately Data yani direkt veri. Yürütülen komutun içinden Ins. Decoder ile alınan veridir. "MOV Rd, #Im", "B #Im", "SUB Rd, Rn, #Im" gibi komutların yürütülmesinde kullanılan direkt veriyi taşır. 8 bit genişliğindedir.

Rn, Rm, Rd: Yürütülen komutun içinden alınan veridir. Komutun yürütülmesinde kullanılan registerlerin adresini taşır. Adreslenen registerler "General Purpose Registers" modülü ile ALU'ya gönderilir. Her biri 3 bit genişliğindedir.

Dn, Dm, Dd: Adreslenen registerlerin sahip olduğu verileri taşıyan sinyal. Her biri 16 bit genişliğindedir.

ALU_Op: ALU Operations, yani ALU işlemleri. '0' konumunda ALU aritmetik işlemler, '1' konumunda lojik işlemler yapar.

Arith_Op: Arithmetic Operations yani aritmetik işlemler. "00" konumunda ALU toplama, "01" konumunda elde ile toplama, diğer konumlarda ise çıkarma işlemi yapar

Logic_Op: Logic Operations yani mantık işlemleri. "00" konumunda ALU and, "01" konumunda  or, diğer konumlarda not işlemi yapar.

Flags_Update: Bayrakları güncelle. '1' konumunda ALU işlem sonrası bayrakları günceller.

ALU_Mux: ALU nun B girişine Im_Data ile Dm arasında seçim yapmayı sağlar. İçinde direkt veri içeren komutlar yürütüleceği zaman '1' yapılarak  ALU nun B girişi Im_Data sinyaline bağlanmış olur.

ALU_Zero_Mux: ALU'nun A girişine "0x0000" verisinin girilmesini sağlar. "MOV" komutunun yürütülmesinde kullanılır.

Return_Mux: Genel amaçlı registere yazılacak verinin kaynağının seçilmesinde kullanılır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.