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.
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.
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ł.
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.
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.
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.