基本實驗1    IF Then Statement

 

 

程式設計者可以練習使用IF Then Statement

 

了解IF Then Statement Priority (優先權) 的特性

 

程式設計者可以練習將Behavioral的敘述句轉成Boolen Equation和電路圖

 

了解Functional和Post-Layout Simulation

 

程式設計者可以練習Functional Simulation

 

 

 --  tstif

 

VHDL : tstif.vhd

Verilog : tstif.v

 

LIBRARY ieee;

USE ieee.std_logic_1164.all;

 

ENTITY tstif IS

PORT

(

      a,b,c : IN STD_LOGIC;

      f,g,h  : OUT STD_LOGIC;

      k      : OUT STD_LOGIC_VECTOR(1 DOWNTO 0)

);

END tstif;

 

ARCHITECTURE a1 OF tstif IS

BEGIN

 

--doesn't work in MaxplusII 9.3, a bug of MaxplusII

--PROCESS(a)

--BEGIN

--IF a='1' THEN f<='0';

--ELSE f<='1'; END IF;

--END PROCESS;

 

f<='0' WHEN a='1' ELSE '1';

PROCESS(a,b)

BEGIN

IF a='1' AND b='1' THEN g<='1';

ELSE g<='0'; END IF;

END PROCESS;

 

PROCESS(a,b,c)

BEGIN

IF a='1' AND b='1' THEN h<='1';

ELSIF a='1' OR b='1' THEN

      IF c='1' THEN h<='0';

      ELSE h<='1'; END IF;

ELSE h<='0'; END IF;

END PROCESS;

 

PROCESS(a,b,c)

BEGIN

IF c='1' THEN k<="11";

ELSIF b='1' THEN k<="10";

ELSIF a='1' THEN k<="01";

ELSE k<="00"; END IF;

END PROCESS;

 

END a1;

 

 

module tstif

(

      a,b,c,

      f,g,h,k

);

input a,b,c;

output f,g,h;

output[1:0] k;

 

reg f,g,h;

reg[1:0] k;

 

always @(a)

begin

if(a) f=1'b0;

else f=1'b1;

end

 

always @(a or b)

begin

if(a&b) g=1'b1;

else g=1'b0;

end

 

always @(a or b or c)

begin

if(a&b) h=1'b1;

else if(a|b)

      begin

      if(c) h=1'b0;

      else h=1'b1;

      end

else h=1'b0;

end

 

always @(a or b or c)

begin

if(c) k=2'b11;

else if(b) k=2'b10;

else if(a) k=2'b01;

else k=2'b00;

end

 

//assign f=a?1'b0:1'b1;

//assign g=(a&b)?1'b1:1'b0;

//assign h=(a&b)?1'b1:((a|b)?(c?1'b0:1'b1):1'b0);

//assign k=c?2'b11:(b?2'b10:(a?2'b01:2'b00));

endmodule

 

 

 

 

 

 

文章標籤
全站熱搜
創作者介紹
創作者 zeppe 的頭像
zeppe

ZEPPE

zeppe 發表在 痞客邦 留言(0) 人氣(57)