difference if statement with case statement?
Author |
Message |
mjki #1 / 10
|
 difference if statement with case statement?
I want difference "if statement" with "case statement". Give me the answer, please. Sorry, I can't use English well, because English is foreign lenguage.
|
Sat, 23 Aug 2003 14:31:32 GMT |
|
 |
Dave #2 / 10
|
 difference if statement with case statement?
Quote: >I want difference "if statement" with "case statement". >Give me the answer, please. >Sorry, I can't use English well, because English is foreign lenguage.
An if statement only allows two possibilities. "IF it's cold, I can wear a jacket and be warm, or ELSE I can wear only a shirt and freeze." A case statement allows more than two options. "In CASE the temperature is between 60F and 40F I will wear a light coat. In CASE the temperature is between 39F and 20F I will wear a medium coat. In CASE the temperature is 19F or less, I will wear a heavy coat. For other cases, I will stay indoors and read comp.lang.vhdl." I'm not sure what the differences would be in synthesis. -- ::::: Dave Ross / Dr. Watson "Yesterday's technology
:: === tomorrow!" ::::: http://www.enteract.com/~watson
|
Sat, 23 Aug 2003 14:50:17 GMT |
|
 |
Andreas Gierie #3 / 10
|
 difference if statement with case statement?
Quote:
> >I want difference "if statement" with "case statement". > >Give me the answer, please. > >Sorry, I can't use English well, because English is foreign lenguage. > An if statement only allows two possibilities. "IF it's cold, I can > wear a jacket and be warm, or ELSE I can wear only a shirt and freeze." > A case statement allows more than two options. "In CASE the temperature > is between 60F and 40F I will wear a light coat. In CASE the temperature > is between 39F and 20F I will wear a medium coat. In CASE the > temperature is 19F or less, I will wear a heavy coat. For other cases, > I will stay indoors and read comp.lang.vhdl." > I'm not sure what the differences would be in synthesis.
Theory: The 'if' statement evaluates its condition every time it is executed (at simulation time), where the 'case' statement is a lookup table where all 'when' branches are pre-calculated (at compile time). -> That's one reason why the 'case' statement is so restrictive -> "locally static expressions" ~ expression that can be evaluated by the compiler without knowing the larger context Practical: It's a question of taste. I would suggest the following: - if you want to implement a lockup table, use 'case-when' - otherwise use 'if-elsif...-else' You can always convert a 'case-when' construct to an 'if-elsif-else' one, but in general, you can't convert an 'if-elsif-else' to a 'case-when' construct. Andi --
DS Diagonal Systems AG http://www.diagonal.ch/ Tumigerstrasse 71 Tel:+41-1-905-6060 CH-8606 Greifensee/Switzerland Fax:+41-1-905-6069
|
Sat, 23 Aug 2003 15:53:58 GMT |
|
 |
Norbert Zimmerman #4 / 10
|
 difference if statement with case statement?
Quote: > I want difference "if statement" with "case statement". > Give me the answer, please. > Sorry, I can't use English well, because English is foreign lenguage.
The "if-statement" is used within state-machines (processes or procedures). It is used for flow-control of sequential processes. In hardware terms this means: Flip-Flops are invoked. Synchronous or asynchronous machines are designed. The "case-statement" describes a combinatiral logic (truth-tables, look-up-tables). No Flip-Flops are invoked. Only combinatorial logic functions like NAND, NOR etc. are implemented in the design. Regards, Norbert Zimmermann
|
Sat, 23 Aug 2003 17:21:25 GMT |
|
 |
Renaud Pacale #5 / 10
|
 difference if statement with case statement?
Norbert Zimmermann a crit : Quote: > > I want difference "if statement" with "case statement". > > Give me the answer, please. > > Sorry, I can't use English well, because English is foreign lenguage. > The "if-statement" is used within state-machines (processes or procedures). > It is used for flow-control of sequential processes. In hardware terms this > means: Flip-Flops are invoked.
No: process(A, B) begin if(A = '1') then S <= '1'; elsif(B = '1') then S <= '1'; else S <= '0'; end if; end process; is pure combinational, no DFF would be synthesized. Quote: > Synchronous or asynchronous machines are designed. > The "case-statement" describes a combinatiral logic (truth-tables, > look-up-tables). No Flip-Flops are invoked. Only combinatorial logic > functions like NAND, NOR etc. are implemented in the design.
No: process(CP) variable B: BOOLEAN; begin B := RISING_EDGE(CP); case B is when TRUE => Q <= D; when FALSE => null; end case; end process; will synthesize as a DFF only, no combinational logic, no NAND, NOR, etc. Where does your assumption come from? Regards, -- Renaud Pacalet, ENST / COMELEC, 46 rue Barrault 75634 Paris Cedex 13
|
Sat, 23 Aug 2003 22:42:55 GMT |
|
 |
Norbert Zimmerman #6 / 10
|
 difference if statement with case statement?
Quote: > No: > process(A, B) > begin > if(A = '1') then > S <= '1'; > elsif(B = '1') then > S <= '1'; > else > S <= '0'; > end if; > end process; > is pure combinational, no DFF would be synthesized. > > Synchronous or asynchronous machines are designed. > > The "case-statement" describes a combinatiral logic (truth-tables, > > look-up-tables). No Flip-Flops are invoked. Only combinatorial logic > > functions like NAND, NOR etc. are implemented in the design. > No: > process(CP) > variable B: BOOLEAN; > begin > B := RISING_EDGE(CP); > case B is > when TRUE => Q <= D; > when FALSE => null; > end case; > end process;
Sorry and thank you for correcting me... I mixed up the "case-statement" with the "switch-statement" (which is combinatorial (please correct me, if I am wrong)).. as for the "if-statement".. yeah, you seem to be right aswel.. :} Learned something today...
|
Sat, 23 Aug 2003 23:07:17 GMT |
|
 |
x-gu #7 / 10
|
 difference if statement with case statement?
"if-elsif-else" implies priority while "case" does not. Consider RTL 1: if (Sel = "00") then A <= X"3f"; elsif (Sel = "01") then A <= X"5e"; elsif (Sel = "10") then A <= X"25"; else A <= X"66" end if; RTL 2: case Sel is when "00" => A <= X"3f"; when "01" => A <= X"5e"; when "10" => A <= X"25"; when others => A <= X"66"; end case; Both RTL 1 and RTL 2 function the same and are pure combination circuit, but RTL 1 implies priority, "00" has higher priority than "01" and "11" has the lowest priority. RTL 2 does not have priority. In synthesis, RTL 1 synthesized to a chain of comparison in serial while RTL 2 synthesized to several multiplexers in parallel which is smaller and faster. Therefore if your goal is hardware generation and you are trying to do something like selector, use "case", but in some situations, using "if" is simpler in coding and is more natural (even though the hardware generated is not the one you want). Quote:
> I want difference "if statement" with "case statement". > Give me the answer, please. > Sorry, I can't use English well, because English is foreign lenguage.
|
Sun, 24 Aug 2003 01:41:51 GMT |
|
 |
Colin Marquard #8 / 10
|
 difference if statement with case statement?
Quote:
> - if you want to implement a lockup table, use 'case-when'
---------------------------------^^^^^^ Oh horrors... :-) SCNR, Colin
|
Sun, 24 Aug 2003 02:18:51 GMT |
|
 |
FPS Franc #9 / 10
|
 difference if statement with case statement?
bullshit / well, the real difference about if and case is here : the condition . in an if statement u can have multiple conditions : if (allo=1) then ... elsif (robert=0) then elsif (sel=00 AND allo=0) then else .... but case statement is handling only one object to handle the condition : case sel is when a sel is a when b sel is b when c don't care about allo but sel is c but watch out theses two points : - if the if command have several true conditions, allo=1 and robert=0 only the first command will be executed as it is the first condition used (if handle some kind of priority) - always use an else statement with the if command / always use when others with the case statement : it alow the circuit to have a default behavior and avoid strange outputs at init or at unhandled inputs. dit moi t'es francais ? where r u from to ask this trick question ? :)
Quote: > I want difference "if statement" with "case statement". > Give me the answer, please. > Sorry, I can't use English well, because English is foreign lenguage.
|
Sun, 24 Aug 2003 17:58:00 GMT |
|
 |
Andreas Gierie #10 / 10
|
 difference if statement with case statement?
FPS France schrieb: Quote: I think you misspelled "Hi" or "Hello" or any other nice greetings (I too misspell words from time to time ;-) -- Andi
|
Mon, 25 Aug 2003 03:15:24 GMT |
|
|
|