CPLD考试整理

更新时间:2024-04-20 07:22:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 电子系统设计概论 1、数字系统与数字器件;

数字器件:即数字IC芯片。是构成数字系统的基本部件。数字电子系统:是可以完成某种(或多种)特定的、功能不单一的一种电子系统。一般应包含某种控制器及受控单元。

2、SOC 和 SOPC近来人们已经能够在单一半导体芯片上设计、制造百万个以上的晶体管,这种高集成度的IC芯片已经开始具备以往一个数字系统的全部特性与功能,这就产生了现代所谓的“单片 系统”(SOC,即System On a Chip)和SOPC。 3、构建数字系统的方法以及他们的特点; [1]标准化的中、小规模数字集成电路

特点:简单易用、价格低廉,应用广泛,集成度较低,功能受限。致使系统构成复杂、功耗高、可靠性偏低。 [2].基于LSI(大规模集成电路)或VLSI的微处理器

特点:CPU、MCU、DSP依靠执行指令(软件)可以方便的实现几乎任意的数字逻辑功能,其应用灵活性极强。

[3].基于LSI或VLSI的专用集成电路ASIC (Application Specific Integrated Circuits )

特点:需要专门设计、定制、大规模集成、性能强、功耗低、工作可靠性高、保密性高、大批量应用时成本也较低;

使用。

较高的开发费用、设计与制造周期也较长。只适合在大批量工业应用的场合中使用。 [4].基于LSI/VLSI的可编程逻辑器件PLD

4、PLD数字系统的特点;

由用户自定义器件的功能、大规模集成。

设计周期短、设计风险低、应用灵活、系统功能强大、功耗低。

用PLD来进行数字系统的开发与设计已成为现代电子设计的一种方向与潮流。

5、可编程逻辑器件PLD(什么是PLD、为什么会发展PLD、PLD器件的优点、PLD的发展趋势);

[1].可编程器件(PLD)[2]. 现有方法背景:理论和器件的局限性;生产技术背景:VLSI 开发技术背景:EDA,自上而下;市场需求背景:客户需求

[3].1)PLD集成度高 2)降低功耗,提高可靠性 3)完善先进的EDA开发工具 4)提供语言、图形、波形等设计方法,灵活、方便 5)通过仿真工具来验证设计的正确性,提高设计的成功率6)可以反复地擦除、编程配置,方便进行设计修改和升级7)灵活地定义管脚功能,简化应用8)减轻设计工作量,缩短系统开发时间9)保密性好。

[4].向高集成度、高速度方向进一步发展; 向SOPC方向发展; 向低电压和低功耗方向发展;内嵌多种功能模块;向数、模混合可编程方向发展; IP内核得到不断发展 6、PLD与MCU的区别;

MCU是通过软件(指令)来实现预期的功能;

PLD是通过内部硬件布线、以硬件来实现预期的功能。所以PLD完成逻辑功能的工作速度比MCU要快得多。 7、EDA的含义、EDA设计方法、EDA应用 [1].电子设计自动化EDA(Electronic Design Automation)是以电子计算机为设计工具和设计平台、以电子线路硬件描述语言HDL为主要系统描述手段,综合现代CAD(计算机辅助设计)、CAT(计算机辅助测试)、CAE(计算机辅助工程)技术,自动、高速的完成系统电路逻辑编译、逻辑化简、逻辑综 合、逻辑仿真、逻辑优化直至逻辑芯片版图实现,是一种自动化电子系统与IC设计的技术和设计工具。 [2] 以电子线路硬件设计软件化的方法

[3] 1)电子线路设计 2)PCB设计 3)IC设计

8、用EDA开发PLD时的设计输入、设计处理、设计验证包含哪些内容。 原理图输入:HDL语言输入;波形输入;状态图输入

设计处理:优化和综合;映射;布局与布线;生成编程文件 .设计验证:功能仿真; 时序仿真;在线验证 第二章 可编程逻辑器件基础

1、阵列型简单PLD器件的种类及结构组成; 按集成度分:低密度(SPLD)高密度(CPLD) 按结构特点分:阵列型;单元型

按编程次数分:多次可编程;一次可编程

按编程和配置特性分:非易失性器件;易失性器件 阵列型简单PLD器件可分成4大类型:

分类 名称 与阵列 或阵列 PROM 可编程存储器 固定 可编程 PLA 可编程逻辑阵列 PAL 可编程阵列逻辑 GAL 通用逻辑阵列 可编程 固定 可组态 含存储器 可编程 可编程 可编程 固定 可组态 固定 固定 输出 PAL与GAL不同:用可编程的OLMC代替固定连接的或阵列

OLMC结构:1、一个或门2、一个异或门3、一个D触发器4、四个可控多路选择器(2个2选1选择器2个4选1选择器)5、一个具有三态功能的非门。 2、现代PLD使用的内部编程元件种类;

(1)一次性编程的熔丝(Fuse)或反熔丝(Antifuse)开关;(2)基于浮栅技术的存储器。包括紫外线擦除电编程和电擦除电编程的EPROM、E2PROM与Flash Memory(闪速存储器,简称为闪存);

