Phát biểu IF

Một phần của tài liệu Kiến thức cơ bản về VHDL (Trang 36 - 39)

c. So sánh Transport Delay và Inertial Delay

3.6.3.Phát biểu IF

Một phát biểu if được dùng để chọn lựa những phát biểu tuần tự cho việc thực thi dựa trên giá trị của biểu thức điều kiện. Biểu thức điều kiện ở đây có thể là một biểu thức bất kỳ mà giá trị của chúng phải là kiểu luận lý.

Dạng thông thường của phát biểu if là:

if boolean-expression then sequential-statements

{elsif boolean-expression then sequential -statement }

{else

sequential-statement} end if;

Ví dụ 1:

if sum <=100 then --“<=” is less-than-or-equal-to operator. SUM:=SUM+10;

end if;

Ví dụ 2:

signal IN1, IN2, OU : STD_LOGIC; process (IN1, IN2)

if IN1 = '0' or IN2 = '0' then OU <= '0' ;

elsif IN1 = 'X' or IN2 = 'X' then OU <= '1'; else OU <= '1' ; end if; end process; Ví dụ 3: D_FF : process (D, CLK) begin if rising_edge (CLK) then Q <= D; end if; end process D_FF; Hình 3.9: Thực thể D_FF. 3.6.4. Phát biểu CASE

Dạng của phát biểu case là:

case expression is

when choices => sequential -statement -- branch 1 when choices => sequential -statement -- branch 2 -- -- Có thể có nhiều nhánh

{when others => sequential-statement} -- last branch end case;

Phát biểu case lựa chọn một trong những nhánh cho việc thực thi dựa trên giá trị của biểu thức. Giá trị biểu thức phải thuộc kiểu rời rạc hoặc kiểu mảng một chiều. Các chọn lựa (Choices) có thể được diễn tả như một giá trị đơn, hoặc một dải giá trị

bằng việc sử dụng dấu " | " hoặc sử dụng mệnh đề khác. Tất cả các giá trị có thể có của biểu thức phải được thể hiện trong phát biểu case đúng một lần. Các mệnh đề khác có thể được sử dụng để bao quát tất cả các giá trị, và nếu có, phải là nhánh cuối cùng trong phát biểu case. Mỗi một chọn lựa phải có cùng kiểu với kiểu của biểu thức. Một thí dụ cho phát biểu case:

Ví dụ 1:

type WEEK_DAY is (MON, TUE, WED, THU, FRI, SAT, SUN); type DOLLARS is range 0 to 10;

variable DAY: WEEK_DAY;

variable POCKET_MONEY: DOLLARS; case DAY is

when TUE => POCKET_MONEY :=6; -- branch1

when MON | WED => POCKET_MONEY :=2; -- branch2 when FRI to SUN => POCKET_MONEY :=7; -- branch3 when others => POCKET_MONEY :=0; -- branch4

end case;

Nhánh 2 được chọn nếu DAY có giá trị là MON hoặc WED. Nhánh 3 bao gồm các giá trị FRI, SAT và SUN. Trong khi nhánh 4 gồm các giá trị còn lại là THU. Phát biểu case cũng là phát biểu tuần tự, tuy nhiên nó cũng có thể được phát biểu xếp lồng nhau.

Ví dụ 2:

ProgrGate: process (Mode, PrGIn1, PrGIn2) begin

case Mode is

when “000” => PrGOut <= PrGIn1 and PrGIn2; when “001” => PrGOut <= PrGIn1 or PrGIn2; when “010” => PrGOut <= PrGIn1 nand PrGIn2; when “011” => PrGOut <= PrGIn1 nor PrGIn2; when “100” => PrGOut <= not PrGIn1; (adsbygoogle = window.adsbygoogle || []).push({});

when “101” => PrGOut <= not PrGIn2; when others => PrGOut <= ‘0’;

end case;

Hình 3.10: Thực thể Programmable Gate.

Một phần của tài liệu Kiến thức cơ bản về VHDL (Trang 36 - 39)