📄 pci_pio.abl
字号:
MODULE PCI_PIO
TITLE 'PCI bus controller';
" Device: GAL22V10
" Inputs
CLK, !FRAME, !IRDY, CB0..CB3 pin 1,2,3,6..9;
!EQL, !EQH, !RES pin 4,5,13;
" Outputs
!DEVSEL, !TRDY, !RE pin 22,23,21 istype 'reg,invert,pos';
WC0..WC3 pin 17..14 istype 'reg,pos';
" Nodes
S0..S2 node istype 'reg';
" Constants and Symbols
SC = [S2..S0];
CMD_IOR = ([FRAME, IRDY, [CB3..CB0], EQL,EQH] == [1, 0, ^b0010, 1,1]);
CMD_IOW = ([FRAME, IRDY, [CB3..CB0], EQL,EQH] == [1, 0, ^b0011, 1,1]);
BUS_IDLE = ([FRAME, IRDY ] == [0, 0 ]);
EQUATIONS
[DEVSEL, TRDY, WC0..WC3, RE, SC].clk = CLK;
STATE_DIAGRAM SC;
State 0:
if RES then 0;
else if BUS_IDLE then 4;
else 0;
State 4:
if RES then 0;
else if CMD_IOW then 2 with DEVSEL := 1; TRDY := 1;
else if CMD_IOR then 5;
else if BUS_IDLE then 4;
else 0;
State 2:
DEVSEL.oe = 1; TRDY.oe = 1;
if RES then 0;
else if !FRAME then 3 with [WC3..WC0] := ![CB3..CB0];
else 2 with DEVSEL := 1; TRDY := 1;
State 3:
DEVSEL.oe = 1; TRDY.oe = 1;
if RES then 0;
else if CMD_IOW then 2 with DEVSEL := 1; TRDY := 1;
else if CMD_IOR then 5;
else 4;
State 5:
if RES then 0;
else 6 with DEVSEL := 1; TRDY := 1; RE := 1;
State 6:
DEVSEL.oe = 1; TRDY.oe = 1;
if RES then 0;
else if !FRAME then 7;
else 6 with DEVSEL := 1; TRDY := 1; RE := 1;
State 7:
DEVSEL.oe = 1; TRDY.oe = 1;
if RES then 0;
else 4;
State 1:
goto 0;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -