Sequential Design Sequential code Code written within the












![Other statements • EXIT – Used for ending the loop [label: ] EXIT [label] Other statements • EXIT – Used for ending the loop [label: ] EXIT [label]](https://slidetodoc.com/presentation_image/6545999d973e13a2f95392b718627fb7/image-13.jpg)


- Slides: 15
Sequential Design
Sequential code • Code written within the following statements execute sequentially. • Process • Functions • Procedures
Process • A process is a sequential section of VHDL code. • It is characterized by the presence of following statements: – IF – Wait – Case – Loop
Process (cont. . ) • A Process must be installed in the main code, and is executed every time a signal in the sensitivity list changes (or the condition related to WAIT is fulfilled). • Syntax: [label: ] Process (sensitivity list) [variable name type [range] [: =initial value; ]] Begin (sequential code) End Process [label];
If statement If condition then assignments; elsif condition then assignments; …………………. . ……… else assignments; end if;
Case statements The format of a case statement is case expression is when choices => sequential-statements branch #1 when choices => sequential-statements branch #2 -- Can have any number of branches. [ when others => sequential-statements ] branch end case; ---- last
Case (cont. ) • The case statement is very similar to when statement. • All the permutation must be tested, so the keyword OTHERS may be used. • NULL may be used, when no action is required to take place. e. g. When OTHERS => NULL;
entity MUX is port (A, B, C, D: in BIT; CTRL: in BIT_VECTOR(0 to 1); Z: out BIT); end MUX; architecture MUX_BEHAVIOR of MUX is constant MUX_DELAY: TIME : = 10 ns; begin PMUX: process (A, B, C, D, CTRL) variable TEMP: BIT; begin case CTRL is when "00" => TEMP : = A: when "01" => TEMP : = B; when "10" => TEMP : = C; when "11" => TEMP : = D; end case; Z <= TEMP after MUX_DELAY; end process PMUX; end MUX_BEHAVIOR;
Loop • Loop is useful when a piece of code must be instantiated several times. • Loop is intended exclusively for sequential code. • For/loop : The loop is repeated a fixed number of times. [label: ] FOR identifier IN range LOOP (sequential statements) END LOOP [label];
Example of For/loop FACTORIAL : = 1; for NUMBER in 2 to N loop FACTORIAL : = FACTORIAL * NUMBER; end loop; NOTE: Range must be static.
Loop (cont. ) • WHILE/LOOP : The loop is repeated until a condition no longer holds. [label: ] WHILE condition LOOP (sequential statements); end LOOP [label];
• Example WHILE/Loop While (I <10) Loop wait until clk’event and clk=‘ 1’; (other statement) End loop;
Other statements • EXIT – Used for ending the loop [label: ] EXIT [label] [WHEN condition] • NEXT – Used for skipping loop steps. [label: ] NEXT [loop_label] [WHEN condition]
Example (exit and Next) SUM : = 1; J : = 0; L 3: loop J: =J+21; SUM : = SUM* 10; if (SUM > 100) then exit L 3; -- "exit; " also would have been sufficient. end if; end loop L 3;
Example (next) For I in 0 to 15 loop next when I= skip; -- jump to next iteration