




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第10章章 可编程逻辑器件和硬件描述语言可编程逻辑器件和硬件描述语言数字逻辑器件可分为三类:数字逻辑器件可分为三类:(1)标准产品:标准产品:器件的逻辑功能是由制造商确定的,如器件的逻辑功能是由制造商确定的,如TTL、CMOS等中小规模集成器件。常见的标准产品有译码器、数据选择器、计等中小规模集成器件。常见的标准产品有译码器、数据选择器、计数器等。用标准产品构成数字系统需要较多的元件、体积大、功耗数器等。用标准产品构成数字系统需要较多的元件、体积大、功耗大、成本较高。大、成本较高。(2)由软件组态的大规模集成器件:由软件组态的大规模集成器件:如微处理器及其可编程外围器件。如微处理器及其可编程
2、外围器件。(3)专用集成电路专用集成电路(ASICApplication Specific Integrated Circuit):专用集成电路的逻辑功能是由用户定义或者由用户编程:专用集成电路的逻辑功能是由用户定义或者由用户编程确定的,通常是利用电路结构实现逻辑功能,而不是执行软件。确定的,通常是利用电路结构实现逻辑功能,而不是执行软件。可可编程逻辑器件编程逻辑器件(PLD-Programmable Logic Device) 是一种专用大是一种专用大规模集成电路器件。规模集成电路器件。 按电路结构,按电路结构,PLD可分为可分为与或阵列型与或阵列型PLD和查找表型和查找表型PLD。back
3、10.1 与或阵列型与或阵列型PLD10.1.1 与或阵列型与或阵列型PLD的原理的原理 缓冲器通常提供输入变量和反馈变量的原和反;由与阵列产缓冲器通常提供输入变量和反馈变量的原和反;由与阵列产生这些变量的乘积项;由或阵列求乘积项的逻辑和生这些变量的乘积项;由或阵列求乘积项的逻辑和. .用户可对两用户可对两个阵列(或其中之一)和输出电路进行编程;个阵列(或其中之一)和输出电路进行编程; 编程元件编程元件通常类是于是第通常类是于是第9章中介绍的可编程只读存储器的章中介绍的可编程只读存储器的元件,即熔丝元件、叠栅元件,即熔丝元件、叠栅MOS管、隧道管、隧道MOS管和闪存管和闪存MOS管。管。 ba
4、ck与或阵列型与或阵列型PLD有有可编程只读存储器可编程只读存储器(PROM)、可编逻辑阵可编逻辑阵列列(PLA- Programmable Logic Array)、可编阵列逻辑可编阵列逻辑(PAL-Programmable Array Logic)、通用阵列逻辑通用阵列逻辑(GAL-Generic Array Logic)和和复杂复杂PLD(CPLD-Complex PLD) CPLD是多个逻辑功能块组成的可编程逻辑器件,芯片内部集是多个逻辑功能块组成的可编程逻辑器件,芯片内部集成成1000个以上的等效逻辑门,所以称为个以上的等效逻辑门,所以称为高密度可编程逻辑器件高密度可编程逻辑器件(H
5、DPLD-High Density Programmable Logic Devices),), back不相连,不相连,固定连接固定连接“ ”( 用户不可改变),用户不可改变),可编程连接可编程连接“”(用熔丝或浮栅管等相连)。(用熔丝或浮栅管等相连)。“ ”和和“”表示相应的输入项是乘表示相应的输入项是乘积项的因子,不相连的输入项则不是乘积项的因子。积项的因子,不相连的输入项则不是乘积项的因子。 图图 10.1.2 PLDA B C D P 与:与:P=ABC A B C D Y 或:或:P=B+C+D A B C D P 与:与:P=ABCD 与:与:P=ABCD A B C D P 引
6、脚 A A A A A 1 A 0A 缓冲器 的常用逻辑符号的常用逻辑符号 数据选择器 Y A B Y=A+B 异或:异或: back图图10.1.3(a)是一个)是一个33 PROM的结构示意图;的结构示意图;(b)是编是编程后实现一位全加器:程后实现一位全加器: 11765317421iiiiiiiiiiiCBCABAmmmmCCBAmmmmSback补充题补充题:用:用16 4 位位PROM设计一个组合逻辑电路,用来产生设计一个组合逻辑电路,用来产生下列一组函数:下列一组函数: DBBDYDCBBDAYDCABDCBABCDADCBAYABCDDCBADCBADCBAY4321画出存储矩
7、阵的画出存储矩阵的码点阵图码点阵图。1513108752041075231387221510501mmmmmmmmYmmmmYmmmmYmmmmY解:解:4位位PROM,4个函数,一位实现一个函数。个函数,一位实现一个函数。1YA2YB3YC4YDABCD01 2 3 4 5 6 7 8 9101112131415全部最小项1513108752041075231387221510501mmmmmmmmYmmmmYmmmmYmmmmY10.1.2 通用阵列逻辑通用阵列逻辑(GAL) 1.基本结构基本结构 (1)有)有8个输入缓冲器(第个输入缓冲器(第29管脚)和管脚)和8个反馈缓冲器,它个反馈缓
8、冲器,它们的输出作为与阵列的输入们的输出作为与阵列的输入(与阵列的(与阵列的32条列线)。条列线)。(2)与阵列有)与阵列有64个乘积项输出,个乘积项输出,PT0PT63(标有数字的行(标有数字的行线),线), 64行行32列列2048个个可编程单元构成与阵列。可编程单元构成与阵列。 (3)有)有8个输出逻辑宏单元(第个输出逻辑宏单元(第1219管脚)管脚) (4)1个时钟输入端(第个时钟输入端(第1脚)脚)和和1个三态使能输入端个三态使能输入端OE(第(第11脚),它们也可作为数据输脚),它们也可作为数据输入端。入端。 (5)5 V电源端(第电源端(第20脚)和接脚)和接地端(第地端(第10
9、脚),图中未画出脚),图中未画出 back与阵列可编程,或阵列固定与阵列可编程,或阵列固定2. 结构控制字结构控制字GAL16V8的结构控制字配置其片内资源。结构控制字如图10.1.5所示。8个OLMC有2个公共的结构控制单元AC0和SYN,每个OLMC还各有2个可编程的结构控制单元AC1(n)和XOR(n)n=1219。PT0PT63位分别控制与阵列的64个乘积项是否使用。 back3.输出逻辑宏单元(输出逻辑宏单元(OLMC)及其工作模式)及其工作模式 back根据结构控制字中SYN、AC0、AC1(n)和XOR(n)的数据,可以将OLMC配置成5种工作模式之一,见表10.1.2。注意:当
10、SYN=1时,用于实现组合逻辑电路,第1和11管脚作为数据输入端;当SYN=0时,用于实现时序逻辑电路,第1管脚作时钟输入CK,第11管脚作输出使能OE。与5种工作模式对应的电路见图10.1.7。 back 图 10.1.7 OLMC 的 5 种工作模式 XOR (n) Q C1 Q 1D CK OE XOR (n) CK OE XOR (n) XOR (n) VCC I/O(n) I/O(n) I/O(n) I/O(n) I/O(n) I/O(m) OLMC OLMC OLMC OLMC OLMC (a) 专用输入 (b) 专用组合输出 (c) 反馈组合输出 (d) 时序组合输出 (e) 寄
11、存器输出 OLMC的的5种工作模式种工作模式 back10.1.3 复杂可编程逻辑器件(复杂可编程逻辑器件(CPLD) CPLD器件内部集成了多个比GAL功能更完善的通用逻辑块GLB(Generic Logic Block),可以实现较复杂的数字系统。 CPLD主要包含主要包含32个个I/O单元、单元、16个个GLB(A0A7;B0B7)、互连布线区)、互连布线区和时钟分配网络。和时钟分配网络。 back1.时钟分配网络时钟分配网络 CLK0是由是由引脚引脚Y0输入输入的外部时钟。的外部时钟。而而CLK1、CLK2、IOCLK0和和IOCLK1可可由由GLB B0产生或者由产生或者由外部输入外
12、部输入(Y1、Y2) CLK0、CLK1和CLK2用于GLB中的触发器,而IOCLK0和IOCLK1则用于I/O单元中的触发器。Y1还可作为全局复位输入(Global Reset),其作用由逻辑设计开发软件确定。 back2.通用逻辑块通用逻辑块GLB GLB有有18个输入,个输入,产生产生4个个输出输出(O0O3);与阵列与阵列的输入,的输入,产生产生20个乘积个乘积项项PT0PT19 4个个D触发器和异或门(图中未画出),可以灵活地配触发器和异或门(图中未画出),可以灵活地配置成可复位的置成可复位的D、JK和和T触发器。异或门还可以配置为触发器。异或门还可以配置为对乘积项(对乘积项(PT0
13、、PT4、PT8、PT13)或门输出作异或)或门输出作异或运算。输出数据选择器运算。输出数据选择器MUX可以选择可以选择GLB有无寄存器有无寄存器输出。输出。back3.I/O单元和输出使能数据选择器单元和输出使能数据选择器OE MUX 图 10.1.10 ispLSI 1016 的 I/O 单元和 OE MUX 1D Q C1 R R /L MUX MUX MUX MUX MUX MUX OE VCC VH 来自输出布线区 来自输出布线区的旁路线 去全局布线区 IOCLK0 IOCLK1 全局复位信号 有源上拉 OE MUX GLB A0 GLB A1 GLB A2 GLB A3 GLB A
14、4 GLB A5 GLB A6 GLB A7 PT19 OE MUX I/O 单元 I/O单元是内部逻辑和器件引脚的互连电路,如图单元是内部逻辑和器件引脚的互连电路,如图10.1.10所示。所示。主要由主要由6个数据选择器个数据选择器MUX、3个缓冲器和个缓冲器和1个触发器组成。个触发器组成。 当当R/L=1时,触发器配置为边沿触发;当时,触发器配置为边沿触发;当R/L=0触发器配置为触发器配置为锁存器。锁存器。OE MUX选择来自选择来自8个个GLB的乘积项之一,可控制的乘积项之一,可控制I/O单单元的输出缓冲器。元的输出缓冲器。 back 为了保证器件使用的灵活性,为了保证器件使用的灵活性
15、,CPLD的引脚大多数可的引脚大多数可设置为输入、输出和双向单元,如图设置为输入、输出和双向单元,如图10.1.11。back4在系统编程(在系统编程(ISP) 将设计数据写入将设计数据写入PLD的可编程单元中称为的可编程单元中称为PLD的的编程编程。 编程元件(叠栅编程元件(叠栅MOS管、隧道管、隧道MOS管和闪存管和闪存MOS管)的擦除和写入需要比器件正常工作电压管)的擦除和写入需要比器件正常工作电压高的高的编程电压编程电压。 早期的早期的PLD(如(如PAL、GAL等)内部没有编程电等)内部没有编程电压发生器,故必须通过专门的编程器对其进行编压发生器,故必须通过专门的编程器对其进行编程。
16、所以,编程时,必须把程。所以,编程时,必须把PLD器件从系统中拔器件从系统中拔出并置于编程器中。出并置于编程器中。 对于对于在系统编程在系统编程(ISP-In System Programmable)器件,其内部集成了编程电压发生器、编程状态器件,其内部集成了编程电压发生器、编程状态机和接口电路。机和接口电路。 backispLSI器件的编程接口信号如图器件的编程接口信号如图10.1.12所示。当所示。当ispEN=0时,器时,器件处于编程状态件处于编程状态;ispEN=1时,器件处于正常工作状态,执行用户设计的逻辑功能。时,器件处于正常工作状态,执行用户设计的逻辑功能。 输入信号输入信号MO
17、DE、SCLK、SDI和和SDO配合,实现数配合,实现数据的串行输入和串行输出。据的串行输入和串行输出。SDI和和SDO分别是数据串行分别是数据串行输入和输出端,输入和输出端,SCLK是时钟输入端,是时钟输入端,MODE是模式是入是模式是入端。先输入数据,后读出数据。校验正确后,对编程单端。先输入数据,后读出数据。校验正确后,对编程单元进行改写。元进行改写。 back10.2 查找表型查找表型PLD10.2.1查找表型查找表型PLD的原理的原理 将逻辑函数值将逻辑函数值存储在存储单元存储在存储单元中,然后用函数中,然后用函数变量作数据选择变量作数据选择器的地址变量,器的地址变量,选择存储单元的
18、选择存储单元的数据作输出,就数据作输出,就可以实现任意的可以实现任意的逻辑函数逻辑函数F(A0,A1, ,An-1); 改变数据表的数据则可实改变数据表的数据则可实现不同的逻辑函数。现不同的逻辑函数。back 存储单元的数据表为存储单元的数据表为1、0、0、1,NMOS开关管和输入开关管和输入缓冲器组成缓冲器组成4 选选1 数据选择数据选择器。器。 当当A1A0=00时时,T0和和T1同时导通同时导通,而其他支路上的,而其他支路上的NMOS管不能同时导通,管不能同时导通,F=1; 当当A1A0=01时,时,T2和和T3同时导通同时导通,而其他支路上的,而其他支路上的NMOS管不能同时导通,管不
19、能同时导通,F=0; 当当A1A0=10时,时,T4和和T5同时导通同时导通,而其他支路上的,而其他支路上的NMOS管不能同时导通,管不能同时导通,F=0; 当当A1A0=11时,时,T6和和T7同时导通同时导通,而其他支路上的,而其他支路上的NMOS管不能同时导通,管不能同时导通,F=1。A1A0F001010100111所以,所以,F=A1 A0。如果改变数据表,则可改变输出逻辑函数。如果改变数据表,则可改变输出逻辑函数。 back 存储单元通常采用图存储单元通常采用图10.2.3所示的静态存储单元。所示的静态存储单元。2个反相器组成基本个反相器组成基本RS触发器保存配置数据。触发器保存配
20、置数据。 以查找表为核心的以查找表为核心的PLD称为现场可编程门阵列称为现场可编程门阵列FPGA(Field Programmble Gate Array)。)。 back10.2.2分段互联分段互联FPGA 由可配置的逻辑块由可配置的逻辑块CLB (Configurable Logic Block)、输入、输入/输出块输出块IOB和可编和可编程的互连资源组成;程的互连资源组成; CLB实现基本逻辑实现基本逻辑功能,大量功能,大量CLB通通过可编成的互连导过可编成的互连导线互连,实现复杂线互连,实现复杂的逻辑功能,的逻辑功能,IOB则则是引脚与芯片内部是引脚与芯片内部逻辑的接口电路。逻辑的接口
21、电路。 back1.可配置逻辑块(可配置逻辑块(CLB) 由由1个个4变量变量LUT、1个可异步复位和置个可异步复位和置位的位的D触发器、触发器、6个个数据选择器组成。数据选择器组成。 LUT可以产生可以产生4变量变量逻辑函数(逻辑函数(G、F相相同),也可分裂产同),也可分裂产生生2个个3变量逻辑函变量逻辑函数(数(G、F不同)。不同)。 通过数据选择器通过数据选择器(MUX),触发器),触发器可以由变量置位(可以由变量置位(A)或复位(或复位(D),也可),也可以由函数置位(以由函数置位(F)和复位(和复位(G););触发器的时钟可以是变量触发器的时钟可以是变量C,也可以是时,也可以是时钟
22、钟CLK或函数或函数G;触发器的;触发器的Q端可以反馈端可以反馈到到LUT。 最后,最后,CLB的的2个输出可以是个输出可以是G或或F或或Q。CLB的输入信号的输入信号A、B、C和和D来来自互连导线;自互连导线;CLB的输出信号送另一些互的输出信号送另一些互连导线。连导线。 back2.输入输入/输出块(输出块(IOB) 电路如图10.2.6所示。引脚上的输入信号通过输入缓冲器与芯片内部逻辑相连,可以通过D触发器输入或直接输入到适当的互连线。全部IOB电路公用相同的时钟I/O CLK。 back3.分段互连资源分段互连资源 互连资源由开关矩阵、互连资源由开关矩阵、开关管和互连导线组成,开关管和
23、互连导线组成,可实现不同距离的可实现不同距离的CLB、IOB之间的可编程互连。之间的可编程互连。 互连导线分为直接连线、互连导线分为直接连线、通用连线、长线和全局通用连线、长线和全局连线(图中只画出了部连线(图中只画出了部分连线)。分连线)。 位于位于CLB或或IOB之间的短导线称为直接连线,直接连接邻近之间的短导线称为直接连线,直接连接邻近的的CLB或或IOB的输入的输入/输出。输出。 位于开关矩阵之间的短导线称为通用导线,通用导线与直接位于开关矩阵之间的短导线称为通用导线,通用导线与直接连线的交叉点是可编程的开关管,实现连线的交叉点是可编程的开关管,实现2者之间的编程连接。者之间的编程连接
24、。 back10.2.3快速互连快速互连FPGA将位置邻近的将位置邻近的8个逻辑单元个逻辑单元LE局部互连形成较强功能的逻辑阵列块局部互连形成较强功能的逻辑阵列块LAB,然后用,然后用贯穿整个芯片的行、列导线贯穿整个芯片的行、列导线(即快速互连线即快速互连线 )编程连接编程连接LAB和输入和输入/输出单元输出单元IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE IOE 逻辑单元逻辑单元 LE 逻辑阵列块逻辑阵列块 LAB 局部连线局部连线 图图 10.2
25、.7 FLEX10K 的结构示意图的结构示意图 行快速互连带行快速互连带 列列 快快 速速 互互 连连 带带 嵌入嵌入 阵列块阵列块 EAB 嵌入嵌入 阵列块阵列块 EAB Altera公司 back1.逻辑单元逻辑单元LE LE可配置成正常模式、运算模式、加减计数模式和可清除计数模式。 查找查找表表 进位链进位链 级连链级连链 S 1D Q C1 EN R 清除清除 /置置位位逻辑逻辑 表示可编程单元表示可编程单元 进位输入进位输入 级连输入级连输入 进位输出进位输出 级连输出级连输出 DATA1 DATA2 DATA3 DATA4 时钟选择时钟选择 LABCTRL 1 LABCTRL2 L
26、ABCTRL3 LABCTRL4 Chip wide Reset 到到快速快速互连线互连线 到局部到局部互连线互连线 图图 10.2.8 FLEX 10K 的逻辑单元的逻辑单元LE 1 back2.逻辑阵列块逻辑阵列块LAB 8个位置邻近的逻个位置邻近的逻辑单元通过局部辑单元通过局部互连线形成较强互连线形成较强功能的逻辑阵列功能的逻辑阵列块块LAB,可以实,可以实现较复杂的逻辑现较复杂的逻辑功能,例如,功能,例如,8位位加法器、计数器、加法器、计数器、比较器等比较器等 24 条条 列列 快快 速速 互互 连连 线线 LE1 LE2 LE3 LE4 LE5 LE6 LE7 LE8 局局部部互互连
27、连线线 8 8 4 4 4 4 4 4 4 4 4 2 2 8 24 16 8 4 144 条行快速互连线条行快速互连线 16 22 进位、级连进位、级连 输入输入 进位、级连输出进位、级连输出 专用输入和全局信号专用输入和全局信号 图图 10.2.9 FLEX 10K10 的逻辑阵列块的逻辑阵列块 LAB 4 back3 3输入输入/ /输出单元输出单元IOEIOE 包含一个包含一个I/O缓冲器、缓冲器、D触发器触发器(具有异(具有异步复位和步复位和时钟使能时钟使能控制)和控制)和8个数据个数据选择器等选择器等 图图10.2.10 FLEX 10K 的输入的输入/输出块输出块IOE 1D Q
28、 C1 EN R & & VCC VCC VCC VCC 芯片允许芯片允许 芯片复位芯片复位 电压摆电压摆 率控制率控制 集电极集电极 开路输出开路输出 去行或列快速互连带去行或列快速互连带 来来自自行行或或列列快快速速互互连连带带 I/O 控制总线控制总线 2 个专用时钟输入个专用时钟输入 I/O I/O引脚可以配置成直接输入和寄存器输入,输入信号被传递到行或列快速互连带。I/O引脚亦可以配置成直接输出或寄存器输出,输出缓冲器可以配置成集电极开路输出,还可以调节输出电压上升率。在内部逻辑和I/O控制总线的控制下,可实现输入/输出双向信号传递。 back4嵌入阵列块嵌入阵列块EAB 嵌入阵列块
29、EAB是一个具有2048位、可配置的RAM,其数据输入、数据输出、地址输入和读写控制都配有寄存器。EAB可以实现FIFO、ROM、RAM和双口RAM。如果将EAB当作2048位的查找表,则可用于实现较复杂的逻辑功能,例如,算术逻辑单元,数字滤波器、微控制器等。 back10.3 PLD的设计流程的设计流程 通过开发软件在计算机通过开发软件在计算机上进行逻辑设计,生成上进行逻辑设计,生成PLD的编程数据,然后,的编程数据,然后,在计算机的并口或专门在计算机的并口或专门的编程器对的编程器对PLD进行编进行编程。程。 图图10.3.1是是Altera公司的公司的开发软件开发软件MUX+PLUS II
30、的设计流程。的设计流程。 MUX+PLUS II的替代软的替代软件:件:QuartusII开始开始 设计编译设计编译 设计校验设计校验 正确?正确? 器件编程器件编程 结束结束 设计输入设计输入 YES NO 图图 10.3.1 MUX+PLUS II 的设计流程的设计流程 back1设计输入设计输入 MUX+PLUS II支持支持原理图输入、原理图输入、硬件描述语言输入和波形输入硬件描述语言输入和波形输入。 原理图输入:用原理图编辑器输原理图输入:用原理图编辑器输入电路原理图。入电路原理图。 硬件描述语言输入:用文本编辑硬件描述语言输入:用文本编辑器输入硬件描述语言程序。硬件器输入硬件描述语
31、言程序。硬件描述语言是指可以描述硬件电路描述语言是指可以描述硬件电路的功能、信号连接关系及定时关的功能、信号连接关系及定时关系的语言系的语言 波形输入:用波形编辑器输入反波形输入:用波形编辑器输入反映逻辑电路功能的输入信号、输映逻辑电路功能的输入信号、输出信号波形图。设计软件将其自出信号波形图。设计软件将其自动转换为输入输出逻辑关系。动转换为输入输出逻辑关系。 开始开始 设计编译设计编译 设计校验设计校验 正确?正确? 器件编程器件编程 结束结束 设计输入设计输入 YES NO 图图 10.3.1 MUX+PLUS II 的设计流程的设计流程 back2设计编译设计编译 用编译程序对设计用编译
32、程序对设计输入自动进行语法输入自动进行语法和设计规则检查、和设计规则检查、逻辑优化和综合、逻辑优化和综合、逻辑分割和适配、逻辑分割和适配、生成编成数据文件生成编成数据文件和仿真网表文件。和仿真网表文件。 开始开始 设计编译设计编译 设计校验设计校验 正确?正确? 器件编程器件编程 结束结束 设计输入设计输入 YES NO 图图 10.3.1 MUX+PLUS II 的设计流程的设计流程 back3设计校验设计校验 根据网表文件和输入激励,MUX+PLUS II可以完成功能仿真、时序仿真和时序分析,以校验设计的正确性。 开始开始 设计编译设计编译 设计校验设计校验 正确?正确? 器件编程器件编程
33、 结束结束 设计输入设计输入 YES NO 图图 10.3.1 MUX+PLUS II 的设计流程的设计流程 back4器件编程器件编程 对于在系统编程器件,用编程电缆连接计算机的并口和器件的编程接口。调用器件编程程序,将编成数据文件写入器件中。开始开始 设计编译设计编译 设计校验设计校验 正确?正确? 器件编程器件编程 结束结束 设计输入设计输入 YES NO 图图 10.3.1 MUX+PLUS II 的设计流程的设计流程 back10.4 硬件描述语言硬件描述语言 Altera、Xilinx、AMD等公司为此推出了非常好的CPLD和FPGA产品,并为这些产品的设计配备了相应的设计和下载软
34、件。这些软件除了支持用图形方式设计数字系统外,还支持用硬件描述语言设计数字系统。 硬件描述语言HDL(Handware Descripition Language)用文本形式描述硬件电路的逻辑功能及连接关系,它能比电原理图更有效、更方便和简洁地表达硬件电路的特征。 只有VHDL和Verilog HDL被IEEE标准化组织定为标准的HDL back10.4.1 VHDL的基本结构的基本结构实体实体 (Entity) 说明说明:实体说明用于描述所设计的实体的名称及外部输入/输出端口信号。结构体结构体(Architecture):结构体定义一个基本设计单元(设计实体)的实现,即定义了设计单元的的逻辑
35、结构(即逻辑功能),建立输入和输出之间的关系。结构体结构体等价于电路原理图等价于电路原理图(逻辑器件的连接关系)。配置配置(Configuration):配置语句描述设计中不同层次之间的连接关系以及实体与结构体之间的连接关系,利用配置语句可以安装具体元件到实体-结构体对,配置可以被看作是设计的零件清单;程序包程序包(Package):声明在各个设计模块或实体中将用到的数据类型及常数、元件和子程序等;库库(Library):库是经编译后的数据集合,库中存放的是各种程序包、实体定义,结构体定义以及配置说明等,库可以使设计者共享已经编译过的设计成果及数据。1 . VHDL的基本组成的基本组成back
36、2. VHDL语言程序的基本结构语言程序的基本结构 VHDL语言的基本设计单元就是一个设计实体(Design Entity),对应于一个数字电路。每一个设计实体都包含实体说明和结构体两部分 实体说明规定设计实体(数字电路)的输入、输出端口,是设计实体与外界的一个通信界面。 结构体则用于描述设计实体输入、输出端口间的逻辑关系。 设计实体设计实体 实体实体 说明说明 结构体结构体 图图10.4.1 VHDL 的设计实体的设计实体 数字数字 电路电路 设计实体对应的数字电路设计实体对应的数字电路可以简单到器件,如与门、可以简单到器件,如与门、或门,也可以复杂至中大或门,也可以复杂至中大规模集成电路,
37、如加法器、规模集成电路,如加法器、编码器、译码器、计数器、编码器、译码器、计数器、寄存器等,甚至于可以是寄存器等,甚至于可以是一个微处理器或一个系统。一个微处理器或一个系统。 back(1)实体说明语句实体说明语句 实体说明语句规定设计实体说明语句规定设计实体的名称和输入、输实体的名称和输入、输出端口。语句结构是:出端口。语句结构是: ENTITY 实体名实体名 IS 端口说明端口说明 END 实体名实体名; 设计实体设计实体 实体实体 说明说明 结构体结构体 图图10.4.1 VHDL 的设计实体的设计实体 数字数字 电路电路 “ENTITY、IS 和和END ”称为关键字,称为关键字, V
38、HDL语言中不区分大小写,但是习惯语言中不区分大小写,但是习惯用大写字母来表示关键字或专用字,用用大写字母来表示关键字或专用字,用小写字母来表示标识符。小写字母来表示标识符。 实体的输入、输出端口用实体的输入、输出端口用端口说明语句端口说明语句描述,语句结构是:描述,语句结构是: PORTPORT(端口名(端口名 ,端口名,端口名 :方向:方向 数据类型名;数据类型名; 端口名端口名 ,端口名,端口名 :方向:方向 数据类型名数据类型名) );back端口名端口名是赋予每个外部引脚的标示符,是赋予每个外部引脚的标示符,一般用一个或几一般用一个或几个英文字母组成,或者用英文字母加数字命名个英文字
39、母组成,或者用英文字母加数字命名,如:,如:add、sel、in、out、d0、d1等。等。端口方向是定义引脚为输入还是输出,见表端口方向是定义引脚为输入还是输出,见表10.4.1: 常用的端口数据类型有两种:BIT和BIT_VECTOR,当端口被说明为BIT时,只能取值“1”或“0”,当端口被说明为BIT_VECTOR时,它可能是一组二进制数。即BIT对应于一条信号线,BIT_VECTOR对应于多条信号线(信号总线)。 表表10.4.1 端口方向说明端口方向说明方向:方向:说明:说明:IN流入到实体流入到实体OUT从实体流出从实体流出INOUT双向端口:既可流入,也双向端口:既可流入,也可流
40、出可流出BUFFER也是双向端口,但限定该也是双向端口,但限定该端口只有一个源端口只有一个源LINKAGE不指定方向不指定方向back例例 10.4.110.4.1- example_1example_1 is a four bit equality comparator is a four bit equality comparator LIBRARYLIBRARY IEEE IEEE; -库;每行结尾用库;每行结尾用“;”,“-”后面为注释后面为注释 USEUSE IEEE.STD_LO IEEE.STD_LOGIC_1164.ALLGIC_1164.ALL; -程序包程序包 ENTITY
41、ENTITY example_1 example_1 ISIS -实体名实体名 example_1example_1,必须与每一个,必须与每一个设计设计 实体所存的文件名实体所存的文件名一致一致 PORTPORT(a, b:(a, b:inin STD_LOGIC _VECTOR(3 downto 0) STD_LOGIC _VECTOR(3 downto 0); -端口说明端口说明 equal: equal:outout STD_LOGIC) STD_LOGIC); ENDEND example_1 example_1; -关键字关键字 ENDEND 后跟实体名后跟实体名 ARCHITECT
42、UREARCHITECTURE dataflow dataflow OFOF eqcomp4 eqcomp4 ISIS -结构体结构体 BEGINBEGIN -关键词关键词 BEGINBEGIN equal = equal = 1 1 WHENWHEN a=b a=b ELSEELSE 0 0; -=表示信号赋值表示信号赋值 EndEnd dataflow dataflow; -关键词关键词 ENDEND 后跟结构体名后跟结构体名 a3.0b3.0equal图图10.4.2STD_LOGIC和STD_LOGIC _VECTOR分别是程序包STD_LOGIC_1164.ALL中定义的BIT和BI
43、T_VECTOR。上述程序实现的上述程序实现的是是4位相等比较位相等比较,如图10.4.2所示。back(2) (2) 结构体语句结构体语句 实体名必须是实体名必须是所在设计实体所在设计实体的名字的名字,而结,而结构体名可以由构体名可以由设计者选择。设计者选择。 一个设计实体一个设计实体可以有多个结可以有多个结构体。构体。当一个当一个实体具有多个实体具有多个结构体时,结结构体时,结构体的取名不构体的取名不能重复。能重复。 结构体用于描述设计实体输入和输出端口间结构体用于描述设计实体输入和输出端口间的逻辑关系。结构体语句格式如下:的逻辑关系。结构体语句格式如下:ARCHITECTUREARCHI
44、TECTURE 结构体名结构体名 OFOF 实体名实体名 ISIS 定义语句定义语句 内部信号,常数,数据类型,内部信号,常数,数据类型,函数等的定义函数等的定义BEGINBEGIN 并行处理语句并行处理语句 ENDEND 结构体名结构体名;back例10.4.2 用VHDL语言描述图10.4.3所示的2输入与非门电路。 a by 图图 10.4.3& LIBRARYLIBRARY IEEE IEEE;USE IEEE.std_logic_1164.allUSE IEEE.std_logic_1164.all;ENTITY nand2 IS -ENTITY nand2 IS -实体名实体名na
45、nd2,2nand2,2输入与非门输入与非门PORT(a,b: in STD_LOGICPORT(a,b: in STD_LOGIC; y: out STD_LOGIC) y: out STD_LOGIC);END nand2END nand2;ARCHITECTUREARCHITECTURE nand2_1 OF nand2 IS nand2_1 OF nand2 IS -结构体名结构体名nand2_1nand2_1BEGIN BEGIN y=a nand b y=a nand b; - nand nand 是是VHDLVHDL的与非运算操作的与非运算操作符符END nand2_1END n
46、and2_1;back(3) (3) 配置语句配置语句 配置语句描述了层与层之间的连接关系,以及实体与结构体之间的连接关系。 逻辑关系的实现可以有多种方式,例如,计数器可以用D触发器实现,也可以用JK触发器实现。所以,一个实体可以对应于多个结构体,可以放在各自不同的库中。用配置语句实体为选择一个结构体。 配置语句的基本格式如下:配置语句的基本格式如下:CONFIGURATION 配置名配置名 OF 实体名实体名 IS说明语句说明语句END配置名;配置名;back例例10.4.310.4.3:写出用两种不同的结构实现的:写出用两种不同的结构实现的RSRS触发器的触发器的VHDLVHDL语言程序。
47、语言程序。back(4) 程序包和USE语句 程序包(Package)说明用来罗列VHDL中用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义。它是一个可编译的设计单元,也是库结构中的一个层次,使用包时可以用USE语句说明。 例如: USE IEEE.STD_LOGIC_1164.ALL 该语句表示在VHDL程序中要使用名为STD_LOGIC_1164的程序包中的所有定义或说明项。back程序包分为程序包标题(包头)和程序包体(包体),包结构的格程序包分为程序包标题(包头)和程序包体(包体),包结构的格式如下所示:式如下所示:PACKAGE PACKAGE 程序包名程序包名 IS
48、IS 说明语句说明语句 ; 程序包标题程序包标题END END 程序包名;程序包名;PACKAGE BODYPACKAGE BODY 程序包名程序包名 ISIS 说明语句说明语句 程序包体程序包体ENDEND 程序包名;程序包名;程序包体是可选项,也就是说,一个程序包可以只有程序包标题。一般程序包标题列出所有项的名称,而程序包体给出各项的细节。 backback(5) 库语句库语句 1)库是经编译后的数据的集合,它存放包定义、实体定义、构造定义和配置定义。 常用的库是IEEE库和STD库。 2)库的使用:在使用库之前,一定要进行库说明和程序包说明,库和程序包的说明总是放在设计单元的前面: 例如
49、:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL该例说明要使用IEEE库中的1164包中所有项目。 back10.4.2 VHDL的数据对象类型及运算操作符的数据对象类型及运算操作符 数据对象是指VHDL语言中可以赋予一个值的对象,也称为客体(Object)。一个对象只能有一种类型,施加于该对象的操作必须与其类型相匹配。VHDL中四类数据对象:CONSTANT(常量)、VARIABLE(变量)、SIGNAL(信号)、和FILE(文件), VHDL可以象其它高级语言一样定义数据类型,还可以由用户自己定义数据类型。 1VHDL中使用的数据对象类型中使用的数据对象类
50、型back(1) 常数常数常数是一个固定的值,常数的一般格式如下:常数是一个固定的值,常数的一般格式如下:CONSTANT 常数名:数据类型常数名:数据类型:=表达式表达式 例如:例如: CONSTANT Vcc: REAL:=5.0; CONSTANT DALY: TIME:=100ns;常数一旦被赋值就不能再改变。常数一旦被赋值就不能再改变。 back(2) 变量变量变量只能在进程语句、函数语句和过程语句中使用,一旦赋值立变量只能在进程语句、函数语句和过程语句中使用,一旦赋值立即生效。变量的一般格式如下:即生效。变量的一般格式如下:VARIABLEVARIABLE 变量名:数据类型变量名:
51、数据类型 约束条件:约束条件:= =表达式表达式例如:例如: VARIABLEVARIABLE x, y: INTEGER x, y: INTEGER; VARIABLEVARIABLE count: INTEGER RANGE 0 TO 255:=10 count: INTEGER RANGE 0 TO 255:=10;back(3) 信号信号信号是电子电路内部硬件连接的抽象,它除了没有数据流动的方向概念以外,其它性质几乎和端口概念一致。信号的一般格式如下: SIGNALSIGNAL 信号名:数据类型信号名:数据类型 约束条件:约束条件:= =表达式表达式例:例: SIGNAL sys_cl
52、k: BIT:=0SIGNAL sys_clk: BIT:=0; SIGNAL ground: BIT:=0SIGNAL ground: BIT:=0;在程序中,信号值代入其它信号时采用代入符”=”,而不是像变量赋值符“:=”,而且信号代入时可以附加延时。例如,如果s1和s2都是信号,且s2的值经10ns延时以后才能被代入s1,此时信号传送语句可写为: s1=s2 AFTER 10nsback2VHDL中使用的标准数据类型中使用的标准数据类型 (1) (1) 整数(整数(INTEGERINTEGER)范围:范围:-2147483547-2147483646-2147483547-2147483
53、646(2) (2) 实数(实数(REALREAL)范围:范围:-1.0E38-1.0E38-1.0E38-1.0E38;书写时一定要有小数。;书写时一定要有小数。(3) (3) 位(位(BITBIT)在数字系统中,信号值经常用位来表示,位的值用带单引号的在数字系统中,信号值经常用位来表示,位的值用带单引号的00或或11来表示,位与整数中的来表示,位与整数中的0 0和和1 1不同,不同, 位位00和和11仅仅表示仅仅表示一个位的两种取值,有时也可以用显式说明,例如:一个位的两种取值,有时也可以用显式说明,例如:BITBIT(11)。)。(4) (4) 位矢量(位矢量(BIT_VECTORBIT
54、_VECTOR) 位矢量是用双引号括起来的一组位数据,例如:位矢量是用双引号括起来的一组位数据,例如:“010110”010110”。(5) (5) 布尔量(布尔量(BOOLEANBOOLEAN)布尔量只有布尔量只有“真真”和和“假假”两种状态,可以进行关系运算。它和位不两种状态,可以进行关系运算。它和位不同,布尔量没有数值的含义,不能进行算术运算。同,布尔量没有数值的含义,不能进行算术运算。back(6) (6) 字符(字符(CHARACTERCHARACTER)字符量通常用单引号括起来,一般情况下字符量通常用单引号括起来,一般情况下VHDLVHDL对大小写敏感,但是对字符量对大小写敏感,但
55、是对字符量中的大、小写字符则认为是不一样的,例如中的大、小写字符则认为是不一样的,例如AA不同于不同于aa。当要明确说明当要明确说明1 1是字符时,则可写为:是字符时,则可写为:CHARACTERCHARACTER(11)(7) (7) 字符串(字符串(STRINGSTRING) 字符串是双引号括起来的一串字符,也称为字符矢量或字符串数组,例如:字符串是双引号括起来的一串字符,也称为字符矢量或字符串数组,例如:“Chongqing university”Chongqing university”。(8) (8) 时间(时间(TIMETIME)时间是一个物理量数据,完整的时间量数据应当包含整数和
56、单位两部分,而时间是一个物理量数据,完整的时间量数据应当包含整数和单位两部分,而且整数数值和单位之间至少应留一个空格的位置。且整数数值和单位之间至少应留一个空格的位置。时间的单位是时间的单位是 fsfs,psps,nsns,usus,msms,secsec, minmin,hrhr;例如,;例如,10 ns10 ns,2 sec2 sec(9) (9) 错误等级(错误等级(SEVERITY LEVELSEVERITY LEVEL)用来表示系统的状态,它共有用来表示系统的状态,它共有4 4种:种:NOTENOTE(注意),(注意),WARNINGWARNING(警告),(警告),ERRORERR
57、OR(错误),(错误),FAILUREFAILURE(失败)。(失败)。(10) (10) 大于等于零的整数大于等于零的整数(NATURAL)(NATURAL)、正整数(、正整数(POSITIVEPOSITIVE)在在VHDLVHDL语言中,有上述语言中,有上述1010种标准数据类型,但在逻辑电路设计中,只用到两种标准数据类型,但在逻辑电路设计中,只用到两种:种:BITBIT和和BIT_VECTORBIT_VECTOR。backVHDLVHDL的数据类型除了上述的数据类型除了上述1010种标准数据类型以外,还可以使种标准数据类型以外,还可以使用由用户自己定义的数据类型。用户定义的数据类型的一般
58、用由用户自己定义的数据类型。用户定义的数据类型的一般格式:格式:TYPETYPE 数据类型名数据类型名 ,数据类型名,数据类型名 数据类型定义;数据类型定义;不完整的数据类型格式:不完整的数据类型格式:TYPE TYPE 数据类型名数据类型名 ,数据类型名,数据类型名 ;例如:例如:TYPE week IS(Sun,Mon,Tue,wed,Thu,Fri,Sat)TYPE week IS(Sun,Mon,Tue,wed,Thu,Fri,Sat);TYPE digit IS INTEGER RANGE 0 TO 9TYPE digit IS INTEGER RANGE 0 TO 9;TYPE c
59、urrent IS REAL RANGE -1E4 TO 1E4 TYPE current IS REAL RANGE -1E4 TO 1E4 ;back3 VHDL语言的运算操作符语言的运算操作符 被操作符操作的对象是操作数,且操作数的类型应该和操作符所要求的类型一致,另外,运算操作符是有优先级的,例如逻辑运算NOT,在所有操作符中其优先级是最高的。 在在VHDL语言中一共有语言中一共有4类操作符,可以分别进行逻辑运算类操作符,可以分别进行逻辑运算(Logical)、关系运算()、关系运算(Relational)、算术运算)、算术运算(Arithmetic)和并置()和并置(Concaten
60、ation)运算。)运算。 back表表10.4.2 操作符列表操作符列表类型类型操作符操作符说明说明类型类型操作符操作符说明说明逻辑运算符逻辑运算符AND与与算术运算符算术运算符+加加OR或或-减减NOT非非*乘乘NAND与非与非/除除NOR或非或非MOD取模取模XOR异或异或REM取余取余关系运算符关系运算符=相等相等*指数指数/=不相等不相等ABS取绝对值取绝对值大于大于-负负=大于等于大于等于SRLSRL逻辑右移逻辑右移并置运算符并置运算符&并置并置SLASLA算术左移算术左移SRASRA算术右移算术右移ROLROL逻辑循环左移逻辑循环左移RORROR逻辑循环右移逻辑循环右移back最
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024农业植保员职业资格考试核心试题与答案
- 室内装修拆除安全协议书(2篇)
- 足球裁判员政策法规试题与答案
- 模具设计与智慧制造的结合试题及答案
- 模具设计中的常见软件试题及答案
- 救生员资格考试总结与相关试题答案
- 2025年中国全数字扩音调音台市场调查研究报告
- 裁判员技能测试试题及答案
- 足球裁判员职业道德的意义试题及答案
- 2024年农作物种子繁育员考前复习的关键步骤试题及答案
- dd5e人物卡可填充格式角色卡夜版
- 新课程改革试题与答案
- 七类作业JSA分析记录表格模板
- 心理统计学考研历年真题及答案
- 浙江省心理健康教育c证说课准备
- 中医内科学阳痿专家讲座
- 技术经纪人练习题集附有答案
- ZL50装载机反转六连杆工作装置设计
- 内科学讲义(唐子益版)
- LY/T 2698-2016铁皮石斛杂交育种技术规程
- GB/T 4357-2022冷拉碳素弹簧钢丝
评论
0/150
提交评论