eda技术实用教程verilog答案

eda技术实用教程verilog答案

【篇一:eda技术实用教程课后答案---潘松,黄继业】

端有四个输入:s0、s1、s2、s3。当且

仅当s0=0时:y=a;s1=0时:y=b;s2=0时:y=c;s3=0时:y=d。 --解:4选1多路选择器vhdl程序设计。 library ieee;

use ieee.std_logic_1164.all; entity mux41a is

port( a,b,c,d : in std_logic;s0,s1,s2,s3 : in std_logic; y : out

std_logic); end entity mux41a;

architecture one of mux41a is

signal s0_3 : std_logic_vector(3 downto 0); begin

s0_3=s0s1s2s3;

y=a when s0_3=0111 else b when s0_3=1011 else c when

s0_3=1101 else d when s0_3=1110 else z;

end architecture one;

3-4 给出1位全减器的vhdl描述;最终实现8位全减器。要求:

1)首先设计1位半减器,然后用例化语句将它们连接起来,图4-20中

h_suber是半减器,diff是输出差

a xin (diff=x-y),s_out是借位输出(s_out=1,xy),sub_in是借位输入。 diff_out c

yin

b

图3-19 1位全加器

--解(1.1):实现1位半减器h_suber(diff=x-y;s_out=1,xy)

library ieee;

use ieee.std_logic_1164.all; entity h_suber is

port( x,y: in std_logic;diff,s_out: out std_logic); end entity

h_suber;

architecture hs1 of h_suber is begin

diff = x xor (not y);

s_out = (not x) and y;

end architecture hs1;

--解(1.2):采用例化实现图4-20的1位全减器

library ieee; --1位二进制全减器顺层设计描述 use

ieee.std_logic_1164.all; entity f_suber is

port(xin,yin,sub_in: in std_logic;sub_out,diff_out: out

std_logic); end entity f_suber;

architecture fs1 of f_suber is

component h_suber --调用半减器声明语句port(x, y: in

std_logic; diff,s_out: out std_logic); end component;

signal a,b,c: std_logic; --定义1个信号作为内部的连接线。begin

u1: h_suber port map(x=xin,y=yin,diff=a, s_out=b); u2:

h_suber port map(x=a, y=sub_in, diff=diff_out,s_out=c);

sub_out = c or

b;

end architecture fs1;

(2)以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计(减法运算是x-y-sun_in=difft)。

串行借位的8位减法器

diff1diff0 sout diff7

--解(2):采用例化方法,以1位全减器为基本硬件;实现串行借位的8位减法器(上图所示)。 library ieee;

use ieee.std_logic_1164.all; entity suber_8 is

port(x0,x1,x2,x3,x4,x5,x6,x7: in std_logic;

y0,y1,y2,y3,y4,y5,y6,y7,sin:in

std_logic;diff0,diff1,diff2,diff3:out

std_logic;diff4,diff5,diff6,diff7,sout: out std_logic); end entity suber_8;

architecture s8 of suber_8 is

component f_suber --调用全减器声明语句port(xin,yin,sub_in: in std_logic; sub_out,diff_out: out std_logic); end component; signal a0,a1,a2,a3,a4,a5,a6: std_logic; --定义1个信号作为内部的连接线。 begin

u0:f_suber port

map(xin=x0,yin=y0,diff_out=diff0,sub_in=sin,sub_out=a0);

u1:f_suber port

map(xin=x1,yin=y1,diff_out=diff1,sub_in=a0,sub_out=a1);

u2:f_suber port

map(xin=x2,yin=y2,diff_out=diff2,sub_in=a1,sub_out=a2);

u3:f_suber port

map(xin=x3,yin=y3,diff_out=diff3,sub_in=a2,sub_out=a3);

u4:f_suber port

map(xin=x4,yin=y4,diff_out=diff4,sub_in=a3,sub_out=a4);

u5:f_suber port

map(xin=x5,yin=y5,diff_out=diff5,sub_in=a4,sub_out=a5);

u6:f_suber port

map(xin=x6,yin=y6,diff_out=diff6,sub_in=a5,sub_out=a6);

u7:f_suber port

map(xin=x7,yin=y7,diff_out=diff7,sub_in=a6,sub_out=sout);

end architecture s8;

