background image

JMiS 

2  koło – Verilog 

 

1.  Identyfikator musi zaczynać się literą lub cyfrą: 

 
Odpowiedź: 

FAŁSZ 

Ponieważ: Identyfikator musi zaczynać się literą lub podkreśleniem, nie może cyfrą. 
 

2.  Każdy system cyfrowy w Verilog’u jest reprezentowany poprzez moduł (module). 
 

Odpowiedź: 

PRAWDA 

 

3.  Każde wyprowadzenie modułu (port) musi być zadeklarowane poniżej listy portów (w 

standardzie ’95). 
 

Odpowiedź: 

PRAWDA 

Ponieważ:

 

Porty służą modułowi do wymiany informacji z otoczeniem, dlatego każde 

wyprowadzenie musi być zadeklarowane poniżej listy (żeby program wiedział z czego 
wyprowadza dane). Podstawową jednostką jest moduł – module nazwa (lista portów) 
 
4. 

Identyfikatory „Bus” oraz „BUS” są w języku Verilog różnymi identyfikatorami

 

Odpowiedź: 

PRAWDA 

Ponieważ: Verilog rozróżnia małe i wielkie litery!  
 

5.  Przypisanie ciągłe assign określa wartość wyjścia (lewego operanda) w zależności od 

wartości wejść i operacji na nich. 

 

Odpowiedź: 

PRAWDA 

Ponieważ: Wynik operacji jest przesyłany do sieci z lewej strony, bo polecenie assign działa 
podobnie jak bramki logiczne. 
 

6.  Opis typu behawioralnego wykonywany jest wewnątrz bloków always oraz initial. 
 

Odpowiedź: 

PRAWDA 

Ponieważ: Opis behawioralny to inaczej mówiąc opis działania systemu (programu), blok always 
rozpoczyna działanie w czasie t=0 i wykonuje się w sposób ciągły, bloki te nie są od siebie zależne. 
Bloki initial również zaczyna w czasie t=0 i wykonuje się tylko raz podczas symulacji. 
 

7.  Każdy moduł (module) może być wstawiony jako komponent wewnątrz innego 

modułu. 

 

Odpowiedź: 

PRAWDA 

Ponieważ: Wewnątrz modułu nie można definiować innego modułu, ale można osadzać inne 
moduły, zdefiniowane poza modułem. 
 
 
 
 
 

background image

8.  Możliwe jest wykonanie komentarzy obejmujących tylko jedną linię. 
 

Odpowiedź: 

PRAWDA 

Ponieważ:

 

Są dwa sposoby tworzenia komentarzy: pierwszy za pomocą // umożliwia 

zakomentowania jednej linii i drugi pozwalający na zakomentowanie większego tekstu dzięki 
/*tekst*/ 
 

9.  Każda sieć (net) może przyjąć jedną z następujących 4 wartości: ‘0’, ‘1’, ‘Z’, ‘X’. 
 

Odpowiedź: 

PRAWDA 

Ponieważ: pojedyncze sygnały mogą przyjmować cztery wartości:  
0 – wartość logiczna 0  
1 – wartość logiczna 1  
Z – tri-state (stan wysokiej impedancji) 
X – wartość nieznana 
 

10. Stan nieznany ‘X’ oraz wysokiej impedancji ‘Z’ ma takie samo znaczenie dla operacji 

logicznych. 

 

Odpowiedź: 

PRAWDA 

Ponieważ:

 

Logicznie traktuje oba te stany jako nieznane. 

 

11. Jeśli jeden z operandów operatora logicznego ma stan nieznany ‘X’ wówczas wynik 

również ma wartość nieznaną ‘X’. 

 
Odpowiedź: 

FAŁSZ 

Ponieważ: Jeśli jeden z sygnałów jest „siliniejszy” to jego wartość będzie ustalona na wspólnym 
przewodzie, czyli jeśli na drugie wejście będzie 1 i będzie silniejsze to na wyjściu dostaniemy 1. 
 

12. Sieci deklarowane są wyrażeniem net. 
 

Odpowiedź: 

FAŁSZ 

Ponieważ: Sieci deklaruje się za pomocą wyrażenia wire. 
 

13. Każdy sygnał musi być deklarowany indywidualnie. 
 

Odpowiedź: 

FAŁSZ 

Ponieważ: Po napisaniu deklaracji wire należy wymienić nazwy sygnały po przecinku i zakończyć 
średnikiem (wire data1,data2;). 
 

14. Bit najbardziej na lewo wektora jest zawsze najbardziej znaczący. 
 

Odpowiedź: 

PRAWDA 

 

15. Deklaracja portów modułu musi być zawsze pierwszym składnikiem wnętrza modułu 

(std. ’95). 

 
Odpowiedź: 

PRAWDA 

Ponieważ: Po słowie kluczowym module powinna wystąpić nazwa modułu, a następnie w 
nawiasie lista portów modułu zakończona średnikiem. 

background image

16. Wszystkie porty są domyślnie sieciami. 

 

Odpowiedź: 

PRAWDA 

Ponieważ: W definicji modułu wszystkie zdefiniowane porty powinny zostać zadeklarowane jako 
input, output, inout. Jeśli nie określimy typu sygnału portu, to domyślnie przyjmuję się typ wire 
(sieć). 
 

17. Każdy port może być typu reg. 
 

Odpowiedź: 

FAŁSZ 

Ponieważ:  
porty input możemy podłączyć wewnątrz modułu do sieci typu wire lub reg, na zewnątrz mogą 
być podłączone do sygnałów type reg lub wire, 
- porty output możemy podłączyć wewnątrz modułu do sieci typu wire lub reg, na zewnątrz mogą 
być podłączone wyłącznie do sygnałów wire, 
- porty inout możemy podłączyć wewnątrz modułu tylko do sieci typu wire, na zewnątrz również 
tylko do sygnału wire. 
 

18. Jeśli port wyjściowy jest typu reg wówczas odczyt jego wartości przez moduł nie jest 

możliwy. 

 

Odpowiedź: 

FAŁSZ 

Ponieważ: (Patrz odpowiedź 17) 
 

19. Indeks najbardziej znaczącego bitu wektora może być mniejszy niż najmniej 

znaczącego. 

 

Odpowiedź: 

PRAWDA 

Ponieważ: Sposób indeksowania wektorów może być malejąca lub rosnąca, ale zawsze lewa 
liczba oznacza najbardziej znacząca, wszystko zależy od zapisu programisty, jeśli zapisze w tym 
miejscu mniejszy bit to zaistnieje taka sytuacja.  
 

20. Pierwszy port predefiniowanych bramek logicznych jest zawsze wejściem. 
 

Odpowiedź: 

FAŁSZ 

Ponieważ: Wejście jest zawsze ostatnim portem, ponadto wyjścia są zawsze na początku listy 
portów. 
 

21. Predefiniowana bramka logiczna and może mieć dowolna liczbę wejść. 
 

Odpowiedź: 

PRAWDA 

Ponieważ: Aby uzyskać bramkę z większą liczbą wejść należy wpisać więcej wejść na liście portów 
 

22. Kolejność wstawień poszczególnych bramek predefiniowanych nie ma znaczenia dla 

działania opisywanego układu. 

 

Odpowiedź: 

PRAWDA 

Ponieważ: Nie ma znaczenia, bo to symulator decyduję z której bramki będzie korzystał. 
 
 

background image

23. Wszystkie porty wstawianego komponentu (modułu) muszą być podłączone. 
 

Odpowiedź: 

FAŁSZ 

Ponieważ: Dla modelu przeznaczonego wyłącznie do symulacji brak portów nie jest niczym 
niezwykłym, symulator i tak ma dostęp do wszystkich sygnałów wewnątrz modułu. 
 

24. Możliwe jest łączenie portów wstawianych modułów poprzez uporządkowaną listę 

jak również poprzez nazwy portów. 

 

Odpowiedź: 

PRAWDA 

Ponieważ:

 

Jest to możliwe, należy pamiętać, że w uporządkowanej liście musi zostać zachowana  

zgodność z kolejnością portów jak panuje w definicji modułu, w przypadku nazw kolejność 
portów jest dowolna, najważniejsze żeby nazwy były dobrze przeniesione. 
 

25. Wynikiem działania operatora relacyjnego jest wartość TRUE lub FALSE. 
 

Odpowiedź: 

FAŁSZ 

Ponieważ:

 

Mogą dawać wynik w postaci stanu nieznanego.

 

 

26. Operatory logiczne dają jako wynik zawsze jeden bit. 
 

Odpowiedź: 

PRAWDA 

 

27. W operatorze przesuwania (<<) puste bity są zawsze uzupełniane ‘0’ lub ‘1’ w 

zależności od pierwszego bitu wychodzącego.  

 

Odpowiedź: 

FAŁSZ 

Ponieważ:

 

Nowe pozycje są uzupełniane zerami. 

 

28. Jeśli jeden z operandów jest równy ‘X’ wówczas wynik porównania przy użyciu 

operatora ‘= =’ też będzie równy ‘X’. 

 

Odpowiedź: 

PRAWDA 

Ponieważ: Tabela 4.4 str 72 w skrypcie. 
 

29. Przypisania ciągłe (assign) mogą być stosowane tylko dla określania wartości 

sygnałów typu sieć (wire). 

 

Odpowiedź: 

PRAWDA 

Ponieważ: Mogą, bo najpierw deklarujemy sieć (jest ona po lewej stronie równania) ,a potem 
wyrażenia są obliczane gdy dowolna ze zmiennych po prawej stronie zmieni wartość – wynik 
zostaje natychmiast przesłany do sieci z lewej.  
 

30. Kolejność występowania przypisań ciągłych ma istotne znaczenie dla działania 

opisywanego systemu cyfrowego. 

 

Odpowiedź: 

FAŁSZ 

Ponieważ:

 

Kolejność nie ma znaczenia, możemy na przykład wykorzystać polecenie assign 

przypisując mu opóźnienie, które będzie związane tylko z danym przypisem (wejściem, 
wyjściem). Mimo, że wcześniej wystąpiły  assign nie wpłynie to na działanie naszego układu. 

background image

31. Opóźnienia w Verilogu są podawane w nanosekundach. 
 

Odpowiedź: 

FAŁSZ 

 

32. Przypisanie warunkowe (? : ) jest operatorem trójargumentowym. 
 

Odpowiedź: 

PRAWDA 

Ponieważ: Tabela 4.3 str 71 
 

33. Deklaracja sygnału jako typu reg daje po syntezie zawsze sygnał wyjściowy 

przerzutnika. 

 

Odpowiedź:

 FAŁSZ 

 

34. Deklaracja tablicy składa się z identyfikatora po którym występuje zakres tablicy. 

 

Odpowiedź: 

PRAWDA 

Ponieważ: Identyfikator to po prostu nazwa tablicy. 
 

35. Parameter jest w Verilog’u odpowiednikiem stałej. 
 

Odpowiedź: 

PRAWDA 

 

36. Wszystkie wyrażenia typu behawioralnego muszą znajdować się wewnątrz bloków 

initial lub always. 

 

Odpowiedź: 

PRAWDA 

Ponieważ: Opis behawioralny to inaczej mówiąc opis działania systemu (programu), blok always 
rozpoczyna działanie w czasie t=0 i wykonuje się w sposób ciągły, bloki te nie są od siebie zależne. 
Bloki initial również zaczyna w czasie t=0 i wykonuje się tylko raz podczas symulacji. 
 

37. Lewostronnym operandem przypisania wartości w bloku behawioralnym mogą być 

zarówno sieci jak i rejestry. 

 
Odpowiedź: 

FAŁSZ 

Ponieważ:

 

Te stwierdzenie dotyczy operatorów łączenia. 

 

38. Nie jest możliwy bezpośredni dostęp do pojedynczego bitu tablicy. 

 
Odpowiedź: 

PRAWDA 

Ponieważ: Proces ten powinien przebiegać dwuetapowo, najpierw należy się odwołać do 
pojedynczego elementu tablicy a następnie wyodrębnić poszczególny bit. 
 

39. Każdy blok initial jest wykonywany jednokrotnie. 
 

Odpowiedź: 

PRAWDA 

Ponieważ: Bloki initial działanie rozpoczyna  w czasie t=0 i wykonuje się tylko raz podczas 
symulacji.  
 
 

background image

40. Argument wyrażenia posedge musi być zawarty w nawiasach np. posedge(clk). 
 

Odpowiedź: 

FAŁSZ 

Ponieważ: W nawiasach powinno znajdować się całe wyrażenie: @(posedge clk), przed 
nawiasem znajduję się znak @, który steruje zdarzeniami. 
 

41. Przypisanie typu nonblocking (<=) umożliwia opis zdarzeń występujących 

współbieżnie. 

 

Odpowiedź:

 PRAWDA 

Ponieważ: Czyli umożliwia przypisani bez wstrzymania działania pozostałych instrukcji. 
 

42. Sygnały na liście zdarzeń są rozdzielone przecinkami (std. ’95). 
 

Odpowiedź: 

FAŁSZ 

Ponieważ: Są rozdzielone or’ami. 
 

43. Funkcja może zawierać opóźnienie, zadanie nie może. 
 

Odpowiedź: 

FAŁSZ 

Ponieważ: 
 

44. Zadanie może mieć dowolną liczbę argumentów. 
 

Odpowiedź: 

PRAWDA 

 

45. Blok always opisujący układ sekwencyjny musi mieć na liście zdarzeń wszystkie 

sygnały wejściowe układu oraz sygnał zegarowy. 

 

Odpowiedź: 

FAŁSZ 

Ponieważ:  
 

46. Wszystkie zadania systemowe mają identyfikator rozpoczynający się od znaku ‘$’. 
 

Odpowiedź: 

PRAWDA 

 

47. Blok always opisujący układ kombinacyjny musi mieć na swojej liście zdarzeń 

umieszczone wszystkie sygnały wejściowe (std. ’95). 

 

Odpowiedź: 

PRAWDA 

 

48. Funkcje mogą mieć argumenty wyjściowe. 
 

Odpowiedź: 

FAŁSZ 

 

49. Testowany moduł jest zazwyczaj wstawiany jako komponent do modułu TEST BENCH. 
 

Odpowiedź: 

PRAWDA 

Ponieważ: Wewnątrz modułu nie można definiować innego modułu, ale można osadzać inne 
moduły, w tym przypadku ten testowany moduł jest wstawiany do TEST BENCHA.