资源描述
2014年 EDA技术期末复习 重点
复习重点第一部分:第四章和第五章的讲过的例题与课后作业题(见作业的参考答案)
EDA技术实用教程
潘松 黄继业
第四章
4-1:画出与下例实体描述对应的原理图符号元件:
ENTITY buf3s IS -- 实体1:三态缓冲器
PORT (input : IN STD_LOGIC ; -- 输入端
enable : IN STD_LOGIC ; -- 使能端
output : OUT STD_LOGIC ) ; -- 输出端
END buf3x ;
ENTITY mux21 IS --实体2: 2选1多路选择器
PORT (in0, in1, sel : IN STD_LOGIC;
output : OUT STD_LOGIC);
4-1.答案
4-2. 图4-37所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程序。选择控制的信号s1和s0的数据类型为STD_LOGIC_VECTOR;当s1='0',s0='0';s1='0',s0='1';s1='1',s0='0'和s1='1',s0='1'分别执行y<=a、y<=b、y<=c、y<=d。
4-2.答案
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUX41 IS
PORT(s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --输入选择信号
a,b,c,d:IN STD_LOGIC; --输入信号
y:OUT STD_LOGIC);--输出端
END ENTITY;
ARCHITECTURE ART OF MUX41 IS
BEGIN
PROCESS(s)
BEGIN
IF (S="00") THEN y<=a;
ELSIF (S="01") TH EN y<=b;
ELSIF (S="10") TH EN y<=c;
ELSIF (S="11") TH EN y<=d;
ELSE y<=NULL;
END IF;
EDN PROCESS;
END ART;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUX41 IS
PORT(s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --输入选择信号
a,b,c,d:IN STD_LOGIC; --输入信号
y:OUT STD_LOGIC);--输出端
END MUX41;
ARCHITECTURE ART OF MUX41 IS
BEGIN
PROCESS(s)
BEGIN
CASE s IS
WHEN “00” => y<=a;
WHEN “01” => y<=b;
WHEN “10” => y<=c;
WHEN “11” => y<=d;
WHEN OTHERS =>NULL;
END CASE;
END PROCESS;
END ART;
4-3. 图4-38所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当s='0'和'1'时,分别有y<='a'和y<='b'。试在一个结构体中用两个进程来表达此电路,每个进程中用CASE语句描述一个2选1多路选择器MUX21A。
4-3.答案
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUX221 IS
PORT(a1,a2,a3:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --输入信号
s0,s1:IN STD_LOGIC;
outy:OUT STD_LOGIC);--输出端
END ENTITY;
ARCHITECTURE ONE OF MUX221 IS
SIGNAL tmp : STD_LOGIC;
BEGIN
PR01:PROCESS(s0)
BEGIN
IF s0=”0” THEN tmp<=a2;
ELSE tmp<=a3;
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.下图4-39是一个含有上升沿触发的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.根据图4-41,写出顶层文件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;
4-7 用例化语句写出下图所示的的顶层文件
1、首先编写底层元件adder_1,使其为带使能控制端口的半加器。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY adder_1 IS
PORT (a, b : IN STD_LOGIC;
co, so : OUT STD_LOGIC);
END ENTITY adder_1;
ARCHITECTURE fh1 OF adder_1 is
BEGIN
so <= NOT(a XOR (NOT b)) ;
co <= a AND b ;
END ARCHITECTURE fh1;
2、使用VHDL元件例化语句完成下图所示的顶层文件
library ieee;
use ieee.std_logic_1164.all;
ENTITY adder_2 is
port(a1,a0,b1,b0,ci:in std_logic;
s1,s2,co:out std_logic);
end adder_2;
architecture one of adder_2 is
component adder_1
port(x,y,cin:in std_logic;
cout,sum:out std_logic);
end component;
signal temp:std_logic;
begin
u1:adder_1 port map(x=>a1,y=>a0,cin=>ci,sum=>s1;cout=>temp);
u2:adder_1 port map(x=>b1,y=>b0,cin=>temp,sum=>s2;cout=>co);
end one;
第五章
5-1 什么是固有延时?什么是惯性延时?P139
答:固有延时(Inertial Delay)也称为惯性延时,固有延时的主要物理机制是分布电容效应。
5-2 δ是什么?在VHDL中,δ有什么用处?P140
δ是什么? 答:在VHDL仿真和综合器中,默认的固有延时量(它在数学上是一个无穷小量),被称为δ延时。
在VHDL中,δ有什么用处?答:在VHDL信号赋值中未给出固有延时情况下,VHDL仿真器和综合器将自动为系统中的信号赋值配置一足够小而又能满足逻辑排序的延时量δ;使并行语句和顺序语句中的并列赋值逻辑得以正确执行。
5-4 说明信号和变量的功能特点,以及应用上的异同点。P117~P118
答:变量:变量是一个局部量,只能在进程和子程序中使用。变量不能将信息带出对它做出定义的当前结构。变量的赋值是一种理想化的数据传输,是立即发生的,不存在任何延时行为。变量的主要作用是在进程中作为临时的数据存储单元。
信号:信号是描述硬件系统的基本数据对象,其性质类似于连接线;可作为设计实体中并行语句模块间的信息交流通道。信号不但可以容纳当前值,也可以保持历史值;与触发器的记忆功能有很好的对应关系。
5-5 在VHDL设计中,给时序电路清零(复位)有两种力方法,它们是什么?
解:设Q定义成信号,一种方法:Q<=“000…000”; 其中“000…000”反映出信号Q的位宽度。第二种方法:Q<=(OTHERS=>‘0’);其中OTHERS=>‘0’不需要给出信号Q的位宽度,即可对Q清零。
5-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;
………………………
5-7 什么是重载函数?重载算符有何用处?如何调用重载算符函数?
答:(1)什么是重载函数? 根据操作对象变换处理功能。
(2)重载算符有何用处? 用于两个不同类型的操作数据自动转换成同种数据类型,并进行运算处理。
(3)如何调用重载算符函数?采用隐式方式调用,无需事先声明。
5-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;
begin
c<=a+b; --将“c<=a+b”改成“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_loglc;c:out std_logle;); --将“;)”改成“)”
end sam2; --将“sam2”改成“entity mux21”
architecture one of mux2l is
begin
--增加“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;”
end two; --将“two”改成“architecture one”
5-9 设计含有异步清零和计数使能的16位二进制加减可控计数器。
5-9.答案:
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;
复习重点第二部分:一下为本书中必须掌握的主要知识点,大家对照课本进行总结,深入领会
1、 从执行方式看VHDL的描述语句包括那些描述语句?
2、 目前流行的硬件描述语言有那些?。
3、 MAX+PLUS2中各种文件的扩展名有哪些?
4、 基于MAX+PLUS2的设计流程
5、 目前较流行的EDA设计软件有那些?;
6、 可编程逻辑器件的分类?按照变成工艺分哪些类。
VHDL程序设计中常用的库有那些?哪些库是显式(默认打开的)的,哪些是隐式的?设计的现行工作库是什么?
7、 程序包由那两部分组成?分别有什么作用?
8、 常用的预定义程序包有哪些?如何调用?
9、 目前国际上较大的EDA器件制造公司有那些?
10、 VHDL常用的预定义数据类型有哪几种,分别在哪些程序包中?如何调用?
11、 数据类型的转换有哪几种方法?
12、 可以构成标识符的字符有?
13、 可编程器件(PLD)分为哪两类
14、 标准逻辑位数据类型常用的数值有哪几种?
15、 完整的条件语句将产生什么电路,不完整的条件语句将产生什么电路。
16、 信号和变量有什么区别?P121
17、 VHDL作为工业标准,是由那个机构制定并公布的。
18、 实体部分的端口模式有四个类型。
19、 从执行方式看VHDL的基本描述语句包括哪两大基本描述语句?
20、 VHDL文件存盘时,其主文件名应与实体名一致,扩展名应为什呢
21、 硬件描述语言(HDL)的种类很多?
22、 EDA技术的含义。
23、 目前较流行的集成EDA开发环境(软件)有那些?
24、 简述EDA技术的CPLD/FPGA的设计流程。
25、 写出实体中的PORT语句结构并说明其作用。
26、 简述EDA技术经历了那几个发展阶段。
27、 写出元件例化语句语句格式,并说明其作用。
28、 试比较图形输入法和文本输入法有何优缺点?
29、 结构体的语言格式与作用。
30、 写出PROCESS语句结构的一般表达格式?
31、 进程语句的设计(或使用)要点?P140
32、 并行信号赋值语句有哪几种?其语句格式为何?
33、 EDA技术常用的输入方法有?
34、 什么是实体和结构体,其功能是什么?,
35、 MAX+pulsⅡ的原理图输入法、文本输入法、波形输入法生成的文件扩展名为?
36、 VHDL的操作符有那几大类?每一类的操作符分别是什么?每一类操作符可以对那些数据进行操作(运算)?
37、 VHDL操作符的优先级?
38、 结构体常见的功能语句有那些?
39、 子程序分为那两类,其结构为什么。P152-153
40、 VHDL的标识符由什么构成。
41、 CASE语句的一般形式?在使用当中的注意事项。P125-126
42、 试着比较IF和CASE语句的差异?P127
43、 FOR循环语句的一般形式?P127
44、 VHDL数据对象有哪几种?其语句格式如何
45、 变量和信号的区别?
46、 VHDL常用的数据有哪些?枚举型的数据类型?
47、 实现时序电路和逻辑组合电路分别用什么语句实现,分别写出他们的一般表式。
49、 写出实体、结构体的一般语句结构并说明其作用。
50、 简述VHDL中顺序语句有哪些?并行语句有哪些?
52、 试写出四种IF语句的语句结构。
53 转向控制语句有哪几种? P123
54 什么是重载操作符?常用的重载操作符定义在那个程序包中?
55 什么是重载函数,什么是重载过程
56 进程语句的要点?
57 信号幅值和变量赋值的区别?
58 利用EDA技术进行电子系统设计的最终目标是完成 的设计和实现
展开阅读全文