3-8 设计一个求补码的程序,输入数据是一个有符号的8位二进制(原码)数。

--解:5-9 设计一个求补码的程序,输入数据是一个有符号的8位二进制数。 library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all; entity org_patch is

port( org_data : in std_logic_vector(7 downto 0);--原码输入patch_data : out std_logic_vector(7 downto 0));--补码输出 end org_patch;

architecture bhv of org_patch is begin

process(org_data) begin

if(org_data(7)=0) then

patch_data=org_data; --org_data=0,补码=原码。else

patch_data=org_data(7)(not org_data(6 downto 0))+1;--

org_data0,补码=|原码|取反+1。 end if;

end process;

end bhv;

3—10

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity add is

port(a:in std_logic_vector(7 downto 0);b:in std_logic_vector(7 downto 0);ci:in std_logic;co:out std_logic;

count:out std_logic_vector(7 downto 0)); end add;

architecture bhv of add is begin

process(a,b,ci)

variable data:std_logic_vector(1 downto 0); variable

c:std_logic; begin c:=ci;

for n in 0 to 7 loop

data:=(0a(n))+(0b(n))+(0c); count(n)=data(0); c:=data(1); end loop; co=c;

end process; end bhv;

3-14 用循环语句设计一个7人投票表决器,及一个4位4输入最大数值检测电路。

--解:5-7 用循环语句设计一个7人投票表决器,及一个4位4输出最大数值检测电路。 library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all; entity vote_7 is

port( din: in std_logic_vector(6 downto 0);--7位表决输入(1:同意,0:不同意) g_4: out std_logic; --超过半数指示

cnth: out std_logic_vector(2 downto 0));--表决结果统计数 end vote_7;

architecture bhv of vote_7 is begin

process(din)

variable q: std_logic_vector(2 downto 0); begin

q:=000;

for n in 0 to 6 loop -- n是loop的循环变量 if(din(n)=1) then

q:=q+1; end if;end loop;cnth=q;

if q=4 then g_4=1; else g_4=0; end if; end process;

end bhv;

5-7 用vhdl设计一个功能类似74ls160的计数器。

--解:3-10 用vhdl设计一个功能类似74ls160(异步复位和同步使

能加载、计数的十进制加法计数器)的计数器。

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all; entity cnt10 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 cnt10;

architecture behav of cnt10 is begin

process(clk,rst,en,load)

variable q : std_logic_vector(3 downto 0); begin

if rst=0 then q:=(others =0);--计数器异步复位 elsif clkevent and clk=1 then --检测时钟上升沿

if en=1 then--检测是否允许计数或加载(同步使能)if load=0 then q:=data; --允许加载else

if q9 then q:=q+1; --允许计数,检测是否小于9

else q:=(others=0); --大于等于9时,计数值清零 end if;end if; end if; end if;

if q=9 then cout=1; --计数大于9,输出进位信号

【篇二:eda技术与vhdl程序开发基础教程课后答案】eda的英文全称是electronic design automation

2.eda系统设计自动化eda阶段三个发展阶段

3. eda技术的应用可概括为

4.目前比较流行的主流厂家的eda软件有、

5.常用的设计输入方式有原理图输入、文本输入、状态机输入

6.常用的硬件描述语言有

7.逻辑综合后生成的网表文件为 edif

8.布局布线主要完成9.

10.常用的第三方eda工具软件有synplify/synplify pro、leonardo spectrum

1.8.2选择

1.eda技术发展历程的正确描述为(a)

a cad-cae-eda

b eda-cad-cae

c eda-cae-cad

d cae-cad-eda

2.altera的第四代eda集成开发环境为(c)

a modelsim

b mux+plus ii

c quartus ii

d ise

3.下列eda工具中,支持状态图输入方式的是(b)

a quartus ii

b ise

c ispdesignexpert

d syplify pro

4.下列几种仿真中考虑了物理模型参数的仿真是(a)

a 时序仿真

b 功能仿真

c 行为仿真

d 逻辑仿真

5.下列描述eda工程设计流程正确的是(c)

a输入-综合-布线-下载-仿真

b布线-仿真-下载-输入-综合

c输入-综合-布线-仿真-下载

d输入-仿真-综合-布线-下载

6.下列编程语言中不属于硬件描述语言的是(d)

a vhdl

