版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字电路课程设计ABEL部分程序例1 组合电路实验 MODULE comb_simple/ title This is a gal demo'/ U9 device 'P16V8R'in1,in2,in3 pin ;out1,out2,out3 pin ;equations out1=in1&in2&in3; out2=in1#in2#in3; out3=!in3;END例2 组合电路实验的测试向量MODULE comb_simple/ title This is a gal demo'/ U9 device 'P16V8R'in
2、1,in2,in3 pin ;out1,out2,out3 pin ;test_vectors (in1,in2,in3->out1,out2)0,0,0->.x.,.x.;0,0,1->.x.,.x.;0,1,0->.x.,.x.;0,1,1->.x.,.x.;1,1,1->.x.,.x.;END例3 用GAL16V8设计如下6个基本逻辑门:P123 与门,或门,与非门,或非门,异或门,同或门。解 6个基本逻辑门的逻辑表达式为 根据上述逻辑表达式,采用一片GAL16V8就可以实现6个基本逻辑门。用ABLE-HDL语言写出的基本逻辑门的设计源文件如下:MOD
3、ULE BASIC-GATES /头部TITLE ' BASIC GATES' /说明部 IC1 DEVICE 'P16V8S' ; A1,B1,A2,B2 PIN 19,1,2,3; 输入脚定义 A3,B3,A4,B4 PIN 4,5,6,7; A5,B5,GND PIN 8,9,10; A6,B6,F6,F5 PIN 11,12,14,14; F4,F3,F2,F1 PIN 15,16,17,18; 输出脚定义EOUATIONS /逻辑描述部 F1=A1&B1; &表示“与”运算 F2=A2#B2; #表示“或”运算 F3=!(A3&
4、B3); !表示“非”运算 F4=!(A4#B4); F5=A5$B5; $表示“异或”运算 F6=(A6!$B6);!$表示“同或”运算TEST_VECTIORS (A1,B1,A2,B2,A3,B3,A4,B4,A5,B5,A6,B6->F1,F2,F3,F4,F5,F6) "INPUT OUTPUT"0,0,0,0,0,0,0,0,0,0,0,0->0,0,1,1,0,1 0,1,0,1,0,1,0,1,0,1,0,1->0,1,1,0,1,0 1,0,1,0,1,0,1,0,1,0,1,0->0,1,1,0,1,01,1,1,1,1,1,1,
5、1,1,1,1,1->1,1,0,0,0,1END BASIC-GATES 例4 带三态控制的四输入与非门P153 例2 一个带三态控制的四输入与非门的ABLE-HDL模块源程序如下:MODULE GAL5 /模块GAL5开始TITLE 'able input file' /标题语句 U05 DEVICE 'P16V8C' /器件说明:U05为P16V8C a,b,c,d PIN 2,3,4,5; /输入管脚说明 f PIN 12; /输出管脚说明 ENB PIN 6; / 三态控制说明 h,1,x,z=1,0,.x.,z.; /常量定义,便于向量测试使用
6、EQUATIONS /逻辑方程描述部 f=!(a&b&c&d); Enable f=enb;TEST_VECTORS(end,a,b,c,d->f) /测量向量部 h,0,.x.,.x.,.x.->1; /.x.表示任意态(0或1) h,.x.,0.x.,.x.->1; h,.x.,.x.,0,.x.->1; h,.x.,.x.,.x.,0->1; h,1,1,1,1->0; 1,x,x,x,x->z; /Z 表示高阻态输出END GAL5 /模块GAL5结束 例5 2位计数器P153 例3 描述一个2位计数器的ABLE_HDL
7、模块源程序如下:MODULE counter /头部TITLE 'Two bits Counter Block' ;DECLARATIONS /说明部 "Input Clock PINCLR PIN "Output q0,q1 PINISTYPE 'reg'EQUATIONS /逻辑描述部 q0.clk=clock; q1.clk=clock; q0.AR=CLR; q1. AR=CLR; q0:=!q0; q1:=!q1&q0 # q1&!q0;END coubter / 结束部例6 2位计数器实验的测试向量MODULE c
8、ounter /头部TITLE 'Two bits Counter Block' ;DECLARATIONS /说明部 "Input Clock PINCLR PIN "Output q0,q1 PINISTYPE 'reg'test_vectors (CLR, Clock:> q0,q1)0, .C. :> .x.,.x.;1, .C. :> .x.,.x.;1, .C. :> .x.,.x.;1, .C. :> .x.,.x.;1, .C. :> .x.,.x.;END例7 4位二进制加法计数器P156
9、 例4 用基本表达形式描述一个4位二进制加法计数器。解 EQUATIONS COUNT.CLK=CLK; COUNT.AR=CLR; COUNT:=(COUNT.FB)&!CAI#(COUNT.FB+1)&CAI; CAO=Q3.Q&Q2.Q&Q1.Q&Q0.Q&CAO;例8 状态图的设计P124 例10 采用GAL 16V8器件,用状态图方式描述图4.24所示的状态图,用ABLE-HDL语言写出设计源文件。解 该状态机具有四个状态。在时钟的作用下,该状态机由一个状态转到下一状态。状态机在这四个状态之间轮流转换。状态机的状态由A、B寄存器定义,在
10、AB=01时,输出信号Y为0,其余情况下,输出Y=1. 首先要定义状态名,状态名由寄存器A、B的二进制码定义: S0=b00; S1=b01; S2=b10; S3=b11.其状态图如图4.24所示。然后用状态机语言描述该状态图的转换。下面只写出设计的核心部分:DECLARATIONS STATEMA=A,B; STATE0=0,0; STATE1=0,1; STATE2=1.0; STATE3=1,1;STATE_DIAGRAM STATE STATE 0:Y=1; GOTO STATE 1 STATE STATE 1 :Y=0; GOTO STATE 2 STATE STATE 2:Y=1
11、; GOTO STATE 3 STATE STATE 3:Y=1; GOTO STATE 0;P156 例5 用条件转移方程形式描述例4的4位二进制加法计数器。解 EOUATIONS COUNT.CLK=CLK; COUNT.AR=CLR; WHEN ! CAI THEN COUNT:=COUNT.FB ; ELSE COUNT:=COUNT.FB+1 CAO=Q3.Q&Q2.Q&Q1.Q&Q0.Q&CAO;P157 例6 描述一个具有使能端的异或门。 TRUTH_TABLE IN IC5 (EN,A,B->C) 0,.x.,.x.->.z.; /使
12、能端关闭,输出高阻态 1,0,0->0; 1,0,1->1; 1,1,0->1; 1,1,1->0;P157 例 7 描述一个简单的状态机。 TRUTH_TABLE IN IC6 (A,B:>C,D->Y) 0,0:>0,1->1; 0,1:>1,0->0; 1,0:>1,1->1; 1,1:>0,0->1;P157 例 8 用状态图发描述例 7的逻辑。解 从例 7分析知,该状态机由4个状态,在时钟作用下,状态机在四个状态之间轮流装换。状态机的状态由A,B两个寄存器(触发器)定义,在A,B分别为0,1时输出信号
13、Y=0,其余为1.如图所示。首先定义状态名,状态名由寄存器A,B的二进制码定义:S0=b00; S1=b01; S2=b10; S3=b11 DECLARATIONS STATEMA=A,B; STATE0=0,0; STATE1=0,1; STATE2=1.0; STATE3=1,1;STATE_DIAGRAM STATE STATE 0:y=1; GOTO STATE 1 STATE STATE 1 :y=0; GOTO STATE 2 STATE STATE 2:y=1; GOTO STATE 3 STATE STATE 3:y=1; GOTO STATE 0;P158 例9 用状态图法
14、描述下图所示的状态机。解 我们使用条件转移语句CASE。CASE的转移条件是:满足条件时为下一状态表达式。在一个CASE语句中,可并列若干转移条件和状态表达式,但必须保证转移条件的互斥性。STATE_DIAGRAMSTATE S0; CASE K=0:S0; K=1:S1; END CASE STATE S1; CASE K=0:S1; K=1:S2; END CASESTATE S2; CASE K=0:S3; K=1:S2; END CASESTATE S3; CASE K=0:S3; K=1:S0; END CASE例9 层次说明举例P171 例7 层次说明举例为了解释层次说明,下面举个
15、简单的的例子。底层模块有2个,一个是3个输入端,1个输出端的与门AND1,另一个是2个输入端,1个输出端的或门OR1。高层模块AND_OR_INVERT是一个与或非门,它将2个3与门或起来后求反。高层模块:MODULE AND_OR_INVERTTITLE '1WIDE AND_OR_INVERT GATES'Declarations /说明部 AND INTERFACE(ia1,ia2,ia3->oa1); /与门接口说明 AND_1functional_block AND; /与门例化1 AND_2functional_block AND; /与门例化2OR INTE
16、RFACE(ib1,i2->ob1) /或门接口说明 OR1_1 functional_block OR1; /或门例化I1,i2,i3,i4,i5,i6,o1 PINEQUATIONS /逻辑描述部 AND1_1.ia1=i1; AND1_1.ia2=i2; AND1_1.ia3=i3; AND1_2.ia1=i1; AND1_2.ia1=i2; AND1_2.ia1=i3; OR1_1.ib1=AND1_1.oa1; OR2_1.ib2=AND1_2.oa1; O1=!OR1_1.ob1;END AND_OR_INVERT;低层模块1 与门MODULE AND1INTERFACE(i
17、a1,ia2,ia3->oa1);TITLE '3 inputs AND gate'DECLARATIONS /说明部ia1,ia2,ia3,oa1 pin;EOUATIONS /逻辑描述部Oa1=ia1&ia2&ia3;End AND1低层模块2 或门MODULE OR1 /省略INTERFACE语句TITLE '2 inputs OR gate'ib1,ib2,ob1 PIN; /说明部,省略了DECLARATIONS关键字EOUATIONS /逻辑描述部Ob1=ib1#ib2;END OR1例10 电子琴 (1)顶层模块piano的A
18、BEL语言源文件MODULE pianoDECLARATIONS/ lower module declarationvalue interface (d1.d7,di -> right);value_0 functional_blockvalue;/ inputclock pin 11; / 时钟输入 100KHzd1,d2,d3,d4 pin 9,40,36,3; / 琴键d5,d6,d7,di pin 29,10,16,43;/ outputmu pin 38 istype 'reg' ; / 音频输出/ nodemu2 node;mu0,mu1 node;q0.q7
19、 node istype 'reg'; / 多模计数器q = q7.q0;d = di,d7.d1;EQUATIONSvalue_0.di,d7.d1 = d;/ 多模计数器,模191、模170、模151、模143、模128、模114、模101、模97q.clk = clock;q := ( q+1) & !mu2 & value_0.right;mu0 = (q = 190) & (d1 = 1) # (q = 169) & (d2 = 1) # (q = 150) & (d3 = 1) # (q = 142) & (d4 =
20、1);mu1 = (q = 127) & (d5 = 1) # (q = 113) & (d6 = 1) # (q = 100) & ( d7 = 1) # (q = 96) & (di = 1);mu2 = mu0 # mu1;mu.clk = mu2; / 二分频计数器mu := !mu;END(2)底层模块value的ABEL语言源文件:MODULE valueDECLARATIONS/ inputd1.d7,di pin; / 琴键1,2,3,4,5,6,7,i / outputright pin; / 为1 表示当前按键有效/ noderight0,r
21、ight1 node;d=d1.d7,di;EQUATIONSright0 =(d = b00000001)#(d = b00000010)#(d = b00000100)#(d = b00001000);right1 =(d = b00010000)#(d = b00100000)# d = b01000000)#(d = b10000000);right = right0 # right1; / 为1 表示当前按键有效END例11 P178 例11 名位Sequence的状态机源文件举例。标示符A,B和C规定了各个状态。这些标示符在说明部中赋予十进制的常量值,即为代表各状态的状态寄存器规定
22、了位置。A,B,C只是标示符,并不代表状态机的位值情况。它们说明的值才为每个状态定义了状态寄存器的值;A=0,B=1,C=2.MODULE SequenceTITLE 'state machin example' Sequence device 'p16r4' q1,q0 pin 14,15 istype 'reg'cock,enab,start,hold,reset pin 1,11,4,2,3;Halt pin 17 istype 'reg'In_B,in_C pin 12,13 istype 'com'Sre
23、g =q1,q0;"State ValueA=0; B=1; C=2;EQUATIONS q1,q0,halt.clk=clock; q1,q0,halt.oe=!enab;State_diagram sreg;State A: "Hold in state Auntil start is active i_B=0; In_C=0;IT (start&!reset) THEN B WITH halt:=0;ELSE A WITH halt:=halt.fb;State B: "Advance to state C unless reset isactive i_B=1; "or hold is active.turn on halt indicator In_C=0; "if resetIT (reset) THEN A WITH halt:=1;ELSE if(hold) THEN B WI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿科护理评估工具应用
- 儿童哮喘与气候干燥的防护
- 出院患者的交通与社区资源链接
- 产科护理疼痛管理课件下载
- 物业管理服务企业法律法规及服务规范岗前培训试题及答案
- 乡村生态振兴三基三严考试题库及答案
- 校园防溺水试题及答案
- 校园应急演练三基三严考试题库及答案
- 姜片虫病总结2026
- 2025-2026学年幼儿五大领域教案中班
- 2026年江苏信息职业技术学院单招职业倾向性测试必刷测试卷附答案
- 2026年皖北卫生职业学院单招职业适应性测试题库附答案
- 2026年江西电力职业技术学院单招职业技能考试题库及参考答案详解1套
- 公立美容医院运营方案模板
- GB/T 26951-2025焊缝无损检测磁粉检测
- 化肥产品生产许可证实施细则(一)(复肥产品部分)2025
- 2025年10月自考00908网络营销与策划试题及答案含评分参考
- 养老院护理流程培训
- 2026年黑龙江旅游职业技术学院单招职业倾向性考试必刷测试卷必考题
- (13)普通高中艺术课程标准日常修订版(2017年版2025年修订)
- 给孩子讲大数据
评论
0/150
提交评论