EDA复习资料大全_第1页
EDA复习资料大全_第2页
EDA复习资料大全_第3页
EDA复习资料大全_第4页
EDA复习资料大全_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.一般把EDA技术的发展分为MOS时代、MOS时代和

ASIC三个阶段。2.EDA设计流程包括

设计输入、设计实现、实际设计检验和

下载编程四个步骤。3.EDA设计输入主要包括图形输入、HDL文本输入和状态机输入。4.时序仿真是在设计输入完成之后,选择具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为功能仿真。

5.VHDL的数据对象包括变量、常量和信号,它们是用来存放各种类型数据的容器。6.图形文件设计结束后一定要通过仿真,检查设计文件是否正确。7.以EDA方式设计实现的电路设计文件,最终可以编程下到FPGA

和CPLD芯片中,完成硬件设计和验证。8.MAX+PLUS的文本文件类型是(后缀名).VHD。9.在PC上利用VHDL进行项目设计,不允许在根目录下进行,必须在根目录为设计建立一个工程目录。10.VHDL源程序的文件名应与实体名相同,否则无法通过编译二、名词解释,写出下列缩写的中文(或者英文)含义:

1.FPGAField-ProgrammableGateArray现场可编程门阵列2VHDLVery-High-SpeedIntegratedCircuitHardwareDescriptionLanguage)甚高速集成电路硬件描述语言3

HDLHardwareDescriptionLanguage硬件描述语言5CPLDComplexProgrammableLogicDevice复杂可编程逻辑器件6PLDProgrammableLogicDevice可编程逻辑器件7

GALgenericarraylogic通用阵列逻辑

8.

LABLogicArrayBlock逻辑阵列块9.CLBConfigurableLogicBlock可配置逻辑模块10EABEmbeddedArrayBlock嵌入式阵列块11SOPCSystem-on-a-Programmable-Chip可编程片上系统

12.LUTLook-UpTable查找表13.

JTAGJointTestActionGroup联合测试行为组织

14.IPIntellectualProperty知识产15ASICApplicationSpecificIntegratedCircuits专用集成电路16ISPInSystemProgrammable在系统可编程17ICRInCircuitRe-config在电路可重构18RTLRegisterTransferLevel寄存器传输19EDAElectronicDesignAutomation电子设计自动化1、FPGA结构一般分为三部分:可编程逻辑块(CLB)、可编程I/O模块和可编程内部连线。2、CPLD的内部连线为连续式布线互连结构,任意一对输入、输出端之间的延时是固定;FPGA的内部连线为分段式布线互连结构,各功能单元间的延时不定(不可预测)。3、大规模可编程器件主要有CPLD和FPGA两类,其中CPLD通过可编程乘积项逻辑实现其逻辑功能。基于SRAM的FPGA器件,每次上电后必须进行一次配置。FPGA内部阵列的配置一般采用在电路可重构技术,编程数据保存在静态存储器(SRAM),掉电易失。4、目前世界上有十几家生产CPLD/FPGA的公司,最大的两家是:Altera,Xilinx。5、硬件描述语言(HDL)是EDA技术的重要组成部分,是电子系统硬件行为描述、结构描述、数据流描述的语言,它的种类很多,如VHDL、VerilogHDL、AHDL6、WHEN_ELSE条件信号赋值语句和IF_ELSE顺序语句的异同:*WHEN_ELSE条件信号赋值语句中无标点,只有最后有分号;必须成对出现;是并行语句,必须放在结构体中。*IF_ELSE顺序语句中有分号;是顺序语句,必须放在进程中7、可编程逻辑器件设计输入有原理图输入、硬件描述语言输入和波形输入三种方式。原理图输入方式是一种最直接的设计描述方式,波形设计输入适用于时序逻辑和有重复性的逻辑函数。硬件描述语言的突出优点是:*语言与工艺的无关性;语言的公开可利用性,便于实现大规模系统的设计;*具有很强逻辑描述和仿真功能,而且输入效率高,在不同设计输入库之间的转换非常方便,用不着对底层的电路和PLD结构的熟悉。8、用VHDL/VeilogHDL语言开发可编程逻辑电路的完整流程:文本编辑→功能仿真→逻辑综合→布局布线→时序仿真。*所谓综合,就是根据设计功能和实现该设计的约束条件(如面积、速度、功耗和成本等),将设计输入转换成满足要求的电路设计方案,该方案必须同时满足与其的功能和约束条件。综合的过程也是设计目标的优化过程,其目的是将多个模块化设计文件合并为一个网表文件,供布局布线使用,网表中包含了目标器件中的逻辑单元和互连的信息。*布局布线就是根据设计者指定的约束条件(如面积、延时、时钟等)、目标器件的结构资源和工艺特性,以最优的方式对逻辑元件布局,并准确地实现元件间的互连,完成实现方案(网表)到使实际目标器件(FPGA或CPLD)的变换。9、基于EDA软件的FPGA/CPLD设计流程为:原理图/HDL文本输入→功能仿真→综合→适配→时序仿真→编程下载→硬件测试。*综合是EDA设计的关键步骤,综合就是将电路的高级语言转换成低级的,可与FPGA/CPLD相映射的功能网表文件。为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束。

