ทุกคนสามารถบอกความแตกต่างระหว่างโครงสร้าง If-Else และคำสั่ง Case ของกระบวนการใน VHDL ในแง่ของวิธีการที่โค้ดถูกอนุมานในวงจร RTL โดยเครื่องมือสังเคราะห์ได้หรือไม่
if-elsif-else
สร้างอนุมานลำดับความสำคัญของเครือข่ายเส้นทาง:
จำลองวงจรนี้ - แผนผังที่สร้างโดยใช้CircuitLab
สิ่งนี้สอดคล้องกับ
if bool_expr_1 then
sig <= val_expr_1;
elsif bool_expr_2 then
sig <= val_expr_2;
elsif bool_expr_3 then
sig <= val_expr_3;
else
sig <= val_expr_4;
end if;
case
สร้างบนมืออื่น ๆ ที่อ้างถึงใหญ่ 'ol MUX:
สิ่งนี้สอดคล้องกับ
case case_expr is
when c0 =>
sig <= val_expr_0;
when c1 =>
sig <= val_expr_1;
when c2 =>
sig <= val_expr_2;
...
when others =>
sig <= val_expr_N;
end case;
เห็นได้ชัดว่านี่คือการออกแบบที่ง่ายมากโดยมีนิพจน์ค่าเดียวเท่านั้นทำให้ได้ผลลัพธ์เดียว
พิจารณากรณีของหลาย ๆ if-else ที่ซ้อนกันและผสม case-statement ด้วย if-else สร้างขึ้นภายในกระบวนการ
ตามข้างต้นคุณสามารถดูว่าพวกเขาจะทำรัง / ผสมอย่างไร
นอกจากนี้เมื่อใดที่จะใช้สิ่งก่อสร้าง?
เนื่องจากมีif-else
ลำดับความสำคัญ infers ควรใช้เมื่อเงื่อนไขอินพุตมากกว่าหนึ่งอาจเกิดขึ้น การใช้case
มืออีกข้างหนึ่งมีความเหมาะสมเมื่อปัจจัยการผลิตเป็นพิเศษร่วมกัน
dec
/jz
คำสั่งซึ่งมีประสิทธิภาพมากขึ้น อาจใช้การเพิ่มประสิทธิภาพที่คล้ายกันนี้