一、第一章1.几个英文缩写:PLA(Programmable Logic Array)可编程逻辑阵列FPGA(Field Programmable Gate Array)现场可编程逻辑门阵列CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件CAD(Computer Aided Design) 计算机辅助设计CAE(computer aided engineering)EDA(electronic design automation) 电子设计自动化2.EDA定义:以计算机为工作平台,以EDA软件为开发环境,以PLD器件或者ASIC专用集成电路为目标器件设计实现电路系统的一种技术。
3.现代EDA技术的特征【简答】(1)采用硬件描述语言(HDL)进行设计HDL语言更适合于描述规模大、功能复杂的数字系统,使设计者在比较抽象的层次上对所设计系统的结构和逻辑功能进行描述。
(2)逻辑综合与优化目前EDA工具最高只能接受行为级和RTL级描述的HDL文件进行逻辑综合(3)开放性和标准化普遍采用标准化和开放性的框架结构,可以与其他的EDA工具一起进行设计工作,实现各种工具的优化组合,集成在一个易于管理的统一环境下,实现资源共享提高工作效率,利于大规模设计。
(4)更完备的库(Library)在电路设计的各个阶段,EDA系统需要不同层次、不同种类的元器件模型库的支持。
EDA 工具要具有更强大的设计能力和更高的设计效率,必须配有丰富的库。
各种模型库的功能和规模是衡量EDA工具优劣的一个标志4.基于EDA技术的设计思路(P4~P5)(1)Top-down设计,即自顶向下的设计将设计分成几个不同的层次:系统级、功能级、门级、开关级,按照自上而下的顺序,在不同的层次上对系统进行设计和仿真。
首先从系统设计入手,在顶层进行功能框图的划分和机构设计。
在功能级进行仿真纠错,并用HDL对高层次的系统行为进行描述,然后用综合工具将设计转化为具体门电路网表。
Top-down的设计须经过“设计—验证—修改设计—再验证”的过程,不断反复,直到结果能够实现所要求的功能,并在速度、功耗、价格和可靠性方面实现较为合理的平衡。
(2)Bottom-up设计,即自底向上的设计设计者选择标准集成电路,或者将各种基本单元做成基本单元库,调用这些基本单元,直到设计出满足需要的系统。
缺点:效率低、易出错5.IP核的一些概念(intellectual property)IP核(IP模块):指功能完整,性能指标可靠,已验证的、可重用的电路功能模块。
分为硬核、固核、软核。
(1)软核:如ARM。
是指在寄存器级或门级对电路功能用HDL描述,表现为用VHDL等硬件描述语言描述的功能块,但是并不涉及用什么具体电路元件实现这些功能。
(2)硬核:以版图形式实现的设计模块,基于一定的设计工艺。
供设计的最终阶段产品:掩膜。
(3)固核:完成了综合的功能块。
以网表形式提交客户使用。
软核使用灵活,但可预测性差;硬核可靠性高,能确保性能,并和很快投入使用。
6.SOC:SYSTEM on a CHIP芯片系统、片上系统。
是指把一个完整的系统集成在一个芯片上;或者说用一个芯片实现一个功能完整的系统。
举例:由微处理器核(MPU Core),数字信号处理器核(DSP Core),存储器核(RAM/ROM),A/D、D/A核以及USB接口核等构成一个单片系统(SoC)。
7.设计方法的演变(见下图)8.基于FPGA/CPLD的数字系统设计流程(见下图)9.综合将较高层次的设计描述自动转化为较低层次描述的过程。
◆行为综合:从算法表示、行为描述转换到寄存器传输级(RTL)◆逻辑综合:RTL级描述转换到逻辑门级(包括触发器)◆版图综合或结构综合:从逻辑门表示转换到版图表示,或转换到PLD器件的配置网表表示综合器是能自动实现上述转换的软件工具,是能将原理图或HDL语言描述的电路功能转化为具体电路网表的工具注意VHDL与C的区别。
10.仿真仿真是对所设计电路的功能的验证。
在设计过程中对整个系统和各个模块进行仿真,在PC上用软件验证功能是否正确,各部分时序配合是否准确。
(1)功能仿真(Function Simulation)不考虑信号延时等因素(2)时序仿真(Timing Simulation)选择具体器件并完成布局布线后进行的包含延时的仿真。
11.常用的EDA软件工具按公司分:(1)第三方EDA软件工具,如cadence design systems\mentor graphics\synopsys功能强、有良好的兼容性、适合复杂和高效率的设计,但价格昂贵(2)PLD厂商专用开发工具,如altera\xilinx\lattice针对性好、提高资源利用率,降低功耗按软件功能分:(1)集成的FPGA/CPLD开发工具(2)设计输入工具(3)逻辑综合器将设计者在EDA平台上编辑输入的HDL、原理图、状态图等,依据给定的硬件结构和约束控制条件进行编译、优化和转换,最终获得门级电路甚至更底层的电路描述网表文件的过程。
专业逻辑综合软件有:Synopsys的FPGA Express,fpga compiler, fpga compiler IISynplicity的synplify pro/synplifyMentor的leonardo spectrum(4)仿真工具(5)其他设计工具二、第二章(1)PLD理论基础(P19)【简答】任何组合逻辑函数均可化为“与或”表达式,用“与门—或门”二级电路实现,任何时序电路又都可以由组合电路加上存储元件(触发器)构成。
因此,从原理上说,与或阵列加上触发器的结构就可以实现任意的数字逻辑。
(2)CPLD和FPGA的区别??(3)JTAG边界扫描测试(P42)为了解决超大规模集成电路(VLSI)的测试问题,自1986年开始,IC领域的专家成立了“联合测试行动组”(JTAG,Joint Test Action Group),并制定出了IEEE 1149.1边界扫描测试(BST,Boundary Scan Test)技术规范这种测试方法提供一个串行扫描路径,它能捕获器件逻辑的内容,以可以测试遵守JTAG 规范的器件之间的引脚连接情况,且可以在器件正常工作时捕获功能数据。
测试数据从左边的一个边界单元串行移入,捕获的数据从右边的一个边界扫描单元串行移入,然后同标准数据进行比较,就能够知道芯片性能的好坏。
(4)在系统可编程(ISP)in-system programmable)指的是对器件、电路板或整个电子系统的逻辑功能可随时进行修改或重构的能力。
三、第三章1.Quartus II设计开发流程(P56)(1)设计输入:包括原理图输入、HDL文本输入、EDIF网表输入、波形输入(2)编译:先根据设计要求设定编译方式和编译策略,如器件的选择,逻辑综合方法的选择。
然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合、器件适配,并产生报告文件、延时信息文件及编程文件,供分析、仿真编程使用。
(3)仿真:用以验证设计项目的逻辑功能和时序关系是否正确(4)编程与验证:用得到的编程文件通过编程电缆配置PLD,加入实际激励,进行在线测试。
2.时序分析建立时间(tsu):在触发器记时的时钟信号已在时钟引脚确立之前,通过输入或使能端输入而进入寄存器的数据必须在输入引脚处出现的时间长度保持时间(th):在触发器记时的时钟信号已在时钟引脚确立之后,通过输入或使能端输入而进入寄存器的数据必须在输入引脚处出现的时间长度时钟至输出延时(tco):时钟信号在触发寄存器的输入引脚发生转换之后,再由寄存器馈送到信号的输出引脚上取得有效输出所需的时间引脚至引脚延时(tpd):输入引脚处信号通过组合逻辑进行传输并出现在外部最大时钟频率(fmax):在不违反内部tsu和th要求下可以达到的最大频率。
延缓时间:3.宏模块库Quartus自带的有Megafunctions\maxplusii\primitives.Megafunction库是Altera提供的参数化模块库。
从功能上看,可以把Megafunction库中的元器件分为:算术运算模块(arithmetic)\逻辑门模块(gates)\储存模块(storage)\IO模块(I/O)四、第四章1.Verilog语言的特点:从C发展而来【简答】(1)既适合于可综合的电路设计,也可胜任电路与系统的仿真(2)能在多个层次上对所设计的系统加以描述,从开关级、门级、寄存器传输级、行为级,同时该语言不对设计规模加以限制(3)灵活多样的描述风格,包括行为描述和结构描述,支持混合建模,可以在一个设计中不同模块在不同层次上建模和描述(4)Verilog的行为描述语句,如条件语句、赋值语句和循环语句等,类似于软件高级语言,便于学习和使用。
(5)内置各种基本逻辑门,可以方便进行门级结构描述,内置各种开关级元件,可以进行开关级建模(6)易学易用,功能强,可满足各个层次设计人员的需要。
2.Verilog程序的特点:(1)Verilog程序由模块构成,没搞个模块的内容嵌在module和endmodule两个关键字之间;每个模块实现特定功能(2)每个模块首先要进行端口定义,并说明输入和输出口,然后对模块的功能进行定义(3)Verilog程序书写格式自由,一行可以写几个语句,一个语句也可以分多行写(4)除了endmodule等少数语句外,每个语句最后必须有分号(5)可以用/*……*/和//……对Verilog程序做注释,以增强程序的可读性和可维护性3.Verilog模块基本结构:图4.2(1)模块声明(2)端口定义:端口类型有三种(输入端口、输出端口、输入输出双向端口)(3)信号类型声明(输入端口和双向端口不可以用寄存器型)(4)逻辑功能描述assign语句:一般用于组合逻辑赋值always语句:既可用于组合电路也可以描述时序电路元件例化:调用元件的方法类似于在电路图输入方式下调入图形符号来完成设计,这种方法侧重于电路的结构描述。
/*******************************************************/module <顶层模块名> (<输入输出端口列表>);output 输出端口列表; //输出端口声明input 输入端口列表; //输入端口声明/*定义数据,信号的类型,函数声明*/reg 信号名;//逻辑功能定义assign <结果信号名>=<表达式>;//使用assign语句定义逻辑功能//用always块描述逻辑功能always @ (<敏感信号表达式>)begin//过程赋值//if-else,case语句//while,repeat,for循环语句//task,function调用end//调用其他模块<调用模块名module_name > <例化模块名> (<端口列表port_list >);//门元件例化门元件关键字<例化门元件名> (<端口列表port_list>);endmodule/****************************************************************/五、第五章1.Verilog中的标识符可以是任意一组字母、数字以及符号“$”和“_”(下划线)的组合,但标识符的第一个字符必须是字母或者下划线。