(3)允许无限次编程使用的静态存储器SRAM。 3、PAL器件的结构和输出类型;

[1].是一种与阵列可编程、或阵列固定的器件。

[2].1)专用输出基本门阵列结构 2)可控极性输出结构3)可编程输入/输出结构4)寄存器输出结构

4、简述GAL器件的基本结构、特点和工作原理。GAL16V8的组成,GAL的输出逻辑宏单元OLMC的几种组态和特点。 [1]结构:一个可编程与阵列和一个固定的或门阵列 [2]特点:有一个输出逻辑宏单元

[3]原理:通过编程写入用户可将逻辑宏单元设置为不同的工作状态,从而具备了PAL的四种输出模式及输出类型。

[4] GAL16V8的组成:1个可编程的与阵列;8个输入缓冲器;8个输出/反馈缓冲器;8个三态输出缓冲器;8个输出逻辑宏单元OLMC;1个时钟输入CLK 缓冲器;1个输出使能缓冲器 [5]. a)专用输入模式

在专用输入模式下,引脚I/O只能作为输入使用,连接到I/O上的输入信号作用于相邻的OLMC,来自邻级输出的信号接到与逻辑阵列的输入上。 b)专用组合输出模式

这时输出三态缓冲器处于连通(工作)状态,异或门的输出经过OMUX 送到输出三态缓冲器。 c)反馈组合输入/输出模式

在反馈组合输出模式下,三态缓冲器由第1乘积项选通的,且输出信号经过FMUX又反送到与逻辑阵列的输入线上。 d)时序电路中的组合输出模式

TSMUX 选择第一与项;三态缓冲器受第一与项控制;OMUX选择异或门输出;FMUX选择本级输出信号反馈或本端口输入信号。 d)时序电路中的组合输出模式

这时GALl6V8构成一个时序逻辑电路,这个OLMC是该时序

逻辑电路中的组合逻辑部分的输出。相邻的OLMC中至少会有 一个是寄存器输出模式。在这种工作模式下,异或门的输出不经过触发器而直接送到输出端。 e)寄存器输出模式

这时异或门的输出连接到触发器的D输入端,触发器的Q端经三态缓冲器送到输出端,同时/Q端又经过互补输出的缓冲器反 馈到了与逻辑阵列的输入端。输出三态缓冲器由外加的OE信号控制。

时钟信号由引脚1输入,11号引脚接三态控制信号。时钟信号CLK和控制信号是给工作在寄存器输出模式下的那些OLMC共 同使用。 第三章 CPLD/FPGA基础

1、Altera 公司,主要的CPLD生产厂商 2、Xilinx 公司,主要的FPGA生产厂商 3、Lattice公司,著名的CPLD生产厂商 4、ACTEL公司, 著名的CPLD生产厂商

1、CPLD/FPGA的中英文全称、CPLD/FPGA 的主要特点、SPLD和CPLD/FPGA的划分、

[1].CPLD(Complex Programable Logic Device)复杂可编程逻辑器件;FPGA(Field Programable Gate Array)现场可编程门阵列[2]. 1)芯片规模不断增大,能实现的功能不断增强,2)利用CPLD \\FPGA试制样片,能够以最短的时间占有市场,3)资金投入少,节省了许多潜在的花费。[3].单片集成度的高低来划分它们,一般集成度在1000逻辑门以下为SPLD否则为CPLD\\FPGA, 2、CPLD的组成及各部分的作用、CPLD的性能特点。Altera公司CPLD器件可编程内连线PI的特点。 [1] CPLD结构:(1)逻辑宏单元 :这种结构可提高内部资源利用率。(2)可编程内连线:PI负责信号传递,连接所有的逻辑宏单元,或I/O与宏单元的连接。(3)可编程的I/O控制块:I/O单元分布于器件的四周,提供器件外部引脚与内部逻 辑之间的连接。

[2]. CPLD的性能特点可多次编程、改写和擦除;具有高密度、高速度、高可靠性和低功耗;集成度远远高于 PAL和GAL;有灵活多样的逻辑结构,可满足各种数字电路系统设计的需要;内部时间延迟与器件结构及逻辑连接等无关,可预测,易消除竞争冒险;有多位加密位,因此可杜绝编程数据的非法抄袭。 [3]. 1)在各个逻辑宏单元之间以及逻辑宏单元与I/O单元之间提供可 编程的信号连接网络;2)分为基于阵列的内连线和基于多路选择器内连线;3)CPLD中一般采用固定长度的线段来进行连接,因此信号传 输的延时是固定的,使得信号传输时间延时能够预测。

3、FPGA的组成及各部分作用、查找表LUT作用和工作原理、FPGA的性能特点。Xilinx 公司的FPGA器件可编程互连线的种类与作用。

