📄 demo600.abl
字号:
module DEMO600;
title '4-bit counters and bidirectional buffer
Data I/O Corp.
5 June 1990
5C060
'
demo600 device 'E0600';
" Pin 1 clock for pins 3..10, pin 13 clock for pins 15..22
" input pins 2,11,14,23
" programmable i/o pins 3..10 and 15..22
"
C,X,Z,H,L = .C.,.X.,.Z.,1,0;
Clk1,Clk2 pin 1,13;
Dir pin 2;
"Pins for bidirectional buffer
A3,A2,A1,A0 pin 7, 8, 9,10;
B3,B2,B1,B0 pin 19,20,21,22;
SideA = [A3,A2,A1,A0];
SideB = [B3,B2,B1,B0];
equations "bidirectional buffer
SideA.OE = Dir;
SideB.OE = !Dir;
SideA = SideB;
SideB = SideA;
test_vectors 'SideA to SideB'
([Dir,SideA,SideB] -> [SideA,SideB])
[ L , X , X ] -> [ Z , X ];
[ L , ^h0 , X ] -> [ X , ^h0 ];
[ L , ^hF , X ] -> [ X , ^hF ];
[ L , ^hA , X ] -> [ X , ^hA ];
[ L , ^h5 , X ] -> [ X , ^h5 ];
test_vectors 'SideB to SideA'
([Dir,SideA,SideB] -> [SideA,SideB])
[ H , X , X ] -> [ X , Z ];
[ H , X ,^h0 ] -> [ ^h0 , X ];
[ H , X ,^hF ] -> [ ^hF , X ];
[ H , X ,^hA ] -> [ ^hA , X ];
[ H , X ,^h5 ] -> [ ^h5 , X ];
@page
Declarations " 4 bit toggle flip flop up/down counter
Clr pin 11;
Q3,Q2,Q1,Q0 pin 3,4,5,6;
Q3,Q2,Q1,Q0 istype 'buffer,reg_T';
Count = [Q3,Q2,Q1,Q0];
equations
" Use xor with output to transform D f/f equations into T f/f equations
Count.t = ((Count.fb + 1) & Dir
# (Count.fb - 1) & !Dir)
$ Count.fb;
Count.ar = !Clr;
Count.oe = !0;
Count.clk = Clk1;
test_vectors 'Count Up'
([Clk1,Dir,Clr] -> Count)
[ L , H , L ] -> 0;
[ C , H , H ] -> 1;
[ C , H , H ] -> 2;
[ C , H , H ] -> 3;
[ C , H , H ] -> 4;
[ C , H , H ] -> 5;
[ C , H , H ] -> 6;
[ 0 , H , H ] -> 6;
[ C , H , H ] -> 7;
[ C , H , H ] -> 8;
[ C , H , H ] -> 9;
[ C , H , H ] -> 10;
[ C , H , H ] -> 11;
[ C , H , H ] -> 12;
[ C , H , H ] -> 13;
[ C , H , H ] -> 14;
[ C , H , H ] -> 15;
[ C , H , H ] -> 0;
[ C , H , H ] -> 1;
[ C , H , H ] -> 2;
test_vectors 'Count Down'
([Clk1,Dir,Clr] -> Count)
[ L , L , L ] -> 0;
[ L , L , H ] -> 0;
[ C , L , H ] -> 15;
[ C , L , H ] -> 14;
[ C , L , H ] -> 13;
[ C , L , H ] -> 12;
[ C , L , H ] -> 11;
[ C , L , H ] -> 10;
@page
Declarations "4 bit ripple counter
InA,ClrW pin 14,23;
QD,QC,QB,QA pin 15,16,17,18;
QD,QC,QB,QA istype 'buffer,reg_T';
CNT = [QD,QC,QB,QA];
equations
CNT.t = [1,1,1,1];
CNT.ar = ClrW;
CNT.clk = ![QC.q,QB.q,QA.q,InA];
@message 'Use the -list expand flag to get an expanded listing of test vectors';
test_vectors 'Count Up'
([InA,ClrW] -> CNT)
[ L , H ] -> 0;
[ L , L ] -> 0;
@const n = 0; @repeat 18 {@const n = n+1;
[ C , L ] -> @expr n; ;}
[ L , L ] -> @expr n; ;
[ L , H ] -> 0;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -