- 相关推荐
EDA技术与应用课后习题答案
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的其他设置和控制方法。
5.6
5.7
5.8
5.9
5.10
5.12
5.13
5.14
第六章
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)如何调用重载算符函数?采用隐式方式调用,无需事先声明。
6-8 判断下面三个程序中是否有错误,若有则指出错误所在,并给出完整程序。
程序1:
Signal A,EN : std_logic;
…………………
Process(A, EN)
Variable B: std_log ic;
Begin
if EN=l then B<=A; end if; --将“B<=A”改成“B:=A”
end process;
程序2:
Architecture one of sample is
variable a,b,c:integer;