发布时间 : 星期三 文章EDA技术实用教程课后答案 - 潘松-黄继业更新完毕开始阅读
END COMPONENT;
COMPONENT DFF6 --调用电平型D触发器声明语句 PORT(CLK: IN STD_LOGIC; D: IN STD_LOGIC; Q:OUT STD_LOGIC); END COMPONENT;
SIGNAL DD: STD_LOGIC; --定义1个信号作为内部的连接线。 BEGIN
u1: mux21a PORT MAP(CLK,D2,D1,DD); u2: DFF6 PORT MAP(CLK,DD,Q); END ARCHITECTURE one;
图3-20 RTL图(d)
--解1:实现图3-20(d)RTL图的VHDL程序DFF_PRE.vhd底层设计描述 -- 带预置、清零和输出使能的D触发器程序(DFF_PRE.vhd)。 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF_PRE_CLR_ENA IS PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE : IN STD_LOGIC; CLR : IN STD_LOGIC); END;
ARCHITECTURE bhv OF DFF_PRE_CLR_ENA IS
SIGNAL Q1:STD_LOGIC; --类似于在芯片内部定义一个数据的暂存节点 BEGIN
PROCESS(CLK,D,Q1,ENA,PRE,CLR) BEGIN
IF CLR='1' THEN Q1<='0'; ELSIF PRE='1' THEN Q1<='1';
ELSIF CLK'EVENT AND CLK='1' AND ENA='1' THEN Q1<=D; END IF;
--IF EN='1' THEN Q<=Q1; --将内部的暂存数据向端口输出 --END IF;
Q<=Q1; --将内部的暂存数据向端口输出 END PROCESS; END bhv;
--解2:实现图3-20(d)RTL图的VHDL程序t3_12_d.vhd顶层设计描述 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY t3_12_d IS
PORT(SET,D,CLK,EN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC); END ENTITY t3_12_d;
ARCHITECTURE one OF t3_12_d IS
COMPONENT DFF_PRE_CLR_ENA --调用D触发器声明语句 PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE : IN STD_LOGIC; CLR : IN STD_LOGIC); END COMPONENT;
SIGNAL SS: STD_LOGIC; --定义1个信号作为内部的连接线。 BEGIN
SS<=SET AND (NOT RESET);
u1: DFF_PRE_CLR_ENA PORT MAP(CLK,D,Q,EN,SS,RESET); END ARCHITECTURE one;
图3-20 RTL图(e)
--解1:实现图3-20(e)RTL图的VHDL程序DFF_PRE_CLR.vhd底层设计描述 -- 带预置、清零和输出使能的D触发器程序(DFF_PRE_CLR.vhd) LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF_PRE_CLR_ENA IS PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE : IN STD_LOGIC; CLR : IN STD_LOGIC); END;
ARCHITECTURE bhv OF DFF_PRE_CLR_ENA IS
SIGNAL Q1:STD_LOGIC; --类似于在芯片内部定义一个数据的暂存节点
BEGIN
PROCESS(CLK,D,Q1,ENA,PRE,CLR) BEGIN
IF CLR='1' THEN Q1<='0'; ELSIF PRE='1' THEN Q1<='1';
ELSIF CLK'EVENT AND CLK='1' AND ENA='1' THEN Q1<=D; END IF;
--IF EN='1' THEN Q<=Q1; --将内部的暂存数据向端口输出 --END IF;
Q<=Q1; --将内部的暂存数据向端口输出 END PROCESS; END bhv;
--解2:实现图3-20(e)RTL图的VHDL程序t3_12_d.vhd顶层设计描述 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY t3_12_e IS
PORT(D,EN,CLK,RST : IN STD_LOGIC; Q1,Q : OUT STD_LOGIC); END ENTITY t3_12_e;
ARCHITECTURE one OF t3_12_e IS
COMPONENT DFF_PRE_CLR_ENA --调用D触发器声明语句 PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE : IN STD_LOGIC; CLR : IN STD_LOGIC); END COMPONENT;
SIGNAL D_EN: STD_LOGIC; --定义1个信号作为内部的连接线。 BEGIN
D_EN<=D AND EN;
u1: DFF_PRE_CLR_ENA PORT MAP(CLK=>CLK,D=>D,Q=>Q,ENA=>EN,PRE=>'0',CLR=>RST); Q1<=(NOT D_EN) OR RST; END ARCHITECTURE one;
图3-20 RTL图(f)
--解1:实现图3-20(f)RTL图的VHDL程序mux21a.vhd底层设计描述
-- 用WHEN_ELSE实现2选1多路选择器程序(mux21a.vhd) LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21a IS
PORT(a,b : IN STD_LOGIC; s : IN STD_LOGIC; y : OUT STD_LOGIC); END ENTITY mux21a;
ARCHITECTURE one OF mux21a IS BEGIN
y<=a WHEN s='0' ELSE b; END ARCHITECTURE one;
--解2:实现图3-20(f)RTL图的VHDL程序DFF_PRE_CLR.vhd底层设计描述 -- 带预置、清零和输出使能的上升沿D触发器程序(DFF_PRE_CLR.vhd) LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF_PRE_CLR_ENA IS PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE : IN STD_LOGIC; CLR : IN STD_LOGIC); END;
ARCHITECTURE bhv OF DFF_PRE_CLR_ENA IS
SIGNAL Q1:STD_LOGIC; --类似于在芯片内部定义一个数据的暂存节点 BEGIN
PROCESS(CLK,D,Q1,ENA,PRE,CLR) BEGIN
IF CLR='1' THEN Q1<='0'; ELSIF PRE='1' THEN Q1<='1';
ELSIF CLK'EVENT AND CLK='1' AND ENA='1' THEN Q1<=D; END IF;
--IF EN='1' THEN Q<=Q1; --将内部的暂存数据向端口输出 --END IF;
Q<=Q1; --将内部的暂存数据向端口输出 END PROCESS; END bhv;
--解3:实现图3-20(f)RTL图的VHDL程序t3_12_d.vhd顶层设计描述 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY t3_12_f IS
PORT(RST,D,CLK : IN STD_LOGIC; Q,DOUT : OUT STD_LOGIC);