b verilog

c abel

d php

1.8.3问答

1.结合本章学习的知识,简述什么是eda技术?谈谈自己对eda技术的认识?

答:eda(electronic design automation)工程是现代电子信息工程领域中一门发展迅速的新技术。

2.简要介绍eda技术的发展历程?

答:现代eda技术是20世纪90年代初从计算机辅助设计、辅助制造和辅助测试等工程概念发展而来的。它的成熟主要经历了计算机辅助设计(cad,computer aided design)、计算机辅助工程设计(caed,computer aided engineering design)和电子设计自动化(eda,electronic system design automation)三个阶段。

3.什么是soc?什么是sopc?

答:soc ( system on chip,片上系统)

sopc(system on a programmable chip,片上可编程系统)

4.对目标器件为cpld/fpga的vhdl设计,主要有几个步骤?每步的作用和结果分别是什么?

答:一个完整的eda工程通常要涉及到系统建模、逻辑综合、故障测试、功能仿真、时序分析、形式验证等内容。而对于设计工程师而言,系统建模中的器件模型有生产厂商给出,工程师只需要完成系统设计、逻辑综合、布局布线、仿真验证和下载测试几个步骤。

5.简述asic设计和cpld/fpga设计的区别?

答:专用集成电路(asic)采用硬接线的固定模式,而现场可编程门阵列 (fpga)则采用可配置芯片的方法,二者差别迥异。可编程器件是目前的新生力量,混合技术也将在未来发挥作用。

6.阐述行为仿真、功能仿真和时序仿真的区别?

答:行为仿真只考虑逻辑功能。功能仿真仅仅完成了对vhdl所描述电路的逻辑功能进行测试模拟,以观察其实现的功能是否满足设计需求,因而仿真过程并不涉及任何具体器件的硬件特性。时序仿真则是比较接近真实器件运行的仿真,在仿真过程中已经对器件的物理模型参数做了恰当的考虑,所以仿真精度要高得多。

7.详细描述eda设计的整个流程?

答:

系统规格制定(define specification)

设计描述(design description)

功能验证(function verification)

逻辑电路合成(logic synthesis)

逻辑门层次的电路功能验证(gate-level netlist verification)

配置与绕线(place and routing)

绕线后的电路功能验证(post layout verification)

8.为什么要进行硬件电路的后仿真验证和测试?

答:后仿真考虑了实际器件的模型参数,能够更好的模拟实际电路

工作状态。测试是检验设计合格的最直接的方式。

2.8.1填空

1.可编程逻辑器件的英文全称是

2.可编程逻辑器件技术经历了三个

发展阶段

3. cpld个部分

4.目前市场份额较大的生产可编程逻辑器件的公司有 altera 、

xillinx 、lattice

5.根据器件应用技术fpga

6. 快速通道/互联通道包括行互连、列互联、逻辑阵列块、逻辑单元

7.常用的的fpga配置方式为8.实际项目中,实现fpga的配置常常

需要附加一片

9.球状封装的英文缩写为 bga

10.cpld/fpga2.8.2选择

1. 在下列可编程逻辑器件中,不属于高密度可编程逻辑器件的是(d)

a epld

b cpld

c fpga

d pal

2. 在下列可编程逻辑器件中,属于易失性器件的是(d)

a epld

b cpld

c fpga

d pal

3.下列逻辑部件中不属于altera公司cpld的是(a)

a通用逻辑块(glb)

b可编程连线阵列(pia)

c输入输出控制(i/o)

d逻辑阵列块(lab)

4.下列逻辑部件中不属于lattice公司cpld的是(d)

a通用逻辑块(glb)

b全局布线区(grp)

c输出布线区(orp)

d逻辑阵列块(lab)

5.下列fpga中不属于xilinx公司产品的是(d)

a xc4000

b virtex

c spartan

d cyclong

6. 下列fpga中不属于alter公司产品的是(b)

a flex 10k

b virtex

c stratix

d cyclone

7.下列配置方式不属于fpga配置模式的是(d)

a主动串行配置模式

b被动串行配置模式

c主动并行配置模式

d被动从属配置模式

8.下列因素中通常不属于cpld/fpga选型条件的是(d)

a 逻辑资源

b 功耗和封装

c 价格和速度

d 产地

