PLD设计方法及步骤
在项目管理器下,选择左边方框中对应于源文件的文件名,双击右边区域中的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文件。
ABEL-HDL基本算术运算符号
(1)基本的运算表示
ABEL-HDL语言运算可分为逻辑运算和算术运算。下面两个表格分别列出了两种运算的符号及功能,下面表格中红底的项为时序电路中才会使用到。
ABEL-HDL基本逻辑运算符号
运算符 | 优先级 | 功能 | 例子 | 含义 |
! | 1 | 取反 | !(AB) | (AB)的非 |
2 | 与运算 | AB | 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 |
- | 算术减 | ||
* | 算术乘 | ||
/ | 算术除 | ||
,>> | 左,右移位 | AB | 将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语言的源文件。
分析:在组合逻辑电路中我们分析了全加器的电路,我们可以用真值表、逻辑表达式、电路图等几种方式来描述其逻辑功能。其表达式写为:
其值表可写为:
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=AB+ACi+BCi; | |
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 | 模块结束 |
评论