EDA重点总结
2012-11-25 10:42阅读:
EDA重点总结
1.
狭义的EDA技术,就是指以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。
2.FPGA在结构上主要分为三个部分,即可编程逻辑单元、可编程输入/输出单元和可编程连线三个部分。CPLD在结构上主要包括三个部分,即可编程逻辑宏单元、可编程输入/输出单元和可编程内部连线。
3.行为仿真,就是将VHDL设计源程序直接送到VHDL仿真器中所进行的仿真。
4.功能仿真,就是将综合后的VHDL网表文件再送到VHDL仿真器中所进行的仿真。
5.时序仿真,就是将布线器/适配器所产生的VHDL网表文件送到VHDL仿真器中所进行的仿真。
6.逻辑综合,就是将电路的高级语言描述(如HDL、原理图或状态图形的描述)转换成低级的,可与FPGA/CPLD或构成ASIC的门阵列基本结构相映射的网表文件。
6.硬件仿真,就是在ASIC设计中,常利用FPGA对系统的设计进行功能检测,通过后再将其VHDL设计以ASIC形式实现的过程。
7.硬件测试,就是把FPGA或CPLD直接用于应用系统的设计中,将下载文件下载到FPGA后,对系统设计进行功能检测的过程。
8.逻辑设计与综合(Logic Design and
Synthesis)就是将划分的各个子模块用文本(网表或硬件描述语言)、原理图等进行具体逻辑描述。
9. FPGA和CPLD分别是现场可编程门阵列和复杂可编程逻辑器件的简称。
10. 常用的硬件描述语言有VHDL、Verilog、ABEL。
11.EDA技术研究的对象是电子设计的全过程,有系统级、电路级和物理级3个层次的设计。
12、逻辑适配——将由综合器产生的网表文件针对某一具体的目标器进行逻辑映射操作,(其中包括
底层器件配置、逻辑分割、逻辑优化、布线与操作等,)配置于指定的目标器件中,产生最终的下载文件(如JEDEC格式的文件)的过程。
13.系统划分(System
Division)就是将系统分割成各个功能子模块,给出子模块之间的信号连接关系,并验证各个功能块的模型,确定系统的关键时序。
14.器件中有两种逻辑块:可编程功能单元(Programmable Function
Unit,简称PFU);无RAM的可编程功能单元(Programmable Function Unit without
RAM,简称PFF)
15.LatticeECP/EC器件驱动时钟来自三个主时钟源:PLL输出、专用时钟输入和布线输出。
A卷
一、填空题(共20空,每空1分,共20分)
1.FPGA的英文全称是Field Programmable Gate Array,CPLD的英文全称是Complex
Programmable Logic
Devices,二者在保存逻辑信息方面的区别是FPGA掉电后将丢失原有的逻辑信息而CPLD却能保持原有的逻辑信息。
2.一个相对完整的VHDL程序的三个基本组成部分别是 库、程序包使用说明 、
实体说明 和实体对应的结构体说明。
3.IEEE_1076标准程序包中定义的四种常用端口模式分别是IN模式、OUT模式、BUFFER模式和 INOUT 模式。
4.VHDL的数据对象有 常量 、 变量 和 信号 三种。VHDL程序设计中常用的库有
IEEE库 、 STD库 、WORK库 和VITAL库。
5.VHDL是一种强数据类型语言,强数据类型的具体含义是:(1) 各数据对象必须具有确定的数据类型
(2)具有相同数据类型的数据对象才能进行相互操作 。
6. VHDL的描述风格有三种,分别是 行为描述 、数据流描述 和 结构描述 。
三、问答题(2个小题,每小题10分,共20分)
1.
什么叫EDA技术?使用EDA技术进行电子系统设计有什么优点?(10分)
答:
EDA技术有狭义的EDA技术和广义的EDA技术之分。狭义的EDA技术,就是指以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成将用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。广义的EDA技术,除了狭义的EDA技术外,还包括计算机辅助分析CAA技术(如PSPICE,EWB,MATLAB等),印刷电路板计算机辅助设计PCB-CAD技术(如PROTEL,ORCAD等)。(5分)
使用EDA技术进行电子系统设计的优点:(1)用软件的方式设计硬件;(2)用软件方式设计的系统到硬件系统的转换,由有关的开发软件自动完成;(3)设计过程中可用有关软件进行各种仿真;(4)系统可现场编程,在线升级;(5)整个系统可集成在一个芯片上,体积小、功耗低,可靠性高。(5分)
2.对于目标器件为FPGA/CPLD的VHDL工程设计,其工作步骤如何?并简要介绍各步的作用。(10分)
答:(1)源程序的编辑和编译:利用EDA工具的文本编辑器或图形编辑器将设计用文本或图形方式表达出来,进行排错编译,变成VHDL文件格式;(1.5分)
(2)逻辑综合和优化:将电路的高级语言描述转换成低级的,可与FPGA/CPLD或构成ASIC的门阵列基本结构相映射的网表文件,以便将VHDL的软件设计与硬件的可实现性挂钩;(2.0分)
(3)目标器件的布线/适配:将由综合器产生的网表文件针对某一具体的目标器进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布线与操作等,配置于指定的目标器件中,产生最终的下载文件,如JEDEC格式的文件;(2.0分)
(4)目标器件的编程/下载:将由FPGA/CPLD布线/适配器产生的配置/下载文件通过编程器或下载电缆载入目标芯片FPGA或CPLD中;
(5)设计过程中的有关仿真:设计过程中为了了解设计的结果,可通过仿真器进行有关仿真,包括行为仿真,功能仿真和时序仿真;
(6)硬件仿真/硬件测试:在ASIC设计中,常利用FPGA对系统的设计进行功能检测,通过后再将其VHDL设计以ASIC形式实现,这个过程称之为硬件仿真;针对FPGA或CPLD直接用于应用系统的设计中,将下载文件下载到FPGA后,对系统的设计进行的功能检测,这个过程称之为硬件测试。(1.5分)
四、阅读本题程序,回答如下问题;(1)语句/语句组①~④的作用;(2)本程序将实现什么功能?(15分)
①LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DETECT IS
PORT( DATAIN,CLK:IN STD_LOGIC;
Q:OUT STD_LOGIC);
END DETECT;
ARCHITECTURE ART OF DETECT IS
② TYPE
STATETYPE IS(S0,S1,S3,S4,S5,S6,S7,S8);
BEGIN
PROCESS(CLK)
③ VARIABLE PRESENT_STATE:STATETYPE;
BEGIN
Q<=‘0’;
④CASE PRESENT_STATE IS
WHEN S0=>IF DATAIN=‘0’ THEN PRESENT_STATE:=S1;
ELSE PRESENT_STATE:=S0: END IF;
WHEN S1=> IF DATAIN=‘1’ THEN PRESENT_STATE:=S2;
ELSE PRESENT_STATE:=S1: END IF;
WHEN S2=> IF DATAIN=‘1’THEN PRESENT_STATE:=S3;
ELSE PRESENT_STATE:=S1: END IF;
WHEN S3=> IF DATAIN=‘1’THEN PRESENT_STATE:=S4;
ELSE PRESENT_STATE:=S1: END IF;
WHEN S4=> IF DATAIN=‘1’THEN PRESENT_STATE:=S5;
ELSE PRESENT_STATE:=S1: END IF;
WHEN S5=> IF DATAIN=‘1’THEN PRESENT_STATE:=S6;
ELSE PRESENT_STATE:=S1: END IF;
WHEN S6=> IF DATAIN=‘1’THEN PRESENT_STATE:=S7;
ELSE PRESENT_STATE:=S1: END IF;
WHEN S7=> IF DATAIN=‘0’THEN PRESENT_STATE:=S8;
Q<=‘1’;ELSE PRESENT_STATE:=S0;END IF;
WHEN S8=> IF DATAIN=‘0’THEN PRESENT_STATE:=S1;
ELSE PRESENT_STATE:=S2; END IF;
END CASE;
WAIT UNTIL CLK=‘1’;
END PROCESS;
END ART;
答:语句组①的作用:先打开IEEE库,再打开IEEE库中的STD_LOGIC_1164程序包中的所有项目。(2分)
语句组②的作用:定义一个枚举型的自定义数据类型STATETYPE,它有S0~S8共9个值;(2分)
语句组③的作用:定义一个变量PRESENT_STATE,其数据类型是自定义数据类型STATETYPE;(2分)
语句组④的作用:这是一个多选一的选择语句,当变量PRESENT_STATE为S0时,若这时输入端口DATAIN为0,则PRESENT_STATE变为S1,否则保持为S0;(3分)
本程序实现的功能:实现一个“01111110”序列信号的检测功能。(6分)
五. 用VHDL设计一个分频电路,要求将1MHZ的方波信号变为20KHZ的方波信号。(15分)
答:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY JYFP IS
PORT( CLK:IN STD_LOGIC;
Q:OUT STD_LOGIC );
END ENTITY JYFP;
ARCHITECTURE ART OF JYFP IS
BEGIN
PROCESS(CLK)
VARIABLE TEMP:NATURAL RANGE 0 TO 50; (
BEGIN
IF RISING_EDGE(CLK)
THEN
IF
(TEMP>=50) THEN
TEMP:=0;
ELSE
TEMP:=TEMP+1;
END
IF;
IF(TEMP<=24)
THEN
Q<=’1’;
ELSE
Q<=’0’;
END IF;
END IF;
END PROCESS CLK;
END ARCHITECTURE ART; (6分)
六、用VHDL设计一个将6位BCD码数据DIN[23..0]用6个共阴数码管进行动态扫描显示的电路。(20分)
答:LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; (3分)
ENTITY DISPLAY IS
PORT(CLK:IN STD_LOGIC;
--动态扫描显示时钟,60Hz以上
DIN: IN STD_LOGIC_VECTOR(23 DOWNTO 0);
--6位BCD码输入数据
COM:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);--数码管COM端的选择输出端
SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --数码管8段显示驱动输出端
END ENTITY DISPLAY; (4分)
ARCHITECTURE ART OF DISPLAY IS
SIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0);
SIGNAL BCD:STD_LOGIC_VECTOR(3 DOWNTO 0); (2分)
BEGIN
PROCESS(CLK) --产生动态扫描显示的控制信号
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF CNT='101'
THEN
CNT<='000';
ELSE CNT<=CNT+'1';
END IF ;
END IF;
END PROCESS; (3分)
PROCESS(CNT) IS
BEGIN
CASE CNT IS --显示数据的选择,对应显示数码管公共端的选通,低电平有效
WHEN '000'
=>BCD<=DIN(3 DOWNTO 0);
COM<='111110';
WHEN '001'
=>BCD<=DIN(7 DOWNTO 4);
COM<='111101';
WHEN '010'
=>BCD<=DIN(11 DOWNTO 8); COM<='111011';
WHEN '011'
=>BCD<=DIN(15 DOWNTO 12); COM<='110111';
WHEN '100'
=>BCD<=DIN(19 DOWNTO 16); COM<='101111';
WHEN '101'
=>BCD<=DIN(23 DOWNTO 20); COM<='011111';
WHEN
OTHERS=>BCD<='0000';
COM<='111111';
END CASE; (5分)
CASE BCD IS --将BCD码转换成数码管的8段驱动信息,高电平有效
WHEN '0000' =>
SEG<='00111111';-- =>dp/g/f/e/d/c/b/a
WHEN '0001' =>
SEG<='00000110';
WHEN '0010' =>
SEG<='01011011';
WHEN '0011' =>
SEG<='01001111';
WHEN '0100' =>
SEG<='01100110';
WHEN '0101' =>
SEG<='01101101';
WHEN '0110' => SEG<='01111101';
WHEN '0111' => SEG<='00000111';
WHEN '1000' => SEG<='01111111';
WHEN '1001' => SEG<='01101111';
WHEN '1010' => SEG<='01110111';
WHEN '1011' =>
SEG<='01111100';
WHEN '1100' =>
SEG<='00111001';
WHEN '1101' =>
SEG<='01011110';
WHEN '1110' =>
SEG<='01111001';
WHEN '1111' =>
SEG<='01110001';
WHEN OTHERS => SEG<='00000000';
END CASE ; (3分)
END PROCESS;
END ARCHITECTURE ART;
B卷
二、填空题(共20空,每空1分,共20分)
1.FPGA的中文含义是 现场可编程门阵列
,CPLD的中文含义是
复杂可编程逻辑器件
,二者在保存逻辑信息方面的区别是 FPGA掉电后将丢失原有的逻辑信息而CPLD却能保持原有的逻辑信息
2.VHDL是一种强类型语言,强类型的具体含义是:(1)
要求设计实体中的每一个常数、信号、变量、函数以及设定各种参量都必须有明确的数据类型
;
(2) 只有数据类型相同的量才能互相传递和作用
。其设计成强数据类型语言的目的是 使VHDL编译或综合工具很容易找出设计中的各种错误
。
3.VHDL程序的三个基本组成部分是 库、程序包使用说明
, 实体说明
和
实体对应的结构体说明
。
4.VHDL的基本标识符就是以 英文字母
开头,不连续使用 下划线
,不以下划线“_”结尾的,由字母、数字以及下划线“_”组成的字符串。
5.VHDL的数据对象有 变量 、
信号
和 常数
三种。
6.VHDL程序设计中常用的库有 IEEE库
、STD库、 WORK库
和VITAL库。
7.VHDL的元件例化语句用于建立端口之间映射关系的两种常用方式是 名字关联方式
和 位置关联方式
。
8.状态机的两种基本操作分别是 状态机内部状态转换
和 产生输出信号序列
。
三、问答题(2个小题,每小题10分,共20分)
1。从学习和使用的角度,你认为EDA技术主要包括哪几方面的内容?这几个方面在整个电子系统的设计中分别起什么作用?(10分)
答:A.大规模可编程逻辑器件。它是由用户编程以实现某种逻辑功能的新型逻辑器件。优势是开发周期短,投资风险小,产品上市速度快,市场适应能力强,硬件升级回旋余地大。
B.硬件描述语言。包括VHDL,ABEL,Verilog.其中VHDL和Verilog将承担几乎全部的数字系统设计任务。
C.软件开发工具。主要有quartus2,Foundation Series.
D.实验开发系统。提供芯片下载电路及EDA实验开发的外围资料,以供硬件验证用。
2.阐述EDA实验开发系统的主要作用及基本组成。(10分)
答:EDA实验开发系统的主要用于提供可编程逻辑器件的下载电路及EDA实验开发的外围资料,以供硬件验证用。一般包括:
A.实验或开发所需的各类基本信号发生模块,包括时钟,脉冲,高低电平等;
B.FPGA/CPLD输出信号显示模块,包括数码显示,发光器显示,声响指示等;
C.监控程序模块,提供“电路重构软配置”
D.目标芯片配座以及上面的FPGA/CPLD目标芯片和编程电路下载。
四、阅读本题程序,回答如下问题;(1)语句组①~④的作用;(2)本程序将实现什么功能?(15分)
① LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY DPRAM IS
② GENERIC(WIDTH:INTEGER :=8;
DEPTH:INTEGER :=1024;
ADDER:INTEGER :10);
PORT(DATAIN:IN STD_LOGIC_VECTOR(WIDTH–1 DOWNTO 0);
DATAOUT:OUT.
STD_LOGIC_VECTOR(WIDTH–1 DOWNTO 0);
CLOCK,WE,RE:IN
STD_LOGIC;
WADD,RADD:IN
STD_LOGIC_VECTOR(ADDER–1 DOWNTO 0));
END ENTITY DPRAM;
ARCHITECTURE ART OF DPRAM IS
TYPE MEM IS ARRAY(0 TO DEPTH–1) OF STD_LOGIC_VECTOR(WIDTH–1
DOWNTO 0);
SIGNAL RAMTMP:MEM;
BEGIN
③ PROCESS(CLOCK)
BEGIN
IF (CLOCK’EVENT AND CLOCK=‘1’) THEN
IF (WE=‘1’) THEN
RAMTMP(CONV_INTEGER(WADD))<=DATAIN;
END IF;
END IF;
END PROCESS;
④ PROCESS(CLOCK)
BEGIN
IF (CLOCK’EVENT AND CLOCK=‘1’) THEN
IF (RE=‘1’) THEN
DATAOUT<=RAMTMP(CONV_INTEGER(RADD));
END IF;
END IF;
END PROCESS;
END ARCHITECTURE ART;
答:
(1)①先打开IEEE库,再打开IEEE库中的STD_LOGIC_1164,STD_LOGIC_ARITH,STD_LOGIC_UNSIGNED程序包中的所有项目。
②对实体的WIDTH,DEPTH和ADDER的数据类型和宽度作了定义。
③完成向地址‘写‘数据功能的进程。
④完成从地址中‘读‘数据功能的进程。
(2)这是一个8x1024的双口SRAM。
五、用VHDL程序设计一个带有计数使能(ENA)和清零(CLR)功能的16进制计数器。(15分)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT16 IS
PORT( CLK: IN STD_LOGIC;
CLR: IN
STD_LOGIC;
ENA: IN
STD_LOGIC;
CQ: OUT
STD_LOGIC_VECTOR(3 DOWNTO 0);
CARRY_OUT: OUT
STD_LOGIC );
END CNT16;
ARCHITECTURE ART OF CNT16 IS
SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(CLK,CLR,ENA)
BEGIN
IF CLR='1'THEN CQI<='0000';
ELSIF CLK'EVENT AND CLK ='1' THEN
IF ENA = '1'THENIF CQI = '1001' THEN
CQI<='0000';
CARRY_OUT<='1';
ELSE
CQI <=
CQI+'1';
CARRY_OUT<='0';
END IF;
END IF;
END PROCESS;
CQ<=CQI;
END ART;