10、构成一个完整的VHDL语言程序的五个基本结构:实体(ENTITY)、结构体(ARCHITECURE)、配置(CONFIGURATION)、库(LIBRARY)、程序包(PACKAGE)。*实体的由实体说明和结构体两部分组成。实体说明部分用于描述所设计系统的外部端口信号和参数的属性和设置,而结构体部分则定义了设计单元的具体功能、行为、数据流程或内部结构。*结构体的三种描述方式,即行为级描述、数据流级描述和结构级描述。*结构体通常由结构体名称、定义语句和并行处理语句构成。*程序包用于存放各设计模块能共享的数据类型、常数、子程序等。*库用于存放已编译的实体、结构体、程序包和配置,可以通过其目录进行查询和调用。在VHDL语言中,可以存在多个不同的库,但是库与库之间是独立的,不能互相嵌套。它可由用户生成或由ASIC芯片制造商提供,以便于在设计中为大家所共享。*库用于存放已编译的实体、结构体、程序包和配置,可以通过其目录进行查询和调用。在VHDL语言中,可以存在多个不同的库,但是库与库之间是独立的,不能互相嵌套。它可由用户生成或由ASIC芯片制造商提供,以便于在设计中为大家所共享。常用库:(1)IEEE库:IEEE库主要包括std_logic_1164、numeric_bit、numeric_std等程序包,还有一些程序包非IEEE标准,但并入IEEE库,如std_logic_arich、std_logic_unsigned、std_logic_signed。使用IEEE程序包,必须声明。(2)std库:包含standardtextio程序包。Std库符合IEEE标准,应用中不必声明。(3)work库:用户的VHDL设计先行工作库。(4)vital库:包含时序程序包vital_timing和vital_primitives。设计开发过程通常不用,每个设计实体都必须有各自完整的库说明语句和use语句。Use语句的使用将使说明的程序包对本设计实体部分全部开放,即是可视的。11、VHDL的数据对象包括常量(constant)、

变量(varuable)

信号(signal),它们是用来存放各种类型数据的容器。12、在VHDL的端口声明语句中,端口方向包括in

、out

、buffer

、inout、linkage。“BUFFER”为缓冲端口,与OUT类似,只是缓冲端口允许实体内部使用该端口信号,它可以用于输出,也可以用于端口信号的反馈。当一个结构体用“BUFFER”说明输出端口时,与其连接的另一个结构体的端口也要用BUFFER说明。以“LINKAGE”定义的端口不指定方向,无论哪个方向的信号都可以连接。13、VHDL的PROCESS(进程)语句是由顺序语句

组成的,但其本身却是并行语句

。14、VHDL的子程序有

过程(PROCEDURE)

函数(FUNCTION)

