logo

Верилог Цасе Статемент

Наредба цасе проверава да ли се дати израз поклапа са једним међу осталим изразима унутар листе и грана. Обично се користи за имплементацију уређаја.

Конструкција иф-елсе можда неће бити применљива ако постоји јединица мере много услова које треба проверити и која би се синтетизовала у приоритетни кодер уместо у уређај.

сортирана листа низова у Јави

Ин Верилог , исказ цасе укључује сав код између Верилог кључних речи, цасе ('цасез', 'цасек') и ендцасе. Изјава случаја може бити конструкција одабира један од много која је отприлике као Ассоциате у наредби иф-елсе-иф.

Синтакса

Верилог цасе изјава почиње кључном речју цасе и завршава се кључном речи ендцасе.

Израз у јединици површине у заградама има за циљ да се посебно једном процени и упоређује се са листом алтернатива унутар редоследа којим су написани.

А изјаве да се избор поклапа са датом изразном јединицом мере мртви. Блок вишеструких изјава треба да буде сортиран и да буде унутар почетка и краја.

 case () case_item1 : case_item2, case_item3 : case_item4 : begin end default: endcase 

Ако се ништа од случаја не поклапа са датим изразом, искази унутар подразумеване јединице мере су мртви. Подразумевана изјава није обавезна и постоји само једна подразумевана изјава у целој изјави цасе. Изјаве случаја су угнежђене.

Извршење ће изаћи из блока случаја док се не ради једна ствар ако ниједна од ставки не одговара изразу, а подразумевана изјава није дата.

Пример

Следећи модни модул укључује 2-битну опцију за сигнал за усмеравање једног између три различита 3-битна улаза у знак који је наведен као оут.

Наредба цасе се користи за додељивање исправног улаза излазу који подржава вредност сел. Пошто сел може бити 2-битни сигнал, имаће двадесет 2 комбинације, од нула до 3. Подразумевана изјава помаже да се линијски излаз постави на нулу ако је сел 3.

