APP下载

基于CPLD/FPGA的数字电路设计方法变革必要性研究

2014-04-18双凯蔡洪明

现代电子技术 2014年7期

双凯+蔡洪明

摘 要: 大规模可编程逻辑器件的应用已经为数字系统的设计带来了极大的灵活性。标准化逻辑设计语言的引入,极大地改变了传统的数字系统设计方法、设计过程和设计观念。作为大学的技术基础教学环节,应做出相应的调整。分别通过组合逻辑和时序逻辑设计实例比较了传统设计方法存在的问题和现代逻辑设计方法的优势。通过对比可以看到,现代逻辑设计技术取代传统的数字系统设计方法而成为数字电路设计的主流,是电子技术发展的必然趋势。

关键词: 数字电路设计; 现代数字逻辑设计方法; 数字电路教学改革; 转换真值表

中图分类号: TN710?34; TP302.1 文献标识码: A 文章编号: 1004?373X(2014)07?0139?04

Research on the necessity of change in digital circuit design method

based on CPLD/FPGA

SHUANG Kai, CAI Hong?ming

(College of Geophysics and Information Engineering, China University of Petroleum (Beijing), Beijing 102249, China)

Abstract: Application of large?scale programmable logic device has brought great flexibility to digital system design. The introduction of standard logic design language has greatly changed the design method, design process and design concepts of traditional digital system. As a technical foundation teaching link in the university, it should be adjusted accordingly. The problems of the traditional design approach and advantages of modern logic design methods are compared through the combinational logic and sequential logic design examples. By contrast, the modern logic design techniques has replaced the traditional method of digital system design and become the mainstream of the digital circuit design, which is the inevitable trend of development of electronic technology.

Keyword: digital circuit design; modern digital logic design method; digital circuit teaching reform; conversion truth table

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所示。

表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逻辑

在“七人表决”逻辑中,不再专注于每个逻辑变量状态的变化,只抓住关键问题多数表决有效,并用条件操作符“?”设计出所需的Verilog行为逻辑,剩下的实现问题交由计算机综合(synthesis)。可以看到,采用标准化的硬件描述语言,能有效地避开以往组合逻辑设计中逐一考察每个输入逻辑状态所带来的逻辑状态分析的爆炸,从而可以用较短的设计时间得到正确的逻辑输出。众所周知,加法器、比较器都是传统的组合逻辑教学内容,但以往的教学中由于采用手工分析方法,很难把这些不同的逻辑设计内容综合考虑进来。笔者认为,现代逻辑设计方法的引入将逐渐转化人们对传统逻辑设计中的关注点,势必引起逻辑设计教学方法的更新。有必要加大逻辑功能综合设计的内容,减少元器件级逻辑单元选型在教学中的比例。

2 时序逻辑设计中传统设计方法与现代可编程

逻辑设计方法的对比

数字电路的另一类设计内容是时序逻辑设计。时序逻辑设计分为同步与异步时序逻辑设计。一般地,同步时序逻辑设计的难度要高于异步时序逻辑。因此,也在时序逻辑电路设计上占有较多的学时。如果在教学改革中仅把可编程逻辑设计作为传统时序逻辑设计内容的补充,不但不能使学生体会到先进的计算机辅助逻辑设计所带来的便捷,还可能使学生按照传统的手工时序逻辑设计步骤去理解可编程时序逻辑,导致时序逻辑设计的复杂化,增加逻辑验证的成本。因此,有必要探讨传统设计方法与现代逻辑设计方法之间的差别。下面根据一个典型的时序逻辑设计来说明。

例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) 状态分配

化简后的状态有三个,可以用2位二进制代码组合(00,01,10,11)中的任意三个代码表示,用两个触发器组成电路。观察表3,当输入信号A=1时,有a→b→c的变化顺序,当A=0时,又存在c→a的变化。综合两方面考虑,这里采取00→01→11→00的变化顺序,会使其中的组合电路相对简单。于是,令a=00,b=01,c=11,得到状态分配后的状态图,如图4所示。

图4 例2状态分配后的状态图

(4) 选择触发器类型

这里选用逻辑功能较强的JK触发器可以得到较简化的组合电路。

(5) 确定激励方程组和输出方程组

用JK触发器设计时序电路时,电路的激励方程需要间接导出。表4所示的JK触发器特性表提供了在不同现态和输入条件下所对应的次态。而在时序电路设计时,状态表已列出现态到次态的转换关系,希望推导出触发器的激励条件。所以需将特性表做适当变换,以给定的状态转换为条件,列出所需求的输入信号,称为激励表。根据表4建立的JK触发器激励表如表5所示。表中的[x]表示其逻辑值与该行的状态转换无关。

表4 JK触发器特性表

