没有合适的资源?快使用搜索试试~ 我知道了~
EDA技术课后参考答案陈炳权曾庆立(供参考).pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 128 浏览量
2023-06-21
20:13:52
上传
评论
收藏 1.42MB PDF 举报
温馨提示
试读
29页
EDA技术课后参考答案陈炳权曾庆立(供参考).pdf
资源推荐
资源详情
资源评论
答案由个人做出,可能有不全或错误之处,欢迎大家批评指正。
第一章
1.EDA 的英文全称及其中文含义是什么?
答:EDA 是 Electronic Design Automation,其中文含义是“电子设计自动化”。
2.什么叫 EDA 技术?简述 EDA 技术的发展历程。
答:EDA 技术有狭义和广义之分,狭义 EDA 技术就是以大规模可编程逻辑器件为设计载体,
以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发
软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子
系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑
仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成
电子系统或专用集成芯片的一门新技术,或称为 IES/ASIC 自动设计技术。
3.简述用 EDA 技术设计电路的设计流程。
答 EDA 设计流程包括:设计准备、设计输入、设计处理、设计校验、器件编程、器件测试
和设计验证。
4.什么叫”综合”和”网表文件”?
答: (A)在电子设计领域中综合的概念可以表示为:将用行为和功能层次表达的电子系统转
换为低层次的便于具体实现的模块组合装配的过程。(1)从自然语言转换到 VHDL 语言算法
表示,即 自然语言综合。(2)从算法表示转换到寄存器 传输级(RegisterTransport Level,
RTL),即从行为域到结构域的综合,即行为综合。(3)从 RTL 级表示转换到逻 辑门(包括
触发器)的表示,即逻辑综合。(4)从逻辑门表示转换到版图表示(ASIC 设计),或转换到 FPGA
的配置网表 文件,可称为版图综合或结构综合。 综合在电子设计自动化中处于核心地位。
(B)文件是描述电路的连接关系的文件,一般以文本文件的形式存在。英文为 netlist
file 格式有 cdl, spice, aucdl...等
5. 从使用的角度来讲,EDA 技术主要包括几个方面的内容?这几个方面在整个电子系统的
设计中分别起什么作用?
答: EDA 技术的学习主要应掌握 4 个方面的内容:① 大规模可编程逻辑器件;② 硬件描述
语言;③ 软件开发工具;④ 实验开发系统。
6.目前流行的主流厂家的 EDA 的软件工具有哪些?比较这些 EDA 软件的差异。
答: (1)目前比较流行的主流厂家的 EDA 的软件工具有 Altera 的 MAX+plus II、Quartus II 、
Lattice 的 ispEXPERT、Xilinx 的 Foundation Series。
(2)Max+plus II 是 A1tera 公司推出的一个使用非常广泛的 EDA 软件工具,它支持原
理图、VHDL 和 Verilog 语言的文本文件,以及波形图与 EDIF 等格式的文件作为设计输入,
并支持这些文件的任意混合设计。它具有门级仿真器,可以进行功能仿真和时序仿真,能够
产生精确的仿真结果。在适配之后,Max+plus II 生成供时序仿真用的 Edif、VHDL 和 Verilog
3 种不同格式的网表文件。Max+plus II 界面友好,使用便捷,被誉为业界最易学易用的 EDA
软件,并支持主流的第三方 EDA 工具,支持除 APEx20K 系列之外的所有 A1tera 公司的 FPGA
/CPLD 大规模逻辑器件。
Quartus II 是 A1tera 公司新近推出的 EDA 软件工具,其设计工具完全支持 VHDL 和 Verilog
的设计流程,其内部嵌有 VHDL、Verilog 逻辑综合器。第三方的综合工具,如 Leonardo
Spectrum、Synplify pro 和 FPGA Compiler II 有着更好的综合效果,Quartus II 可以直接
调用这些第三方工具,因此通常建议使用这些工具来完成 VHDL/Verilog 源程序的综合。同
样,Quartus II 具备仿真功能,也支持第三方的仿真工具,如 Modelsim。此外,Quartus II
为 A1tera DSP 开发包进行系统模型设计提供了集成综合环境,它与 MATLAB 和 DSP Builder
结合可以进行基于 FPGA 的 DSP 系统开发,是 DSP 硬件系统实现的关键 EDA 工具。Quartus II
还可与 SOPC Builder 结合,实现 SOPC 系统开发。
ispExPERT 是 Lattice 公司的主要集成环境。通过它可以进行 VHDL、Verilog 及 ABEL 语言
的设计输入、综合、适配、仿真和在系统下载。ispExPERT 是目前流行的 EDA 软件中最容易
掌握的设计工具之一,它界面友好、操作方便、功能强大,并与第三方 EDA 工具兼容良好。
Foundation Series 是 Xilinx 公司较成熟的集成开发 EDA 工具。它采用自动化的、完整的
集成设计环境。Foundation 项目管理器集成 Xilinx 实现工具,并包含了强大的书馆 Synopsys
FPGA Express 综合系统,是业界最强大的 EDA 设计工具之一。
7. 简要阐述 EDA 技术的发展趋势和应用领域
答:从目前的 EDA 技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软
件功能强大。EDA 的范畴包括:机械、电子、通信、航空航天、化工、矿产、生物、医学、
军事等各个领域,都有 EDA 的应用。
第二章 VHDL 硬件描述语言
1、简述实体(ENTITY)、结构体(ARCHITECTURE)与原理图的关系。
答:结构来说 实体就是原理图的外观,结构体中的具体程序就是原理图中的具体实现。
2、子程序调用与元件例化有何区别,函数与过程在具体使用上有何不同。
答:从硬件角度讲,一个子程序的调用类似于一个元件模块的例化,VHDL 综合器为子程序
的每一次调用都生成一个电路逻辑块。所不同的是,元件的例化将产生一个新的设计层次,
而子程序调用只对应于当前层次的一部分。函数和过程的不同在于:函数只有一个输出,只
能通过函数体内的 RETURN 语句来实现,函数体内不能有信号赋值语句;而过程却可以有不
止一个输出,而且是通过过程体内的信号赋值语句或者变量赋值语句来实现的,过程体内的
RETURN 语句没有用处,因此不少过程都将其省略了。函数的调用只能通过表达式来实现,
过程的调用则是通过过程调用语句来实现的。
3、什么是重载函数?重载算符有何用处?如何调用重载算符函数。
答:(1)什么是重载函数? 根据操作对象变换处理功能。
(2)重载算符有何用处? 用于两个不同类型的操作数据自动转换成同种数据类型,并进
行运算处理。
(3)如何调用重载算符函数?采用隐式方式调用,无需事先声明。
4、在 VHDL 程序中配置有何用处?
答:配置可以把特定的结构体关联到一个确定的实体,正如配置一词本身的含义一样。配置
语句就是用来为较大的系统设计提供管理和工程组织的。配置也是 VHDL 设计实体中的一个
基本单元,在综合或仿真中,可以利用配置语句为确定整个设计提供许多有用信息。总之用
于设置 VHDL 的工作参数以及工作模式。配置用来选择实体的多个结构体的哪一个被使用。
5. 嵌套 BLOCK 的可视性规则是什么?以嵌套 BLOCK 的语句方式设计三个并列的 3 输
入或门。
答:BLOCK 是 VHD 中具有的一种划分机制,这种机制允许设计者合理地将一个模块分为
数个区域,在每个块都能对其局部信号、数据类型和常量加以描述和定义。任何能在结构体
的说明部分进行说明的对象都能在 BLOCK 说明部分中进行说明。
相关参考代码:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY triple_input IS
PORT (A :IN STD_LOGIC;
B :IN STD_LOGIC;
C :IN STD_LOGIC;
OUTA :OUT STD_LOGIC
);
END triple_input;
ARCHITECTURE ADO OF triple_input IS
BEGIN
OUTA<= A AND B AND C;
END ADO;
6.简述函数与过程的异同点,过程与进程的异同点。
答:子程序有两种类型,即过程(PROCEDURE)和函数(FUNCTION)。函数和过程都是串
行的。它们的区别在于:过程的调用可以通过其界面获得多个返回值,而函数只能返回一个
值;在函数入口中,所有参数都是输入参数,而过程有输入参数、输出参数和双向参数;过
程一般被看作一种语句结构,而函数通常是表达式的一部分;过程可以单独存在,而函数通
常作为语句的一部分调用。过程和进程的相同点:只能使用顺序语句,可以单独存在。不同
点:过程不能像进程那样可以从本结构体的其他块或进程结构中直接读取信号值或者信号赋
值。
7、判断下列 VHDL 标识符是否合法,如果不合法则指出原因:16#0FA#,10#12F#,8#789#,
8#356#,2#0101010#,74HC245,, ,CLR/RESET,, , D100%。
答:识符用法规定:(1)只能包含英文字母,数字,下划线(2)标识符的首字符只能是字
母。故:
(1)16#0FA#错在首字符是数字,且包含非法字符“#“。 10#12F#、8#789#,8#356#,
2#0101010#,74HC245 也是犯同一错误。
(2)) 都是非法,包含非法字符….
8、讨论数据对象信号与变量间的异同处,说明它们的使用对所形成的硬件结构有何影响。
答:在 VHDL 中,对象是指用来保持数据的一些客体单元。信号跟变量是 VHDL 中的重要客体。
信号是指在设计实体中数据交换的一种手段,采用信号对象可以把设计实体连接在一起形成
模块。在硬件电路中代表一条硬件连线,有时信号会被综合成一个寄存器。变量主要是对暂
时数据进行局部存储,它是一个局部量。信号与变量在使用前都必需先声明后使用,否则会
产生编译错误。信号可以 architecture、package、entitiy 中声明,是全局量可以在全局
使用。变量可以 process、function、procedure 中声明,也只能在 process、function、
procedur 中使用不是全局变量。他们之间的主要区别有:信号赋值至少要有 δ 延时;而变
量赋值没有。信号除当前值外有许多相关的信息,如历史信息和投影波形;而变量只有当前
值。进程对信号敏感而不对变量敏感。信号可以是多个进程的全局信号;而变量只在定义他
们的顺序域可见(共享变量除外)。信号是硬件中连线的抽象描述,他们的功能是保存变化
的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,
他们用于硬件特性的高层次建模所需要的计算中。
从综合后所对应的硬件电路结构来看,信号一般将对应更多的硬件结构,但在许多情况
下,信号和变量并没有什么区别。例如在满足一定条件的进程中,综合后它们都能引入寄存
器。这时它们都具有能够接受赋值这一重要的共性,而 VHDL 综合器并不理会它们在接受赋
值时存在的延时特性。
9. 运算符重载函数通常要调用转换函数,以便能够利用已有的数据类型。下面给出一个新
的数据类型 AGE,并且下面的转换函数已经实现:function CONV_INTEGER(ARG:AGE)
return INTEGER;请仿照本章中的例子,利用此函数编写一个“+”运算符重载函数,支持
下面的运算:SIGNAL a,c : AGE;
...
c <= a + 20;
答:
function “+”(L : AGE, R: integer) return AGE is
Begin
return CONV_AGE(L + CONV_INTEGER(R));
End;
10、设计 16 位比较器,比较器的输入是 2 个待比较的 16 位数:A=[A15…A0], B=[B15…B0],
输出是 D、E、F。当 A=B 时, D=1;当 A>B 时, E=1;当 A<B 时,F=1(参考方法:
用常规的比较器设计方法,即直接利用关系操作符进行编程设计,或者利用减法器来完成,
通过减法运算后的符号和结果来判别两个被比较值的大小)。
答:略
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity compare is
port(a: in std_logic_vector(16 downto 0);
b: in std_logic_vector(16 downto 0);
X,Y,Z: out std_logic);
end compare;
architecture behave of compare is
begin
process(a,b)
begin
if (a > b) then
X <='1';
Y <='0';
Z <='0';
elsif(a < b) then
X <='0';
Y <='1';
Z <='0';
ELSE
X <='0';
Y <='0';
Z <='1';
end if;
end process;
end behave;
11. 在 VHDL 编程中,为什么应尽可能使用子类型对类型的取值范围给予限定。
答:由于子类型与其基本数据类型属同一数据类型,因此属于子类型的和属于基本数据 类
型的数据对象间的赋值和被赋值可以直接进行,不必进行数据类型的转换。利用子类型定义
数据对象的好处是,除了使程序提高可读性和易处理外,其实质性的好处还在于有利于提高
综合的优化效率,这是因为综合器可以根据子类型所设的约束范围,有效地推知参与综合的
寄存器的最合适的数目。
12、判断下面 3 例 VHDL 程序中是否有错误,若有错误则指出错误原因:
程序 1
Signal A, EN : std_logic;
Process (A, EN)
Variable B : std_logic;
Begin
if EN =‘ 1 ’then
B <= A;
end if;
end process;
程序 2
Architecture one of sample is
variable a, b, c : integer;
begin
c <= a + b;
end;
程序 3
library ieee;
use ieee.std_logic_1164.all;
entity mux21 is
port ( a, b : in std_logic;
sel : in std_logic;
c : out std_logic;); ①
end sam2;②
architecture one of mux21 is
begin③
if sel = '0' then c := a;else c := b;end if;④
⑤
end two;⑥
答:
程序 1: 将“B<=A”改成“B:=A”
程序 2:-将“c<=a+b”改成“c:=a+b”
程序 3: ①将“;)”改成“)”② 将“sam2”改成“entity mux21”③ 增加“process(a,b,sel) begin④if
sel= '0' then c:=a; else c:=b; end if; --应改成“if sel= '0' then c<=a; else c<=b; end if;”⑤增加
“end process;”⑥ 将“two”改成“architecture one”
13、分别用 CASE 语句和 IF 设计 3-8 译码器。
答:CASE 语句:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
剩余28页未读,继续阅读
资源评论
hhappy0123456789
- 粉丝: 62
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功