Merhabalar
FUN110 QUEUE FIFO
*Bu uygulamada FUN110 QUEUE komutu kullanılarak FIFO(İlk giren, ilk çıkan) mantığında çalışan bir kuyruk yapısı oluşturulmuştur.
*Kuyruk alanı R100–R109 register’larıdır ve toplam 10 eleman kapasitelidir. Kuyruk uzunluğu R200 (L) parametresi üzerinden değiştirilebilir.
*Kuyruk kontrolü R300 (Pointer) üzerinden yapılır. R300, kuyrukta kaç adet geçerli veri olduğunu ve sıradaki işlem yapılacak konumu belirtir.
*Komut, yalnızca EN girişine verilen yükselen kenarda (pulse) çalışır.
Push işlemi (veri ekleme):
*I/O = 1 olduğunda komut Push modunda çalışır.
*EN girişine her pulse geldiğinde, R0’daki veri kuyruğun sonuna eklenir.
*Veri, R300 değerine göre R100’den başlayarak sıralı şekilde yazılır.
*Her push işleminden sonra R300 değeri 1 artar.
*Bu nedenle, I/O açıkken her M0 tetiklemesinde R0’daki değer kuyruğa eklenir ve yazma işlemi bir sonraki register’a ilerler. Bu davranış normaldir ve FIFO yapısının gereğidir.
Pop işlemi (veri çıkarma):
*I/O = 0 olduğunda komut Pop modunda çalışır.
*EN girişine pulse geldiğinde, R300’ün işaret ettiği register’daki veri kuyruğun içinden alınır.
*Alınan veri R400 adresine yazılır.
*Pop işleminden sonra R300 değeri 1 azalır.
Önemli notlar:
*R300 normal çalışma sırasında elle değiştirilmez, sadece başlangıçta 0 yapılır.
*Kuyruktan veri çıkarıldığında, ilgili register fiziksel olarak silinmez; sadece pointer geri alınır. Geçerlilik R300 ile yönetilir.
*R0 sadece Push işlemi sırasında kullanılır. Pop modunda R0’ın değeri önemli değildir.
*Kuyruk dolu olduğunda (R300 = 10) Push işlemi yapılmaz ve FUL bayrağı aktif olur.
Özet:
Kuyruk alanı: R100–R109
Push → R0 → kuyruk → R300 artar
Pop → kuyruk → R400 → R300 azalır
EN pulse ile çalışır.
Gözlenen tüm davranışlar komutun normal ve beklenen çalışma şeklidir
Örnek proje ektedir. İyi çalışmalar.