两种表达设计的方法
-通过传统的布尔逻辑方程;
它是组合型设计的唯一选择方法,同时也可适用于某些寄存器型设计;
布尔方程由功能描述、真值表和/或时序图共同推导出。
-是通过状态机语法;
它是一种理想的 设计方法,适合对大型的寄存器型控制设计;也可用于PLS 和PROSE器件的设计
通过功能描述、状态表、状态图和时序图等导出。
布尔方程用“积之和”形式,适用大多数PLD器件的两级“与-或”逻辑
习惯的设计方法是将设计需求用分离的逻辑(74系列)来实现,这种用SSI和MSI的设计可方便的用PLD来完成,只须将 其换成积之和的布尔代数形式。
用PLD器件以“积之和”形式直接完成一个设计能获得一个快速的电路,也不必受固定SSI和MSI功能块的限制。
布尔逻辑方程除了定义逻辑功能 外,有利于记录设计思想,可采用模块化结构。
可基于真值表或时序图进行设计
状态机方法的描述
-功能描述
-可基于状态图、状态表或时序图行设计
-编写状态机文件
-汇编设计文件
![](https://img.diangon.com/portal/201502/21/080941oqde3xqjzzsqddvz.gif)
基于真值表的设计
1、根据对设计的需求功能的描述、依据地址分配映射表和片选信号真值表,推导出地址译码器真值表。
![](https://img.diangon.com/portal/201502/21/080941ieaks1ucyzlopn6o.gif)
注:另外三个附加的输入信号
RW:读写信号,微处理产生,用来区分读、写周期。ROM数据只能读出,当RW为高电平 “1”时,发出ROMCS1和ROMCS2;写周期不发出这两个信号;RAMCS在读、写周期时都产生,不考虑RW状态。
AS:地址选通信号,高电平 “1”有效,微处理产生。仅当地址线上栽有有效的地址时才有效;所有片选信号都要AS信号选通。
INIT:系统初始化信号,以便实现“热自举”,类似RESET;当发出INIT信号时,不允许发出任何片选信号。
根据逻辑来写布尔方程非常简单和容易
/ROMCS1 = /A23*/A22*/A21*INIT*/AS*RW
/ROMCS2 = /A23*/A22*A21*INIT*/AS*RW
/RAMCS = /A23*A22*/A21*INIT*/AS
+ /A23*A22*A21*INIT*/AS
+ A23*/A22*/A21*INIT*/AS
+ A23*/A22*A21*INIT*/AS
选择器件时要保证有足够的乘积项,每个“与”项使用器件的一个乘积项;以上乘积项最多为四个,PAL16L8每一输出有7个乘积项。
输出极性问题:假设我们必须产生高电平有效的输出,ROMCS1信号的输出方程为:
ROMCS1 = /A23*/A22*/A21*INIT*/AS*RW
由于器件PAL16L8只有低电平有效的输出端,因此方程的输出极性必须加以转换,以符合器件的输出极性,运用摩根定理:
/ROMCS1 = A23+A22+A21+/INIT+AS+/RW
基于时序图的设计
功能描述:在地址译码器中,INIT是系统初始化信号,可由PAL16L8几个未用的输出端中的一个产生INIT信号;
在内部:通过反馈,禁止片选信号产生;
在外部:可用于初始化其它系统;
INIT由连接到PAL16L8输入端的复位(RESET) 开关产生
为防止不必要的初始化,RESET开关必须是防颤动的,即要求INIT信号维持“高”电平直到开关与底边真正相接触。一旦开关碰到底边,信号INIT应该低电平有效,且一直维持“低”电平不变,直到再次碰到顶边。
防颤动电路的时序如下图所示,信号TOP和信号BOTTOM是可编程逻辑器件的输入,在RESET开关碰到顶边和底边时,这两个信号分别被激活。
系统初始化复位开关和防颤动开关时序图:
![](https://img.diangon.com/portal/201502/21/080942fkgyhzar19no59ac.gif)
时序图的每一事件(时刻)可写出布尔逻辑方程:
(1)常态 |
INIT = /TOP |
(2)开关从TOP 到BOTTOM |
INIT = TOP*BOTTOM*INIT |
(3)开关接触BOTTOM |
/INIT = /BOTTOM |
(4)开关从BOTTOM 到TOP |
/INIT = /INIT*BOTTOM*TOP |
(5)回到常态 |
|
我们使用低电平有效器件,因此,可将两个低电平有效的事件组合成
总的布尔方程为:
/INIT = /BOTTOM+/INIT*BOTTOM*TOP
= /BOTTOM+/INIT*TOP
也可根据真值表和卡诺图来完成:
![](https://img.diangon.com/portal/201502/21/080942xhfxss05t9909ufn.gif)
![](https://img.diangon.com/portal/201502/21/080942dlmgs9j99bceb9f2.gif)
编写布尔逻辑方程应注意:
真值表和时序图方法对于编写布尔逻辑方程没有本质的差别.某些设计者喜欢使用真值表,而另外一些设计者则宁愿从时序图出发直接进行设计。真值表方法使乘积项的利用率最佳,而时序图方法则更直观和形象,因为它保持了设计的透明度。
在两种情况下,逻辑方程都应当由设计软件加以简化,以保证设计的可测试性。
大多数有经验的设计师都知道在进行器件选择时应如何权衡各种关系,因而在构思设计和选择器件上可以节省许多时间.
通常的作法是:画出要设计的逻辑功能的方块图,然后依据所需的输入端。输出端,双向I/O端和乘积项数目,凭经验选取满足这些条件PLD器件.
-仿真语法
-仿真的目的在于测试在全部可能的输入信号作用下输出端的响应,以验证它们是否象系统所要求的那样工作。
-仿真的实质是通过测试向量进行,它们指定器件每个输入端的状态,然后检查输出是否具有正确的响应。
-仿真测试向量能够查明设计方程中的任何错误和缺陷,这些错误和缺陷会影响被编程的逻辑操作。因此,仿真测试向量被 用作设计的调试工具。
-仿真向量最终将成为比较大的测试向量集合的一部分。 功能测试向量用来对编程后的实际器件进行操作,以查清有缺陷 的任何器件。
-仿真向量或事件可以直接从设计的真值表和时序图导出,所有信号的逻辑电平和逻辑功能可被展开,并由设计软件重写成 测试向量的形式。
仿真部分连同逻辑方程一起包括在设计文件中,在各种PLD设计软件中,尽管大多数依靠测试向量来验证逻辑,几乎不存在标准化的仿真表达式。
PALASM2 软件提供了一种先进的事件驱动能力,它比仿真测试向量具有更好的透明度.( PALASM2在下章介绍)
从地址译码器真值表可容易的地改写成仿真向量真值表。如下图,我们规定器件的输入(A23、A22、A21、TOP、BOTTOM、AS、RW),并验证器件的输出 (ROMCS1、ROMCS2、RAMCS、INIT)
根据仿真向量真值表,可进行仿真测试程序设计。如下表的地址译码器PALASM2软件模拟仿真程序。
![](https://img.diangon.com/portal/201502/21/080943pvk40at4fzf63v4z.gif)
用来推导仿真向量的真值表
![](https://img.diangon.com/portal/201502/21/080943mge4pxkeqz1eewz7.gif)
地址译码器的PALASM2软件模
拟仿真程序:
;读地址有效
;不可能写ROM
; 建立ROMCS1地址
;读周期有效ROMCS2地址
;不可能写ROM2
;建立RAMCS地址
;读周期有效RAMCS地址
;写地址有效RAMCS地址
![](https://img.diangon.com/portal/201502/21/080944hmhwass4uef22dak.gif)
PLD器件的编程和测试
设计的仿真工作完成后,最终要对器件进行编程和测试.将JEDEC装入编程器编程器,就可对器件进行编程。
编程器在编程周期之后,还可对各个连接进行验证,验证PLD器件中连线的正确性.此外,编程器还能对已编程的器件施以读操作,并提供测试、复制器件的能力。
PLD测试可由编程器或其它测试装置来完成,测试完成后,如果需要的话,还可对器件的保密熔丝进行编程,以免被复制。
一旦JEDEC熔丝文件被下载,编程器就对器件进行编程,然后PLD器件便能投入使用
编程器可从各家厂商购得,但须注意MMI公司确认的编程器必须具备正确的适用算法,并且满足其它的基本规则。在购买编程器时,注意检查一下该编程器是否适宜于要编程的器件。
现在有两种类型的编程器供设计者选用,它们是菜单驱动的编程器和基于器件代码的编程器.菜单驱动的编程器直接指示被编程的器件类型,而后一类编程器则要求用户在编程前输入器件代码
器件的编程与测试流程图
![](https://img.diangon.com/portal/201502/21/080945tfztz0eymg2zzbzv.gif)
PAL器件的编程
PAL器件可以使用大多数标准的PROM编程器进行编程,只要给编程器配备合适的编程模块和器件插座适配器。
从编程的角度看,PAL器件和PROM器件没有任何差别。但PROM器件一般一次完成,而对有些PAL器件,必须:
在编程期间,PAL器件的输入引脚中有一半用于施加编程信号,余下的一半输入引脚和输出引脚一起寻址,实现对一部分熔丝的编程;然后,用于寻址和编程端的输出引脚相互交换,对其余的熔丝编程。
器件被编程后,如果保持编程端为低电平状态,通过与编程操作相同的步骤,便可以验证编程的正确性。
20系列(20脚)PAL器件的编程
24系列(24脚) PAL器件的编程
20系列(20脚)PAL器件的编程
20引脚系列的PAL器件采用低电压、线性选择方法对其熔断丝进行编程.编程阵列分成两组,乘积项0-31为一组;乘积项32-63为另一组.编程操作时每个组的引脚配置图如下图 ,为了对某个特定熔断丝编程,按下列步骤选择输入行和乘积行:
(1) 将输出禁止信号OD (Output Disable)升到高电平VIHH 。
(2) 参见下表6-4-1,通过指定引脚I7、 I6 、 I5 、I4,、 I3 、 I2 、I1、 I0和L/R的状态来选择被编程熔断丝所对应的输入行。
(3) 通过指定引脚A0、A1 、 A2 的状态来选择乘积行,参见表6-4-2.20系列PAL器件最多有8个输出端,每个输出端最多对应8个乘积行, A0--A1用来 选取8个乘积中的一行。
(4) 将引脚20即VCC酌电平升至VIHH 。
(5) 根据选定的乘积行对相应的输出引脚On施加编程高点平VIHH.Y以对熔 断丝编程,时序图如图6-4-2所示 。
(6) 将引脚20即VCC的电平降至6.0V。
(7) 对引脚CLOCK施加脉冲信号,由输出引脚On验证编程结果。对于输出低电平有效的PAL器件,输出应为‘低’;对于输出高电平有效的器件,输出应为‘高’。
(8) 将引脚20即VCC电平降到4.5V,并重复步骤(7)。
(9) 如果输出验证未通过,可重复步骤(1)-(8),多达5次。
重复上述步骤便可以对全部熔断丝编程,编程时序图参见图6-4-2.为了防止进一步的验证;将引脚1和引脚10的电平升至VP,烧断最后两根熔断丝.在此操作过程中,引脚20不使用。
![](https://img.diangon.com/portal/201502/21/080945ir0mds8mfd1sr11r.gif)
![](https://img.diangon.com/portal/201502/21/080947dqsjb6t8p0dpuejs.gif)
![](https://img.diangon.com/portal/201502/21/080948oviz36v00sa70ss3.gif)
L= 低电压输入电压VIL
H=高电压输入电压VIH
HH=高电平编程电压VIHH
Z= 连至+5V电源的10K?电阻
![](https://img.diangon.com/portal/201502/21/080949d3rw7wooztaw6ptt.gif)
24系列(24脚)PAL器件的编程
24引脚系列的PAL器件采用低电压、线性选择方法对其熔断丝进行编程.编程阵列分成两组,乘积项0-39为一组;乘积项40-79为另一组.编程操作时每个组的引脚配置图如6-4-3所示 ,为了对某个特定熔断丝编程,按下列步骤选择输入行和乘积行:
(1) 将输出禁止信号OD (Output Disable)升到高电平VIHH 。
(2) 参见下表6-4-4,通过指定引脚I9、 I8 、 I7、 I6 、 I5 、I4,、 I3 、 I2 、I1、 I0和L/R的状态来选择被编程熔断丝所对应的输入行。
(3) 通过指定引脚A0、A1 、 A2 的状态来选择乘积行,参见表6-4-5.24系列PAL器件最多有10个输出端,每个输出端最多对应8个乘积行, A0~A2用来 选取8个乘积中的一行。
(4) 将引脚20即VCC酌电平升至VIHH 。
(5) 根据选定的乘积行对相应的输出引脚On施加编程高点平VIHH.Y以对熔 断丝编程,时序图如图6-4-2所示 。
(6) 将引脚20即VCC的电平降至6.0V。
(7) 对引脚CLOCK施加脉冲信号,由输出引脚On验证编程结果。对于输出低电平有效的PAL器件,输出应为‘低’;对于输出高电平有效的器件,输出应为‘高’。
(8) 将引脚20即VCC电平降到4.5V,并重复步骤(7)。
(9) 如果输出验证未通过,可重复步骤(1)-(8),多达5次。
重复上述步骤便可以对全部熔断丝编程,编程时序图参见图6-4-2.为了防止进一步的验证;将引脚1和引脚10的电平升至VP,烧断最后两根熔断丝.在此操作过程中,引脚20不使用。
![](https://img.diangon.com/portal/201502/21/080949h8qpvkay8rgpgrvp.gif)
![](https://img.diangon.com/portal/201502/21/080951x1a1laj1attk1lvj.gif)
![](https://img.diangon.com/portal/201502/21/080951jttimztg9cagabg4.gif)
L= 低电压输入电压VIL
H=高电压输入电压VIH
HH=高电平编程电压VIHH
Z= 连至+5V电源的10K?电阻
![](https://img.diangon.com/portal/201502/21/080952bcxc37i3iy7hiic2.gif)
逻辑设计的基本步骤
-设计构思
-建立布尔方程
-器件的选择
-建立设计文件
-汇编生成JEDEC文件
-仿真基本逻辑门
-运行仿真程序
-器件的编程