基于CPLDFPGA的数字电路设计方法变革必要性研究6200字
基于CPLDFPGA的数字电路设计方法变革必要性研究6200字 表1 例1的真值表(共有23=8行) [A\&B\&C\&F\&0\&0\&0\&0\&0\&0\&1\&0\&0\&1\ &0\&0\&0\&1\&1\&1\&1\&0\&0\&0\&1\&0\&1\&1\&1\ &1\&0\&1\&1\&1\&1\&1\&] (2) 列逻辑函数表达式 三人表决器的逻辑表达式为:[F=ABC+ABC+ABC+ABC] (1) 设N为上式中的逻辑项数,这时,共有逻辑项[N=C23+C33=4]项。
(3) 逻辑化简 三人表决器的逻辑表达式可化简为:
[F=BC+AC+AB] (4) 画出逻辑电路图如图1所示。
尽管上面的分析看上去没有错误,但上例中的“三人表决器”设计给学生一 个误导,好像按照上述的设计步骤就可以进行组合逻辑设计了。可以推导,若表 决人数用[p]来表示,逻辑表达式的项数为[Np=k=p2+1pCkp,]其中[Ckp]为逻辑 项的组合数。以[p=7]为例,这时表1中的表项为27=128项,式(1)中的逻辑项 数N变为[N7=C47+C57+C67+C77=64]。
图1 例1的逻辑图 显然,随着表决者数量的增加,逻辑项数急剧增加,真值表不易绘制,逻辑 公式无法手工书写,逻辑化简也非常困难。
多数表决器的逻辑公式由于过多的项数不易采用公式法化简。如果采用卡诺 图化简法也会因输入变量过多而导致传统化简方法失效。
标准逻辑设计语言的出现给大规模逻辑设计带来了新的希望。硬件描述语言 (HDL)的采用可以使设计者的精力集中于所设计的逻辑本身,不必过多的考虑如何实现这个逻辑以及需要用哪些定型的逻辑模块。这在以往中小规模集成电路 逻辑设计与大规模可编程逻辑设计方法上产生了本质的差别。Verilog是一种以 文本形式来描述数字系统硬件结构和行为的语言,用它可以表示逻辑电路图、逻 辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。在此,用Verilog设计 一个“七人表决”逻辑,以考察采用现代逻辑设计方法较传统设计方法的优势。
在表决器的设计中,关键是对输入变量中为1的表决结果进行计数,如果把 全部的逻辑状态列表分析,势必存在冗余的设计资源。根据多数表决的性质,考 虑采用加法逻辑来统计表决结果,之后再判决加法器输出中1的个数即可实现该 逻辑。Verilog设计如图2所示。
图2 七人表决的Verilog逻辑 2 时序逻辑设计中传统设计方法与现代可编程 逻辑设计方法的对比 数字电路的另一类设计内容是时序逻辑设计。时序逻辑设计分为同步与异步 时序逻辑设计。一般地,同步时序逻辑设计的难度要高于异步时序逻辑。因此, 也在时序逻辑电路设计上占有较多的学时。如果在教学改革中仅把可编程逻辑设 计作为传统 0 引 言 20世纪90年代,国际上电子和技术较为先进的国家,一直在积极探索新的电 子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成 功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广 泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过 类似软件编程的方式对其硬件结构和工作方式进行重构,从而使硬件设计像软件 设计那样方便快捷。这就极大地改变了传统的数字系统设计方法、设计过程和设 计观念,促进了数字逻辑电路设计技术的迅速发展。本文通过几个设计实例的对 比阐述一个道理,随着数字电路中先进设计方法的引入,高等学校中数字电子技 术的教学内容必须随之得到改善,使之与技术进步相互适应[1?3]。数字电路根据逻辑功能的特点,分成两类,一类叫组合逻辑电路(简称组合 电路),另一类是时序逻辑电路(简称时序电路)。组合逻辑电路在逻辑功能上 的特点是任意时刻的输出仅取决于该时刻的输入,与电路初态无关。而时序逻辑 电路任意时刻的输出不仅取决于当时的输入信号,还取决于电路原来的状态。本 文从这两方面就传统手工设计存在的问题进行讨论。
1 组合逻辑设计中传统设计方法与可编程逻辑 设计方法的对比 列真值表,逻辑关系式,逻辑化简是组合逻辑设计的几个重要步骤。但这一 经典的组合逻辑设计步骤并不总是必须的。实现特定逻辑功能的逻辑电路也是多 种多样的。为了使逻辑电路的设计更简洁,通过各种方法对逻辑表达式进行化简 是必要的。组合电路设计就是用最简单的逻辑电路实现给定逻辑表达式。在满足 逻辑功能和技术要求基础上,力求电路简单、可靠。实现组合逻辑函数可采用基 本门电路,也可采用中、大规模集成电路。
例1:三个人表决一件事情,结果按“少数服从多数”的原则决定这一逻辑 问题[4?5]。在“三人表决”问题中,将三个人的意见分别设置为逻辑变量A、B、 C,只能有同意或不同意两种意见。将表决结果设置为逻辑函数F,结果也只有“通 过”与“不通过”两种情况。
传统的逻辑设计需要由下面的4个步骤完成:
(1) 列真值表 对于逻辑变量A、B、C,设同意为逻辑1,不同意为逻辑0。对于逻辑函数F, 设表决通过为逻辑1,不通过为逻辑0。
根据“少数服从多数”的原则,将输入变量不同取值组合与函数值间的对 应关系列成表,得到函数的真值表如表1所示。
时序逻辑设计内容的补充,不但不能使学生体会到先进的计算机辅助逻辑 设计所带来的便捷,还可能使学生按照传统的手工时序逻辑设计步骤去理解可编 程时序逻辑,导致时序逻辑设计的复杂化,增加逻辑验证的成本。因此,有必要 探讨传统设计方法与现代逻辑设计方法之间的差别。下面根据一个典型的时序逻辑设计来说明。
例2:试设计一个序列编码检测器[6?7],当检测到输入信号出现110序列时, 电路输出1,否则输出0。
这个序列编码检测器如果按照传统的时序设计步骤,将会异常繁琐:
(1) 由给定的逻辑功能建立原始状态图和原始状态表 从给定的逻辑功能可知,电路有一个输入信号A和一个输出信号Y,电路功能 是对输入信号A的编码序列进行检测,一旦检测到信号A出现连续编码为110的序 列时,输出为1,检测到其他编码序列时,输出为0。
设电路的初始状态为a,如图3中箭头所指。在此状态下,电路输出[Y=0,] 这时可能的输入有[A=0]和[A=1]两种情况。当CP脉冲相应边沿到来时,若[A=0,] 则是收到0,应保持在状态a不变;
若[A=1,]则转向状态[b,]表示电路收到一个 1。当在状态[b]时,若输入[A=0,]则表明连续输入编码为10,不是110,则应回 到初始状态[a,]重新开始检测;
若[A=1,]则进入状态[c,]表示已连续收到两 个1。在状态[c]时,若A=0,表明已收到序列编码110,则输出[Y=1,]并进入状 态d;
若[A=1,]则收到的编码为111,应保持在状态[c]不变,看下一个编码输入 是否为[A=0;
]由于尚未收到最后的0,故输出仍为0。在状态[d,]若输入[A=0,] 则应回到状态[a,]重新开始检测;
若[A=1,]电路应转向状态[b,]表示在收到 110之后又重新收到一个1,已进入下一轮检测;
在[d]状态下,无论[A]为何值, 输出[Y]均为0。根据上述分析,可以得出如图3所示的原始状态图和表2所示的原 始状态表。
图3 例2的原始状态图 表2 例2的原始状态表 [现态 [(Sn)]\&次态/输出[Sn+1Y]\&现态 [(Sn)]\&次态/输出[Sn+1Y]\&[A=0]\&[A=1]\&[A=0]\&[A=1]\&[a] [b]\&[a/0] [a/0]\&[b/0][c/0]\&[c] [d]\&[d1] [a/0]\&[c/0] [b/0]\&] (2) 状态化简 观察表2现态栏中[a]和[d]两行可以看出,当[A=0]和[A=1]时,分别具有相 同的次态[a、][b]及相同的输出0,因此,[a]和[d]是等价状态,可以合并。最 后得到化简后的状态表,见表3。
表3 例2经化简的状态表 [现态 [(Sn)]\&次态/输出[Sn+1Y]\&现态 [(Sn)]\&次态/输出[Sn+1Y]\&[A=0]\&[A=1]\&[A=0]\&[A=1]\&[a] [b]\&[a/0] [a/0]\&[b/0] [c/0]\&[c] \&[a1] \&[c/0] \&] (3) 状态分配 图4 例2状态分配后的状态图 (4) 选择触发器类型 这里选用逻辑功能较强的JK触发器可以得到较简化的组合电路。
(5) 确定激励方程组和输出方程组 用JK触发器设计时序电路时,电路的激励方程需要间接导出。表4所示的JK 触发器特性表提供了在不同现态和输入条件下所对应的次态。而在时序电路设计 时,状态表已列出现态到次态的转换关系,希望推导出触发器的激励条件。所以需将特性表做适当变换,以给定的状态转换为条件,列出所需求的输入信号,称 为激励表。根据表4建立的JK触发器激励表如表5所示。表中的[x]表示其逻辑值 与该行的状态转换无关。
表4 JK触发器特性表 表5 JK触发器的激励表 根据图4和表5可以列出状态转换真值表及两个触发器所要求的激励信 号,见表6。
表6 例2的状态转换真值表及激励信号 据此,分别画出两个触发器的输入J、K和电路输出Y的卡诺图,如图5所示。
图中,不使用的状态均以无关项x填入。
图5 激励信号及输出信号的卡诺图 化简后得到激励方程组和输出方程。
[J1=Q0AK1=AJ0=AK0=AY=Q1A] (6) 画出逻辑图,并检查自启动能力 根据激励方程组和输出方程画出逻辑图,如图6所示。
图6 例2的逻辑图 如果发现所设计的电路不能自启动,还应修改设计,直到能自启动为止。
由上面所列举的设计方法可以想见,继续增加检测位数会使逻辑设计更加复 杂。
从上例可以看到,传统的时序逻辑设计方法尽管可以用来实现时序逻辑的设 计,但设计步骤不仅复杂且需要设计者大费周折。可以预见,使用传统的时序逻 辑设计方法设计复杂时序电路的难度很大。那么,采用什么方法才能使教学与现 代逻辑设计技术接轨呢? 时序电路也被称为有限状态机(FSM)[6,8],因为它们的功能行为可以用 有限的状态个数来表示。在与可编程逻辑设计的对比分析中,这里采用FSM设计这个序列检测器。
图7 例2的FSM实现 从上面的对比可以看出,传统时序逻辑设计以人工逻辑分析为基础,现有逻 辑器件为基础构件,历经基本逻辑方程转换及最后的状态验证等多个环节,设计 周期长,仅适合设计小规模、时序简单的逻辑单元[9];
现代标准逻辑设计语言 的设计方法以逻辑状态转换本身为要点,从逻辑门与触发器级逻辑设计上升的行 为逻辑设计,更易于用来设计复杂的现代大规模时序 逻辑。
3 结 论 现代逻辑设计方法的引入将逐渐转化人们对传统逻辑设计的关注点,大学基 础教学中逻辑电路的设计方法也应随着这一技术的引入更新它的内容,改变传统 逻辑设计占主导地位的现状。可以预见,大规模可编程逻辑器件的引入将会从根 本上改变数字电子技术的教学模式。现代逻辑设计概念的引入,减少手工逻辑设 计方法的比重、增加现代数字电路设计方法,注重基本概念的灵活运用都是数字 电路教学改革的选题。广泛开展现代逻辑设计方法的研究,势必带来逻辑设计方 法教学的变革。对于高等学校的教师来说,做好改革的思想准备已经是刻不容缓 的了。
[1] 鲍家元,毛文林.数字逻辑[M].北京:高等出版社,2002. [2] 吕乐,杨爱琴.谈《数字电路与逻辑设计》课程教学改革[J].中国成人 教育,2008(3):125?127. [3] 李小珉,叶晓慧.深化《数字电路与逻辑设计》课程改革[J].长江大学 学报:自科版,2004,1(4):124?125. [4] 侯建军,路而红,熊华刚,等.数字电子技术基础[M].2版.北京:出版 社,2007. [5] 易亚军.《数字电子技术》教学研究[J].教育研究,2008(6):121?122.[6] 康华光,邹寿彬,秦臻.电子技术基础:数字部分[M].5版.北京:高等 教育出版社,2006.