Gönderen Konu: 1HZ, 30HZ elde etmek. Nasıl?  (Okunma sayısı 451 defa)

Çevrimdışı MC_Skywalker

  • Profesyonel Üye
  • *****
  • İleti: 2406
  • e=m.c^2
1HZ, 30HZ elde etmek. Nasıl?
« : 08 Ekim 2017, 08:55:20 »
EPM570T100C5 CPLD ile 7 Segment LCD kullanan saaat yapmaya çalışıyorum ama bir türlü 1HZ ve 30HZ elde edemdim.

30HZ çok keskin olmasada olur 60HZ geçmeyecek bir değer de olur

Ne yaptım 50MHz clk girşi olduğunu kabul edip sayıcı kurup, 26 bit saycı'nın 20'nci birinden ~48HZ (=50Mhz/2^20) alabiliyorum. 25'ici bit ~1.7Hz ve 26'ıncı bit ~0.7Hz veriyor. EPM570T100C5 içinde PLL olmadığı için mega wizard ile clock üretimi yapılmıyor.

integer 0-49999999 saydırıp 50000000 geldiğinde tetik alsam doğruluğu ne olur acaba?


Çevrimdışı Allegro

  • Global Moderator
  • Profesyonel Üye
  • *****
  • İleti: 5142
Ynt: 1HZ, 30HZ elde etmek. Nasıl?
« Yanıtla #1 : 08 Ekim 2017, 09:14:23 »
50MHz clk kaynağınız kadar doğru olur :)

Çevrimdışı muuzoo

  • Emektar
  • *****
  • İleti: 660
    • Günlük
Ynt: 1HZ, 30HZ elde etmek. Nasıl?
« Yanıtla #2 : 08 Ekim 2017, 09:28:23 »
@MC_Skywalker  Aslında cevabınızı vermişsiniz bit kontrolünden ziyade sayaç yaparak elde edebilirsiniz.
www.muuzoo.gen.tr - Kişisel karalamalarım...

Çevrimdışı MC_Skywalker

  • Profesyonel Üye
  • *****
  • İleti: 2406
  • e=m.c^2
Ynt: 1HZ, 30HZ elde etmek. Nasıl?
« Yanıtla #3 : 08 Ekim 2017, 09:28:28 »
@Allegro tabiki clk giriş kaynağının doğrulu kadar olur. Benim sormak istediğim.

26 bit binary sayaç  mı yoksa integer bir sayaçmı daha doğru tercih olur

Çevrimiçi polleme

  • Profesyonel Üye
  • *****
  • İleti: 2466
Ynt: 1HZ, 30HZ elde etmek. Nasıl?
« Yanıtla #4 : 08 Ekim 2017, 15:26:40 »
Ek bir devre yapmayı düşünürseniz piyasada saat modüllerinde kullanılan 32,768 KHz Kristal ve bir CD4060 bölücü ile 2Hz elde edilebilir. Bu da ikiye bölünürse hassas 1Hz olur (kristalin hassasiyeti önemli)

Örnek:

https://jvok.uk/clock/timebase.png

Çevrimdışı Zoroaster

  • Profesyonel Üye
  • *****
  • İleti: 1173
Ynt: 1HZ, 30HZ elde etmek. Nasıl?
« Yanıtla #5 : 08 Ekim 2017, 16:08:31 »
@Allegro tabiki clk giriş kaynağının doğrulu kadar olur. Benim sormak istediğim.

26 bit binary sayaç  mı yoksa integer bir sayaçmı daha doğru tercih olur

Ne demek istiyorsun anlasilmiyor ki. Integer sayac ile decimal sayactan mi bahsediyorsun acaba?

Senin yapmam gereken senkron lojik tasarimla yapilmis sayac. Binary ya da decimal olmasinin onemi yok.

Çevrimdışı MC_Skywalker

  • Profesyonel Üye
  • *****
  • İleti: 2406
  • e=m.c^2
Ynt: 1HZ, 30HZ elde etmek. Nasıl?
« Yanıtla #6 : 09 Ekim 2017, 01:13:51 »
Sormak istediğim şu şekildeydi;

Binary dediğim sayaç;
Kod: [Seç]
signal sayac: STD_LOGIC_VECTOR(26 down to 0);
....
sayac = sayac +1
....
clk30HZ <= sayac(20) -- 20. bitten çıkış
clk1HZ <= sayac(26)  -- 26. bitten çıkış
....

integer sayaç dediğim.
Kod: [Seç]
signal sayac1 : integer range 0 to 49999999 := 0; --1Hz için sayacak sayaç
signal sayac30: integer range 0 to 1048576:=0; --30Hz için sayacak sayaç
...
         if sayac1 = 49999999 then
                      sayac1 <= 0;
                      clk1HZ <=1
         else
        sayac1 <=sayac1 + 1;
        clk1HZ <=0
....

Çevrimdışı alicavuslu

  • Kıdemli
  • ****
  • İleti: 245
    • Kişisel Site
Ynt: 1HZ, 30HZ elde etmek. Nasıl?
« Yanıtla #7 : 09 Ekim 2017, 03:03:15 »
Sen integer da seçsen kullandığın sentezleme aracı 26 bite düşürecektir. Çok sorun olacak bi durum değil. Kod yazma açisindan integer yerine std_logic_vector kullanman daha iyidir.