[1].<1>.可编程逻辑块CLB组成了 FPGA的核心门阵列,能完成用户指定的逻辑功能<2>.可编程输入输出块(IOB)位于芯片内部四周,在内部逻辑阵列与外部芯片封装引脚之间提供一个可编程接口。<3>.可编程连线资源PIR位于芯片内部的逻辑块之间,经编程后形成连线网络,用于芯片内部逻辑间的相互连接,并在它们之间传递逻辑信息。 [2]查找表(LUT)就是一个有N根(一般是4根)地址线的16x1的RAM存储器。N个输入的逻辑函数,需要2的N次方的容量的SRAM来实现. 一个LUT无法完成的N>4的多输入电路,就需要通过进位逻辑和级连的方法将多个LUT单元相连,这样FPGA就可以实现复杂的逻辑。作用:<1>.实现组合逻辑函数<2>.查找表级联可以实现复杂的逻辑。

[3].工作原理:当用户通过原理图或HDL 语言描述了一个4输入的逻辑电路后,EDA软件就会按设计要求自动计算逻辑电路的所有可能的结果,并把该结果事先写入这个RAM存储器。这样,当输入变量作为RAM的地址信号输入时,预期的结果(输出逻辑函数)就作为RAM的存储数据输出了。

[4].特点:1)采用SRAM编程技术,具有高密度、高速度、高可靠性和低功耗;集成度远远高于PAL和GAL;结构灵活,内部的CLB、IOB和PI均可编程;强有力的组 合逻辑函数发生器,可实现多个变量的任意逻辑。可满足各种数字电路系统设计的需要。2)某些FPGA还提供片内高速RAM,可用于FIFO等的设计。3)每次上电时需进行数据配置;断电后,配置数据自动丢失。4)内部时间延迟与器件结构及逻辑连接等有关,故信号传输时延不可预测。——缺点。 [5]. <1>.单长线:可控制开关矩阵将CLB与CLB,或者CLB 与I/OB连在一起。<2>.双长线:利用双长线可以使两个相隔(非相邻)的CLB连接。<3>.长线:主要用于长距离或多分支信号(如控制、时钟信号)的传送。 CPLD与FPGA相同与区别: 相同:(组成结构相同)

1二维逻辑块阵列。器件的逻辑组成核心。

2连接二维逻辑块的互联资源,有各种长度的连接。通常用 来连接逻辑块之间和逻辑块和IO之间的连线。 3输入输出单元,提供端口多种输出特性。 不同: 不同点 逻辑功能实现 存储形式 集成度 相对低 EEPROM SRAM(EEPROM) 相对高(2万门以上) 使用场合 大规模组合逻辑电路 芯片利用率 内部宏单元的与或阵列较大,不易被完全使用,利用率较FPGA低 布线 连续式布线。宏单元靠高速数据通道,数量有限,限非连续式布线 大规模时序逻辑电路 比较复杂算法 CLB分块小,丰富连线资源,利用率高 外带CPLD 与或阵列 FPGA 查找表(LUT) 制灵活性 延时 相对小且精确 其他资源 保密性 可加密 一般不能保密 - EAB,锁相环 不易控制 注:由于FPGA非连续性布线,每次编程即使实现相同功能,内部走线未必相同。 CPLD命名规则: EPM7128SLC84-10

EPM7:产品系列为EPM7000系列 128:128个宏单元;

S:电压为5V,AE为3.3V,B为2.5V L:封装为PLCC,Q代表PQFP等

C:C:商业级(Commercial)0~70度, I:工业级(Industry),-40~85度 M:军品级(Military),-55~125度 84:管脚数目

10:10nS信号延时,速度级别 FPGA命名规则: EPF10K 10LC84-3

EPF10K:产品为10K的FPGA产品 10:10K个逻辑门; L:封装为PLCC,Q:PQFP 84:管脚数目

3:3ns延时,速度

第四章 ALTERA的CPLD与FPGA器件

1、ALTERA 产品系列、Altera 器件性能特点; 所有的Altera器件系列均采用CMOS工艺, (1) MAX系列:Classic,MAX 3000A MAX 5000,MAX 7000,MAX 7000S MAX 7000A,MAX 7000B MAX 9000,MAX ⅡFLEX系列:FLEX 6000,FLEX 8000,FLEX 10K, FLEX 10KA ,FLEX 10KB ,FLEX 10KV,FLEX 10KEAPEX系列:APEX 20K, APEX 20KE ,APEX Ⅱ Cyclone系列:Cyclone,Cyclone ⅡStratix系列:Stratix,Stratix GX, Stratix ⅡACEX系列:ACEX 1K, ACEX 2K

(2)Altera 器件性能特点 :<1> 高性能<2>高密度逻辑集成<3> 较短的开发周期<4>高性能价格比<5> 丰富的优化宏函数<6>在系统可编程(ISP) EPM7128STC100-7

EPM = 家族标识 (可擦除可编程MAX器件) 7128S = 器件类型 (128 = 单元数量) T = 封装类型 (L = PLCC, T = TQFP...)

C= 使用环境 (商业Commercial,工业Industrial) 100= 引脚数量 (number of pins on the package) -7= 速度级别( ns )

速度级别后可能还有后缀 (作为特殊器件的特征)

2、Altera MAX 7000 结构、MAX 7000利用什么技术实现复杂逻辑函数、MAX 7000宏单元的组成。Altera公司MAX7000器件扩展乘积项的种类和作用。 (1) MAX7000:逻辑阵列块(LAB);可编程连线阵列(PIA);I/O控制块(I/O) (2) 乘积项(Product-Term)结构

