基本實驗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
|
