⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pci_pio.abl

📁 不足20元的PCI设计
💻 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 + -