| Author |
Message
|
mkroliczek Poziom 2

Joined: 28 May 2008 Posts: 4 Location: kraków
|
#1
18 Mar 2010 21:20 VHDL - wartość sygnału po zakończeniu procesu po zmianie var |
|
|
|
Witam,
myślałem, że mam problem ze stanami metastabilnymi, ale przejrzałem wszystko i podejrzanie padło na kawałek poniższego kodu. Generalnie chodzi o przypisanie do sygnału wartości zmiennej i potem zmiana tej zmiennej. Jaką wartość będzie miał sygnał po wykonaniu procesu?
| Code: |
signa sygnal: integer;
process
var zmienna: integer;
var zmienna_02 : integer;
begin
sygnal <= zmienna;
zmienna := zmienna_2;
end process;
|
Czy wartość sygnału będzie równa zmienna_2?
Dzięki z góry
Pozdrawiam
|
|
| Back to top |
|
 |
Google

|
#
18 Mar 2010 21:20 |
|
|
|
|
|
| Back to top |
|
 |
Dr.Vee Poziom 22

Joined: 16 May 2008 Posts: 1808 Location: Wrocław
|
#2
18 Mar 2010 22:45 Re: VHDL - wartość sygnału po zakończeniu procesu po zmianie |
|
|
|
Po jednym wykonaniu - nie. Ale ten proces nie ma ani listy czułości, ani instrukcji "wait", dlatego będzie wykonywał się ciągle...
Poza tym zmienna_2 i zmienna nie mają wartości domyślnych - efektywnie są więc obie równe integer'left = integer'low. Tak więc sygnał będzie miał zawsze taką wartość. Natomiast czy narzędzie do syntezy/symulator są wystarczająco inteligentne, żeby to wykryć.
Pozdrawiam,
Dr.Vee
|
|
| Back to top |
|
 |
Google

|
#
18 Mar 2010 22:45 |
|
|
|
|
|
| Back to top |
|
 |
mkroliczek Poziom 2

Joined: 28 May 2008 Posts: 4 Location: kraków
|
#3
18 Mar 2010 22:59 Re: VHDL - wartość sygnału po zakończeniu procesu po zmianie |
|
|
|
Dobra kod który posiadam jest nieco mocniej skomplikowany, chciałem napisać tu przykład. Właściwy proces ma listę czułości, jest w niej zegar.
Odnośnie braku wartości domyślnych dla przykładu załóżmy, że do zmiennej przypisywany jest sygnał wejściowy. Mam też reset ale nie wnosi nic do mojego problemu chyba teraz. Zastąpiłem też zmienną sygnałem wejściowym.Coś w stylu :
| Code: |
signa sygnal: integer;
process(CLK, DATA_IN)
var zmienna: integer;
begin
if rising_edge(CLK) then
sygnal <= zmienna;
zmienna := DATA_IN;
end if;
end process;
|
I taka sytuacja w momencie startu procesu:
zmienna = 5;
DATA_IN = 10;
Jaką wartość będzie miał sygnal przy następnym narastającym zboczu zegara?
|
|
| Back to top |
|
 |
Google

|
#
18 Mar 2010 22:59 |
|
|
|
|
|
| Back to top |
|
 |
Dr.Vee Poziom 22

Joined: 16 May 2008 Posts: 1808 Location: Wrocław
|
#4
19 Mar 2010 23:00 Re: VHDL - wartość sygnału po zakończeniu procesu po zmianie |
|
|
|
sygnał = zmienna = 5;
zmienna = DATA_IN = 10;
Tutaj nie ma żadnej "magicznej" funkcjonalności :)
Pozdrawiam,
Dr.Vee
|
|
| Back to top |
|
 |