2.8.3问答

1.结合本章学习的知识,简述cpld的基本结构?

答:虽然cpld种类繁多、特点各异,共同之处总结起来可以概括为三个部分:

● 可编程逻辑阵列块;

● 输入/输出块;

● 互联资源;

其中,可编程逻辑阵列块类似于一个低密度的pal/gal,包括乘积项的与阵列、乘积项分配和逻辑宏单元等。乘积项与阵列定义了每个宏单元乘积项的数量和每个逻辑块乘积项的最大容量,能有效的实现各种逻辑功能。

2.结合本章学习的知识,简述fpga的基本结构?

答:基于sram编程的fpga以xilinx的逻辑单元阵列(lca,logic cell array)为例,基本结构如图2-20所示。

模块

2-20 fpga的基本机构

反熔丝技术fpga器件的逻辑结构采用基于多路选择器的基本逻辑单元,配置数据放在反

熔丝开关矩阵中,通过编程使部分反熔丝介质击穿,导通开关从而实现器件的编程。如图2-21所示

互联

资源逻辑阵列

2-21 反熔丝技术的fpga结构

3.基于sram编程的fpga有哪些特征?优缺点?

答:

fpga器件的优点:

● 可以反复编程,对于一般规模的器件,上电几十毫秒就可以完成配置数据的加载;● 开发设计不需要专门的编程器;

● 与cmos工艺的存储器兼容,价格较低;

fpga器件的缺点:

● 由于器件掉电后sram容易丢失配置数据,因而常常在fpga外部添加一个制度春初期prom或eprom来保存这些配置数据,从而给配置数据的保密带来了困难;● 器件内部可编程连线和逻辑定义通过大量的传输门开关实现,从而导致电阻变大,传递信号的速度收到影响,限制工作频率;

4.简述max7000器件的结构及特点?

答:

【篇三:eda技术课程大纲】

课程英文译名:eda technology 课程编号:课内总学时:64学分:3

开课对象:电子信息工程/电子信息科学与技术/电子科学与技术/集成电路设计专业本科学生课程类别:学院定必修一、课程的任务和目的

本课程是电类专业的专业基础课,要求学生通过本课程的学习和实验,初步掌握常用eda工具的使用方法、fpga的开发技术以及vhdl 语言的编程方法。能比较熟练地使用quartusii等常用eda软件对fpga和cpld作一些简单电路系统的设计,同时能较好地使用vhdl 语言设计简单的逻辑电路和逻辑系统,学会行为仿真、时序仿真和硬件测试技术,为现代eda工程技术的进一步学习,asic器件设计以及超大规模集成电路设计奠定基础。

作为一门专业基础课,除了为现代电子线路课程,软件无线电课程奠定理论和实践方面的基础外,还是其他一些课程的先修课,如微电子导论、现代asic设计、硬件描述语言仿真/综合器设计、大规模集成电路设计等。

二、课程内容与基本要求(一)概论

介绍现代eda技术,vhdl概况,介绍自顶向下的系统设计方法以及fpga和cpld的基本技术,要求对现代eda技术及实现工具的使用方法和发展情况有一初步了解。(二)eda设计流程及工具

首先介绍基于eda软件的fpga/cpld开发流程和asic设计流程,然后分别介绍与这些设计流程中各环节密切相关的eda工具软件,最后简述quartusii的基本情况和ip。(三)fpga/cpld结构与应用主要介绍几类常用的大规模可编程逻辑器件的结构和工作原理。对cpld的乘积项原理和fpga的查找表原理分别进行剖析。最后介绍相关的编程下载和测试技术。(四)vhdl设计初步

通过数个简单、完整而典型的vhdl设计示例,使学生初步了解用vhdl表达和设计电路的方法,并对由此而引出的vhdl语言现象和语句规则能逐步趋向系统的了解。(五)quartusii应用向导

通过实例,详细介绍基于quartusii的vhdl文本输入设计流程,包括设计输入、综合、适配、仿真测试和编程下载等方法,以及quartusii包含的一些有用的测试手段,最后介绍原理图输入设计方法。(六)vhdl设计进阶

介绍一些新的实例及相关的vhdl语法知识,使学生进一步了解vhdl语言现象和语句规则的特点,以及应用vhdl表达与设计电路的方法。(七)宏功能模块与ip应用