两种类型,具有可重载性特点。15、图形文件的扩展名是.bdf;矢量波形文件的扩展名是.vwf;使用VHDL语言,文本设计文件的扩展名是.vhd;自建元件图形符号文件的扩展名.bsf;资源分配说明文件扩展名.qsf,用文本打开它可以修改引脚编号;逻辑综合会生成.edf文件;双击.qpf文件可启动QuartusII并打开已有工程。16、图形编辑中模块间的连线有三种形式:节点线、总线和管道线17、Quartus编译器编译FPGA工程最终生产两种不同用途的文件,它们分别是.sof和.pof。sof是SRAMObjectFile,下载到FPGA中,断电丢失。pof是ProgrammerObjectFile,下载到配置芯片中,上电重新配置FPGA。18、FPGA过程中的仿真有三种:行为仿真、逻辑仿真、时序仿真。19、IP核在EDA技术和开发中占有很重要地位,提供VHDL硬件描述语言功能块,但不涉及实现该功能模块的具体电路的IP核为软件IP。一.问答题1信号赋值语句在什么情况下作为并行语句?在什么情况下作顺序语句?信号赋值和变量赋值符号分别是什么?两种赋值符号有什么区别?信号赋值语句在进程外作并行语句,并发执行,与语句所处的位置无关。信号赋值语句在进程内或子程序内做顺序语句,按顺序执行,与语句所处的位置有关。信号赋值符号为“<=”变量赋值用“:=”。信号赋值符号用于信号赋值动作,不立即生效。变量,赋值符号用于变量赋值动作,立即生效。2进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用?进程的“敏感信号表”也称敏感表,是进程的激活条件,可由一个或多个信号组成,各信号间以“,”号分隔。当敏感信号表中的任一个信号有事件发生,即发生任意变化,此时,进程被激活,进程中的语句将从上到下逐句执行一遍,当最后一条语句执行完毕之后,进程即进入等待挂起状态,直到下一次敏感表中的信号有事件发生,进程再次被激活,如此循环往复。3什么是库、程序包、子程序、过程调用和函数调用?库和程序包用来描述和保存元件、类型说明和子程序等,以便在其它设计中通过其目录可查询、调用。子程序由过程和函数组成。在子程序调用过程中,过程能返回多个变量,函数只能返回一个变量。若子程序调用的是一个过程,就称为过程调用,若子程序调用的是一个函数,则称为函数调用。过程调用、函数调用都是子程序调用。二、VHDL程序填空1.下面程序是1位十进制计数器的VHDL描述,试补充完整。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10IS PORT(CLK:INSTD_LOGIC; Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDCNT10;ARCHITECTUREbhvOFCNT10IS SIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);BEGIN PROCESS(CLK) BEGIN IFCLK'EVENTANDCLK='1'THEN --边沿检测 IFQ1>10THEN Q1<=(OTHERS=>'0'); --置零 ELSE Q1<=Q1+1; --加1 ENDIF; ENDIF; ENDPROCESS; Q<=Q1;ENDbhv;2.下面是一个多路选择器的VHDL描述,试补充完整。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYbmuxIS PORT( sel:INSTD_LOGIC; A,B:INSTD_LOGIC_VECTOR(7DOWNTO0); Y :OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDbmux;ARCHITECTUREbhvOFbmuxISBEGIN y<=Awhensel='1'ELSEB;ENDbhv;三、VHDL程序改错仔细阅读下列程序,回答问题LIBRARYIEEE; --1USEIEEE.STD_LOGIC_1164.ALL; --2ENTITYLED7SEGIS --3PORT( A :INSTD_LOGIC_VECTOR(3DOWNTO0); --4 CLK :INSTD_LOGIC; --5 LED7S:OUTSTD_LOGIC_VECTOR(6DOWNTO0)); --6ENDLED7SEG; --7ARCHITECTUREoneOFLED7SEGIS --8 SIGNALTMP:STD_LOGIC; --9BEGIN --10 SYNC:PROCESS(CLK,A) --11 BEGIN --12 IFCLK'EVENTANDCLK='1'THEN --13 TMP<=A; --14 ENDIF; --15 ENDPROCESS; --16 OUTLED:PROCESS(TMP) --17 BEGIN --18 CASETMPIS --19 WHEN"0000"=>LED7S<="0111111"; --20 WHEN"0001"=>LED7S<="0000110"; --21 WHEN"0010"=>LED7S<="1011011"; --22 WHEN"0011"=>LED7S<="1001111"; --23 WHEN"0100"=>LED7S<="1100110"; --24 WHEN"0101"=>LED7S<="1101101"; --25 WHEN"0110"=>LED7S<="1111101"; --26 WHEN"0111"=>LED7S<="0000111"; --27 WHEN"1000"=>LED7S<="1111111"; --28 WHEN"1001"=>LED7S<="1101111"; --29 ENDCASE; --30 ENDPROCESS; --31ENDone; --32在程序中存在两处错误,试指出,并说明理由:第14行TMP附值错误第29与30行之间,缺少WHENOTHERS语句修改相应行的程序:错误1 行号:9程序改为:TMP:STD_LOGIC_VECTOR(3DOWNTO0);错误2 行号:29程序改为:该语句后添加WHENOTHERS=>LED7S<="0000000";二.改错题1.已知sel为STD_LOGIC_VECTOR(1DOWNTO0)类型的信号,而a、b、c、d、q均为STD_LOGIC类型的信号,请判断下面给出的CASE语句程序片段:CASEselISWHEN“00”=>q<=a;WHEN“01”=>q<=b;WHEN“10”=>q<=c;WHEN“11”=>q<=d;ENDCASE;答案:CASE语句缺“WHENOTHERS”语句。2.已知data_in1,data_in2为STD_LOGIC_VECTOR(15DOWNTO0)类型的输入端口,data_out为STD_LOGIC_VECTOR(15DOWNTO0)类型的输出端口,add_sub为STD_LOGIC类型的输入端口,请判断下面给出的程序片段:LIBRARYIEEE;;ENTITYaddISPORT(data_in1,data_in2:ININTEGER;data_out:OUTINTEGER);ENDadd;ARCHTECTUREadd_archOFaddISCONSTANTa:INTEGER<=2;BEGINdata_out<=(data_in1+data_in2)*a;ENDaddsub_arch;答案:常量声明时赋初值的“<=”符号应改用“:=”符号。3.已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片段:ARCHITECTUREtest_archOFtestISBEGINSIGNALB:STD_LOGIC;Q<=B;ENDtest_arch答案:信号SIGNAL的声明语句应该放在BEGIN语句之前。4.已知A和Q均为BIT类型的信号,请判断下面的程序片段:ARCHITECTUREarchtestOFtestISBEGINCASEAISWHEN‘0’=>Q<=‘1’;WHEN‘1’=>Q<=‘0’;ENDCASE;ENDarchtest;答案:CASE语句应该存在于进程PROCESS内。四、阅读下列VHDL程序,画出原理图(RTL级)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYHADIS PORT( a:INSTD_LOGIC; b:INSTD_LOGIC; c:OUTSTD_LOGIC; d:OUTSTD_LOGIC );ENDENTITYHAD;ARCHITECTUREfh1OFHADISBEGIN c<=NOT(aNANDb); d<=(aORb)AND(aNANDb);ENDARCHITECTUREfh1;五、请按题中要求写出相应VHDL程序带计数使能的异步复位计数器输入端口: clk 时钟信号rst 异步复位信号en 计数使能load 同步装载data (装载)数据输入,位宽为10输出端口: q 计数输出,位宽为10LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT1024IS PORT( CLK,RST,EN,LOAD :INSTD_LOGIC; DATA:INSTD_LOGIC_VECTOR(9DOWNTO0); Q:OUTSTD_LOGIC_VECTOR(9DOWNTO0));ENDCNT1024;ARCHITECTUREONEOFCNT1024ISBEGIN PROCESS(CLK,RST,EN,LOAD,DATA) VARIABLEQ1:STD_LOGIC_VECTOR(9DOWNTO0); BEGIN IFRST='1'THEN Q1:=(OTHERS=>'0'); ELSIFCLK='1'ANDCLK'EVENTTHEN IFLOAD='1'THEN Q1:=DATA; ELSE IFEN='1'THEN Q1:=Q1+1; ENDIF; ENDIF; ENDIF; Q<=Q1; ENDPROCESS;ENDONE;看下面原理图,写出相应VHDL描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYTRI_STATEIS PORT( E,A:INSTD_LOGIC; Y:INOUTSTD_LOGIC; B:OUTSTD_LOGIC);ENDTRI_STATE;ARCHITECTUREBEHAVOFTRI_STATEISBEGIN PROCESS(E,A,Y) BEGIN IFE='0'THEN B<=Y; Y<='Z'; ELSE B<='Z'; Y<=A; ENDIF; ENDPROCESS;ENDBEHAV;六、综合题下图是一个A/D采集系统的部分,要求设计其中的FPGA采集控制模块,该模块由三个部分构成:控制器(Control)、地址计数器(addrcnt)、内嵌双口RAM(adram)。控制器(control)是一个状态机,完成AD574的控制,和adram的写入操作。Adram是一个LPM_RAM_DP单元,在wren为’1’时允许写入数据。试分别回答问题下面列出了AD574的控制方式和控制时序图AD574逻辑控制真值表(X表示任意)CECSRCK12_8A0工作状态0XXXX禁止X1XXX禁止100X0启动12位转换100X1启动8位转换1011X12位并行输出有效10100高8位并行输出有效10101低4位加上尾随4个0有效AD574工作时序:要求AD574工作在12位转换模式,K12_8、A0在control中如何设置K12_8为‘1’,A0为‘0’试画出control的状态机的状态图类似书上图8-4对地址计数器模块进行VHDL描述输入端口:clkinc 计数脉冲 cntclr 计数器清零输出端口:rdaddr RAM读出地址,位宽10位libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityaddr_cntis port( clkinc,cntclr:instd_logic; wraddr:outstd_logic_vector(9downto0));endaddr_cnt;architectureoneofaddr_cntis signaltmp:std_logic_vector(9downto0);begin process(clkinc,cntclr) begin ifclkinc'eventandclkinc='1'then ifcntclr='1'then tmp<=(others=>'0'); else tmp<=tmp+1; endif; endif; endprocess; wraddr<=tmp;endone;根据状态图,试对control进行VHDL描述libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycontrolis port( addata:instd_logic_vector(11downto0); status,clk:instd_logic; cs,ce,a0,rc,k12_8,clkinc:outstd_logic; rddata:outstd_logic_vector(11downto0));endcontrol;architecturebehavofcontrolis typecon_stis(s0,s1,s2,s3,s4); signalcst,nst:con_st; signallock:std_logic; signalreg12:std_logic_vector(11downto0);begin a0<='0'; k12_8<='1'; ce<='1'; cs<='0'; REGP:process(clk) begin ifclk'eventandclk='1'then cst<=nst; endif; endprocess; COMP:process(cst,status,addata) begin case(cst)is whens0=>rc<='1';lock<='0';nst<=s1; whens1=>rc<='0';lock<='0';nst<=s2; whens2=>ifstatus='1'thennst<=s3;endif; rc<='1';lock<='0'; whens3=>rc<='1';lock<='1';nst<=s4; whens4=>rc<='1';lock<='0';nst<=s0; whenothers=>nst<=s0; endcase; endprocess; LOCKP:process(lock) begin iflock='1'andlock'eventthen reg12<=addata; endif; endprocess; rddata<=reg12; clkinc<=lock;--(或者为NOTLOCK,延后半个时钟)endbehav;已知adram的端口描述如下 ENTITYadramIS PORT ( data :INSTD_LOGIC_VECTOR(11DOWNTO0);--写入数据 wraddress:INSTD_LOGIC_VECTOR(9DOWNTO0);--写入地址 rdaddress:INSTD_LOGIC_VECTOR(9DOWNTO0);--读地址 wren :INSTD_LOGIC:='1';--写使能 q :OUTSTD_LOGIC_VECTOR(11DOWNTO0)--读出数据 );ENDadram; 试用例化语句,对整个FPGA采集控制模块进行VHDL描述libraryieee;useieee.std_logic_1164.all;entitydacois port( clk,cntclr,status:instd_logic; addata:instd_logic_vector(11downto0); rdaddr:instd_logic_vector(9downto0); cs,ce,a0,rc,k12_8:outstd_logic; rddata:outstd_logic_vector(11downto0));enddaco;architectureoneofdacois componentcontrolis port( addata:instd_logic_vector(11downto0); status,clk:instd_logic; cs,ce,a0,rc,k12_8,clkinc:outstd_l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论