51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 数字电路课件 > 第五章 ROM与可编程逻辑 > 详细内容
第五章5节 PLD设计方法及步骤
作者:admin  发布时间:2009/1/10  阅读次数:1693  字体大小: 【】 【】【
PLD设计方法及步骤
1、PLD器件的设计步骤

  1.电路逻辑功能描述

  PLD器件的逻辑功能描述一般分为原理图描述和硬件描述语言描述,原理图描述是一种直观简便的方法,它可以将现有的小规模集成电路实现的功能直接用PLD器件来实现,而不必去将现有的电路用语言来描述,但电路图描述方法无法做到简练;硬件描述语言描述是可编程器件设计的另一种描述方法,语言描述可能精确和简练地表示电路的逻辑功能,现在在PLD的设计过程中广泛使用,并且有更加浒的趋势,常用的硬件描述语言有ABEL,VHDL语言等,其中ABEL是一种简单的硬件描述语言,其支持布尔方程、真值表、状态机等逻辑描述,适用于计数器、译码器、运算电路、比较器等逻辑功能的描述;VHDL语言是一种行为描述语言,其编程结构类似于计算机中的C语言,在描述复杂逻辑设计时,非常简洁,具有很强的逻辑描述和仿真能力,是未来硬件设计语言的主流。

  2.计算机软件的编程及模拟

  不管是用硬件描述语言描述的逻辑还是用原理图描述的逻辑,必须通过计算机软件对其进行编译,将其描述转换为经过化简的布尔代数表达式(即通常的最简与或表达式),编译软件再根据器件的特点将表达式适配进具体的器件,最终形成PLD器件的熔断丝文件(通常叫做JEDEC文件,简称为JED文件)。
  通常在将用户设计的逻辑下载到具体器件中前,为了检查设计的结果是否正确,通常可以通过计算机软件进行模拟,检查其设计结果是不否与设计要求相符。

  3.通过编程器将JED文件下载到PLD器件中

  在上步中形成的熔断丝文件必须下载到PLD器件中去才能实现设计的要求,熔断丝文件的下载一般须通过编程器进行下载。
  编程器是一种专门用于对可编程器(如EPROM,EEPROM,GAL,CPLD,PAL等)进行编程的专业设备,常见的编程器有台湾河洛公司的ALL系列、南京西尔特公司的Super系列等。编程器通常通过计算机的并行打印器将JED文件下载到编程器中,编程器再将JED文件根据器件的特点将其写入器件内部,从而达到下载的目的。下图给出了PLD的设计过程。

2、 可编程器件设计软件简介

  可编程器件的设计软件种类很多,各大器件厂家及一些软件公司都开发了一系列的设计软件,正是由于这些软件才推动了可编程器件的快速发展。
  通常根据逻辑功能的描述方法分为:语言描述和原理图描述设计两大类。常见的如DATA I/O公司的BAEL语言、四通公司ASIC事业部开发的针对GAL器件的FM(Fast MAP)软件等属于语言描述类设计软件;DATA I/O 公司的Synario软件,Orcad公司的PLD等软件属于电路图描述或电路图描述与语言描述相拼命的软件。这里主要以DATA I/O 公司的Synario软件为例说明GAL器件的设计过程,同时该软件还可以开发Lattice公司的pLSI器件和ispLSI器件等。

  1.ABEL-HDL语言

  ABEL-HDL语言是一种用语言来描述器件逻辑功能的设计语言,它与其它计算机语言一样有一些关键字及一些规定。

  (1)基本的运算表示

  ABEL-HDL语言运算可分为逻辑运算和算术运算。下面两个表格分别列出了两种运算的符号及功能,下面表格中红底的项为时序电路中才会使用到。

ABEL-HDL基本逻辑运算符号

运算符 优先级 功能 例子 含义
! 1 取反 !(AB) (AB)的非
& 2 与运算 A&B A·B
# 3 或运算 A#B A+B
$ 4 异或运算 A$B A⊕B
=    赋值 A=5 将5赋给A
==    数值相等 A==1 用于判断数值相等
!=    数值不等 A!=1 用于判断数值不等

ABEL-HDL基本算术运算符号

