Изявленията за присвояване се използват за управление на стойности в мрежата. И се използва и в Моделиране на потока от данни .
Сигнали от тип проводник или тип данни изискват непрекъснато присвояване на стойност. Докато батерията +5V е приложена към единия край на проводника, компонентът, свързан към другия край на проводника, ще получи необходимото напрежение.
Тази концепция се реализира от оператора за присвояване, където всеки проводник или друг подобен проводник (типове данни) може да бъде управляван непрекъснато със стойност. Стойността може да бъде константа или израз, състоящ се от група сигнали.
Синтаксис
Синтаксисът на присвояването започва с ключовата дума assign, последвана от името на сигнала, което може да бъде или сигнал, или комбинация от различни сигнални мрежи.
The задвижваща сила и забавяне са незадължителни и се използват най-вече за моделиране на поток от данни, отколкото за синтезиране в реален хардуер.
трансформира низ в int
Сигналът от дясната страна се оценява и се присвоява на мрежата или израза на мрежите от лявата страна.
assign = [drive_strength] [delay]
Стойностите на закъснението са полезни за определяне на закъснения за гейтове и се използват за моделиране на поведението на времето в реалния хардуер. Стойността диктува кога на мрежата трябва да бъде присвоена оценената стойност.
правила
Някои правила трябва да се спазват по време на използването на оператор за присвояване:
- LHS винаги трябва да бъде скаларен, векторен или комбинация от скаларни и векторни мрежи, но никога скаларен или векторен регистър.
- RHS може да съдържа скаларни или векторни регистри и извиквания на функции.
- Всеки път, когато някой операнд на RHS промени стойността си, LHS ще бъде актуализиран с новата стойност.
- Изявленията за присвояване се наричат също непрекъснати присвоявания.
Присвояване на рег. променливи
Не можем да караме или да възлагаме рег тип променливи с израз за присвояване, тъй като променливата reg може да съхранява данни и не се управлява непрекъснато.
Reg сигналите могат да се управляват само в процедурни блокове като винаги и първоначално.
java превключвател
Неявно непрекъснато присвояване
Когато оператор за присвояване се използва за присвояване на дадена мрежа с някаква стойност, той се нарича an изрично задание
Ако е декларирано задание, което трябва да се направи по време на мрежата, то се нарича an имплицитно задание.
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Комбинационен логически дизайн
Помислете за следната цифрова схема, направена от комбинирани порти и съответните Verilog код.
Комбинационната логика изисква входовете да се управляват непрекъснато, за да се поддържа изходът, за разлика от последователните елементи като джапанки, където стойността се улавя и съхранява на ръба на часовника.
Присвоен оператор удовлетворява целта, тъй като изходът o се актуализира всеки път, когато някой от входовете от дясната страна се промени.
// 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
Хардуерна схема
След разработката и синтеза на дизайна, комбинираната верига се държи по същия начин, както е моделирана от командата assign.
Сигналът o става 1 всеки път, когато комбинираният израз на RHS стане верен.
По същия начин o става 0, когато RHS е невярно. Изходът o е X от 0ns до 10ns, тъй като входовете са X през същото време.