FPGA与CPLD内部结构区别?CPLD以altraMAX7000这种PLD为例,可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O控制块。宏单元是PLD的基本结构,由它来实现基本的逻辑功能。可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。这种基于乘积项(实际就是与或阵列)的PLD基本都是由EEPROM和Flash工艺制造的,一上电就可以工作,无需其他芯片配合。布线方式是全局的,所以延时可预测。CPLD适合做逻辑设计。FPGAFPGA基于LUT,LUT本质上就是一个RAM,每一个LUT可以看成一个有4位地址线的16x1的RAM。这也是为什么FPGA需要外接一个rom来上电配置。以xilinx的Spartan-II为例,主要包括CLBs,I/O块,RAM块和可编程连线。在spartan-II中,一个CLB包括2个Slices,每个slices包括两个LUT,两个触发器和相关逻辑。Slices可以看成是SpartanII实现逻辑的最基本结构。FPGA的制造工艺确定了FPGA芯片中包含的LUT和触发器的数量非常多,往往都是几千上万,PLD一般只能做到512个逻辑单元,而且如果用芯片价格除以逻辑单元数量,FPGA的平均逻辑单元成本大大低于PLD。所以如果设计中使用到大量触发器,例如设计一个复杂的时序逻辑,那么使用FPGA就是一个很好选择。2.Latch和Register区别?行为描述中Latch如何产生?本质的区别在于:latch是电平触发,reg是边沿触发。时序设计中尽量使用reg触发。行为描述中,如果对应所有可能输入条件,有的输入没有对应明确的输出,系统会综合出latch。比如:always@(aorb)//缺少else语句beginif(a==1)q=b;end3.对竞争冒险的理解,以及如何消除?在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。4.用Verilog设计一个5分频器。5分频,奇数分频都可以类似这么做,只需要改div1和div2的参数。div1为奇数分频除2的余数。采用上升延和下降延分别触发不同波形,最后叠加的方式产生奇数分频。moduledivfreq(clk,clk1x,rst,clk1xpose,clk1xnege,coutpose,coutnege);inputclk;inputrst;outputclk1x;outputclk1xpose;outputclk1xnege;output[2:0]coutpose;output[2:0]coutnege;regclk1xpose;regclk1xnege;reg[2:0]coutpose;reg[2:0]coutnege;parameterdiv1=2,div2=4;//div1=5/2,div2=5-1assignclk1x=clk1xpose|clk1xnege;always@(posedgeclkornegedgerst)beginif(!rst)clk1xpose=0;elseif(coutpose==div1)clk1xpose=~clk1xpose;elseif(coutpose==div2)clk1xpose=~clk1xpose;elseclk1xpose=clk1xpose;endalways@(negedgeclkornegedgerst)beginif(!rst)clk1xnege=0;elseif(coutnege==div1)clk1xnege=~clk1xnege;elseif(coutnege==div2)clk1xnege=~clk1xnege;elseclk1xnege=clk1xnege;endalways@(posedgeclkornegedgerst)beginif(!rst)coutpose=0;elseif(coutpose==div2)coutpose=0;elsecoutpose=coutpose+1;endalways@(negedgeclkornegedgerst)beginif(!rst)coutnege=0;elseif(coutnege==div2)coutnege=0;elsecoutnege=coutnege+1;endendmodule1、FPGA结构一般分为三部分:可编程逻辑块(CLB)、可编程I/O模块和可编程内部连线。2CPLD的内部连线为连续式布线互连结构,任意一对输入、输出端之间的延时是固定;FPGA的内部连线为分段式布线互连结构,各功能单元间的延时不定(不可预测)。3大规模可编程器件主要有CPLD和FPGA两类,其中CPLD通过可编程乘积项逻辑实现其逻辑功能。基于SRAM的FPGA器件,每次上电后必须进行一次配置。FPGA内部阵列的配置一般采用在电路可重构技术,编程数据保存在静态存储器(SRAM),掉电易失。4目前世界上有十几家生产CPLD/FPGA的公司,最大的两家是:Altera,Xilinx。5硬件描述语言(HDL)是EDA技术的重要组成部分,是电子系统硬件行为描述、结构描述、数据流描述的语言,它的种类很多,如VHDL、VerilogHDL、AHDL6WHEN_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芯片制造商提供,以便于在设计中为大家所共享。常用库:(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语句的使用将使说明的程序包对本设计实体部分全部开放,即是可视的。11VHDL的数据对象包括常量(constant)、变量(varuable)和信号(signal),它们是用来存放各种类型数据的容器。12在VHDL的端口声明语句中,端口方向包括in、out、buffer、inout、linkage“BUFFER”为缓冲端口,与OUT类似,只是缓冲端口允许实体内部使用该端口信号,它可以用于输出,也可以用于端口信号的反馈。当一个结构体用“BUFFER”说明输出端口时,与其连接的另一个结构体的端口也要用BUFFER说明。以“LINKAGE”定义的端口不指定方向,无论哪个方向的信号都可以连接。13VHDL的PROCESS(进程)语句是由顺序语句组成的,但其本身却是并行语句。14VHDL的子程序有过程(PROCEDURE)和函数(FUNCTION)两种类型,具有可重载性特点。15图形文件的扩展名是.bdf;矢量波形文件的扩展名是.vwf;使用VHDL语言,文本设计文件的扩展名是.vhd;自建元件图形符号文件的扩展名.bsf;资源分配说明文件扩展名.qsf,用文本打开它可以修改引脚编号;逻辑综合会生成.edf文件;双击.qpf文件可启动QuartusII并打开已有工程。16图形编辑中模块间的连线有三种形式:节点线、总线和管道线17Quartus编译器编译FPGA工程最终生产两种不同用途的文件,它们分别是.sof和.pof。sof是SRAMObjectFile,下载到FPGA中,断电丢失。pof是ProgrammerObjectFile,下载到配置芯片中,上电重新配置FPGA18FPGA过程中的仿真有三种:行为仿真、逻辑仿真、时序仿真。19IP核在EDA技术和开发中占有很重要的地位,提供VHDL硬件描述语言功能块,但不涉及实现该功能模块的具体电路的IP核为软件IP。二名词解释,写出下列缩写的中文(或者英文)含义:1.FPGAField-ProgrammableGateArray现场可编程门阵列2VHDL--Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage)甚高速集成电路硬件描述语言3HDLHardwareDescriptionLanguage硬件描述语言4EDAElectronicDesignAutomation电子设计自动化5CPLDComplexProgrammableLogicDevice复杂可编程逻辑器件6PLDProgrammableLogicDevice可编程逻辑器件7GAL,genericarraylogic通用阵列逻辑8.LABLogicArrayBlock逻辑阵列块9.CLBConfigurableLogicBlock可配置逻辑模块10EABEmbeddedArrayBlock嵌入式阵列块11SOPCSystem-on-a-Programmable-Chip可编程片上系统12.LUTLook-UpTabl