FPGA ile Flasher LED

Başlatan turkplc, 10 Kasım 2009, 20:32:53

muuzoo

Alıntı yapılan: kakalive - 23 Eylül 2011, 10:41:34
Clock'lu process'lerde parantez içine sadece clock ve varsa asenkron reset yazılır, bir yanlışlık olmasın.

Process içinde kullanılan tüm giriş sinyalleri yazılır. Giriş sinyallerinden kastım okunan "read" sinyallerdir.

Kaynak : Circuit Design with VHDL Sayfa : 118

Alıntı YapRule-1: Make sure that all input signals used (read) in the PROCESS appear in its sensitivitiy list.
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

pic365

Alıntı yapılan: muuzoo - 23 Eylül 2011, 11:52:16
Process içinde kullanılan tüm giriş sinyalleri yazılır. Giriş sinyallerinden kastım okunan "read" sinyallerdir.

Kaynak : Circuit Design with VHDL Sayfa : 118

Bu durum sadece combinatorial process'ler için geçerli, eğer kitapta bütün process'ler için söylenmişse kesinlikle yanlış.
Xilinx'in VHDL template'leri şöyle:

Clock'lu process:
process (<clock>,<reset>)
begin  
   if <reset> = '1' then
      <statements>;
   elsif (<clock>'event and <clock> = '1') then
      <statements>;
   end if;
end process;


Combinatorial process:
process (<all_input_signals_separated_by_commas>)
begin
   <statements>;
end process;

muuzoo

Şimdi kontrol ettim bölüm başlığındaki kural "sequential" kodlama için verilmiş. Onu gözden kaçırmışım. Siz yazana kadar şimdiye değin çok dikkat etmediğim bir durumdu.Fakat gördüğüm kadarıyla bu konu hakkında forumlarda yazılanlara göre çok ölümcül bir hata değil. Xilinx derleyicisi hallediyor çoğu şeyi.

Kesinlikle yanlışlıktan ziyade bu aslında bir çeşit iyi kodlama alışkanlığı. Çünkü "sensitivity list" içinde bulunan sinyallerde eksiklik olması durumunda benzetim ortamında kodlar çalışmıyor ama sentezlendiğinde çalıştığı görülüyor. Bu aşamada Xilinx derleyicisi bazı sinyallerin bu listede bulunmadığına dair bir warning veriyor. Sonuçta sentezlenen kodun aynı olduğunu söylüyorlar.

Kaynak : http://vhdlguru.blogspot.com/2010/04/process-sensitivity-list-vs-synthesis.html

Alıntı YapSo what about the warning? After going through some of the forums I found the folowing reasons:
1) Usually the behavior in the equations inside a process is what is intended, the sensitivity list is just a
     bookkeeping chore.It doesnt have anything to do with synthesis.
2) Technically what XST(Xilinx synthesis tool) have implemented is not what your VHDL code says to do as per the VHDL language definition. They are taking somewhat of a guess about what you really intended to do.By violating the language specification they implement it the way they think you 'really' want it and kick out a warning to let you know that the actual implementation will operate differently than your simulation shows.

Alıntı YapConclusion :- Sensitivity list has nothing to do with synthesis.But without the proper sensitivity list, the process will not work in simulation.So as a good practice include all the signals which are read inside the process, in the sensitivity result. The results may be varied if you are using some other tool.I have used Xilinx ISE 12.1 version for the analysis.


gunluk.muuzoo.gen.tr - Kişisel karalamalarım...