二,利用quartus2软件及VHDL语言设计组合逻辑电路 双2选1多路选择器先做2选1
ENTITY mux21a IS PORT ( a, b, s: IN BIT;
y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = \'0\' THEN
y
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY muxk ISPORT(a1,a2,a3,s0,s1:I outy:OUT BIT); END ENTITY muxk; ARCHITECTURE fd OF muxk ISCOMPONENT mua21a PORT(a,b,s:IN BIT;
y:OUT BIT) END COMPONENT; SIGNAL temp:BIT BEGIN u1:mux21a PORT MAP(a=>a2,b=>a3,s=>s0,y=>temp);
u2:mux21a
PORT
MAP(a=>a1,b=>temp,s=>s1,y=>outy);
END ARCHITECTURE fd;输入全是高电平,,观察输出
输出如下
为高电平
当s1=1 s0=0 a1 a2 a3 如下图所示观察输出
输出波形为输出为a2
三.利用Quartus2软件及VHDL语言设计时序逻辑电路 1.LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 I PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 I SIGNAL Q1 : STD_LOGIC ;
--类似于在芯片内部定义一个数据的暂存节点 BEGI PROCESS (CLK,Q1)BEGIN IF CLK\'EVENT AND CLK = \'1\'
THEN Q1
END PROCESS ;Q
--将内部的暂存数据向端口输出(双横线--是注释符号)END bhv;
四.Quartus2软件及VHDL设计同步或异步时序电路
利用USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC;
CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT : OUT STD_LOGIC );
END CNT10ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST = \'1\' THEN
CQI := (OTHERS =>\'0\') ; --计数器异步复位
ELSIF CLK\'EVENT AND CLK=\'1\' THEN
--检测时钟上升沿IF EN = \'1\' THEN
--检测是否允许计数(同步使能) IF CQI
CQI := CQI + 1;
--允许计数, 检测是否小于9
ELSE
CQI := (OTHERS =>\'0\');
--大于9,计数值清零
END IF; END IF; END IF;
IF CQI = 9 THEN COUT
--计数大于9,输出进位
ELSE
COUT
CQ
--将计数值向端口输出
END PROCESS;END behav;
输出
七段数码
状态机 输入01
输出