Instrukcje przypisania służą do kierowania wartościami w sieci. I jest również używany Modelowanie przepływu danych .
Sygnały typu wire lub typu danych wymagają ciągłego przypisania wartości. Tak długo, jak bateria +5 V jest przyłożona do jednego końca przewodu, element podłączony do drugiego końca przewodu otrzyma wymagane napięcie.
Koncepcja ta jest realizowana poprzez instrukcję assis, w której dowolny przewód lub inny podobny przewód (typ danych) może być sterowany w sposób ciągły wartością. Wartość może być stałą lub wyrażeniem składającym się z grupy sygnałów.
Składnia
Składnia przypisania zaczyna się od słowa kluczowego access, po którym następuje nazwa sygnału, która może być sygnałem lub kombinacją różnych sieci sygnałowych.
The siła napędowa I opóźnienie są opcjonalne i używane głównie do modelowania przepływu danych niż do syntezy na prawdziwy sprzęt.
Sygnał po prawej stronie jest oceniany i przypisywany do siatki lub wyrażenia sieci po lewej stronie.
assign = [drive_strength] [delay]
Wartości opóźnienia są przydatne do określania opóźnień dla bramek i służą do modelowania zachowania taktowania w prawdziwym sprzęcie. Wartość określa, kiedy netto należy przypisać ocenianą wartość.
Zasady
Podczas korzystania z instrukcji przypisania należy przestrzegać kilku zasad:
- LHS powinien zawsze być skalarem, wektorem lub kombinacją sieci skalarnych i wektorowych, ale nigdy rejestrem skalarnym lub wektorowym.
- RHS może zawierać rejestry skalarne lub wektorowe oraz wywołania funkcji.
- Ilekroć jakikolwiek operand w RHS zmieni wartość, LHS zostanie zaktualizowany o nową wartość.
- Instrukcje przypisania nazywane są także przypisaniami ciągłymi.
Przypisz zmienne reg
Nie możemy prowadzić ani przydzielać zadań rej type z instrukcją przypisania, ponieważ zmienna reg może przechowywać dane i nie jest sterowana w sposób ciągły.
Sygnały Reg mogą być sterowane tylko w blokach proceduralnych, takich jak zawsze i początkowe.
Niejawne przypisanie ciągłe
Kiedy do przypisania danej sieci jakiejś wartości używana jest instrukcja assis, nazywa się ją an wyraźny zadanie
Jeśli zadeklarowano zadanie do wykonania w sieci, nazywa się to an domniemany zadanie.
ciąg json Java
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Projekt logiki kombinacyjnej
Rozważ następujący obwód cyfrowy wykonany z bramek kombinacyjnych i odpowiadających im Verilog kod.
Logika kombinacyjna wymaga ciągłego sterowania wejściami w celu utrzymania wyjścia, w przeciwieństwie do elementów sekwencyjnych, takich jak przerzutniki, w których wartość jest przechwytywana i przechowywana na krawędzi zegara.
Przypisana instrukcja spełnia swój cel, ponieważ wyjście o jest aktualizowane za każdym razem, gdy zmienia się którekolwiek z wejść po prawej stronie.
// This module takes four inputs and performs a Boolean // operation and assigns output to o. // logic is realized using assign statement. module combo (input a, b, c, d, output o); assign o = ~((a & b) | c ^ d); endmodule
Schemat sprzętu
Po opracowaniu i syntezie projektu obwód kombinacyjny zachowuje się w taki sam sposób, jak modelowany za pomocą instrukcji przypisania.
Sygnał o staje się 1, gdy wyrażenie kombinacyjne na RHS staje się prawdą.
Podobnie o staje się 0, gdy RHS jest fałszywe. Wyjście o wynosi X od 0 ns do 10 ns, ponieważ wejścia są X w tym samym czasie.