运算符 功能 举例 含义
+ 算术加 C=A+B 将A与B相加,将积再赋给C
- 算术减      
* 算术乘      
/ 算术除      
<<,>> 左,右移位 A<<B 将A左移B位

  (2)关键字

关键字 作   用 举  例
module 说明模块的开始,与END对应 MODULE tran
End 模块的结束 END
Title 说明模块的名称(可省略) Title 'U2 is a decode'
Equations 表明与器件相关的方程式的开始   
Pin 说明器件I/O的引脚 CLK,A Pin 1,2;
Istype 说明输出信号的属性 A Pin 19 istype 'COM';
Test_vectors 测试向量的开始   
Truth_table 真值表的开始   
When then Else 当什么时就怎样,否则怎样 When b then c=0 esle a=b
If then else      

  (3)ABEL语言设计举例

   写出全加器的ABEL-HDL语言的源文件。
  分析:在组合逻辑电路中我们分析了全加器的电路,我们可以用真值表、逻辑表达式、电路图等几种方式来描述其逻辑功能。其表达式写为:

进位输出:Co=A·B+A·Ci+B·Ci

本位和的输出:S=A⊕B⊕C

  其值表可写为:

Ci A B Co S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1

  该逻辑用真值表和表达式皆可以表示,即ABEL的源文件可以有两种表达方式。
  源文件1:用表达式来表示

源文件  说  明 
Module FSUM; 模块定义,FSUM为模块名,每行结束用分号结束
  A,B,Ci pin 1,2,3; 定义A,B,Ci对应管脚1,2,3
  S,Co pin 19,18 istype 'com'; 定义S,Co的管脚,并定义其为组合逻辑电路输出
Equations 表示下面一段为逻辑表达式
  S=A$B$Ci;   
  Co=A&B+A&Ci+B&Ci;   
Test_vectors ([Ci,A,B]->[Co,S]) 测试向量定义,下面为测试向量用于模拟逻辑功能
       [0,0,0]->[0,0];   
       [0,0,1]->[0,1];   
       [0,1,0]->[0,1];   
       [0,1,1]->[1,0];   
       [1,0,0]->[0,1];   
       [1,0,1]->[1,0];   
       [1,1,0]->[1,0];   
       [1,1,1]->[1,1];   
End 模块结束

  源文件2:用真值表来表示
  只要将上面的源文件中Equations起的三行用下面一段代替即可。

Truth_table ([Ci,A,B]->[Co,S])
       [0,0,0]->[0,0];
       [0,0,1]->[0,1];
       [0,1,0]->[0,1];
       [0,1,1]->[1,0];
       [1,0,0]->[0,1];
       [1,0,1]->[1,0];
       [1,1,0]->[1,0];
       [1,1,1]->[1,1];

  2.原理图输入法

  ABEL-HDL语言作为一种逻辑描述语言可以进行PLD的设计,但由于有一些电路已经有了图纸,人们希望能直接将原理图写入PLD电路中去,省去进行程序设计的时间,随着计算机图形化界面的发展,现在利用电路图进行逻辑描述的软件功能愈来愈多。
  下图为一半加器的电路图,从图上可看出其包括以下几个部分:

  

  (1)逻辑符号:它可以是标准符号库的符号,也可以是代表其它电路功能的符号,如图中的异或门、与门符号,它代表了异或、与门的功能,但在软件上常常是英制的符号,所以读者使用是应加以注意;
  (2)连线:用来连接各个符号,其功能相当于实际电路的导线;
  (3)I/O标志:它用来标明电原理图的输入、输出信号,信号的方向(输入、输出、双向),及输入/输出脚对应于器件引脚号;
  (4)图片和文字:用于帮助说明电路的功能,便于理解电路的原理,对整个电路原理没有实际意义。

