Picproje FPGA Eğitimi Hakkında Bilgiler

Başlatan muuzoo, 23 Temmuz 2015, 22:32:09

MrDarK

Harika gelişmeler oluyor bu eğitim konusunda, forumda ilk defa bu kadar ekip olarak çalışılan bir proje oluyor bu.

Hayırlısı ile devam devam :) Ali hocam, muzaffer hocam öncülüğünüz için çok teşekkürler !
Picproje Eğitim Gönüllüleri ~ MrDarK

ercan_t

merhaba,

bende bu konularda tecrübesizim fakat yeni başlangıç yaptım ve ali beyin yardımı ile vivado yu kurdum ve VHDL ile ilk led yakıp söndürme işlemini de gercekleştirdim.
eğitimde anlatılanları daha iyi öğrenmek ve anlamak için ön hazırlık için çalışmalara başladım,
ön hazırlık konusunda tavsiyeniz var mı?

alicavuslu

Merhabalar,

Kaynak olarak @muhendisbey'in paylaşmış olduğu dokumanları inceleyebilirsiniz.
https://www.dropbox.com/s/lpjnb2knuzz6kfq/VHDL.rar?dl=0

Niyazi beyin paylaşmış olduğu linkteki bilgilerde işinize yarıyacaktır.
http://transfer.cizgitagem.org/nsaral/tagem_new/fpgaprograming/

Bunun haricinde 2 türkçe kaynak mevcut. Kendinizi geliştirmek adında bunlardan da faydalanabilirsiniz.

MC_Skywalker

Kit geldi. Kurcalaak için akşamı bekliyorum.





alicavuslu

BASYS 3 kartı ile ilgili Digilent firmasının yapmış olduğu Workshop'ta kullandığı mataryeller aşağıdaki linktedir.

https://www.dropbox.com/sh/jetb2xzdcvbscev/AACUb6K6bk9gkaLPHbsRvI-la/Basys3Worksop/Student?dl=0

Firzen

Alıntı yapılan: alicavuslu - 18 Eylül 2015, 09:29:30
Merhabalar Hocam,

Oluşturduğumuz anketten çıkan genel kanı eğitimin başlangıç düzeyinde olmasına yönelik. SPI ve I2C için ileriye yönelik dokuman hazirlamaya başaldım. Bitince sizler paylaşabilirim.

PWM ile alakalı videolarınız gerçekten çok güzel. Kodu gönderebilirsiniz. İsterseniz daha generic ve kontrollü hale de getirebiliriz. Eğitim için de desteklerinizi her zaman bekleriz.

Tamam Hocam en geç pazartesi elimde bulunan tüm örnekleri size atarım.

Bende özellikle SPI I2C ve PWM ile ilgili konuları merak ediyorum. Lookup table ile SPWM yapmak gibi.
Kararsız...

MC_Skywalker

Sonunda LED (Blinky) yak-söndür kısmını becerdim.  hazır bulduğum kodu anlamaya çalışmak kaldı.




https://youtu.be/zRhq0cH3OBo

Firzen

Alıntı yapılan: MC_Skywalker - 21 Eylül 2015, 20:28:34
Sonunda LED (Blinky) yak-söndür kısmını becerdim.  hazır bulduğum kodu anlamaya çalışmak kaldı.




http://youtu.be/zRhq0cH3OBo


isterseniz anlatayım hocam kısaca;
ilk üç satır kütüphanesi oluyor.
ardından entity yani varlık kısmını tanımlıyoruz diğer bir deyişle toplam giriş çıkış sayısı.
ve en önemli kısım olan mimari tasarımı architecture gel,ypr. burada yazacağımın VHDL kodunda signal bağlantılarını beginden sonrada process ile de ana VHDL kodunu yazıyoruz.
cnt yazan 24 bitlik bir counter yani sayıcı.
son 2 bitte 1 diğerlerinde 0 yapıyor. Sistem 50 MHz olduğundan bunu yavaşlatmak için counter kullanılıyor.

Size daha öncden yazdığım bir kodu göndereyim;

--KÜTÜPHANE TANIMLANDI
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_arith.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;
use IEEE.NUMERIC_STD.ALL;

--GİRİŞ ÇIKIŞ TANIMLANDI
entity counter is port(
   clk : in std_logic;
   btn : in std_logic;
   rst : in std_logic;
   leds: out std_logic_vector(7 downto 0)
   );
end counter;
   
--MİMARİ TASARIMI
--BUTONA BASILDIKÇA 8 TANE LED SIRASI İLE YANACAK   
architecture counter of counter is
   signal cntr : std_logic_vector(2 downto 0);
   begin
      process(clk) is begin
         if(rising_edge(clk))then
            if(rst='1')then
               cntr<="000";
            elsif(btn='1')then
               cntr<=cntr+1;
            end if;
         end if;   
      end process;
   with cntr select
     LEDS <= "00000001" when "000",
             "00000010" when "001",
             "00000100" when "010",
             "00001000" when "011",
             "00010000" when "100",
             "00100000" when "101",
             "01000000" when "110",
             "10000000" when others;
         
end counter;               

Kararsız...

MC_Skywalker

Şimdi bu koda bakarak şöyle bir benzerlikten bahsedebiliriz;

use IEEE.STD_LOGIC_1164.ALL;
   
yazdık bu C/C++ karşılığı olarak  [
code]#include "stdio.h"[/code] 
demiş mi olduk