(3)组成:逻辑阵列、乘积项选择矩阵、可编程触发器

(4)并联扩展项:实现高速复杂的逻辑功能。共享扩展项:每个LAB有多达16个共享扩展项。共享扩展项就是由每个宏单元提供一个未投入使用的乘机项,将它们反相后,反馈到逻辑阵列,便于集中使用。

3、FLEX 10K组成、特点,什么是嵌入式阵列EAB、作用。FLEX 10K利用什么技术实现复杂逻辑函数,FLEX 10K器件LE的组成。 (1)主要由嵌入式阵列EAB、逻辑阵列块LAB、 快速布线互连Fast Track和I/O单元等四部分组成。

(2) FLEX 10K器件主要性能特点:具有实现宏函数的嵌入式阵列,能实现高效存储器和特 殊的逻辑功能;具有实现普通功能的逻辑阵列;高密度;低功耗;灵活的内部连接;功能强大的I/O引脚;多样的封装形式;多种配置方式;支持多功能电压I/O接口 (3) 嵌入式阵列EAB (EAB : embedded array block):EAB是在PLD中嵌入的一大块RAM; (4) EAB的作用:实现RAM、ROM功能;查找表;实现FIFO功能

(5) 逻辑单元(LE)是FLEX10K结构中的最小单元,它以紧凑的尺寸提供高效的逻辑功能。 每个LE含有一个4输入查找表(LUT)、一个带有同步使能的可编程触发器、一个进位链和一个级联链。

4、FLEX10K器件提供了两种类型的专用高速数据通道:进位链和级联链 它们连接相邻LE,但没有使用互连通道。进位链支持高速计数器和加法器。级联链可以在最小的延时情况下实现多输入逻辑。进位链和级联链连接到同行中所有LAB及LAB中的所有LE。

大量使用进位链和级联链会降低布局布线的多样性,因此,使用进位链和级联链限于对速度有要求的关键部分的设计。 5MAX与FLEX10K器件的相同点: 1、 都是LSI器件;

2、 可按用户要求编程使用;

3、 需在计算机上借助开发系统予以设计、使用; 4、 芯片功能强大,价廉物美。应用广泛。 不同点:

MAX7000 FLEX10K

1、 是与或阵列型结构; 属LUT结构; 2、 编程单元是EEPROM 编程单元是SRAM

3、 无需外部配置,为非易失性器件;为易失性器件断电后芯片功能消失 4、 集成度相对较低; 集成度相对较高,可达10万门级

6、什么是边界扫描测试、边界扫描测试的作用。标准的边界扫描测试用信号线。JTAG的全称(Joint Test Action Group) (1) 什么是边界扫描测试?

边界扫描测试(简称为BST,Boundary Scan Testing),是 为了有效的进行大规模集成电路的在板测试而由联合测试行动 组织(JTAG,Joint Test Action Group) 提出来的一种新型测 试技术。

(2) 边界扫描测试的作用:BST结构不需要使用外部的物理测试探针就能获得器件的功能数据,它可以在器件正常工作时进行。强行加入的测试数据串行地移入边界扫描单

元,捕获的数据 串行移出并在器件外部同预期的结果进行比较,人们就能得出 该器件是否存在内部损坏的结论。

(3)标准的边界扫描测试需要五根信号线,对电路板上:TDI--测试数据输入,TDO--测试数据输出,TMS--测试模式选择,TCK--测试时钟输入 第五章 AHDL硬件描述语言

1、AHDL的英文全称――Altera Hardware Description Language (AHDL)

2、MAX+PLUS的英文全称:MAX+PLUS II Altera’s Multiple Array MatriX Programmable Logic User System. 3、什么是硬件描述语言HDL;

HDL(Hardware DescriptionLanguage)是一种用形式化方法来描述数字电路和系统的语言,也是电子设计人员和电子设计自动化(EDA)工具之间的界面。 AHDL语言AHDL是一种模块化的高级语言,并行执行语言,完全集成于MAX+PLUSSII系统。 1用“--”注释一行,用“%….%”注释一段。 2不区分大小写

3描述内容等效为一个数字电路 4并发执行,不依赖描述的前后顺序 5只支持加减运算,不支持乘除运算

描述一个组合逻辑电路至少要:子设计段、逻辑段

描述一个时序逻辑电路至少要:子设计段、变量段、逻辑段

保留字关键字和保留标识符区别:当关键字被括在单引号中可当作符号名使用而保留标识符则不能。保留关键字和保留标识符都可以在注释中任意使用。 AHDL数字:二进制(B)八进制(Q)十进制(无前缀)十六进制(H) ( 数值不能赋给节点,必须用VCC或GND) 二元运算符:

1、(a,b,c)#(d,e,f)会被解释为(a#d,b#e,c#f) 2、a & b[4..1]被解释为(a&b4,a&b3,a&b2,a&b1)