3、 可编程逻辑器件设计举例

  1.用ABEL语言设计
  (1)启动Synario软件并创建一个新的设计项目
 在Windows 95的程序组上执行Synario,屏幕中的出现Synario软件的开始界面。
 在 File菜单中选择New Profect…项,键入新的项目名如SUM。如下图所示。

  在实际使用时应注意该项目所处的目录位置,否则当退出当前操作后就找不到前的设计,当前的目录位置可由上图的右框中可以看出;另外还须注意的是,新的项目名一般不要使用中文当文件名。
  (2)选择器件
  双击Virtual Device,将出现Choose Device的对话框,如下图;在Device Kit中选择到GAL16V8,单击OK按钮选中该器件。

  (3)选择源文件的类型
  可编程逻辑设计的源文件可以是ABEL语言也可以原理图,在Source菜单中选择New,出现New话框后选择ABEL-Module表示进行ABEL语言的输入,输入相应的模块名及文件名。如下图。

  这里必须注意,ABEL的模块名不可以使用中文作为文件名,否则无法进行编译。
  (4)输入ABEL语言源程序 在对应的源文件编辑器中输入相应的源文件,在输入时关键字可以是大写,也可以是小写字母,但变量的大小写不能改变,否则在编译时将报错。如下图。

   (5)源文件编译

  

  在项目管理器下,选择左边方框中对应于源文件的文件名,双击右边区域中的Reduce Logic可以看到如上图所示的编译过程,如源文件无误,则编译器最终给出编译报告,说明完成该逻辑所需要的资源及经化简后的逻辑表达式;如源文件存在问题问题,则编译器会说明错误的原因及地方。
  (6)熔断丝文件形成
  在项目管理器左边的区域选择使用的器件(GAL16V8),双击右边区域中的Create Fuse Map, 可看到如下图所示的熔断丝文件的形成过程,如报设计的逻辑报需要的资源GAL16V8可以实现的话,将最终形成扩展名为.JED的熔断丝文件。

  (7)程序下载
   JED的文件须下载到具有的GAL器件中,才能完成其最终的设计,下载JED文件到GAL须用专门的硬件设计,这种专门的的设备即通常讲的编程器。这种设备与计算机的并口或串口相连,通过相应软件将JED文件下载到GAL器件中到。如下图给出了Super编程器下载JED文件的画面。
   在利用编程器进行下载时,首先选择器件的厂家,不同的厂家器件特性有所不同,故应选择对应的生产厂家,其次选择器件的型号,这时可以将需要下载的JED文件读入缓冲区,最后对器件进行编程,编程器将JED文件下载后还自动进行一次校验,如器件工作正常,则编程 器软件可告知下载正常,否则说明器件损坏。
  由于GAL器件是使用CMOS工艺生产的器件,故在对GAL器件编程时应注意计算机及编程器的接地是否良好,工作人员的人体是否带静电。

  2.原理图输入设计法
   原理图输入法的使用前面步骤与ABEL语言设计的前两步相同,下面是原理图设计的步骤:
  (1)选择源文件类型中选择Schematic,输入对应的图形文件名后将出现下图所示的原理图输入界面。

  (2)添加元件:选择菜Add中的Symbol命令,屏幕出现Symbol Libraries对话框,选择需要的件,其中: GATE:逻辑门电路;ARITHS:数学运算元件;IOPAD:输入输出元件;MUXEX:多路选择开关 ;REGS:寄存器。
  (3)连接两元件:从Add菜单中选择Wire,用MOUSE左键在须连接处单击后,拖动MOUSE到另一点再单击就将两点连接上了。
  (4)在输入输出端连上输入/输出元件:在菜单Add上选择Symbol中的IOPAD元件,在电路的输入/输出画上IOPAD元件。
  (5)给接口输出端赋名:从Add菜单中选择Net Name项,从屏幕底部输入栏中输入网络名并按回车,网络名会粘在光标上随MOUSE一起移动,将光标移到输入或输出端单击,网络名就被 放置在输入/输出处。
  (6)给接口的输入输出端标注类型:在Add菜单中选择I/O Markers,输对应的输入输出标上输入与输出的标记。
  (7)给器件锁定管脚:从Add中选择Symbol Attribute将MOUSE光标移到输入输出端的IOPAD上单击,将SynarioPin=*中的*改为所须的输出管脚号。
   到此一个完整的原理图已经输入完毕,将电路图保存后退出后就可以与ABEL_HDL语言一样进行编译,最终开成JED文件。

上一篇:第五章1节 只读存储器(Read Only Memory) 下一篇:没有了!
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号