altera提供了可参数化的宏功能模块和lpm函数,并基于altera器件的结构做了优化设计,使得设计的效率和可靠性得到了很大的提高。可以根据实际电路的设计需要,选择lpm库中的适当模块,并为其设定适当的参数,满足设计的需要。本章通过一些示例介绍lpm宏功能模块与ip核的使用方法。(八)状态机设计

介绍使用vhdl设计有限状态机一般性程序结构;介绍状态机的实用程序设计、状态编码方法以及非法状态排除技术。

(九)vhdl程序结构与规则

介绍vhdl的基本程序结构,包括实体、结构体、进程、库和子程序等主要语句结构,要求掌握vhdl可综合程序设计的基本程序结构。重点了解进程语句结构及其运行特点。(十)vhdl语句与vhdl仿真

简要介绍vhdl编程的3种描述风格;介绍vhdl仿真方法、目的和延时模型、简介vhdl程序综合概念与可综合的要求,介绍时序电路和组合电路的设计要点和方法。(十一)设计优化和时序分析

分析资源优化、速度优化的常用方法,介绍quartusii中优化设置与优化设计方法、以及时序分析方法。

(十二)实验

由于本课程是一实践性很强,且软硬件设计密切结合的课程,所以安排了较多的实验内容,实验总学时为21,除实验1为基础实验,其余均为综合、设计性实验。实验1:基于vhdl的简单组合与时序电路设计4学时实验2:quartusii原理图设计 4学时实验3:7段数码管显示译码设计 4学时

实验4:数控分频器设计4学时实验5:正弦波形信号发生器设计4学时实验6:8位十六机制频率计设计 4学时实验7:序列检测器设计) 4学时实验8:数据采集电路和简易存储示波器设计 4学时实验9:比较器和d/a实现的d/a电路设计4学时实验10:乐曲硬件演奏电路设计4学时

三、与各课程的联系

先修课程:c语言,脉冲与数字电路,电路分析,信号系统,高等数学,微机原理。四、对学生能力培养的要求

通过对本课程的学习,学生能较好地掌握全新的硬件电子系统的设计技术,更深刻地了解计算机软件语言与硬件语言实现的现代电子系统设计能力。通过理论学习与实践设计锻炼的紧密结合,提高理

论与工程实际相结合的能力,为未来进一步的学习和工作实践奠定

良好基础。五、学时分配

本课程总学时数为51,其中授课30学时,实验21学时,具体分配

如下:

(一)概论2学时(二)eda设计流程及工具 2学时(三)

fpga/cpld结构与应用2学时(四)vhdl设计初步 4学时(五)quartusii应用向导 2学时(六)vhdl设计进阶 4学时(七)宏

功能模块与ip应用2学时(八)状态机设计2学时(九)vhdl程

序结构与规则2学时(十)vhdl语句与vhdl仿真1学时(十一)设计优化和时序分析 1学时(十二)实验

实验1:基于vhdl的简单组合与时序电路设计4学时实验2:quartusii原理图设计 4学时实验3:7段数码管显示译码设计 4

学时实验4:数控分频器设计4学时实验5:正弦波形信号发生器

设计 4学时实验6:8位十六机制频率计设计 4学时实验7:序列检测器设计) 4学时实验8:数据采集电路和简易存储示波器设计

4学时实验9:比较器和d/a实现的d/a电路设计4学时实验10:乐曲硬件演奏电路设计4学时

六、教材与参考书教材:

eda技术实用教程(第三版),潘松、黄继业编著,科学出版社,2006。

参考书:

cpld/fpga的开发与应用,徐志军、徐光辉编著,电子工业出版社,2002;电子设计自动化(eda)教程,王锁萍,电子科技大学出版社,2000;

数字系统设计与pld应用技术,蒋璇、臧春华编著,电子工业出版社,2001; sopc技术实用教程,潘松、黄继业、曾毓编著,清华

大学出版社,2005;数字系统设计与verilog hdl,王金明、杨吉斌

编著,电子工业出版社,2002; altera digital library,altera corporation ,altera,2002; data book 2001,xilinx inc.,xilinx,2001。

黄河科技学院

2010至2011 学年第1 学期学期授课计划

2010 年 9 月 8 日

相关文档
最新文档