3、在表达式(3#8)中,3和8分别被转换为二进制数B“0011”和B“l000”,该表达式的最终结果为B“1011” ! 4、(a,b,c)&1= (a,b,c)&(0,0,1)= (0,0,c) 5、(a,b,c)&Vcc=(a,b,c) 布尔等式:

1如果等式左右两侧组的长度不同,那么左侧组的位数一定要能被右侧组的位数整除 2如果等式左侧位数多于右侧,则左侧各位将按顺序映射到右侧 a[4..1]=b[2..1] 中a4=b2,a3=b1,a2=b2,a1=b1;

3如果一个数被赋给一个组,那么这个数值将被截断或带符号扩展至与那个组的长度相同 (a,b)=1;即a=0;b=1; 4、集成电路的层次化设计;

(1)系统级(2)行为级(3)寄存器传输级(RTL级) (4)逻辑门级(门级) (5)电路级(6)版图级 5、软核、固核、硬核;

(1)“虚拟器件”在EDA技术领域中,把用HDL语言建立、功能经过验证、可以综合实现、电路集成总门数在5000门以上的HDL模型称之为“软核”,而把由软核构成的器件称为“虚拟器件”。

(2)“固核”(Firm Core):通常是指已在某一CPLD或FPGA器件上实现、经证明是正确的总门数在5000门以上电路结构编码文件。 (3)“硬核”(Hard Core):已在某一种专用集成电路(ASIC)器件上实现、经证明是正确的总门数在5000门以上的电路结构版图的掩膜。 6、用HDL设计PLD数字系统的步骤;用HDL进行CPLD设计的优点 (1) 用HDL语言开发CPLD/FPGA的完整流程主要包括6个步骤: <1>文本编辑<2>编译<3>功能仿真:(前仿真)<4>时序仿真(后仿真)<5>芯片配置下载:<6>实际工程测试与验证

(2) 用HDL进行CPLD/FPGA设计的优点:<1>较容易进行复杂的设计<2>显著提高设计效率<3>改善设计质量<4>设计与器件/工艺无关<5>便于设计交流和设计的再利用<6>支持并行设计

第六章 CPLD/FPGA的配置与下载

1、什么是配置与下载、器件编程下载的分类、CPLD/FPGA器件的工作状态;

(1) 把CPLD/FPGA设计代码送入芯片的过程称为对CPLD/FPGA器件的配置,也称为下载。

(2)分类:<1>按使用计算机的通讯接口划分:串口下载;并口下载;USB接口下载<2>若按使用的CPLD/FPGA器件划分:CPLD编程;FPGA下载<3>按CPLD/FPGA器件在编程下载过程中的状态划分:主动配置方式;被动配置方式 (3) CPLD/FPGA器件按照正常使用和下载的三 种状态

<1>配置状态(Configuration mode )<2>初始化状态(Initialization)<3>用户状态 2、用ByteBlaster配置的两种模式。

1)被动串行模式(PS)配置--常用来配置FLEX10K、FLEX 8000、FLEX 6000 和ACEX1K系列器件。

2)边界扫描模式(JTAG)配置--对具有边界扫描电路的器件进 行配置重构或在线编程。常用来对MAX系列器件进行编程配置。 3、FLEXl0K系列器件的四种配置方式、工作原理、步骤。 [1]主动串行配置方式:

[2]被动串行配置(PS)方式1)BitBlaster下载电缆控制主机:2)外接微处理器 [3]被动并行同步配置(PPS)方式 [4]被动并行异步(PPA)配置方式: 4. MAX系列非易失性器件的下载配置:对于编程元件为E2PROM或闪存的CPLD器件(如MAX系列器件等),只需简单的利用专门的编程下载电缆(名为ByteBlaster或BitBlaster,可由用户自制)将编程配置数据下载到芯片中去即 了解FPGA器件的几种配置方法:

1使用JTAG下载方法进行配置(调电后丢失);② 使用PS下载方法进行配置(调电后丢失); ③ 使用EPC器件进行配置;(非易失性配置,在产品中多使用) (用编程器将代码下载到EPC器件中,非易失性配置) ④ 使用单片机和EEPROM作为通讯/下载接口;

(需要自己去设计串行通讯硬件电路及通讯收发软件) 2、掌握CPLD/FPGA器件FLEX器件的基本配置引脚。 MAX器件的JTAG配置引脚:TCK/TDI/TDO/TMS TCK: 1; TDI: 9 Vcc: 4 TDO: 3; TMS: 5 GND: 2,10 FLEX器件的PS配置引脚: DCLK: 1 DATA0: 9 Vcc: 4

CONFIG_DONE: 3 NSTATUS: 7 GND: 2,10 5、ALTERA的编程文件;

① SRAM Object格式(.sof)② Programming Object格式(.pof)③ Serial Bittream格式(.sbf)④十六进制格式(.hex) ⑤ ASCII码文本格式(.ttf)⑥ 二进制格式(.rbf)

例1: 组合逻辑电路设计

subdesign YMQ (a0,a1,b,d: input ; out1,out2: output ; )

variable temp: node ; begin

temp=a0 & !a1 ; out1=temp & b ; out2=temp & d ; a2)+(0,a1)+(0,a0); k=(m[]>=3); END;

例6:BCD 七段译码器设计 SUBDESIGN BCDYMQ (in[3..0] :input; ot[6..0] :output; ) BEGIN TABLE