[[Qn]\&[J]\&[K]\&[Qn+1]\&[Qn]\&[J]\&[K]\&[Qn+1]\&0\&0\&0\&0\&1\&0\&0\&1\&0\&0\&1\&0\&1\&0\&1\&0\&0\&1\&0\&1\&1\&1\&0\&1\&0\&1\&1\&1\&1\&1\&1\&0\&]

表5 JK触发器的激励表

[[Qn]\&[Qn+1]\&[J]\&[K]\&[Qn]\&[Qn+1]\&[J]\&[K]\&0\&0\&0\&[x]\&1\&0\&[x]\&1\&0\&1\&1\&[x]\&1\&1\&[x]\&0\&]

根据图4和表5可以列出状态转换真值表及两个触发器所要求的激励信号,见表6。

表6 例2的状态转换真值表及激励信号

[[Qn1]\&[Qn0]\&[A]\&[Qn+11]\&[Qn+10]\&[Y]\& 激励信号\&[J1]\&[K1]\&[J0]\&[K0]\&0\&0\&0\&0\&0\&0\&0\&[x]\&0\&[x]\&0\&0\&1\&0\&1\&0\&0\&[x]\&1\&[x]\&0\&1\&0\&0\&0\&0\&0\&[x]\&[x]\&1\&0\&1\&1\&1\&1\&0\&1\&[x]\&[x]\&0\&1\&1\&0\&0\&0\&1\&[x]\&1\&[x]\&1\&1\&1\&1\&1\&1\&0\&[x]\&0\&[x]\&0\&]

据此,分别画出两个触发器的输入J、K和电路输出Y的卡诺图,如图5所示。图中,不使用的状态均以无关项x填入。

图5 激励信号及输出信号的卡诺图

化简后得到激励方程组和输出方程。

[J1=Q0AK1=AJ0=AK0=AY=Q1A]

(6) 画出逻辑图,并检查自启动能力

根据激励方程组和输出方程画出逻辑图,如图6所示。

图6 例2的逻辑图

如果发现所设计的电路不能自启动,还应修改设计,直到能自启动为止。

由上面所列举的设计方法可以想见,继续增加检测位数会使逻辑设计更加复杂。

从上例可以看到,传统的时序逻辑设计方法尽管可以用来实现时序逻辑的设计,但设计步骤不仅复杂且需要设计者大费周折。可以预见,使用传统的时序逻辑设计方法设计复杂时序电路的难度很大。那么,采用什么方法才能使教学与现代逻辑设计技术接轨呢?

时序电路也被称为有限状态机(FSM)[6,8],因为它们的功能行为可以用有限的状态个数来表示。在与可编程逻辑设计的对比分析中,这里采用FSM设计这个序列检测器。

根据图3的状态转换图(采用图4中化简的状态转换图亦可),给逻辑状态[a,b,c,d]分别分配以Gray编码(00,01,11,10)。之所以采用Gray编码方法,是可以省掉序列检测中的计数检测。序列检测器的FSM逻辑如图7所示。经仿真验证,符合设计要求。

图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.

[7] 邓水先.《数字逻辑电路》课程的教改探索[J].职业教育研究,2008(8):68?69.

[8] 邓元庆,贾鹅.数字电路与系统设计[M].西安:西安电子科技大学出版社,2003.

[9] BROWN Stephen, VRANESIC Zvonko.数字逻辑基础与Verilog设计[M].夏宇闻,译.2版.北京:机械工业出版社,2008.

根据图3的状态转换图(采用图4中化简的状态转换图亦可),给逻辑状态[a,b,c,d]分别分配以Gray编码(00,01,11,10)。之所以采用Gray编码方法,是可以省掉序列检测中的计数检测。序列检测器的FSM逻辑如图7所示。经仿真验证,符合设计要求。

图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.

[7] 邓水先.《数字逻辑电路》课程的教改探索[J].职业教育研究,2008(8):68?69.

[8] 邓元庆,贾鹅.数字电路与系统设计[M].西安:西安电子科技大学出版社,2003.

[9] BROWN Stephen, VRANESIC Zvonko.数字逻辑基础与Verilog设计[M].夏宇闻,译.2版.北京:机械工业出版社,2008.

根据图3的状态转换图(采用图4中化简的状态转换图亦可),给逻辑状态[a,b,c,d]分别分配以Gray编码(00,01,11,10)。之所以采用Gray编码方法,是可以省掉序列检测中的计数检测。序列检测器的FSM逻辑如图7所示。经仿真验证,符合设计要求。

图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.

[7] 邓水先.《数字逻辑电路》课程的教改探索[J].职业教育研究,2008(8):68?69.

[8] 邓元庆,贾鹅.数字电路与系统设计[M].西安:西安电子科技大学出版社,2003.

[9] BROWN Stephen, VRANESIC Zvonko.数字逻辑基础与Verilog设计[M].夏宇闻,译.2版.北京:机械工业出版社,2008.