тат пуна форма
 module my_mux (input [2:0] a, b, c, // three 3-bit inputs [1:0]sel, // 2-bit opt for signal to choose on from a, b, c output reg [2:0] out); // Output 3-bit signal // invariably block is dead whenever a, b, c or sel changes in value invariably @ (a, b, c, sel) begin case(sel) 2'b00 : out = a; // If sel=0, output can be a 2'b01 : out = b; // If sel=1, output is b 2'b10 : out = c; // If sel=2, output is c default : out = 0; // If sel is something, out is commonly zero endcase end endmodule 

Заглавље изјаве о случају

Заглавље исказа цасе се састоји од кључне речи цасе ('цасез', 'цасек') иза које следи израз цасе, обично све у једном реду кода.

Приликом додавања фулл_цасе или параллел_цасе директива наредби цасе, јединица мере директиве се додаје као коментар у реалном времену након израза цасе на врху заглавља наредбе цасе и пре било које ствари цасе у наредним линијама кода.

Предмет предмета

Ставка случаја је да се бит, вектор или Верилог израз навикли пореде са изразом падежа.

За разлику од различитих програмских језика високог нивоа као што је ' Ц ', изјава случаја Верилог укључује имплицитне изјаве прекида.

Прва ставка падежа која се поклапа са овим изразом падежа доводи до тога да је одговарајући исказ ставке падежа мртав, тако да све остале јединице мере падежа које су прескочене за ово пролазе кроз исказ случаја.

Изјава о предмету

Изјава ставке случаја је једна или много Верилог изјава мртвих ако се ставка случаја поклапа са овим изразом случаја. Не као ВХДЛ, ствари у случају Верилог могу саме бити изрази.

Да бисте изменили рашчлањивање Верилог кодног документа, изјаве Верилог цасе ставке треба да буду затворене између кључних речи 'започети' и 'крај' ако преко једне изјаве треба бити мртав за конкретну ставку случаја.

Цасез

У Верилог-у постоји наредба цасез, варијација исказа цасе која омогућава 'з' и '?' вредности које треба третирати током поређења случајева као вредности „не занима ме“.

'З' и '?' јединица мере која се третира као а. Није брига да ли су унутар израза падежа или су унутар ставке падежа.

Када тајно пишете исказ случаја са „не занима ме“, користите исказ цасез и користите „?“ знакова уместо знакова 'з' унутар великих и малих слова ствари које имају сврху 'нема везе' битове.

Цасек

У Верилог-у постоји цасек изјава, варијација исказа цасе која омогућава да вредности 'з', '?' и 'к' буду третиране током поређења као вредности 'не занима ме'.

'к', 'з' и '?' јединица мере која се третира као а. Није брига да ли су унутар израза падежа или су унутар ставке падежа.

Потпуна изјава случаја

Потпуна изјава случаја може бити исказ случаја унутар којег се сви бинарни обрасци израза великих и малих слова који се могу добити упарују са ставком случаја или подразумеваним великим бројем.

Ако наредба цасе не обухвата подразумевану вредност великих и малих слова и може се потражити бинарни израз за велика и мала слова који се не поклапа ни са једном од одштампаних ствари, исказ цасе није пун.

Потпуна изјава случаја може бити исказ случаја унутар којег је сваки бинарни, небинарни и мешавина бинарних и небинарних образаца који се може добити у оквирима као ставка цасе унутар изјаве цасе.

менаџер задатака линукс

Верилог не жели да изјаве случаја буду пуне синтезе или симулације липопротеина високе густине, али Верилог искази случаја се попуњавају додавањем подразумеваног случаја. ВХДЛ жели да изјаве случаја буду пуне симулације липопротеина високе густине, што обично жели клаузулу „други“ сарадника у сестринству.

Параллел Цасе Статемент

Паралелни исказ случаја може бити исказ случаја унутар којег је могуће спојити израз случаја само са једном ставком случаја.

Ако је могуће потражити израз падежа који се може поклапати са једном поставком случаја, јединица мере која се подудара са падежима је наведена као преклапајућа падежа и тако исказ случаја није паралелан.

Хардваре Сцхематиц

РТЛ код је разрађен да добије хардверску шему која представља 4 према 1 мултиплексер.

Верилог Цасе Статемент

Након што се изврши горњи дизајн, излаз је нула када је сел 3 и одговара додељеним улазима за друге вредности.

 ncsim> run [0] a=0x4 b=0x1 c=0x1 sel=0b11 out=0x0 [10] a=0x5 b=0x5 c=0x5 sel=0b10 out=0x5 [20] a=0x1 b=0x5 c=0x6 sel=0b01 out=0x5 [30] a=0x5 b=0x4 c=0x1 sel=0b10 out=0x1 [40] a=0x5 b=0x2 c=0x5 sel=0b11 out=0x0 ncsim: *W,RNQUIE: Simulation is complete. 

У исказу цасе, поређење је успешно само када се сваки бит израза поклапа са једном од алтернатива укључујући 0, 1, к и з. У горњем примеру, ако је било који од битова у сел или к или з, Уобичајено наредба ће бити извршена јер се ниједна од других алтернатива није поклапала. У том случају, излаз ће бити све нуле.

 ncsim> run [0] a=0x4 b=0x1 c=0x1 sel=0bxx out=0x0 [10] a=0x3 b=0x5 c=0x5 sel=0bzx out=0x0 [20] a=0x5 b=0x2 c=0x1 sel=0bxx out=0x0 [30] a=0x5 b=0x6 c=0x5 sel=0bzx out=0x0 [40] a=0x5 b=0x4 c=0x1 sel=0bxz out=0x0 [50] a=0x6 b=0x5 c=0x2 sel=0bxz out=0x0 [60] a=0x5 b=0x7 c=0x2 sel=0bzx out=0x0 [70] a=0x7 b=0x2 c=0x6 sel=0bzz out=0x0 [80] a=0x0 b=0x5 c=0x4 sel=0bxx out=0x0 [90] a=0x5 b=0x5 c=0x5 sel=0bxz out=0x0 ncsim: *W,RNQUIE: Simulation is complete. 

Ако исказ случаја у дизајну има к и з у алтернативама предмета случаја, резултати ће се разликовати.

 module mux (input [2:0] a, b, c, output reg [2:0] out); // Case items have x and z, and sel has to match the exact value for // output to be assigned with the corresponding input always @ (a, b, c, sel) begin case(sel) 2'bxz: out = a; 2'bzx: out = b; 2'bxx: out = c; default: out = 0; endcase end endmodule 

Разликовање између падежа и ако-иначе

Изјава случаја се разликује од иф-елсе-иф на два начина, као што је:

  • Изрази дати у ан ако друго блок су општији, док се у блоку цасе, један израз упарује са више ставки.
  • Случај пружиће дефинитиван резултат када у изразу постоје вредности Кс и З.