دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: نویسندگان: Valery Salauyou, Adam Klimowicz, Tomasz Grześ, Irena Bułatowa سری: ISBN (شابک) : 9788367185073, 9788367185080 ناشر: Oficyna Wydawnicza Politechniki Białostockiej سال نشر: 2022 تعداد صفحات: [229] زبان: Polish فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) حجم فایل: 8 Mb
در صورت تبدیل فایل کتاب Język Verilog w projektowaniu systemów wbudowanych na układach FPGA به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب زبان Verilog در طراحی سیستم های تعبیه شده روی FPGA ها نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
Tabela 1.1. Tablica prawdy sumatora jednobitowego Tabela 1.2. Słowa kluczowe języka Verilog (wersja z 1995 r.) Tabela 1.3. Słowa kluczowe języka Verilog w wersji z 2001 r. (niezawarte w wersji z 1995 r.) Tabela 1.4. Poziomy mocy źródeł sygnałów Tabela 1.5. Przykłady reprezentacji binarnej liczb całkowitych Tabela 3.1. Bramkowe prymitywy języka Verilog Tabela 3.2. Przełącznikowe prymitywy języka Verilog Tabela 4.1. Wartość sygnału w różnych węzłach dla dwóch źródeł sygnałów Tabela 5.1. Operatory bitowe Tabela 5.2. Wyniki operacji bitowych Tabela 5.3. Operatory redukcji Tabela 5.4. Przykłady wykorzystania operatorów redukcji Tabela 5.5. Operatory logiczne Tabela 5.6. Operatory relacji Tabela 5.7. Operatory arytmetyczne Tabela 5.8. Operatory różne Tabela 5.9. Priorytety operatorów Tabela 5.10. Rozmiary wyrażeń bitowych Tabela 13.1. Porównanie funkcji i procedur Tabela 14.1. Lista symboli formatujących dla procedury $display Tabela 14.2. Wartości parametru type przy otwieraniu plików Tabela 14.3. Opis dodatkowych funkcji pracy z plikami Tabela 16.1. Zbiory wartości opóźnień dla różnej liczby przełączeń sygnału Tabela 18.1. Konstrukcje języka Verilog wspierane przez syntezator Tabela 18.2. Typy danych Tabela 18.3. Instrukcje Tabela 18.4. Operatory przypisania Tabela 18.5. Prymitywy Tabela 18.6. Prymitywy definiowane przez użytkownika (UDP) Tabela 18.7. Proceduralne operatory i bloki Tabela 18.8. Procedury i funkcje Tabela 18.9. Struktury hierarchiczne Tabela 18.10. Bloki specyfikacji Tabela 18.11. Systemowe procedury i funkcje Tabela 18.12. Dyrektywy kompilatora Rys. 1.1. Schemat jednobitowego sumatora na poziomie bramek logicznych Rys. 1.2. Realizacja modułu add_1_2 z listingu 1.2: przykład opisu sumatora jednobitowego za pomocą równań logicznych Rys. 1.3. Realizacja modułu add_1_3 na podstawie listingu 1.3: przykład opisu jednobitowego sumatora za pomocą operatorów proceduralnych Rys. 1.4. Realizacja modułu add_4 na podstawie listingu 1.4: hierarchiczna struktura sumatora 4-bitowego zbudowanego z czterech instancji sumatora jednobitowego Rys. 1.5. Wynik symulacji sumatora jednobitowego Rys. 2.1. Realizacja modułu add_2 dwubitowego sumatora z listingu 2.2 stworzonego z dwóch sumatorów jednobitowych Rys. 2.2. Realizacja modułów reg_4_1 oraz reg_4_2 4-bitowego rejestru z listingów 2.3 i 2.4 Rys. 2.3. Realizacja modułu wor_wand z listingu 2.5: przykład połączenia wyjść inwerterów za pomocą węzłów wor i wand Rys. 2.4. Realizacja modułu add_N parametryzowanego sumatora z listingu 2.6: przykład wykorzystania funkcji arytmetycznych i operatora konkatenacji w lewej części operatora Rys. 2.5. Realizacja modułu buf_8_1 z listingu 2.8: przykład budowy 8-bitowego bufora składającego się z ośmiu jednobitowych prymitywów bufif0 Rys. 3.1. Prymitywy logiczne w pakiecie Quartus Rys. 3.2. Prymitywy buforowe w pakiecie Quartus Rys. 3.3. Realizacja prymitywu użytkownika my_mux z listingu 3.1 Rys. 3.4. Realizacja prymitywu użytkownika my_dff z listingu 3.2 Rys. 3.5. Realizacja modułu user_primitives z listingu 3.3 Rys. 4.1. Realizacja przykładu połączenia wyjść bramek za pomocą węzłów różnego typu z listingu 4.1: y1 – wire; y2 – wor; y3 – wand; y4 – tri0; y5 – tri1; y6 – trireg; y7 – supply0; y8 – supply1 Rys. 5.1. Realizacja modułu mult_on_10 z listingu 5.1 wykonującego mnożenie liczby A przez 10 za pomocą operatora przesunięcia Rys. 5.2. Realizacja modułu inputs_test z listingu 5.2: przykład wykorzystania operatorów redukcji do sprawdzenia czy liczba jedynek w słowie jest parzysta oraz czy wszystkie bity mają wartość 1 Rys. 5.3. Realizacja modułu comp_eq z listingu 5.3: przykład wykorzystania operatorów redukcji NOR do realizacji funkcji równości w komparatorze Rys. 5.4. Realizacja modułu if_subtraction z listingu 5.4: przykład wykorzystania operacji logicznych podczas realizacji urządzenia sterującego mikrokontrolera Rys. 5.5. Realizacja modułu comparator z listingu 5.5: przykład wykorzystania operatora relacji do stworzenia parametryzowanego komparatora Rys. 5.6. Realizacja modułu mux_2_1 z listingu 5.6: przykład wykorzystania operatora warunkowego do stworzenia multipleksera Rys. 6.1. Realizacja modułu sum_1_1 z listingu 6.1 Rys. 6.2. Realizacja modułu sum_1_2 z listingu 6.2 Rys. 6.3. Realizacja modułu sum_8 z listingu 6.3: przykład 8-bitowego sumatora z wykorzystaniem operacji arytmetycznych Rys. 6.4. Realizacja modułu simple_ALU z listingu 6.4: przykład wielokrotnego wykorzystania operatora assign z różnymi operacjami przy opisie układu kombinacyjnego Rys. 7.1. Realizacja modułu maj_3 z listingu 7.1: przykład wykorzystania bloku proceduralnego always do realizacji układu kombinacyjnego kontroli większościowej Rys. 8.1. Realizacja modułu adder_sen_list_1 z listingu 8.1: wykorzystanie bloku proceduralnego always z listą czułości do opisu jednobitowego sumatora Rys. 8.2. Realizacja modułu circ_latch z listingu 8.2: powstawanie zatrzasku na wyjściu w przypadku błędu opisu schematu kombinacyjnego Rys. 8.3. Realizacja modułu adder_sen_list_2 z listingu 8.3 Rys. 8.4. Realizacja modułu circ_no_latch z listingu 8.4: rozwiązanie błędu przy opisie układu kombinacyjnego – zatrzask na wyjściu nie występuje Rys. 8.5. Realizacja modułu my_DFF_no_blocking z listingu 8.5: przykład realizacji przerzutnika D za pomocą nieblokującego operatora przypisania Rys. 8.6. Realizacja modułu my_DFF_blocking z listingu 8.6: przykład realizacji przerzutnika D za pomocą operatora przypisania blokującego Rys. 9.1. Realizacja modułu blocking_in_out z listingu 9.1: przykład przypisania sygnałów w bloku always za pomocą operatora przypisania blokującego Rys. 9.2. Realizacja modułu blocking_st z listingu 9.8: przykład wykorzystania operatora blokującego przypisania wspólnie z operatorami zarządzania czasem Rys. 9.3. Realizacja modułu blocking_st_intra z listingu 9.9: przykład wykorzystania operatora blokującego przypisania z wewnętrznym opóźnieniem Rys. 9.4. Realizacja modułu blocking_assignments z listingu 9.10: przykład przypisania sygnałów w bloku always, czułego na zbocze sygnału za pomocą operatorów blokującego przypisania Rys. 9.5. Realizacja modułu non_blocking_st z listingu 9.12: przykład wykorzystania operatora przypisania nieblokującego razem z operatorami zarządzania czasem Rys. 9.6. Realizacja modułu non_blocking_st_intra z listingu 9.13: przykład wykorzystania operatora przypisania nieblokującego z wewnętrznym opóźnieniem Rys. 9.7. Realizacja modułu non_blocking_assignments z listingu 9.14: przykład przypisania sygnałów w bloku always, czułym na zbocze sygnału synchronizacyjnego, za pomocą operatorów przypisania nieblokującego (porównaj dany przykład z rysunkiem 9.4) Rys. 9.8. Realizacja modułu not_inputs z listingu 9.2: przykład inwersji wejść Rys. 9.9. Realizacja modułu gating_outputs z listingu 9.3: połączenie wejść za pomocą bramek różnego typu Rys. 9.10. Realizacja modułu gating_in_out_1 z listingu 9.4: sekwencyjne połączenie wejść za pomocą bramek logicznych Rys. 9.11. Realizacja modułu gating_in_out_2 z listingu 9.5: sekwencyjne połączenie wejść za pomocą bramek z wykorzystaniem wewnętrznej zmiennej tymczasowej Rys. 9.12. Realizacja modułu connect_outs z listingu 9.6: połączenie wyjść inwerterów Rys. 9.13. Realizacja modułu comb_circuit z listingu 9.7: przykład opisu prostego układu kombinacyjnego Rys. 10.1. Realizacja modułu adder_mult z listingu 10.1: przykład wykorzystania operatora if do opisu ALU realizującego arytmetyczne operacje dodawania lub mnożenia Rys. 10.2. Realizacja modułu mux_N_if z listingu 10.2: przykład realizacji szynowego multipleksera za pomocą operatora if Rys. 10.3. Realizacja modułu mux_N_conditional z listingu 10.3: przykład realizacji szynowego multipleksera za pomocą wyrażenia warunkowego Rys. 10.4. Realizacja modułu latch_1 z listingu 10.4: realizacja zatrzasku za pomocą operatora if Rys. 10.5. Realizacja modułu latch_2 z listingu 10.5: wynik błędnego opisu układu kombinacyjnego – na wyjściu schematu zostaje ustawiony zatrzask Rys. 10.6. Realizacja modułów comb_circuit_1-3 z listingów 10.6-10.8 Rys. 10.7. Realizacja modułu sm_IF z listingu 10.9: przykład opisu funkcji boolowskiej za pomocą operatora if Rys. 10.8. Realizacja modułów sm_Case1-3 z listingów 10.10-10.12: przykład opisu funkcji boolowskiej za pomocą operatorów case Rys. 10.9. Realizacja modułu sm_Case4 z listingu 10.13: przykład wykorzystania nieokreśloności do nadania wartości wyjścia w operatorze case Rys. 10.10. Realizacja modułu decoder z listingu 10.14: przykład wykorzystania nieokreślonej wartości wejść w operatorze casex Rys. 10.11. Realizacja modułu sm_Case5 z listingu 10.15: przykład wykorzystania znaku „?” przy opisie wartości wejść w operatorze casex Rys. 10.12. Realizacja modułu count_zero1 z listingu 10.16: przykład wykorzystania operatora for do określenia liczby zer w 4-bitowym słowie Rys. 11.1. Realizacja modułu use_full_case z listingu 11.1: przykład wykorzystania atrybutu full_case przy operatorze case Rys. 11.2. Realizacja przykładu z listingu 11.1 bez atrybutu full_case Rys. 11.3. Realizacja modułu one_hot_assign1 z listingu 11.2: przykład wykorzystania atrybutu parallel_case z operatorem case Rys. 11.4. Realizacja przykładu z listingu 11.2 bez atrybutu parallel_case Rys. 11.5. Realizacja modułu one_hot_assign2 z listingu 11.3: przykład jednoczesnego wykorzystania atrybutów full_case oraz parallel_case Rys. 11.6. Realizacja przykładu z listingu 11.3 z pominięciem atrybutów full_case i parallel_case Rys. 12.1. Realizacja modułu gray_bin z listingu 12.3: przykład wykorzystania bloku generacji i operatora for do opisu przekształcenia kodu Graya do kodu binarnego Rys. 13.1. Realizacja modułu ram_model z listingu 13.3: przykład jednoportowej synchronicznej pamięci, przy opisie której wykorzystano funkcję stałą clogb2 Wykaz skrótów Przedmowa Wstęp 1. Wprowadzenie do języka Verilog 1.1. Historia języka Verilog 1.2. Pierwszy projekt w języku Verilog 1.2.1. Opis projektu 1.2.2. Symulacja projektu 1.3. Podstawowe elementy języka Verilog 1.3.1. Słowa kluczowe 1.3.2. Identyfikatory 1.3.3. Białe znaki 1.3.4. Komentarze 1.4. Sygnały, sieci, sterowniki 1.4.1. Wartości logiczne 1.4.2. Moc logiczna sygnałów 1.5. Liczby 1.5.1. Reprezentacja liczb całkowitych 1.5.2. Reprezentacja liczb rzeczywistych 1.6. Równoległość języka Verilog 2. Moduły 2.1. Definicje modułów 2.2. Elementy modułów 2.3. Deklaracja portów 2.4. Instancje modułów 2.5. Parametry 2.6. Niejawne przekazywanie parametrów 2.7. Tablice instancji modułów 2.8. Hierarchia modułów i zmiennych 2.9. Obszary hierarchii i zakresy widoczności zmiennych 3. Prymitywy i moduły biblioteczne 3.1. Gdzie można znaleźć gotowe rozwiązanie 3.2. Prymitywy języka Verilog 3.3. Prymitywy definiowane przez użytkownika 4. Typy danych 4.1. Dwie klasy typów danych 4.2. Sieciowe typy danych 4.3. Znaczenie sygnałów sieci 4.4. Zmienne typy danych 4.5. Inne typy danych 4.5.1. Parametry 4.5.2. Parametry lokalne 4.5.3. Parametry bloku specyfikacji 4.5.4. Zmienne generacji 4.5.5. Typ danych zdarzenie 4.5.6. Łańcuchy znaków 4.6. Wybór bitów i pól bitowych 4.7. Wybór elementów tablicy i pól bitowych elementów tablicy 4.8. Deklaracja pamięci 5. Operatory 5.1. Operatory języka Verilog 5.2. Operatory bitowe 5.3. Operatory redukcji 5.4. Operatory logiczne 5.5. Operatory relacji 5.6. Operatory identyczności 5.7. Operatory arytmetyczne 5.8. Operatory różne 5.9. Wykonywanie operacji 5.10. Priorytety operatorów 5.11. Rozmiar wyrażeń bitowych 6. Operator przypisania ciągłego assign 6.1. Przypisania w języku Verilog 6.2. Formaty operatora przypisania ciągłego 6.3. Wykorzystanie operatora przypisania ciągłego 7. Operatory i bloki proceduralne 7.1. Operatory proceduralne initial i always, bloki proceduralne 7.2. Operatory begin-end i fork-join 7.3. Nazwane bloki proceduralne 7.4. Format bloków proceduralnych 8. Zarządzanie czasem 8.1. Operator opóźnienia # 8.2. Operator czułości @ 8.3. Operator oczekiwania wait 8.4. Lista czułości 8.5. Lista czułości w układach kombinacyjnych 8.6. Lista czułości w układach sekwencyjnych 9. Operatory przypisania 9.1. Cechy wspólne 9.2. Operator przypisania blokującego „=” 9.2.1. Składnia 9.2.2. Zarządzanie czasem 9.2.3. Opóźnienie wewnętrzne 9.2.4. Cechy syntezy 9.3. Operator przypisania nieblokującego „<=” 9.3.1. Składnia 9.3.2. Zarządzanie czasem 9.3.3. Opóźnienie wewnętrzne 9.3.4. Cechy syntezy 9.4. Zarządzanie czasem w operatorach proceduralnych podczas symulacji 9.5. Operatory proceduralne assign i deassign 9.6. Operatory proceduralne force i release 10. Operatory programowania strukturalnego 10.1. Cechy wspólne 10.2. Operator if-else 10.3. Operator case 10.4. Operatory casez i casex 10.5. Operator for 10.6. Operator while 10.7. Operator repeat 10.8. Operator forever 10.9. Operator disable 10.10. Różnice pomiędzy operatorami wait i while 11. Atrybuty 11.1. Atrybuty w języku Verilog 11.2. Atrybut full_case 11.3. Atrybut parallel_case 12. Bloki generacji 12.1. Bloki generacji języka Verilog 12.2. Składnia bloku generacji 12.3. Operatory generacji 12.3.1. Grupa elementów generacji 12.3.2. Operator if-else 12.3.3. Operator case 12.3.4. Operator for 13. Procedury i funkcje 13.1. Procedury i funkcje w języku Verilog 13.2. Dynamiczne i statyczne procedury i funkcje 13.3. Procedury 13.4. Funkcje 13.5. Funkcje stałe 13.6. Porównanie funkcji i procedur 14. Procedury i funkcje systemowe 14.1. Systemowe procedury i funkcje w języku Verilog 14.2. Systemowe procedury do obsługi tekstu 14.3. Systemowe procedury i funkcje do pracy z plikami 14.3.1. Otwieranie i zamykanie plików 14.3.2. Zapis do pliku 14.3.3. Inne funkcje do pracy na plikach 14.4. Inne systemowe procedury i funkcje 14.4.1. Zarządzanie procesem symulacji 14.4.2. Zarządzanie czasem symulacji 14.4.3. Zmiana wielkości ze znakiem i bez znaku 14.4.4. Zapis i odczyt zmiennych z rejestrów 14.4.5. Ładowanie zawartości pamięci 14.4.6. Konwersja zmiennych typu real na wektor 64-bitowy 14.4.7. Funkcje do pracy z wierszem poleceń 15. Dyrektywy kompilatora 15.1. Dyrektywy kompilatora w języku Verilog 15.2. Określenie wartości jednostki czasu 15.3. Makra 15.4. Dyrektywy kompilacji warunkowej 15.5. Załączenie plików 15.6. Określenie domyślnego typu sieciowego 15.7. Określenie wartości logicznych dla niepodłączonych wejść 15.8. Określenie wykorzystywanych bibliotek 16. Bloki specyfikacji 16.1. Bloki specyfikacji w języku Verilog 16.2. Filtrowanie impulsów 16.3. Test ograniczeń czasowych 17. Konfiguracja projektu 17.1. Konfiguracje 17.2. Bloki konfiguracyjne 17.3. Pliki biblioteczne 17.4. Przykłady konfiguracji projektów 17.4.1. Kod źródłowy projektu 17.4.2. Wykorzystanie konfiguracji zawartej w plikach bibliotecznych 17.4.3. Wykorzystanie operatora default 17.4.4. Wykorzystanie operatora cell 17.4.5. Wykorzystanie operatora instance 17.4.6. Wykorzystanie konfiguracji hierarchicznej 18. Syntezowalne konstrukcje języka Verilog 18.1. Cechy wspólne 18.2. Konstrukcje języka Verilog wspierane przez środowisko Quartus Podsumowanie Bibliografia Spis tabel Spis rysunków Streszczenie Abstract 111.pdf Strona 2 Strona 3 111.pdf Strona 2 Strona 3