8086 ve PIC’den sonra bu uygulamada S3E SK yı kullanarak bir karaşimşek efekti uygulaması yapacağız. Sanırım karaşimşek efekti yapma olayı takıntı haline geldi.

B- Uygulama:

Teknik olarak bundan önceki fpga uygulamalarına yeni bir şey katmadığından burada fazla açıklama yapmayacağım. Daha doğrusu açıklama yapmayacağım :D. Aşağıda uygulamanın vidyosunu, kodları ve proje dosyasını bulabilirsiniz.

Tavsiyem öncelikle vidyoyu izledikten sonra bu uygulamayı yapmayı bir denemenizdir. Sorun yaşarsanız kodlara bakabilirsiniz. Hala sorun yaşıyorsanız proje dosyasını bilgisayarınıza indirip bir de öyle deneyin.

C – Kod (Verilog):

  1. `timescale 1ns / 1ps
  2. module ana(SAAT,LED);
  3. // Girdi-Çıktı kapıları
  4. input SAAT;
  5. output [7:0] LED;
  6. // Yazmaçlar
  7. reg [24:0] saat_sayac;
  8. reg [7:0] ledler;
  9. reg yon;
  10. initial begin // İlk değerleri yazmaçlara ver
  11. ledler <= 8’b00000001;
  12. saat_sayac <= 25’b0000000000000000000000000;
  13. end
  14. always @ (posedge SAAT) begin
  15. if( saat_sayac == 25’b1011111010111100001000000)
  16. begin
  17. if(yon == 1’b0) begin // Sola kaydır
  18. if(ledler == 8’b10000000) begin
  19. ledler <= ledler >> 1;
  20. yon <= 1’b1;
  21. saat_sayac <= 25’b0000000000000000000000000; // Sayacı sıfırla
  22. end
  23. else begin
  24. ledler <= ledler << 1;
  25. saat_sayac <= 25’b0000000000000000000000000; // Sayacı sıfırla
  26. end
  27. end
  28. else begin // Sağa kaydır
  29. if(ledler == 8’b00000001) begin
  30. ledler <= ledler << 1;
  31. yon <= 1’b0;
  32. saat_sayac <= 25’b0000000000000000000000000; // Sayacı sıfırla
  33. end
  34. else begin
  35. ledler <= ledler >> 1;
  36. saat_sayac <= 25’b0000000000000000000000000; // Sayacı sıfırla
  37. end
  38. end
  39. end
  40. else begin
  41. ledler <= ledler;
  42. saat_sayac <= saat_sayac + 25’b0000000000000000000000001; // Sayacı 1 arttır
  43. end
  44. end
  45. assign LED = ledler;
  46. endmodule // modülü sonlandır

D- UCF Dosyası:

  1. NET “SAAT” LOC = “C9” | IOSTANDARD = LVCMOS33 ;
  2. NET “SAAT” PERIOD = 20.0ns HIGH 40%;
  3. NET “LED<7>” LOC = “F9” | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
  4. NET “LED<6>” LOC = “E9” | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
  5. NET “LED<5>” LOC = “D11” | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
  6. NET “LED<4>” LOC = “C11” | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
  7. NET “LED<3>” LOC = “F11” | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
  8. NET “LED<2>” LOC = “E11” | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
  9. NET “LED<1>” LOC = “E12” | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
  10. NET “LED<0>” LOC = “F12” | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;

E- Proje Dosyası (Xilinx ISE):

İndirmek için tıklayınız.

Elinizdeki FPGA kitine göre kodda bazı değişiklikler yapmanız gerekebilir.

F- Vidyo:

Vidyo 1