Hocam merhaba, öncelikle paylaşımlarınız için teşekkür ederim. Arty-7 35T board üzerinde ilk denemelerime başladım. Board için 450 MHz'i aşan clock'a sahip olduğu yazıyor. Bu 450 MHz, sizin kartınız için tanımlanan 100 MHz mi demek? Benim kartta da default 100 MHz tanımlı. Yoksa bu clock FF'ler için geçerli latency mi? Umarım sorum size ulaşır. Şimdiden teşekkür ederim.
merhaba, 450 MHz içerdeki ff larin ulaşabileceği clock frequency olarak düşünebilirsiniz. dışardan gelen 100 MHz clocku clocking wizard ile 450 mhzye çıkarabilirsiniz ama 450 MHz de çalışan devre kurmanız zor
@@mehmetburakaykenar cevabınız için teşekkür ederim. Bellek kullanmadan en azından 300-400MHz ile çalışan bir counter kuramaz mıyım? Donanımsal paralel çıkış alacağım. ### Bellek kullanırsam ~166 MHz'i aşamayacağım. Sonuçta değişken kullanıp kullanmamak bizim elimizde, yanlış mıyım? Yoksa ide ister istemez belleğe bulaştırıyor mu? ### Zordan kastınız, bir üst paragrafta bahsettiğim bellek erişim hızı ile alakalı mı?
bellekle pek alakası yok counterin bildiğimiz FF larla yapar. zor dedim çünkü ancak iki ff arasında hiç Combinational logic olmazsa ve fflari da placement olarak çok yakın koyunca ancak o kadar yüksek hizlara çıkabilir devre
kadir hocam aslında ne kadar çok warning error çıkarsa o kadar iyi :) bunları okuyup düzeltmeye çalışırken harcanan efor, tecrübe ve know-how olarak geri dönüyor tasarımcıya
hocam hazırladığım projede in out pinleri when else yapısıyla düzgün çalışmıyor. örneğin "kapi1 = 1" ise "i_1" pini "o_1" çıkışına bağlansın, "kapi1=2" ise "i_1" pini "o_2" çıkışına bağlansın vs. combinational olarak when else yapısını kuruyorum. ancak "kapi2=2" için "i_2" pini "o_2" pinine bağlanması gerekirken "o_1" pinine bağlanıyor. aslında çok basit bir when else yapısı olması gerekiyor. when else yapısının hatasız çalışması için ne yapılmalı. bu yapıyı sequential olarak kurarsam sorun çözülür mü?
inout pinlerinin kullanım örneği için i2c uygulaması yapılan 27. derse ve githubda ilgili kodlara bakabilirsiniz. inout portlarda bu portu surmediginiz zaman high Z, yani vhdl de 'Z' olarak surmelisiniz ki input olarak kullanilabilsin
blok olarak bakacak olursak, sunla şunun toplamı full adder ile yapılır (kaç bitse o kadar FA koyarız). buysa şunu yap değilse şunu yap için comparator gerekir, o da xor larla implement edilebilir ama blok olarak comparator düşünelim. suysa buysa seçimi de multiplexer blogudur, multiplexer implementasyonu da input sayısı ve genişliğine göre oluşturulabilir. bütün bunlar combinational logic blokları (full adder comparator multiplexer) oldukları için hepsinin lojik kapılarla implementasyonu bulunabilir, bulmanın en kolay yolu da Google :) tam bir logic design dersi ödev sorusu :D tabi vhdl de yapmak istesek < = > gibi comparison işaretleri ve + işaretiyle when else with select yapıları ya da process icinde if else ile kolayca yapılır
@@mehmetburakaykenar evet hocam bende soruyu çok beğendim vizede kopya çekmiş sınıfın çoğunluğu hoca bırakmak için böyle sordu bunun gibi 4 soru var 10 günümüz var. Bende birşeyler karaladim ama anlamadım gitti. Aklıma da belki kod ile yazıp şematik olarak görüntüleyip orda nasıl çizdiyse onu yapmak geldi. Doğru yolda mıyım hocam ?
kodu yazıp vivadoda elaborate dersen dediğin gibi logic gate olarak çıkarabilir ya da daha ziyade bloklar olarak da çıkarabilir denemek lazım. ama ben olsam önce dediğim gibi kutu kutu blok tasarımı yaparım, sonra bu blokların içini doldurması kolay olur, bloklarin içleri internette bulunabilir çünkü kolayca. bu uzaktan eğitim iyi hoş da öğrencilerin hatta ülke insanının hepsinin bilinçaltına yerleşen şey işim görülsün de gerisi önemli değil mantığı olduğundan derslerde amaç öğrenmek anlamak değil de dersi geçmek oluyor, e uzaktan eğitimde de kopya ile geçmenin önüne ne kadar gecilebiliyor soru işareti. öğrenci mezun oluyor aman ise gireyim de nasıl olursa olsun torpil vs, sonra ise giriyor aynı mantıkla iş yapıyor. bir hocam anlatmıştı Amerika'da doktora yaparken biri odevle ilgili bişey sormuş yol göstermesi için, hoca al direk cevabı vereyim geçir demiş (türk mantığı), adam sen benim öğrenmemi neden engellemeye çalışıyorsun bu ödevin amacı benim konuyu daha iyi öğrenmem demiş. yani ödevi ya da sınavı yapmak amaç değil araç aslında öğrenmek için. sözüm meclisten dışarı yanlış anlaşılmasin, ama üniversite, ödev sınav bunlar amaç değil araç aslında, bir gün inşallah bu şekilde düşünebilen öğrenciler ve toplum yetiştirmeyi başarmak nasip olur
@@mehmetburakaykenar hocam söylenecek çok şey var.. Kopya çeken kendine çeker ileride birşey yapamaz ki Çekenler yüzünden çekmenler de sıkıntıda şuan Birde bizim hoca da ilk 5 hafta konuları yüklemedi vizeden 1 hafta önce 10 haftalık video yükleyip hepsinden sorumlu tuttu ve vizeden sonra kalan haftaları yabancı birisinin anlattığı videoları koymuş ve geçen senelerde vhdl yoktu onu da ekledi :) Herkesin hakli bir sebebi var yada yok uzun mevzular hocam :)
tam neresi bahsettiğiniz yer hatırlamıyorum ama 1 MHz demek 1 milyon Hz demek, yani 1 saniyede 1 milyon saat vuruşu demek, saat frekansına göre düşünmek lazım, saat 50 MHz ise saniyede 50 milyon vuruş olur
Selamlar herkese, Öncelikle Mehmet Burak Hocam ellerinize sağlık çok güzel bir seri oluyor. Benim fpga board'um yok ve haliyle biz öğrenciler için pahalı biraz :( Bu sebeple oluşturduğum simulasyon dosyasını size de yardımcı olması için buraya bırakıyorum. Kolay gelsin :) library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity tb_sequential_designed_counter is generic( c_clkFrequency : integer := 100_000_000 ); end tb_sequential_designed_counter; architecture Behavioral of tb_sequential_designed_counter is component sequential_design_exp is generic( c_clkFrequency : integer := 100_000_000 ); Port ( clk : in std_logic; sw : in std_logic_vector (1 downto 0); led : out std_logic_vector (7 downto 0) ); end component sequential_design_exp; constant clk_period: time:=10ns; signal clk : std_logic ; signal sw : std_logic_vector (1 downto 0) :="00"; signal led : std_logic_vector (7 downto 0) :=(others =>'0'); signal counter_2 : integer range 0 to (c_clkFrequency+100) := 0; signal second_counter : integer range 0 to 100 :=0; begin DUT : sequential_design_exp generic map ( c_clkFrequency => c_clkFrequency ) port map ( clk => clk, sw => sw, led => led ); clk_process:process begin clk
elinize sağlık 😊 az önce bir video çektim pazar yayınlarım inşallah, videoda ucuz bir FPGA geliştirme kartının unbox (kutu açma) işlemini gösterdim ve kartı tanıttim 😅 her zaman diyorum, ilk etapta FPGA gekistirme kartı almaya gerek yok, kod yazıp testbench ile simülasyon yapmak ilk başta yeterli. hem simülasyon yapmak karta gömüp test etmeye göre çok daha iyi geliştirir kişiyi
Hocam süpersiniz, ilk baştaki videolarınız sayesinde 2 günde vhdl yazabilir hale geldim. Süper bir tutorial serisi olmuş.
2 gün bayağı iddialı olmuş 😅
başarılar dilerim
Teşekkürler hocam, inşallah gelecekte diğer vhdl tutorların üzerinde bir tutorial olur.
Teşeşşürler..
Hocam merhaba, öncelikle paylaşımlarınız için teşekkür ederim.
Arty-7 35T board üzerinde ilk denemelerime başladım. Board için 450 MHz'i aşan clock'a sahip olduğu yazıyor. Bu 450 MHz, sizin kartınız için tanımlanan 100 MHz mi demek? Benim kartta da default 100 MHz tanımlı. Yoksa bu clock FF'ler için geçerli latency mi?
Umarım sorum size ulaşır. Şimdiden teşekkür ederim.
merhaba, 450 MHz içerdeki ff larin ulaşabileceği clock frequency olarak düşünebilirsiniz. dışardan gelen 100 MHz clocku clocking wizard ile 450 mhzye çıkarabilirsiniz ama 450 MHz de çalışan devre kurmanız zor
@@mehmetburakaykenar cevabınız için teşekkür ederim.
Bellek kullanmadan en azından 300-400MHz ile çalışan bir counter kuramaz mıyım? Donanımsal paralel çıkış alacağım.
###
Bellek kullanırsam ~166 MHz'i aşamayacağım. Sonuçta değişken kullanıp kullanmamak bizim elimizde, yanlış mıyım? Yoksa ide ister istemez belleğe bulaştırıyor mu?
###
Zordan kastınız, bir üst paragrafta bahsettiğim bellek erişim hızı ile alakalı mı?
Hocam, rica etsem zordan kastınızı biraz açabilir misiniz?
Düzeltme: Başka soru sormayacağım. Darlama gibi bir niyetim yok, yanlış anlamayın lütfen.
bellekle pek alakası yok counterin bildiğimiz FF larla yapar. zor dedim çünkü ancak iki ff arasında hiç Combinational logic olmazsa ve fflari da placement olarak çok yakın koyunca ancak o kadar yüksek hizlara çıkabilir devre
@@mehmetburakaykenar Teşekkür ederim.
Heralde '0' Warningle bi kodu implement edebilmem için 10 yıl tecrübe gerekecek(!) :DD
kadir hocam aslında ne kadar çok warning error çıkarsa o kadar iyi :) bunları okuyup düzeltmeye çalışırken harcanan efor, tecrübe ve know-how olarak geri dönüyor tasarımcıya
hocam hazırladığım projede in out pinleri when else yapısıyla düzgün çalışmıyor. örneğin "kapi1 = 1" ise "i_1" pini "o_1" çıkışına bağlansın, "kapi1=2" ise "i_1" pini "o_2" çıkışına bağlansın vs. combinational olarak when else yapısını kuruyorum. ancak "kapi2=2" için "i_2" pini "o_2" pinine bağlanması gerekirken "o_1" pinine bağlanıyor. aslında çok basit bir when else yapısı olması gerekiyor. when else yapısının hatasız çalışması için ne yapılmalı. bu yapıyı sequential olarak kurarsam sorun çözülür mü?
inout pinlerinin kullanım örneği için i2c uygulaması yapılan 27. derse ve githubda ilgili kodlara bakabilirsiniz. inout portlarda bu portu surmediginiz zaman high Z, yani vhdl de 'Z' olarak surmelisiniz ki input olarak kullanilabilsin
Hocam lojik kapılarla şu ikisinin toplamı buysa bunu yap değilse şunu yap nasıl yapabiliriz
blok olarak bakacak olursak, sunla şunun toplamı full adder ile yapılır (kaç bitse o kadar FA koyarız). buysa şunu yap değilse şunu yap için comparator gerekir, o da xor larla implement edilebilir ama blok olarak comparator düşünelim. suysa buysa seçimi de multiplexer blogudur, multiplexer implementasyonu da input sayısı ve genişliğine göre oluşturulabilir. bütün bunlar combinational logic blokları (full adder comparator multiplexer) oldukları için hepsinin lojik kapılarla implementasyonu bulunabilir, bulmanın en kolay yolu da Google :)
tam bir logic design dersi ödev sorusu :D tabi vhdl de yapmak istesek < = > gibi comparison işaretleri ve + işaretiyle when else with select yapıları ya da process icinde if else ile kolayca yapılır
@@mehmetburakaykenar evet hocam bende soruyu çok beğendim vizede kopya çekmiş sınıfın çoğunluğu hoca bırakmak için böyle sordu bunun gibi 4 soru var 10 günümüz var.
Bende birşeyler karaladim ama anlamadım gitti.
Aklıma da belki kod ile yazıp şematik olarak görüntüleyip orda nasıl çizdiyse onu yapmak geldi.
Doğru yolda mıyım hocam ?
kodu yazıp vivadoda elaborate dersen dediğin gibi logic gate olarak çıkarabilir ya da daha ziyade bloklar olarak da çıkarabilir denemek lazım. ama ben olsam önce dediğim gibi kutu kutu blok tasarımı yaparım, sonra bu blokların içini doldurması kolay olur, bloklarin içleri internette bulunabilir çünkü kolayca.
bu uzaktan eğitim iyi hoş da öğrencilerin hatta ülke insanının hepsinin bilinçaltına yerleşen şey işim görülsün de gerisi önemli değil mantığı olduğundan derslerde amaç öğrenmek anlamak değil de dersi geçmek oluyor, e uzaktan eğitimde de kopya ile geçmenin önüne ne kadar gecilebiliyor soru işareti. öğrenci mezun oluyor aman ise gireyim de nasıl olursa olsun torpil vs, sonra ise giriyor aynı mantıkla iş yapıyor. bir hocam anlatmıştı Amerika'da doktora yaparken biri odevle ilgili bişey sormuş yol göstermesi için, hoca al direk cevabı vereyim geçir demiş (türk mantığı), adam sen benim öğrenmemi neden engellemeye çalışıyorsun bu ödevin amacı benim konuyu daha iyi öğrenmem demiş. yani ödevi ya da sınavı yapmak amaç değil araç aslında öğrenmek için.
sözüm meclisten dışarı yanlış anlaşılmasin, ama üniversite, ödev sınav bunlar amaç değil araç aslında, bir gün inşallah bu şekilde düşünebilen öğrenciler ve toplum yetiştirmeyi başarmak nasip olur
@@mehmetburakaykenar hocam söylenecek çok şey var..
Kopya çeken kendine çeker ileride birşey yapamaz ki
Çekenler yüzünden çekmenler de sıkıntıda şuan
Birde bizim hoca da ilk 5 hafta konuları yüklemedi vizeden 1 hafta önce 10 haftalık video yükleyip hepsinden sorumlu tuttu ve vizeden sonra kalan haftaları yabancı birisinin anlattığı videoları koymuş ve geçen senelerde vhdl yoktu onu da ekledi :)
Herkesin hakli bir sebebi var yada yok uzun mevzular hocam :)
hayırlısı olsun diyelim :) vivadoda sentez deyip çıkan Lut larin truth table bilgisinden de yapılabilir bu arada
Hocam neden 1 milyon vuruşta 1 saniye geçiyor ? Farklı bir değer olamaz mıydı referans olarak neden 1 milyon aldık anlamadım?
tam neresi bahsettiğiniz yer hatırlamıyorum ama 1 MHz demek 1 milyon Hz demek, yani 1 saniyede 1 milyon saat vuruşu demek, saat frekansına göre düşünmek lazım, saat 50 MHz ise saniyede 50 milyon vuruş olur
@@mehmetburakaykenar Sorum 1 MHz vuruşta 1 sn geçiyor olması varsayım mı yoksa saatimizin özelliği mi? Cevap verdiğiniz için teşekkür ederim.
fpga içindeki saatin özelliği@@h.m.2324
Selamlar herkese,
Öncelikle Mehmet Burak Hocam ellerinize sağlık çok güzel bir seri oluyor. Benim fpga board'um yok ve haliyle biz öğrenciler için pahalı biraz :( Bu sebeple oluşturduğum simulasyon dosyasını size de yardımcı olması için buraya bırakıyorum. Kolay gelsin :)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity tb_sequential_designed_counter is
generic(
c_clkFrequency : integer := 100_000_000
);
end tb_sequential_designed_counter;
architecture Behavioral of tb_sequential_designed_counter is
component sequential_design_exp is
generic(
c_clkFrequency : integer := 100_000_000
);
Port (
clk : in std_logic;
sw : in std_logic_vector (1 downto 0);
led : out std_logic_vector (7 downto 0)
);
end component sequential_design_exp;
constant clk_period: time:=10ns;
signal clk : std_logic ;
signal sw : std_logic_vector (1 downto 0) :="00";
signal led : std_logic_vector (7 downto 0) :=(others =>'0');
signal counter_2 : integer range 0 to (c_clkFrequency+100) := 0;
signal second_counter : integer range 0 to 100 :=0;
begin
DUT : sequential_design_exp
generic map (
c_clkFrequency => c_clkFrequency
)
port map (
clk => clk,
sw => sw,
led => led
);
clk_process:process
begin
clk
elinize sağlık 😊 az önce bir video çektim pazar yayınlarım inşallah, videoda ucuz bir FPGA geliştirme kartının unbox (kutu açma) işlemini gösterdim ve kartı tanıttim 😅 her zaman diyorum, ilk etapta FPGA gekistirme kartı almaya gerek yok, kod yazıp testbench ile simülasyon yapmak ilk başta yeterli. hem simülasyon yapmak karta gömüp test etmeye göre çok daha iyi geliştirir kişiyi