clk : in std_logic;

yazdık bu C/C++ karşılığı olarak 
#define

demiş mi olduk

architecture counter of counter is
end counter

yazdık bu C/C++ karşılığı olarak
void main()
{
}

demiş mi olduk

CPLD ler ile oynarken şematik kısmında hazır 74xx entegre yapılarını kullanarak birkaç birşey yapmıştım.

Firzen

Alıntı yapılan: MC_Skywalker - 21 Eylül 2015, 20:54:33
Şimdi bu koda bakarak şöyle bir benzerlikten bahsedebiliriz;

use IEEE.STD_LOGIC_1164.ALL;
   
yazdık bu C/C++ karşılığı olarak  [
code]#include "stdio.h"[/code] 
demiş mi olduk

clk : in std_logic;

yazdık bu C/C++ karşılığı olarak 
#define

demiş mi olduk

architecture counter of counter is
end counter

yazdık bu C/C++ karşılığı olarak
void main()
{
}

demiş mi olduk

CPLD ler ile oynarken şematik kısmında hazır 74xx entegre yapılarını kullanarak birkaç birşey yapmıştım.
Evet diyemesemde denebilir. C/C++ gibi programlar seri okuma yapar satır satır kodu okur,fakat, VHDL ve Verilog bu işlemi pararlel yapar yani kodun tmamını aynı anda çalıştırır. Zaten bu özelliği yüzünden haberleşme ve görüntü sinyal teknoloijileri alanında çok yercih edilmesinin nedenidir.
Kararsız...

MC_Skywalker

Demek istediğim, tanımlameler ve kütüpane çağırma kısmları için benzetme yapmak.

include ile daha önce yazdığımız yada hazır olan kütüpaneyi çağırıyoruz veya define ile tanımlamalar yapıyoruz gibi.

bu işi bercerdiğimde yapmak istediğim şöyle güzel bir audio specturum analizer. kurcalama ve karıtırmalara tam gaz devam.

Firzen

Alıntı yapılan: MC_Skywalker - 21 Eylül 2015, 21:03:30
Demek istediğim, tanımlameler ve kütüpane çağırma kısmları için benzetme yapmak.

include ile daha önce yazdığımız yada hazır olan kütüpaneyi çağırıyoruz veya define ile tanımlamalar yapıyoruz gibi.

bu işi bercerdiğimde yapmak istediğim şöyle güzel bir audio specturum analizer. kurcalama ve karıtırmalara tam gaz devam.
Öyle denebilir hocam.
Bende Güç elektroniğinde kullanmak için istiyorum. Umarım kurs yararlı gelecektir.
Kararsız...

alicavuslu

#57
@Firzen Bence kodlarını aşağıdaki konu başlığında da paylaşırsan güzel olur.

https://www.picproje.org/index.php/topic,34258.0.html

Alıntı yapılan: Firzen - 21 Eylül 2015, 20:41:54
--KÜTÜPHANE TANIMLANDI
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_arith.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;
use IEEE.NUMERIC_STD.ALL;

--GİRİŞ ÇIKIŞ TANIMLANDI
entity counter is port(
   clk : in std_logic;
   btn : in std_logic;
   rst : in std_logic;
   leds: out std_logic_vector(7 downto 0)
   );
end counter;
   
--MİMARİ TASARIMI
--BUTONA BASILDIKÇA 8 TANE LED SIRASI İLE YANACAK   
architecture counter of counter is
   signal cntr : std_logic_vector(2 downto 0);
   begin
      process(clk) is begin
         if(rising_edge(clk))then
            if(rst='1')then
               cntr<="000";
            elsif(btn='1')then
               cntr<=cntr+1;
            end if;
         end if;   
      end process;
   with cntr select
     LEDS <= "00000001" when "000",
             "00000010" when "001",
             "00000100" when "010",
             "00001000" when "011",
             "00010000" when "100",
             "00100000" when "101",
             "01000000" when "110",
             "10000000" when others;
         
end counter;               

ercan_t

merhaba,

clk,   btn ,   rst ,   leds

değişkenleri basy3.master.xdc  de tanımlı değil mi?
bende
leds yok led[0], led[1]... var
clk var
rst yok
btn yok btnC, btnU, btnL,btnD.. var

olmayanların tanımları ne olacak?




Firzen

#59
Alıntı yapılan: alicavuslu - 22 Eylül 2015, 11:29:40
@Firzen Bence kodlarını aşağıdaki konu başlığında da paylaşırsan güzel olur.

https://www.picproje.org/index.php/topic,34258.0.html


tamamdır hocam :)

mesaj birleştirme:: 22 Eylül 2015, 12:55:36

Alıntı yapılan: ercan_t - 22 Eylül 2015, 11:56:34
merhaba,

clk,   btn ,   rst ,   leds

değişkenleri basy3.master.xdc  de tanımlı değil mi?

leds dediğimiz şeyi std_logic_vector olarak tanımlarsan ve led[0]... yazanları leds[0]... olarak değiştirirsen çalışır. İsimlendirme sana ait.
btn olarak kullanmak istediğin buton btnC ise orayı btn yap oda çalışır.
bende
leds yok led[0], led[1]... var
clk var
rst yok
btn yok btnC, btnU, btnL,btnD.. var

olmayanların tanımları ne olacak?




Kararsız...