- 相关推荐
EDA技术与应用课后习题答案大全
END IF;
END PROCESS;
PR02:PROCESS(s1)
BEGIN
IF s1=”0” THEN outy<=a1;
ELSE outy<=tmp;
END IF;
END PROCESS;
END ARCHITECTURE ONE;
END CASE;
4-4.下图是一个含有上升沿触发的D触发器的时序电路,试写出此电路的VHDL设计文件。
4-4.答案
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MULTI IS
PORT(CL:IN STD_LOGIC; --输入选择信号
CLK0:IN STD_LOGIC; --输入信号
OUT1:OUT STD_LOGIC);--输出端
END ENTITY;
ARCHITECTURE ONE OF MULTI IS
SIGNAL Q : STD_LOGIC;
BEGIN
PR01: PROCESS(CLK0)
BEGIN
IF CLK ‘EVENT AND CLK=’1’
THEN Q<=NOT(CL OR Q);ELSE
END IF;
END PROCESS;
PR02: PROCESS(CLK0)
BEGIN
OUT1<=Q;
END PROCESS;
END ARCHITECTURE ONE;
END PROCESS;
4-5.给出1位全减器的VHDL描述。要求:
(1) 首先设计1位半减器,然后用例化语句将它们连接起来,图3-32中h_suber是半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。
(2) 以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计(减法运算是 x – y - sun_in = diffr)
4-5.答案
底层文件1:or2a.VHD实现或门操作
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY or2a IS
PORT(a,b:IN STD_LOGIC;
c:OUT STD_LOGIC);
END ENTITY or2a;
ARCHITECTURE one OF or2a IS
BEGIN
c <= a OR b;
END ARCHITECTURE one;
底层文件2:h_subber.VHD实现一位半减器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY h_subber IS
PORT(x,y:IN STD_LOGIC;
diff,s_out::OUT STD_LOGIC);
END ENTITY h_subber;
ARCHITECTURE ONE OF h_subber IS
SIGNAL xyz: STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
xyz <= x & y;
PROCESS(xyz)
BEGIN
CASE xyz IS
WHEN "00" => diff<='0';s_out<='0';
WHEN "01" => diff<='1';s_out<='1';
WHEN "10" => diff<='1';s_out<='0';
WHEN "11" => diff<='0';s_out<='0';
WHEN OTHERS => NULL;
END CASE;
END PROCESS;
END ARCHITECTURE ONE;
顶层文件:f_subber.VHD实现一位全减器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY f_subber IS
PORT(x,y,sub_in:IN STD_LOGIC;
diffr,sub_out:OUT STD_LOGIC);
END ENTITY f_subber;
ARCHITECTURE ONE OF f_subber IS
COMPONENT h_subber
PORT(x,y:IN STD_LOGIC;
diff,S_out:OUT STD_LOGIC);
END COMPONENT;
COMPONENT or2a
PORT(a,b:IN STD_LOGIC;
c:OUT STD_LOGIC);
END COMPONENT;
SIGNAL d,e,f: STD_LOGIC;
BEGIN
u1: h_subber PORT MAP(x=>x,y=>y,diff=>d,s_out=>e);
u2: h_subber PORT MAP(x=>d,y=>sub_in,diff=>diffr,s_out=>f);
u3: or2a PORT MAP(a=>f,b=>e,c=>sub_out);
END ARCHITECTURE ONE;
END ARCHITECTURE ART;
4-6.根据下图,写出顶层文件MX3256.VHD的VHDL设计文件。
4-6.答案
MAX3256顶层文件
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY MAX3256 IS
PORT (INA,INB,INCK: IN STD_LOGIC;
INC: IN STD_LOGIC;
E,OUT:OUT STD_LOGIC);
END ENTITY MAX3256;
ARCHITECTURE ONE OF MAX3256 IS
COMPONENT LK35 --调用LK35声明语句
PORT(A1,A2:IN STD_LOGIC;
CLK:IN STD_LOGIC;
Q1,Q2:OUT STD_LOGIC);
END COMPONENT;
COMPONENT D --调用D触发器声明语句
PORT(D,C:IN STD_LOGIC;
CLK:IN STD_LOGIC;
Q:OUT STD_LOGIC);
END COMPONENT;
COMPONENT MUX21--调用二选一选择器声明语句
PORT(B,A:IN STD_LOGIC;
S:IN STD_LOGIC;
C:OUT STD_LOGIC);
END COMPONENT;
SIGNAL AA,BB,CC,DD: STD_LOGIC;
BEGIN
u1: LK35 PORT MAP(A1=>INA,A2=>INB,CLK=INCK, Q1=>AA,Q2=>BB);
u2: D PORT MAP(D=>BB;CLK=>INCK,C=>INC,Q=>CC);
u3: LK35 PORT MAP (A1=>BB,A2=>CC,CLK=INCK, Q1=>DD,Q2=>OUT1);
u4: MUX21 PORT MAP (B=>AA,A=>DD,S=>BB,C=>E);
END ARCHITECTURE ONE;
设计含有异步清零和计数使能的16位二进制加减可控计数器。
4-7.答案:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT16 IS
PORT(CLK,RST,EN:IN STD_LOGIC;
CHOOSE:IN BIT;
SETDATA:BUFFER INTEGER RANCE 65535 DOWNTO 0;
COUT: BUFFER INTEGER RANCE 65535 DOWNTO 0);
END CNT16;
ARCHITECTURE ONE OF CNT16 IS
BEGIN
PROCESS(CLK,RST,SDATA)
VARIABLE QI:STD_LOGIC_VECTOR(65535 DOWNTO 0);
BEGIN
IF RST='1' THEN --计数器异步复位
QI:=(OTHERS=>'0');
ELSIF SET=’1’ THEN--计数器一步置位
QI:=SETDATA;
ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿
IF EN=’1’ THEN –检测是否允许计数
IF CHOOSE=’1’ THEN --选择加法计数
QI:=QI+1; --计数器加一
ELSE QI=QI-1; --计数器加一
END IF;
END IF;
END IF;
COUT<=QI;--将计数值向端口输出
END PROCESS;
END ONE;
第五章
5-1 归纳利用Quartus II进行VHDL文本输入设计的流程:从文件输入一直到SignalTap II测试。P95~P115
答:1 建立工作库文件夹和编辑设计文件;2 创建工程;3 编译前设置;4 全程编译;5 时序仿真;6 引脚锁定;7 配置文件下载;8 打开SignalTap II编辑窗口;9 调入SignalTap II的待测信号;10 SignalTap II参数设置;11 SignalTap II参数设置文件存盘;12 带有SignalTap II测试信息的编译下载;13 启动SignalTap II进行采样与分析;14 SignalTap II的其他设置和控制方法。
第六章
6-1 什么是固有延时?什么是惯性延时?P150~151
答:固有延时(Inertial Delay)也称为惯性延时,固有延时的主要物理机制是分布电容效应。
6-2 δ是什么?在VHDL中,δ有什么用处?P152
δ是什么? 答:在VHDL仿真和综合器中,默认的固有延时量(它在数学上是一个无穷小量),被称为δ延时。
在VHDL中,δ有什么用处?答:在VHDL信号赋值中未给出固有延时情况下,VHDL仿真器和综合器将自动为系统中的信号赋值配置一足够小而又能满足逻辑排序的延时量δ;使并行语句和顺序语句中的并列赋值逻辑得以正确执行。
6-4 说明信号和变量的功能特点,以及应用上的异同点。P128~P129
答:变量:变量是一个局部量,只能在进程和子程序中使用。变量不能将信息带出对它做出定义的当前结构。变量的赋值是一种理想化的数据传输,是立即发生的,不存在任何延时行为。变量的主要作用是在进程中作为临时的数据存储单元。
信号:信号是描述硬件系统的基本数据对象,其性质类似于连接线;可作为设计实体中并行语句模块间的信息交流通道。信号不但可以容纳当前值,也可以保持历史值;与触发器的记忆功能有很好的对应关系。
6-5 在VHDL设计中,给时序电路清零(复位)有两种力方法,它们是什么?
解:设Q定义成信号,一种方法:Q<=“000…000”; 其中“000…000”反映出信号Q的位宽度。第二种方法:Q<=(OTHERS=>‘0’);其中OTHERS=>‘0’不需要给出信号Q的位宽度,即可对Q清零。
6-6 哪一种复位方法必须将复位信号放在敏感信号表中?给出这两种电路的VHDL描述。
解:边沿触发复位信号要将复位信号放在进程的敏感信号表中。
(1)边沿触发复位信号
…………………….
ARCHITECTURE bhv 0F DFF3 IS
SIGNAL QQ:STD_LOGIC;
BEGIN
PROCESS(RST)
BEGIN
IF RST’EVENT AND RST=‘1' THEN
QQ<=(Others=>‘0’);
END IF;
END PROCESS;
Q1<=QQ;
END;
………………………
(2)电平触发复位信号
…………………….
ARCHITECTURE bhv 0F DFF3 IS
SIGNAL QQ:STD_LOGIC;
BEGIN
PROCESS(CLK)
BEGIN
IF RST=‘1' THEN
QQ<=(Others=>‘0’);
END IF;
END PROCESS;
Q1<=QQ;
END;
………………………
6-7 什么是重载函数?重载算符有何用处?如何调用重载算符函数?
答:(1)什么是重载函数? 根据操作对象变换处理功能。
(2)重载算符有何用处? 用于两个不同类型的操作数据自动转换成同种数据类型,并进行运算处理。
(3)如何调用重载算符函数?采用隐式方式调用,无需事先声明。