EDA技术实用教程(第四版)》习题答案

更新时间:2024-04-30 20:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《EDA技术实用教程(第四版)》习题

1 习 题

1-1 EDA技术与ASIC设计和FPGA开发有什么关系?FPGA在ASIC设计中有什么用途?P3~4

1-2 与软件描述语言相比,VHDL有什么特点? P6

l-3 什么是综合?有哪些类型?综合在电子设计自动化中的地位是什么? P5 1-4 在EDA技术中,自顶向下的设计方法的重要意义是什么? P7~10 1-5 IP在EDA技术的应用和发展中的意义是什么? P22~14

1-6 叙述EDA的FPGA/CPLD设计流程,以及涉及的EDA工具及其在整个流程中的作用。 (P11~13)

2 习 题

2-1 OLMC(输出逻辑宏单元)有何功能?说明GAL是怎样实现可编程组合电路与时序电路的。 P34~36

2-2 什么是基于乘积项的可编程逻辑结构? P33~34,40 什么是基于查找表的可编程逻辑结构? P40~41

2-3 FPGA系列器件中的LAB有何作用? P43~45 2-5 解释编程与配置这两个概念。 P58

2-6 请参阅相关资料,并回答问题:按本章给出的归类方式,将基于乘积项的可编程逻辑结构的PLD器件归类为CPLD;将基于查找表的可编程逻辑结构的PLD器什归类为FPGA,那么,APEX系列属于什么类型PLD器件? MAX II系列又属于什么类型的PLD器件?为什么? P54~56

3 习 题

3-1 画出与以下实体描述对应的原理图符号元件: ENTITY buf3s IS --实体1:三态缓冲器 PORT(input:IN STD_LOGIC; --输入端 enable:IN STD_LOGIC; --使能端 output:OUT STD_LOGIC); --输出端 END buf3s ;

buf3s input output enable ENTITY mux21 IS --实体2: 2选1多路选择器 PORT(in0, in1,sel: IN STD_LOGIC; output:OUT STD_LOGIC);

mux21 in0 output in1 sel 3-2 图3-16所示的是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。

图3-16 4选1多路选择器

--解1:用IF_THEN语句实现4选1多路选择器 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS

PORT (a,b,c,d: IN STD_LOGIC; s0: IN STD_LOGIC; s1: IN STD_LOGIC; y: OUT STD_LOGIC); END ENTITY mux41;

ARCHITECTURE if_mux41 OF mux41 IS

SIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);--定义标准逻辑位矢量数据 BEGIN

s0s1<=s1&s0; --s1相并s0,即s1与s0并置操作 PROCESS(s0s1,a,b,c,d) BEGIN

IF s0s1 = \ THEN y <= a; ELSIF s0s1 = \ THEN y <= b; ELSIF s0s1 = \ THEN y <= c; ELSE y <= d; END IF;

END PROCESS;

END ARCHITECTURE if_mux41;

--解2:用CASE语句实现4选1多路选择器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS

PORT (a,b,c,d: IN STD_LOGIC; s0: IN STD_LOGIC; s1: IN STD_LOGIC; y: OUT STD_LOGIC); END ENTITY mux41;

ARCHITECTURE case_mux41 OF mux41 IS

SIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);--定义标准逻辑位矢量数据类型 BEGIN

s0s1<=s1&s0; --s1相并s0,即s1与s0并置操作 PROCESS(s0s1,a,b,c,d) BEGIN

CASE s0s1 IS --类似于真值表的case语句 WHEN \ => y <= a; WHEN \ => y <= b; WHEN \ => y <= c; WHEN \ => y <= d; WHEN OTHERS =>NULL ; END CASE; END PROCESS;

END ARCHITECTURE case_mux41;

3-3 图3-17所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当s=’0’和s=’1’时,分别有y<=‘a’和y<=’b’。试在一个结构体中用两个进程来表达此电路,每个进程中用CASE语句描述一个2选1多路选择器MUX21A。