C[7..0]: output; ) Begin

C[]=(0,a[]&b0)+(0,a[]&b1,0)+(0,a[]&b2,0,0)+(0,a[]&b3,0,0,0); End;

例11: 四位全加器 Subdesign fulladd4

(a[3..0],b[3..0],ci:input;

C[3..0],co : BEGIN

ff[].clk=clk; ff[].ena=load; ff[].d=d[]; q[]=ff[]; END;

带使能端的16位计数器:

SUBDESlGN cnt16 (clk,load,ena,clr,d[15..0]:INPUT;

bitout[5..0],g:output; )

variable

a[3..0],b[3..0],c[3..0],d[3..0],e[3..0],f[3..0]:dff;

mda[12..0],mdb[9..0]:dff;

mseg[3..0],mseh[3..0],bitout[5..0]:dff; st[2..0]:dff; fpa,fpb:dff; else

c[]=c[]+1;d[]=d[];e[]=e[];f[]=f[];

end if; else

b[]=b[]+1;c[]=c[];d[]=d[];e[]=e[];f[]=f[]; end if; else

a[]=a[]+1;b[]=b[];c[]=c[];d[]=d[];e[]=e[];f[]= end table;

8位2进制转换为3位BCD码

subdesign bcdzh (ibd[7..0],inclk:input; odd[20..0],selbit:output; )

variable

mh[3..0],mm[3..0],ml[3..0]:dff;

mrd[7..0],st[1..0],fpq[end ; 例3: 4位BCD计数器设计

subdesign BCDCNT (inclk : input ; out[3..0]: output ; )

variable

count[3..0]:dff ; begin

count[ ].clk=inclk ; if count[ ]==9 then count[ ]=0 ; else

count[ ]=count[ ]+1 ; end if ;

out[ ]=count[ ] ; end ;

例3: 8位比较器设计

subdesign cmp8

(a[7..0],b[7..0] :input; dy,xy,equ :output; ) begin

if (a[ ]>b[ ]) then dy=Vcc;

elsif a[]==b[ ] then equ=Vcc; else xy=vcc; end if; end;

例4:优先权编码器的AHDL程序

SUBDESIGN Priority (low,middle,high : INPUT;

hightest_level[1..0] :OUTPUT; ) BEGIN

IF high THEN

hightest_level[ ] =3; ELSIF middle THEN hightest_level[ ] =2; ELSIF low THEN

hightest_level[ ] =1; ELSE hightest_level[ ] =0; END IF; END;

例5: 五人表决器设计

SUBDESIGN VOTE5 (a[4..0] : INPUT; out : OUTPUT;) variable

m[2..0]:node; BEGIN

m[]=(0,a4)+(0,a3)+(0,

in[]=>ot6,ot5,ot4,ot3,ot2,ot1,ot0;

END TABLE; END;

例7:根据输入来选取五个ASCⅡ代码中的一个代码。 SUBDESIGN default1 (i[3..0]:INPUT; ascii_code[7..0]:OUTPUT; ) BEGIN DEFAULTS ascii_code[]=B“00111111”;%“?”的ASCⅡ码=3FH% END DEFAULTS; TABLE i[3..0] => ascii_code[ ]; B“1000”=> B“01100001”;% “a”=61H%

B“0100”=> B“01100010”;% “b”=62H%

B“0010”=> B“01100011”;% “c”=63H%

B“0001”=> B“01100100”;% “d”=64H%

END TABLE; END; 例9: 分频计数器 subdesign fp (inclk:input;

outputf:output;) variable

fp[23..0]:dff; f :dff; begin

fp[].clk=inclk;f.clk=inclk;

if fp[]==19999999 then

fp[]=0; f=!f; else

fp[]=fp[]+1; f=f; end if; outputf=f; end;

例10: 4乘4

Subdesign 44mult (a[3..0],b[3..0]:input;

output; ) Begin

(co,c[])=(0,a[])+(0,b[])+(0,ci); End;

带进位输出的2位BCD计数器设计 SUBDESIGN BCDCNT (inclk:INPUT;

b[3..0],a[3..0],CYY:OUTPUT; )

VARIABLE

b[3..0],a[3..0]:dff ; BEGIN

(b[],a[]).clk=inclk; if(b[]==5)and(a[]==9)then

b[]=0;a[]=0;cyy=gnd; elsifa[]==9 then

a[]=0;b[]=b[]+1;cyy=vcc;

else a[]=a[]+1;b[]=b[]; cyy=vcc; endif; END;

8 位串入串出移位寄存器设计

该移位寄存器具有公共时钟输入端 SUBDESIGN shift8 ( in,inclk :INPUT; out[7..0],q7:OUTPUT; )

VARIABLE a[7..O]:DFF; BEGIN

a[].clk=inclk; a0.d=in;

a[7..1].d=a[6..0].q; q7=a7.q out[]=a[].q END;

带预置端的8位锁存器设计:

要求当输入端load电平为高时,在时钟信号的上升沿把输入端d的数据锁存到输出端q。

SUBDESIGN latch ( clk,load,d[7..0]:INPUT;

q[7..0]:OUTPUT; )

VARIABLE

ff[7..0]: DFFE;

q[15..0]:OUTPUT; )

VARIABLE

count[15..0]:DFFE; BEGlN

count[].clk=clk; count[].clrn=!clr; IF load THEN count[]=d[]; ELSIF ena THEN count[]=count[]+1; ELSE

count[]=count[]; END IF; q[]=count[]; END;

subdesignmealy (clk,reset,y:input; z:output;)variable ss:machine wth states(s0,s1,s2,s3); begin ss.clk=clk; ss.reset=reset; table ss,y=>z,s; s0,0=>0,s0; s0,1=>1,s1 s1,0=>1,s1; s1,1=>0,s2;

s2,0=>0,s2;s2,1=>1,s3;

s3,0=>0,s3;s3,1=>1,s0;

endtable;end; 30%占空比脉冲 subdesign zkb (inclk:input; out:output;) variable a[3..0]:dff; ot:dff; begin

a[3..0].clk=inclk; ot.clk=inclk; if a[]==9 then

a[]=0; else a[]=a[]+1; if (a[]>=4 and a[]<=7) then

ot=vcc; else ot=gnd; end if; end if;

out=ot;end; 串行扫描电路 subdesign 7countx (inclk:input;

outa[6..0],outb[6..0],

begin

fpa.clk=inclk; fpb.clk=fpa; mseg[].clk=fpa; mseh[].clk=fpa;

(a[],b[],c[],d[],e[],f[]).clk=fpb;

mdb[].clk=fpa; st[].clk=fpa; mda[].clk=inclk; bitout[].clk=fpa;

if mda[]==1999 then

mda[]=0; fpa=!fpa; else

mda[]=mda[]+1; fpa=fpa; end if; if mdb[]==499 then

mdb[]=0; fpb=!fpb; else

mdb[]=mdb[]+1; fpb=fpb; end if; if a[]==9 then a[]=0;

if b[]==5 then b[]=0;

if c[]==9 then

c[]=0; if d[]==5 then

d[]=0;

if e[]==2&f[]==1 then e[]=1;f[]=0;

elsif e[]==9 then

e[]=0;f[]=f[]+1; else

e[]=e[]+1;f[]=f[]; end if;

else d[]=d[]+1;e[]=e[];f[]=f[];

end if; f[];

end if; g=GND; if

a[]==0&b[]==0&c[]==0&d[]==0 then g=VCC; end if;

case st[] is when 0=> mseg[]=a[]; bitout[]=1;

st[]=1; when 1=> mseg[]=b[]; bitout[]=2;

st[]=2; when 2=> mseg[]=c[]; bitout[]=4;

st[]=3; when 3=> mseg[]=d[]; bitout[]=8;

st[]=4; when 4=> mseh[]=e[]; bitout[]=16;

st[]=5; when 5=> mseh[]=f[]; bitout[]=32;

st[]=0; end case; Table

mseg[3..0]=>outa[6..0];

h\=>h\h\ =>h\

h\ =>h\h\ =>h\

h\ =>h\h\ =>h\

h\ =>h\h\ =>h\

h\ =>h\h\=>h\

8..0],fp:dff;

mhr[3..0],mmr[3..0],mlr[3..0]:dff; begin

selbit=vcc;

(fpq[],fp).clk=inclk; if fpq[]==249 then fp=!fp;fpq[]=0; else

fp=fp;fpq[]=fpq[]+1; end if;

st[].clk=fp;(mh[],mm[],ml[],mrd[]).clk=inclk;

(mhr[],mmr[],mlr[]).clk=inclk; case st[] is when 0 =>

mrd[]=ibd[];st[]=1; mmr[]=mmr[];mhr[]=mhr[];mlr[]=mlr[]; when 1=>

if mrd[]==0 then mhr[]=mh[];mlr[]=ml;mmr[]=mm[];mm[]=mm[];mh[]=mh[];ml[]=ml[]; st[]=0; else

mmr[]=mmr[];mhr[]=mhr[];mlr[]=mlr[]; mrd[]=mrd[]-1; st[]=1;

if ml[]==9 then ml[]=0;

if mm[]==9 then mh[]=0;

if mh[]==9 then mh[]=0;

else mh[]=mh[]+1; end if; else

mm[]=mm[]+1;mh[]=mh[]; end if; else

ml[]=ml[]+1;mm[]=mm[];mh[]=mh[]; end if; end if; end case; table

mlr[] =>odd[6..0]; end table;table mmr[] =>odd[13..7]; end table;table

mhr[] =>odd[20..14]; end table;end;

简答题

GAL的OLMC和CPLD 宏单元 区别

CPLD的逻辑宏单元主要包括与或阵列、触发器和多路选择器的电路,能独立的配置为组合或时序工作方式。 GAL器件的逻辑宏单元与I/O单元做在一起,成为输出逻辑宏单元(OLMC);CPLD的逻辑宏单元都做在内部,称为内部逻辑宏单元。CPLD的逻辑宏单元与GAL的OLMC结构非常类似,但 逻辑宏单元结构比GAL有所改进。1、乘积项共享结构,提高了各单元或门的使用效率,可实现较复杂的逻辑功能。2.多触发器和隐埋触发器结构,可提高内部资源利用率。3.触发器类型可编程结构,它们与逻辑宏单元相配合,可实现多种逻辑电路结构。 硬件描述语言与计算机语言的区别

HDL(Hardware Description Language)是一种用形式化方法来描述数字电路和系统的语言,也是电子设计人员和电子设计自动化(EDA)工具之间的界面。 VHDL 是针对硬件电路设计的描述语言且描述的对象始终是客观的电路系统。利用VHDL 进行大系统的设计, 可以在脱离具体目标器件的情况下进行, 但在具体的工程设计中, 必须清楚软件程序和硬件构成之间的关系, 在考虑语句所能实现的功能的同时, 必须考虑实现这些功能可能付出的硬件代价, 要对这一程序可能耗费的硬件资源有一明确的估计。一项成功的VHDL工程设计, 除了满足功能的要求、速度的要求和可靠性要求等项指标外, 还必须占用尽可能少的硬件资源。所以VHDL 数据类型在定义和使用上与高级语言有所差别, 即尽可能声明变量的具体取值范围, 以节省电路结构, 这是VHDL 数据类型定义时的最显著的一个特点。 动态扫描电路原理

所谓数码管的动态驱动,就是把每个数码管的“段”对应并联,这样所有数码管的“段驱动”只使用7根驱动线;同时用输出扫描脉冲控制每个数码管的COM端,在一个瞬时只让一个数码管被点亮且每个数码管被轮流点亮。(一个数码管一般点亮为1~5mS)。如此循环不断。由于人眼有视觉残留效应,若各数码管循环点亮的速度足够快,则人眼看到的是多个数码管都被点亮了起来。这就是数码管的动态扫描驱动显示工作原理。 数码管动态驱动电路图如见下:

称驱动数码管的“段”信号为“字形码”,控制数码管COM端的信号为“字位码”。 对下图而言,使用的字位码中“1”的个数只有1个(使用了反相器) 动态驱动的优点:使用较少的引脚,电路功耗较低。

动态驱动的缺点:驱动电路较复杂、数码管数量多时显示亮度降低。 静态驱动的优点:驱动电路简单,显示亮度较高 静态驱动的缺点:占用较多引脚、电路功耗较高

简答题

GAL的OLMC和CPLD 宏单元 区别

CPLD的逻辑宏单元主要包括与或阵列、触发器和多路选择器的电路,能独立的配置为组合或时序工作方式。 GAL器件的逻辑宏单元与I/O单元做在一起,成为输出逻辑宏单元(OLMC);CPLD的逻辑宏单元都做在内部,称为内部逻辑宏单元。CPLD的逻辑宏单元与GAL的OLMC结构非常类似,但 逻辑宏单元结构比GAL有所改进。1、乘积项共享结构,提高了各单元或门的使用效率,可实现较复杂的逻辑功能。2.多触发器和隐埋触发器结构,可提高内部资源利用率。3.触发器类型可编程结构,它们与逻辑宏单元相配合,可实现多种逻辑电路结构。 硬件描述语言与计算机语言的区别

HDL(Hardware Description Language)是一种用形式化方法来描述数字电路和系统的语言,也是电子设计人员和电子设计自动化(EDA)工具之间的界面。 VHDL 是针对硬件电路设计的描述语言且描述的对象始终是客观的电路系统。利用VHDL 进行大系统的设计, 可以在脱离具体目标器件的情况下进行, 但在具体的工程设计中, 必须清楚软件程序和硬件构成之间的关系, 在考虑语句所能实现的功能的同时, 必须考虑实现这些功能可能付出的硬件代价, 要对这一程序可能耗费的硬件资源有一明确的估计。一项成功的VHDL工程设计, 除了满足功能的要求、速度的要求和可靠性要求等项指标外, 还必须占用尽可能少的硬件资源。所以VHDL 数据类型在定义和使用上与高级语言有所差别, 即尽可能声明变量的具体取值范围, 以节省电路结构, 这是VHDL 数据类型定义时的最显著的一个特点。 动态扫描电路原理

所谓数码管的动态驱动,就是把每个数码管的“段”对应并联,这样所有数码管的“段驱动”只使用7根驱动线;同时用输出扫描脉冲控制每个数码管的COM端,在一个瞬时只让一个数码管被点亮且每个数码管被轮流点亮。(一个数码管一般点亮为1~5mS)。如此循环不断。由于人眼有视觉残留效应,若各数码管循环点亮的速度足够快,则人眼看到的是多个数码管都被点亮了起来。这就是数码管的动态扫描驱动显示工作原理。 数码管动态驱动电路图如见下:

称驱动数码管的“段”信号为“字形码”,控制数码管COM端的信号为“字位码”。 对下图而言,使用的字位码中“1”的个数只有1个(使用了反相器) 动态驱动的优点:使用较少的引脚,电路功耗较低。

动态驱动的缺点:驱动电路较复杂、数码管数量多时显示亮度降低。 静态驱动的优点:驱动电路简单,显示亮度较高 静态驱动的缺点:占用较多引脚、电路功耗较高

本文来源:https://www.bwwdw.com/article/1rvp.html

Top