Bilim ve Teknik yuvası.

 

Ben daha yeni vhdl öğrenmeye başlayan biri olarak bu konu hakkında anlamadıklarımı bu başlıktan size sormak istiyorum . Açılışı ise aşağıdaki kodun hatası nerede olduğunu sorarak yapıyorum :)

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;



entity mux is
Port ( S : in STD_LOGIC_VECTOR (1 downto 0);
D : in STD_LOGIC_VECTOR (3 downto 0);
A : out STD_LOGIC);
end mux;

architecture Behavioral of mux is

begin
process(S,D)
begin
case S is
when "00"
A <= D(0);
when "01"
A <= D(1);
when "10"
A <= D(2);
when "11"
A <= D(3);
end mux;
end process;

end Behavioral;
Kullanıcı avatarı
dark templar
 
Mesajlar: 230
Kayıt: 17.11.2008
Bölüm: TEL
08 Tem 2011, 15:21 Başa Dön

 

Oldu baya bakmayalı ama hatırladığım kadarı ile cevap vereyim:
Eksik yerleri kırmızı yazdım.

Başlangıç olarak, dikkat etmek gerekir ki bu işlem process(S,D) olduğu için her

* S değiştiğinde,
* D değiştiğinde çalışır..Dolayısı ile sanki bir mantık hatası var ama tam olarak ne yapmaya çalıştığını bilmediğim için doğru yazmış da olabilirsin.

process(S,D)
begin
case S is
when "00" =>
A <= D(0);
when "01" =>
A <= D(1);
when "10" =>
A <= D(2);
when "11" =>
A <= D(3);

//Normalde programlama dillerinin çoğunda diğer durumları belirtmesen de olur ama
// VHDLde bu durum hata verebilir, benzer şekilde VHDLde her if satırından sonra bir else
// gelmelidir aslında, else koymazsan çalışır ama fiziksel olarak karşılığı yoktur

when others =>
bla bla bla ;



//Sonlandırman gerek

end case;

// Entity sonlandırılması gibi bir durum yok, Behavioral sonlandırılacak
// Yani end mux olmayacak, end Behavioral; olacak

end mux; (end Behavioral; olacak)
end process;


Bir de en başta çıkış bitini tanımlarken:
A : out STD_LOGIC demişsin. Emin değilim ve hatta belki gerekmiyordur ancak çıkışa bir değer atamak gerekebilir başlangıçta, diğer yerleri düzelttikten sonra deneyebilirsin eğer halen bir hata alıyorsan.
A : out STD_LOGIC:='0' veya A : out STD_LOGIC:='1' şeklinde, nasıl istersen.

Bir de aldığın hatayı yazarsan daha rahat birşeyler söylenebilir.
Kullanıcı avatarı
Sl@yer
 
Mesajlar: 1672
Kayıt: 31.08.2006
Bölüm: ELE
08 Tem 2011, 17:09 Başa Dön

 

@dark templer:
slayer in düzeltmelerine ek olarak process de D olmayacak.

@slayer

"//" işaretini galiba yorum için yazmışsın. vhdl de yorum "--" ile olcak.
Kullanıcı avatarı
eyeycemiti
 
Mesajlar: 428
Kayıt: 16.09.2008
Bölüm: ELE
09 Tem 2011, 21:37 Başa Dön

 

peki bana staj süresi boyunca yapılabilecek ve spartan 3e starter kit üzerinde görebileceğim bi proje önerebilir misiniz ?
Kullanıcı avatarı
dark templar
 
Mesajlar: 230
Kayıt: 17.11.2008
Bölüm: TEL
11 Tem 2011, 11:13 Başa Dön

 

karaşimşek yap :D

şaka bir yana staj yaptığın yerde ne için öğretiyolarsa ona göre bişeyler yap. mesela alçak geçiren filtre filan yapabilirsin.

ben de çok iyi değilim FPGA'lerde. daha tecrübeli arkadaşların tavsiyelerine de müracaat et bence.
Kullanıcı avatarı
eyeycemiti
 
Mesajlar: 428
Kayıt: 16.09.2008
Bölüm: ELE
11 Tem 2011, 19:04 Başa Dön

 

Biraz klişeleşmiş olacak ama daha çok böyle bir iş yapan modül tarzı birşeyler yapmak istiyorsan seri port haberleşmesi yapabilirsin. Sonra da aldığın komutları değerlendirip herhangi bir iş yapan başka bir modül yazarsın.

kemiyun
 
Mesajlar: 29
Kayıt: 20.10.2008
Bölüm: ELE
11 Tem 2011, 22:48 Başa Dön

 

spartan 3a üzerinde pek çok şeyi yapabilirsin, 500k'lığı gayet yeterli olur başlangıç seviyesindeki işler için.

kolay işleri zaten yapman gerekli ama, proje dediğinde bence giriş seviyesi bir DSP işi yap derim. seri haberleşme modülü (uart) yazmakta pek bir şey yok, ama RAM'leri, çarpıcıları v.s. kullandığın işler, yani senkronizasyon problemleriyle karşılaşacağın işler çok daha geliştirecektir donanım tasarımı seviyeni. kombinezonsal/ardışıl devrelerin gerekli kullanımını öğrenmek önemlidir, bu da tabi biraz zorlayıcı problemlere yaratıcı çözümler getirerek kazanılabilir.

mesela ben ilk olarak çok ağır bir projeyle başladım, ilk 3 aydaki öğrenme süreci sonrası 1 yılda bitti çalışma, sonuçta 1.2 milyondan fazla logic gate oluşmuştu. başlarda sorunsuz tasarlanan alt modülleri senkronlamak inanılmaz zor problemlere dönüşmüştü vs., ama bu yöntem, biraz sancılı da olsa daha doğru geliyor. öbür türlü yapılan işlerde, vhdl öğrenirsin elbette, ama hız/performans/boyut/senkronizasyon problemlerini görmediğinde donanım seviyesinde bir tasarım yapmışsın gibi olmuyor. bir mikroişlemci programlamaktan avantajı ne oluyor devre tasarlayarak bu kadar zahmete girmenin yoksa.
Kullanıcı avatarı
mühendis_pervane
 
Mesajlar: 2504
Kayıt: 19.08.2007
Konum: elek-elek
Bölüm: ELE
12 Tem 2011, 00:17 Başa Dön

 

Seri port haberleşmesinin ağır geleceğine eminim. Belki stajı nerde yaptığını söylersen ona göre bir şeyler önerebilirim. Mesela İTÜ GSTL, Vestel, ST nedir senin bulunduğun yer? Öte yandan benim önerim,Birkaç farklı modül, sub modül yapıları olan bir proje yaparsan, gerek simülasyonlarda gerek fiziki ortamda bu modüllerin nasıl paralel çalıştığını görürsen belki FPGA- mikrokontrolör ya da işlemci farkını fiziki olarak da görmüş, donanım tasarlamak ile yazılım yapmanın farkına daha iyi hakim olmuş olursun. Aklına takılan olursa pm atabilirisin.

beksizmir
 
Mesajlar: 698
Kayıt: 04.09.2006
17 Tem 2011, 14:10 Başa Dön


Bu forumu gezen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 1 misafir