IF和CASE語句的區別
If 和case語句是VHDL里邊兩個非常重要的語句,如何用好她們來描述邏輯電路和時序電路是學會VHDL編程重要的一步。
if 和 case語句有一定的相關性,也有一定的區別。相同的地方是他們可以實現幾乎一樣的功能。
下面主要介紹一下她們之間的區別。If 語句每個分支之間是有優先級的,綜合得到的電路是類似級聯的結構。
Case語句每個分支是平等的,綜合得到的電路則是一個多路選擇器。因此,多個if elseif語句綜合得到的邏輯電路延時往往比case語句要大。
一些初學者在一開始往往喜歡用if elsif語句,因為這種語法表達起來更加直接,但是在運行速度比較關鍵的項目中,使用case語句的效果會更好。
IF和CASE語句的區別
If 和case語句是VHDL里邊兩個非常重要的語句,如何用好她們來描述邏輯電路和時序電路是學會VHDL編程重要的一步。if 和 case語句有一定的相關性,也有一定的區別。相同的地方是他們可以實現幾乎一樣的功能。下面主要介紹一下她們之間的區別。
If 語句每個分支之間是有優先級的,綜合得到的電路是類似級聯的結構。Case語句每個分支是平等的,綜合得到的電路則是一個多路選擇器。因此,多個if elseif語句綜合得到的邏輯電路延時往往比case語句要大。一些初學者在一開始往往喜歡用if elsif語句,因為這種語法表達起來更加直接,但是在運行速度比較關鍵的項目中,使用case語句的效果會更好。
case語句的用法
VB 的
Select Case 表達式
Case 表達式列表1
語句1
Case 表達式列表2
語句2
Case 表達式列表n
語句n
Case Else
語句n+1
End Select
C/C++ 的
switch(表達式)
{
case 表達式1;
語句1;[Break;]
case 表達式2;
語句2;[Break;]
case 表達式n;
語句n;[Break;]
default;
語句n+1;
}
Pascal 的
Case 表達式 Of
表達式1:語句1;
表達式2:語句2;
表達式n:語句n;
Else
語句n+1
End
如何在sql查詢中使用if和case語句
if 作為條件判斷,一般用在存儲過程或者函數里面;
譬如
if sqlstate ='02000' then
select xxx from tab
case是作為判斷,用在查詢當中
select id, case when id = 1 then 'one' else 'null' end
高效兩個沒有可比性,深究一點,都是一個邏輯判斷,然后出結果,所以旗鼓相當,沒必要在這個問題上探究性能問題
利用If語句,Select Case語句兩種方法計算分段函數
題好像有錯誤,沒有X=20的情況,現假定第二個條件為10<=X<=20
1、利用If語句
input "=";x
if x>20 then
y=3*x+2
elseif x>=10 then y=(3*x-2)^(1/2)
else y=1/X+abs(X)
end if
print "y=";y
end
2、利用Select Case語句
input "=";x
Select Case x
case is>20
y=3*x+2
case is<10
y=1/X+abs(X)
case else
y=(3*x-2)^(1/2)
end select
print "y=";y
end
在VHDL中IF語句與CASE語句的使用效果有何不同
They are synthesized to different logic:
"If" will be synthesized to PRIORITY decoding,
"Case" gives you balanced decoding.
Use "Case" when you have complex decoding.
Use "IF" when you need fast critical path.
Example:
if (select = "00") then
out <= A;
elsif (select = "01") then
out <= B;
elsif (select = "10") then
out <= C;
else
out <= D;
end;
This will give you a priority tree that A has smallest delay (1 MUX) while C and D have largest delay (3 MUX)
A ------------------|MUX|---- OUT
B ----------|MUX|---|(3)|
C --|MUX|---|(2)|
D --|(1)|
If you use "CASE" statement the logic is a balanced tree, all signals will have 2 MUX delay.
A --|MUX|
B --|(1)|----|====|
. |MUX3|---- OUT
C --|MUX|----|====|
D --|(2)|
轉載請注明出處華閱文章網 » ifcase語句的用法