Guest
Sun Apr 20, 2014 10:50 pm
Szczerze powiedziawszy nie za bardzo łapię listę czułości - process(coś_tam).
Przykład, zwykły przerzutnik D, wersja 1:
entity fd is
Port ( CLK : in std_logic;
D : in std_logic;
Q : out std_logic;
end fd;
architecture Behavioral of fd is
begin
process (CLK)
begin
if CLK'event and CLK='1' then
Q<=D;
end if;
end process;
end Behavioral;
================
I teraz to samo bez "process", wersja_2 :
entity fd is
Port ( CLK : in std_logic;
D : in std_logic;
Q : out std_logic;
end fd;
architecture Behavioral of fd is
begin
if CLK'event and CLK='1' then
Q<=D;
end if;
end Behavioral;
====================
Gdzie jest różnica?
Jakub Rakus
Guest
Mon Apr 21, 2014 6:07 pm
On 20.04.2014 22:50, stchebel@gmail.com wrote:
Quote:
Szczerze powiedziawszy nie za bardzo łapię listę czułości - process(coś_tam).
Przykład, zwykły przerzutnik D, wersja 1:
entity fd is
Port ( CLK : in std_logic;
D : in std_logic;
Q : out std_logic;
end fd;
architecture Behavioral of fd is
begin
process (CLK)
begin
if CLK'event and CLK='1' then
Q<=D;
end if;
end process;
end Behavioral;
=================
I teraz to samo bez "process", wersja_2 :
entity fd is
Port ( CLK : in std_logic;
D : in std_logic;
Q : out std_logic;
end fd;
architecture Behavioral of fd is
begin
if CLK'event and CLK='1' then
Q<=D;
end if;
end Behavioral;
=====================
Gdzie jest różnica?
Przy tak krótkim kodzie zawartym wewnątrz procesu, to nigdzie.
Teoretycznie to co jest zawarte w procesie będzie się realizować "po
kolei", czyli "prawie" jak w programie napisanym na uC.
Gdzieś czytałem ostatnio także o innej ciekawej kwestii dotyczącej
procesu - mniej więcej chodzi o to, że słowo kluczowe "process" oraz
podawana wraz z nim lista czułości jest ważna właściwie tylko dla
zwiększenia czytelności kodu oraz przy vhdl-u używanym dla symulacji.
Przy syntezie do docelowego układu kompilator zwraca uwagę głównie na
zależności logiczne między sygnałami, czyli w tym przypadku na if
CLK'event and CLK='1' then.
--
Pozdrawiam
Jakub Rakus
nowyr
Guest
Tue Apr 22, 2014 12:07 pm
<stchebel@gmail.com> wrote in message
news:f3e67ff6-7b2e-4022-a838-c48885535385@googlegroups.com...
Szczerze powiedziawszy nie za bardzo łapię listę czułości -
process(coś_tam).
Quote:
Gdzie jest różnica?
Przy jednym procesie nie ma różnicy ale jak zrobisz ich kilka to myśl o nich
jak o układach scalonych TTL, które sobie posadzisz na płytce i połączysz
"signalami". A żeby symulator i explorer architektury ładniej pokazywał
później to sobie opisz tak:
U1:process (CLK)
U2:process (CLK)
U3:process (CLK)
Jak masz explorator rysujący obrazki to będziesz miał scalaczki na nim :-0
Adam GĂłrski
Guest
Thu Apr 24, 2014 10:38 am
Quote:
Gdzie jest różnica?
Przy tak krótkim kodzie zawartym wewnątrz procesu, to nigdzie.
Teoretycznie to co jest zawarte w procesie będzie się realizować "po
kolei", czyli "prawie" jak w programie napisanym na uC.
Jak przeczytam to jeszcze raz to będę gryzł. To NIE jest prawie jak w
programie napisanym na uC. To jest zdecydowanie inne od programu
napisanego dla uC.
Quote:
Gdzieś czytałem ostatnio także o innej ciekawej kwestii dotyczącej
procesu - mniej więcej chodzi o to, że słowo kluczowe "process" oraz
podawana wraz z nim lista czułości jest ważna właściwie tylko dla
zwiększenia czytelności kodu oraz przy vhdl-u używanym dla symulacji.
Przy syntezie do docelowego układu kompilator zwraca uwagę głównie na
zależności logiczne między sygnałami, czyli w tym przypadku na if
CLK'event and CLK='1' then.
Faktycznie największą rolę odgrywa w symulacji.
Należy pamiętać że bardzo łatwo jest napisać fragment niesyntezowalny,
czyli taki którego nie da się skompilować na 99% dostępnych układów.
Pzdr
Adam Górski
nowyr
Guest
Thu Apr 24, 2014 12:38 pm
"Adam Górski" <gorskiamalpa@wpkropkapl> wrote in message
news:5358e985$0$2231$65785112@news.neostrada.pl...
Quote:
Gdzieś czytałem ostatnio także o innej ciekawej kwestii dotyczącej
procesu - mniej więcej chodzi o to, że słowo kluczowe "process" oraz
podawana wraz z nim lista czułości jest ważna właściwie tylko dla
zwiększenia czytelności kodu oraz przy vhdl-u używanym dla symulacji.
Przy syntezie do docelowego układu kompilator zwraca uwagę głównie na
zależności logiczne między sygnałami, czyli w tym przypadku na if
CLK'event and CLK='1' then.
Faktycznie największą rolę odgrywa w symulacji.
Należy pamiętać że bardzo łatwo jest napisać fragment niesyntezowalny,
czyli taki którego nie da się skompilować na 99% dostępnych układów.
Lista czułości VHDL obejmuje zegary i to co przed nimi.jako input do procesu
U12:process(clk, reset)
if reset='0' then
x <= '0';
elseif clk'event and clk='1' then
......
Adam GĂłrski
Guest
Thu Apr 24, 2014 12:55 pm
W dniu 2014-04-24 14:38, nowyr pisze:
Quote:
"Adam Górski" <gorskiamalpa@wpkropkapl> wrote in message
news:5358e985$0$2231$65785112@news.neostrada.pl...
Gdzieś czytałem ostatnio także o innej ciekawej kwestii dotyczącej
procesu - mniej więcej chodzi o to, że słowo kluczowe "process" oraz
podawana wraz z nim lista czułości jest ważna właściwie tylko dla
zwiększenia czytelności kodu oraz przy vhdl-u używanym dla symulacji.
Przy syntezie do docelowego układu kompilator zwraca uwagę głównie na
zależności logiczne między sygnałami, czyli w tym przypadku na if
CLK'event and CLK='1' then.
Faktycznie największą rolę odgrywa w symulacji.
Należy pamiętać że bardzo łatwo jest napisać fragment niesyntezowalny,
czyli taki którego nie da się skompilować na 99% dostępnych układów.
Lista czułości VHDL obejmuje zegary i to co przed nimi.jako input do
procesu
U12:process(clk, reset)
if reset='0' then
x <= '0';
elseif clk'event and clk='1' then
......
Lista czułości VHDL definiuje przy zmianach jakich sygnałów proces
powinien zostać wznowiony.
Adam
nowyr
Guest
Thu Apr 24, 2014 10:33 pm
"Adam Górski" <gorskiamalpa@wpkropkapl> wrote in message
news:535909ab$0$2149$65785112@news.neostrada.pl...
Quote:
Lista czułości VHDL obejmuje zegary i to co przed nimi.jako input do
procesu
U12:process(clk, reset)
if reset='0' then
x <= '0';
elseif clk'event and clk='1' then
......
Lista czułości VHDL definiuje przy zmianach jakich sygnałów proces
powinien zostać wznowiony.
Ale nie wszystkich. Tylko zegar i asynchroniczne sygnały nierejestrowane.
Wszystko co siedzi pod even'em nie wpisujesz, bo to załatwia zbocze zegara,
a nie lista czułości. Cokolwiek będzie pomiędzy elseif clk'event and clk='1'
then oraz endifem dla niego nie wpisujemy na listę czułości procesu.
Adam GĂłrski
Guest
Fri Apr 25, 2014 8:08 am
Quote:
Lista czułości VHDL obejmuje zegary i to co przed nimi.jako input do
procesu
U12:process(clk, reset)
if reset='0' then
x <= '0';
elseif clk'event and clk='1' then
......
Lista czułości VHDL definiuje przy zmianach jakich sygnałów proces
powinien zostać wznowiony.
Ale nie wszystkich. Tylko zegar i asynchroniczne sygnały
nierejestrowane. Wszystko co siedzi pod even'em nie wpisujesz, bo to
załatwia zbocze zegara, a nie lista czułości. Cokolwiek będzie pomiędzy
elseif clk'event and clk='1' then oraz endifem dla niego nie wpisujemy
na listę czułości procesu.
Za bardzo patrzysz na to przez pryzmat architektury na którą piszesz.
To że większość fpga ma 4 i więcej wejściowy LUT + reg + kilka dodatków
wymusza takie a nie inną konstrukcję.
VHDL pozwala na dużo więcej niż może zrealizować hardware.
Najprostszym przykładem jest proces reagujący na oba zbocza. Symuluje
się świetnie a "skompilować" już ciężko. Nie znaczy to jednak że
projektując ASIC takie konstrukcje nie są możliwe.
Poza tym , nigdzie nie napisałem że to bzdury. Raczej jedna z możliwości.
Pzdr.
Adam Górski
nowyr
Guest
Sat Apr 26, 2014 5:37 pm
"Adam Górski" <gorskiamalpa@wpkropkapl> wrote in message
news:535a17ef$0$2368$65785112@news.neostrada.pl...
Quote:
Ale nie wszystkich. Tylko zegar i asynchroniczne sygnały
nierejestrowane. Wszystko co siedzi pod even'em nie wpisujesz, bo to
załatwia zbocze zegara, a nie lista czułości. Cokolwiek będzie pomiędzy
elseif clk'event and clk='1' then oraz endifem dla niego nie wpisujemy
na listę czułości procesu.
Za bardzo patrzysz na to przez pryzmat architektury na którą piszesz.
Obaj mamy po części rację