1、EDA 技术复习大纲1. 题型:填空,判断改错,编程题编程题、问答题,共 100 分。2. EDA、 FPGA 及 quartus 软件基础知识:如 quartus 相关文件的后缀名;quartus 软件使用常用命令,如管脚分配,编译,编程下载等3. 复习计数器、分频电路的设计、7 段译码器设计、数字时钟、数字秒表的设计。4. 编程题实体部分已经写好。EDA 复习基础知识要点1. EDA 的概念EDA(电子设计自动化)是现代电子设计技术的核心。EDA 就是依靠功能强大的电子计算机,在 EDA 工具软件平台上,对以硬件描述语言 HDL 为系统逻辑描述手段完成的设计文件,自动的完成逻辑编译、化简、
2、分割、综合优化仿真,直至下载到可编程逻辑器件CPLD/FPGA 或专用集成电路 ASIC 芯片中,实现既定的电子线路的功能。2. EDA 的发展阶段CAD 是 EDA 技术发展的早期阶段,此阶段仅仅使用计算机进行辅助绘图工作。CAE 是在 CAD 的工具逐步完善的基础上发展起来的,它开始用计算机将许多单点工具集成在一起使用。20 世纪 90 年代电子技术的飞速发展促使现在的 EDA 技术的形成。出现了 EDA 设计的概念,并发展至今天。3. EDA 设计流程 设计准备 设计输入 设计处理 设计校验 器件编程 器件验证4. 设计输入的三种方式 原理图方式 文本输入方式 波形输入方式5. 设计处理
3、的步骤 设计编译和检查(信号线有无漏接,信号有无双重来源,关键词有无错误) 优化设计和综合 适配和分割 布局和布线 生成编程数据文件6. 常用对应的后缀名 原理图文件 .bdf VHDL 语言文件 .vhd Verilog HDL 文件 .v 仿真波形文件 .vwf7. 可编程逻辑器件的分类按集成密度分类可编程逻辑器件从集成密度上可分为低密度可编程逻辑器件 LDPLD 和高密度可编程逻辑器件 HDPLD 两类。LDPLD 通常是指早期发展起来的、集成密度小于 1000 门/片左右的 PLD 如ROM、PLA 、 PAL 和 GAL 等。HDPLD 包括可擦除可编程逻辑器件 EPLD(Erasa
4、ble Programmable Logic Device) 、复杂可编程逻辑器件 CPLD(Complex PLD)和 FPGA 三种,其集成密度大于 1000 门/片。如Altera 公司的 EPM9560,其密度为 12000 门/片,Lattice 公司的 pLSI/ispLSI3320 为 14000 门/片等。目前集成度最高的 HDPLD 可达 5 亿晶体管/ 片以上。按编程方式分类可编程逻辑器件的编程方式分为两类:一次性编程 OTP(One Time Programmable)器件和可多次编程 MTP(Many Time Programmable )器件。OTP 器件是属于一次性
5、使用的器件,只允许用户对器件编程一次,编程后不能修改,其优点是可靠性与集成度高,抗干扰性强。MTP 器件是属于可多次重复使用的器件,允许用户对其进行多次编程、修改或设计,特别适合于系统样机的研制和初级设计者的使用。根据各种可编程元件的结构及编程方式,可编程逻辑器件通常又可以分为四类:a采用一次性编程的熔丝(Fuse)或反熔丝(Antifuse)元件的可编程器件,如PROM、PAL 和 EPLD 等。b采用紫外线擦除、电可编程元件,即采用 EPROM、UVCMOS 工艺结构(即指EEPROM 工艺结构)的可多次编程器件。c采用电擦除、电可编程元件。其中一种是 E2PROM,另一种是采用快闪存储器
6、单元(Flash Memory )结构的可多次编程器件。d基于基于查找表 LUT、静态存储器 SRAM 工艺的可多次编程器件。目前多数 FPGA 是基于 SRAM 结构的可编程器件。按结构特点分类 PLD 按结构特点分为阵列型 PLD 和现场可编程门阵列型 FPGA 两大类。阵列型 PLD 的基本结构由与阵列和或阵列组成。简单 PLD(如 PROM、PLA、PAL 和GAL 等) 、EPLD 和 CPLD 都属于阵列型 PLD。现场可编程门阵列型 FPGA 具有门阵列的结构形式,它有许多可编程单元(或称逻辑功能块)排成阵列组成,称为单元型 PLD。按其结构的复杂程度及性能的不同分类一般可分为四
7、种:SPLD、CPLD、FPGA 及 ISP 器件。8.4 种不同的可编程逻辑器件简单可编程逻辑器件(SPLD)简单可编程逻辑器件 SPLD(Simple Programmable Logic Device)是可编程逻辑器件的早期产品。最早出现在 20 世纪 70 年代,主要是可编程只读存储器(PROM) 、可编程逻辑阵列(PLA) 、可编程阵列逻辑(PAL)及通用阵列逻辑(GAL)器件等。简单 PLD 的典型结构是由与阵列及或阵列组成的,能有效实现以“乘积和”为形式的布尔逻辑函数。复杂可编程逻辑器件(CPLD)复杂可编程逻辑器件 CPLD(Complex Programmable Logic
8、 Device)出现在 20 世纪 80 年代末期。其结构上不同于早期 SPLD 的逻辑门编程,而是采用基于乘积项技术和E2PROM(或 Flash)工艺的逻辑块编程,不但能实现各种时序逻辑控制,更适合做复杂的组合逻辑电路。现场可编程门阵列(FPGA)现场可编程门阵列 FPGA(Field Programmable Gate Array)是由美国 Xilinx(赛灵思)公司率先开发的一种通用型用户可编程器件。FPGA 与 SPLD 和 CPLD 的结构完全不同,它不包括与门和或门,目前应用最多的 FPGA 是采用对基于查找表技术和 SRAM 工艺的逻辑块编程来实现所需的逻辑功能的。同 CPLD
9、 相比,它的逻辑块的密度更高、触发器更多、设计更灵活,多用于大规模电路的设计,尤其更适合做复杂的时序逻辑。但由于 FPGA 采用的是SRAM 工艺,掉电后数据会丢失,因此实际应用时还须外挂一个 E2PROM 或 Flash Memory来存储编程数据。在系统可编程逻辑器件(ISP)在系统可编程逻辑器件 ISP(In-System Programmable PLD ,通常简称 ISP-PLD)是 1992 年由美国的 Lattice(莱迪思)公司率先推出的。它是一种采用了在系统可编程技术的 PLD,与传统编程技术的最大区别是它不使用编程器,而是通过下载电缆与计算机直接相连,用户在自己设计的目标系
10、统中直接对器件编程。这种全新的设计方法可以使可编程逻辑器件先装配后编程,成为产品后还可以反复编程,使生产维护和系统更新都发生了革命性的变化。在系统编程是使用一根下载电缆一端连在计算机的并行打印口上,另一端接在装配了可编程逻辑器件的 PCB 板上的插头中(目前大都使用 JTAG 口) ,早期的 PLD 是不支持 ISP 技术的,目前的 CPLD、FPGA 都支持 ISP 技术可实现在线编程。8. ISP 概念ISP( In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件。9. VHDL 的概念VHDL 全名超高速集成
11、电路硬件描述语言(Very-High-Speed Integrated Circuit HardwareDescription Language) 。其有以下几个特点: VHDL 具有强大的功能,覆盖面广,描述能力强。 VHDL 有良好的可读性。 VHDL 有良好的可移植性。 使用 VHDL 可以延长设计的生命周期。 VHDL 支持大规模设计的分解和已有设计的再利用。 VHDL 有利于保护知识产权。1、2. 基于 EDA 软件的 FPGA/CPLD 设计流程为:原理图/HDL 文本输入_综合适配_编程下载硬件测试。A. 功能仿真 B. 时序仿真C. 逻辑综合 D. 配置3. IP 核在 EDA
12、 技术和开发中具有十分重要的地位;提供用 VHDL 等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的 IP 核为_。A. 软 IP B. 固 IPC. 硬 IP D. 全对4. 综合是 EDA 设计流程的关键步骤,在下面对综合的描述中,_是错误的。A. 综合就是把抽象设计层次中的一种表示转化成另一种表示的过程。B. 综合就是将电路的高级语言转化成低级的,可与 FPGA / CPLD 的基本结构相映射的网表文件。C. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束。D. 综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系是唯一
13、的(即综合结果是唯一的) 。5. 大规模可编程器件主要有 FPGA、CPLD 两类,其中 CPLD 通过_实现其逻辑功能。A. 可编程乘积项逻辑 B. 查找表(LUT )C. 输入缓冲 D. 输出缓冲6. VHDL 语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述_。A. 器件外部特性 B. 器件的内部功能 C. 器件外部特性与内部功能 D. 器件的综合约束7. 电子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化) ,以及提高运行速度(即速度优化) ;下列方法中_不属于面积优化。A. 流水线设计 B. 资源共享C. 逻辑优化 D. 串行化8. 进程
14、中的信号赋值语句,其信号更新是_。A. 立即完成 B. 在进程的最后完成C. 按顺序完成 D. 都不对9. 不完整的 IF 语句,其综合结果可实现_。A. 时序逻辑电路 B. 组合逻辑电路C. 双向电路 D. 三态控制电路10. 状态机编码方式中,其中_占用触发器较多,但其简单的编码方式可减少状态译码组合逻辑资源,且易于控制非法状态。A. 一位热码编码 B. 顺序编码C. 状态位直接输出型编码 D. 格雷码编码二、VHDL 程序填空1. 下面程序是 1 位十进制计数器的 VHDL 描述,试补充完整。LIBRARY IEEE;USE IEEE._.ALL;USE IEEE.STD_LOGIC_U
15、NSIGNED.ALL;ENTITY CNT10 ISPORT ( CLK : IN STD_LOGIC ;Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ;END CNT10;ARCHITECTURE bhv OF _ ISSIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS (CLK) _IF _ THEN - 边沿检测IF Q1 10 THENQ1 0); - 置零ELSEQ1 LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S 10 THE
16、NQ1 0); - 置零ELSEQ1 LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S 0);ELSIF CLK = 1 AND CLKEVENT THENIF LOAD = 1 THEN Q1 := DATA;ELSEIF EN = 1 THENQ1 := Q1 + 1;END IF;END IF; END IF;Q 0);elsetmp rc rc if status = 1 then nst rc rc nst addata, status = status,clk = clk, cs = cs, ce =
17、 ce, a0 = a0, rc = rc,k12_8 = k12_8, clkinc = clkinc, rddata = rds);u2 : addr_cnt port map (clkinc = clkinc, cntclr = cntclr, wraddr = wraddr);u3 : adram port map (data = rds, wraddress = wraddr,rdaddress = rdaddr, wren = 1, q = rddata);end one;全加器的 VHDL 程序设计:全加器的逻辑表达式为:S = abciCo =(ab)+(aci)+(bci)Q
18、uartus II 中创建一个 EDA 工程的流程。计数和分频综合题ENTITY DVF ISPORT ( CLK : IN STD_LOGIC;D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);FOUT : OUT STD_LOGIC );END;ARCHITECTURE one OF DVF ISSIGNAL FULL : STD_LOGIC;BEGINP_REG: PROCESS(CLK)VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF CLKEVENT AND CLK = 1 THENIF CNT8 = “1
19、1111111“ THENCNT8 := D; FULL 0) ; ELSIF CLKEVENT AND CLK=1 THEN IF EN = 1 THEN IF CQI 0); END IF; END IF; END IF; IF CQI = 9 THEN COUT LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ;END CASE ;END PROCESS ;END ;以上两个程序有效组合实现计数并在 7 段数码管上显示,即计数译码显示电路ENTITY CNTLED IS PORT (CLK0, RST0,
20、EN0: IN STD_LOGIC; LED: OUT STD_LOGIC_VECTOR (6 DOWNTO 0); COUT0: OUT STD_LOGIC); END CNTLED; ARCHITECTURE behav OF CNTLED ISCOMPONENT cnt10PORT (CLK, RST, EN: IN STD_LOGIC; CQ: OUT STD_LOGIC_VECTOR (3 DOWNTO 0); COUT: OUT STD_LOGIC);END COMPONENT;COMPONENT DECL7SPORT (A: IN STD_LOGIC_VECTOR (3 DOWNTO 0);LED7S: OUT STD_LOGIC_VECTOR (6 DOWNTO 0) ) ;END COMPONENT;SIGNAL temp: STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINu1: cnt10 PORT MAP (CLK0, RST0, EN0, TEMP, COUT0);u2: DECL7S PORT MAP (TEMP, LED);END behav;