Piešķiršanas paziņojumi tiek izmantoti vērtību virzīšanai tīklā. Un to izmanto arī Datu plūsmas modelēšana .
Vadu vai datu tipa signāliem ir nepieciešama nepārtraukta vērtības piešķiršana. Kamēr vienā vada galā ir pielikts +5V akumulators, otram vada galam pievienotā sastāvdaļa saņems vajadzīgo spriegumu.
Šo koncepciju realizē piešķiršanas paziņojums, kurā jebkuru vadu vai citu līdzīgu vadu (datu veidus) var nepārtraukti vadīt ar vērtību. Vērtība var būt vai nu konstante, vai izteiksme, kas sastāv no signālu grupas.
Sintakse
Piešķiršanas sintakse sākas ar atslēgvārdu assign, kam seko signāla nosaukums, kas var būt signāls vai dažādu signālu tīklu kombinācija.
The piedziņas spēks un kavēšanās ir neobligāti un galvenokārt tiek izmantoti datu plūsmas modelēšanai, nevis sintezēšanai reālā aparatūrā.
Signāls labajā pusē tiek novērtēts un piešķirts tīklam vai tīklu izteiksmei kreisajā pusē.
assign = [drive_strength] [delay]
Aizkaves vērtības ir noderīgas, lai norādītu aizkaves vārtiem, un tās izmanto, lai modelētu laika uzvedību reālā aparatūrā. Vērtība nosaka, kad neto jāpiešķir ar novērtēto vērtību.
Noteikumi
Izmantojot piešķiršanas paziņojumu, ir jāievēro daži noteikumi:
- LHS vienmēr ir jābūt skalāram, vektoram vai skalāra un vektora tīklu kombinācijai, bet nekādā gadījumā skalāram vai vektoru reģistram.
- RHS var saturēt skalārus vai vektoru reģistrus un funkciju izsaukumus.
- Ikreiz, kad kāda RHS operanda vērtība mainās, LHS tiks atjaunināta ar jauno vērtību.
- Piešķiršanas priekšrakstus sauc arī par nepārtrauktiem uzdevumiem.
Piešķirt reg Variables
Mēs nevaram braukt vai norīkot reg tipa mainīgie ar piešķiršanas paziņojumu, jo reg mainīgais spēj uzglabāt datus un netiek nepārtraukti vadīts.
Reg signālus var vadīt tikai procesuālos blokos, piemēram, vienmēr un sākotnējā.
Netieša nepārtraukta piešķiršana
Ja piešķiršanas priekšraksts tiek izmantots, lai piešķirtu dotajam tīklam ar kādu vērtību, to sauc par an nepārprotami uzdevums
Ja tiek deklarēts uzdevums, kas jāveic tīkla laikā, to sauc par an netieši uzdevums.
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Kombinācijas loģikas dizains
Apsveriet šādu digitālo shēmu, kas izgatavota no kombinētiem vārtiem un atbilstošām Verilog kodu.
Kombinētā loģika pieprasa, lai ievades tiktu nepārtraukti darbinātas, lai uzturētu izvadi, atšķirībā no secīgiem elementiem, piemēram, flip flops, kur vērtība tiek uztverta un saglabāta pulksteņa malā.
Piešķirtais paziņojums atbilst mērķim, jo izvade o tiek atjaunināta ikreiz, kad mainās kāda no labajā pusē esošajām ieejām.
// 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
Aparatūras shēma
Pēc dizaina izstrādes un sintēzes kombinētā ķēde darbojas tāpat kā modelēta piešķiršanas paziņojumā.
Signāls o kļūst par 1 ikreiz, kad RHS kombinētā izteiksme kļūst patiesa.
Līdzīgi o kļūst par 0, ja RHS ir nepatiess. Izvade o ir X no 0ns līdz 10ns, jo ieejas ir X tajā pašā laikā.