图3-17 含2选1多路选择器的模块

--解:用CASE语句实现图4-18所示的是双2选1多路选择器构成的电路 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux31 IS

PORT(a1,a2,a3,s0,s1: IN STD_LOGIC; outy:OUT STD_LOGIC); END ENTITY mux31;

ARCHITECTURE case_mux31 OF mux31 IS SIGNAL y : STD_LOGIC;

BEGIN

u1: PROCESS(s0,a1,a2,a3) BEGIN

CASE s0 IS --类似于真值表的case语句 WHEN '0' => y <= a2; WHEN '1' => y <= a3; WHEN OTHERS =>NULL ; END CASE; END PROCESS;

u2: PROCESS(s1,a1,a2,a3,y) BEGIN

CASE s1 IS --类似于真值表的case语句 WHEN '0' => outy <= a1; WHEN '1' => outy <= y; WHEN OTHERS =>NULL ; END CASE; END PROCESS;

END ARCHITECTURE case_mux31;

3-4 将例3-20程序的计数器改为十二进制计数器,程序用例3-21的方式表述,并且将复位RST改为同步清零控制,加载信号LOAD改为异步控制方式。讨论例3-20与例3-21的异同点。

--解:十二进制计数器VHDL程序设计。 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT12 IS

PORT(CLK,RST,EN,LOAD : IN STD_LOGIC;

DATA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); --4位预置数 DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--计数值输出 COUT : OUT STD_LOGIC); --计数进位输出 END CNT12;

ARCHITECTURE behav OF CNT12 IS

SIGNAL Q : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

REG: PROCESS(CLK,RST,EN,LOAD,Q) BEGIN

IF LOAD='0' THEN Q<=DATA; --允许加载

ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿 IF RST='0' THEN Q<=(OTHERS =>'0'); --计数器异步复位 ELSE

IF EN='1' THEN --检测是否允许计数或加载(同步使能) IF LOAD='0' THEN Q<=DATA; --允许加载 ELSE

IF Q<12 THEN Q<=Q+1; --允许计数,检测是否小于9

ELSE Q<=(OTHERS=>'0'); --大于等于9时,计数值清零 END IF; END IF; END IF; END IF; END IF; END PROCESS; COM: PROCESS(Q) BEGIN

IF Q=12 THEN COUT<='1'; --计数大于9,输出进位信号 ELSE COUT<='0'; END IF;

DOUT<=Q; --将计数值向端口输出 END PROCESS; END behav;

3-5 设计含有异步清零和计数使能的16位二进制加减可控计数器。

--解:用VHDL实现含有异步清零和计数使能的16位二进制加减可控计数器。 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADD_SUB_16 IS

PORT (CLK,RST,ADD_EN,SUB_EN: IN STD_LOGIC;

CQ : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ; COUT: OUT STD_LOGIC); END ENTITY ADD_SUB_16;

ARCHITECTURE A_S_16 OF ADD_SUB_16 IS BEGIN

PROCESS(CLK,RST,ADD_EN,SUB_EN)

VARIABLE CQI: STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN

IF RST = '1' THEN CQI:=(OTHERS => '0');--计数器异步复位 ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿 IF ADD_EN='1'THEN --检测是否允许计数(同步他能)

IF CQI<16#FFFF# THEN CQI:=CQI+1; --允许计数,检测是否小于65535 ELSE CQI:=(OTHERS => '0'); --大于65535,计数值清零 END IF;

IF CQI=16#FFFF# THEN COUT<='1'; --计数大于9,输出进位信号 ELSE COUT <= '0'; END IF; END IF;

IF SUB_EN='1'THEN --检测是否允许计数(同步他能)

IF CQI>0 THEN CQI:=CQI-1; --允许计数,检测是否小于65535 ELSE CQI:=(OTHERS => '1'); --大于65535,计数值清零 END IF;

本文来源:https://www.bwwdw.com/article/ghlg.html

Top