Príkazy Assign sa používajú na riadenie hodnôt na sieti. A používa sa aj v Modelovanie toku údajov .
Signály typu drôt alebo dátového typu vyžadujú nepretržité priraďovanie hodnoty. Pokiaľ je +5V batéria aplikovaná na jeden koniec vodiča, komponent pripojený na druhý koniec vodiča dostane požadované napätie.
Tento koncept je realizovaný príkazom assign, kde môže byť ľubovoľný vodič alebo iný podobný vodič (údajové typy) riadený nepretržite s hodnotou. Hodnota môže byť buď konštanta alebo výraz obsahujúci skupinu signálov.
Syntax
Syntax priradenia začína kľúčovým slovom priradiť, za ktorým nasleduje názov signálu, ktorý môže byť signálom alebo kombináciou rôznych signálnych sietí.
The sila pohonu a meškanie sú voliteľné a väčšinou sa používajú na modelovanie toku údajov ako na syntetizovanie do skutočného hardvéru.
Signál na pravej strane je vyhodnotený a priradený k sieti alebo výrazu sietí na ľavej strane.
assign = [drive_strength] [delay]
Hodnoty oneskorenia sú užitočné na špecifikovanie oneskorení pre brány a používajú sa na modelovanie správania načasovania v reálnom hardvéri. Hodnota určuje, kedy má byť netto priradená hodnotenej hodnote.
pravidlá
Počas používania príkazu assign je potrebné dodržiavať niektoré pravidlá:
- LHS by mal byť vždy skalárny, vektorový alebo kombinácia skalárnych a vektorových sietí, ale nikdy nie skalárny alebo vektorový register.
- RHS môže obsahovať skalárne alebo vektorové registre a volania funkcií.
- Vždy, keď sa hodnota ktoréhokoľvek operandu na RHS zmení, LHS sa aktualizuje o novú hodnotu.
- Priraďovacie príkazy sa nazývajú aj priebežné priradenia.
Priraďte premenné reg
Nemôžeme šoférovať ani prideľovať reg napíšte premenné pomocou príkazu assign, pretože premenná reg je schopná ukladať údaje a nie je riadená nepretržite.
Signály Reg možno riadiť iba v procedurálnych blokoch, ako sú vždy a počiatočné.
chr funkcia python
Implicitné nepretržité priraďovanie
Keď sa príkaz assign použije na priradenie danej siete s nejakou hodnotou, nazýva sa to an explicitné zadanie
Ak je deklarovaná úloha, ktorá sa má vykonať počas siete, nazýva sa to an implicitne zadanie.
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Kombinovaný logický dizajn
Zvážte nasledujúci digitálny obvod vyrobený z kombinovaných brán a zodpovedajúcich Verilog kód.
Kombinovaná logika vyžaduje, aby vstupy boli nepretržite riadené, aby sa zachoval výstup, na rozdiel od sekvenčných prvkov, ako sú klopné obvody, kde je hodnota zachytená a uložená na okraji hodín.
Priradený príkaz spĺňa účel, pretože výstup o sa aktualizuje vždy, keď sa zmení ktorýkoľvek zo vstupov na pravej strane.
// 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
Hardvérová schéma
Po vypracovaní návrhu a syntéze sa kombinačný obvod správa rovnakým spôsobom, ako je modelovaný príkazom assign.
Signál o sa zmení na 1 vždy, keď sa kombinačný výraz na RHS stane pravdivým.
Podobne o sa zmení na 0, keď je RHS nepravdivé. Výstup o je X od 0ns do 10ns, pretože vstupy sú X v rovnakom čase.