Příkazy Assign se používají k řízení hodnot na síti. A používá se také v Modelování toku dat .
Signály typu drát nebo datového typu vyžadují průběžné přiřazení hodnoty. Dokud je +5V baterie přivedena na jeden konec vodiče, součástka připojená k druhému konci vodiče získá požadované napětí.
Tento koncept je realizován příkazem assign, kde může být libovolný vodič nebo jiný podobný vodič (datové typy) řízen nepřetržitě s hodnotou. Hodnota může být buď konstanta nebo výraz obsahující skupinu signálů.
je kat timpf právnička
Syntax
Syntaxe přiřazení začíná klíčovým slovem assign, následovaným názvem signálu, což může být buď signál, nebo kombinace různých signálových sítí.
The síla pohonu a zpoždění jsou volitelné a většinou se používají pro modelování toku dat než pro syntetizaci do skutečného hardwaru.
co je oracle
Signál na pravé straně je vyhodnocen a přiřazen k síti nebo výrazu sítí na levé straně.
assign = [drive_strength] [delay]
Hodnoty zpoždění jsou užitečné pro specifikaci zpoždění pro hradla a používají se k modelování chování časování v reálném hardwaru. Hodnota určuje, kdy má být netto přiřazena k vyhodnocované hodnotě.
Pravidla
Při používání příkazu assign je třeba dodržovat některá pravidla:
- LHS by měla být vždy skalární, vektorová nebo kombinace skalárních a vektorových sítí, ale nikdy skalární nebo vektorový registr.
- RHS může obsahovat skalární nebo vektorové registry a volání funkcí.
- Kdykoli se hodnota kteréhokoli operandu na RHS změní, LHS se aktualizuje o novou hodnotu.
- Příkazy přiřazení se také nazývají průběžná přiřazení.
Přiřadit proměnné reg
Nemůžeme řídit ani přidělovat reg zadejte proměnné pomocí příkazu assign, protože proměnná reg je schopna ukládat data a není řízena nepřetržitě.
sourozenci kylie jenner
Signály Reg lze řídit pouze v procedurálních blocích, jako je vždy a počáteční.
Implicitní průběžné přiřazování
Když je příkaz assign použit k přiřazení dané sítě s nějakou hodnotou, nazývá se to an explicitní úkol
Pokud je deklarováno přiřazení, které má být provedeno během sítě, nazývá se an implicitní úkol.
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Kombinovaný logický design
Zvažte následující digitální obvod vyrobený z kombinačních hradel a odpovídajících Verilog kód.
unsigned int c programování
Kombinační logika vyžaduje, aby vstupy byly nepřetržitě řízeny, aby se zachoval výstup, na rozdíl od sekvenčních prvků, jako jsou klopné obvody, kde je hodnota zachycena a uložena na okraji hodin.
Přiřazený příkaz splňuje účel, protože výstup o se aktualizuje vždy, když se změní některý ze vstupů na pravé straně.
// 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
Hardwarové schéma
Po vypracování návrhu a syntéze se kombinační obvod chová stejně jako modelovaný příkazem assign.
Signál o se stane 1, kdykoli se kombinační výraz na RHS stane pravdivým.
Podobně se o změní na 0, když je RHS nepravda. Výstup o je X od 0ns do 10ns, protože vstupy jsou X ve stejnou dobu.