MODULE camvme title 'VME interface' declarations "logic levels H,L,X,VCC,GND = 1,0,.X.,1,0; "input pins --------------------------------------------------------------------- A1,A2,A3,A4,A5,A6,A7 pin; "address A8 pin; "for CAM distinction AM0,AM1,AM2,AM3,AM4,AM5 pin; "address modifiers WRITE pin; "write/read SYSRES pin; "system reset IACK pin; "interrupt acknowledge MS0,MS1 pin; "address16-23match,24-31match AS,DS0,DS1 pin; "strobes DLAY1,DLAY2,DLAY3,DLAY4,DLAY5 pin; "50,100,150,200,250nsec delayed DELAYIN LWORD pin; "for Long word SH0,SH1,IPOP0,IPOP1,OPIP0,OPIP1 pin; "for CAM LSI FLO0,FLO1,PO0,PO1,HO0,HO1 pin; "for CAM LSI "output pins -------------------------------------------------------------------- BDTACK pin; "Data Acknowledge BBERR pin; "Bus Error DELAYIN pin; "to Active Delay Input SS1 pin; "for 74LS645 " RSTAT,WCTRL,CLKSL,PROGX,TDITM pin; for XC95108PQ160 programming IRQ1 pin; "for Interrupt ? ADD0,ADD1,ADD2,ADD3,ADD4,ADD5,ADD6,ADD7 pin; "for CAM Address WR,SQRST,OPNS0,OPNS1,RD pin; "for CAM Control "clock out ---------------------------------------------------------------------- "vector definitions AMCODE = [AM5,AM4,AM3,AM2,AM1,AM0]; ADDR = [A7,A6,A5,A4,A3,A2,A1,X]; "internal nodes (pins also) U24,S24,U32,S32 node; "AM code SELECT pin; "Module Selected CLKSL pin; "for test RST pin; "for CAM LSI RS,WS pin; "r/w strobes "end of declarations equations "address SELECT = ((S32 # U32) & !MS0 & !MS1 # (S24 # U24) & !MS0) & !AS & IACK; "address modifier S24 = (AMCODE==^h3E)#(AMCODE==^h3D); U24 = (AMCODE==^h3A)#(AMCODE==^h39); S32 = (AMCODE==^h0E)#(AMCODE==^h0D); U32 = (AMCODE==^h0A)#(AMCODE==^h09); "data strobe RS = WRITE & SELECT & (!DS0 # !DS1); WS = !WRITE & SELECT & (!DS0 # !DS1); "250ns active delay DELAYIN = !DS0 # !DS1; "data acknowledge / bus error BDTACK = !WRITE & SELECT & DLAY3 & (!DS0 # !DS1) # WRITE & SELECT & DLAY3 & (!DS0 # !DS1); BBERR = GND; "74LS645 SS1 = GND; "enabled " DIR = RS; 1 for read operation "system reset " SYSRES = ; "address asignment "256bit VME address space " RSTAT = SELECT & (ADDR == ^H00); " WCTRL = SELECT & (ADDR == ^H04); CLKSL = SELECT & (ADDR == ^H08); " PROGX = SELECT & (ADDR == ^H0C); " TDITM = SELECT & (ADDR == ^H10); "i.e " 0x00 READ STATUS REGISTER " [bit0=PCLOCKSEL,bit1=LEDENABLE,bit2=PROGENABLE, " bit3=TDO,bit4=TDI,bit5=TMS,bit6=GND,bit7=VCC] " 0x04 WRITE CONTROL REGISTER [Not Used] " 0x08 SELECT CLOCK / LED CONTROL " [bit0(1:external 0:internal), " bit1(1:enable LEDs 0:disable LEDs)] " 0x0C PROGRAM XILINX FROM VME enable[bit0 1=enable] " 0x10 WRITE TMS[bit0] AND TDI[bit1] " " 0x14 REGISTER ADDRESS " [bit0-bit3:register address,bit4:LOADREGADDR] " 0x18 SEQUENSER CONTROL " [bit0:AUTOSTOP,bit1:CLKSTART,bit2:CLRREGADDR] "CAM LSI Control RST = SELECT & (ADDR == ^HB0) & !DS1; "CAM LSI Address ADD0 = SELECT & !DS0; ADD1 = SELECT & A1; ADD2 = SELECT & A2; ADD3 = SELECT & A3; ADD4 = SELECT & A4; ADD5 = SELECT & A5; ADD6 = SELECT & A6; ADD7 = SELECT & A7; "Others IRQ1 = GND; " LWORD = GND; " SH0 = GND; " SH1 = GND; " IPOP0 = GND; " IPOP1 = GND; " OPIP0 = GND; " OPIP1 = GND; OPNS0 = GND; OPNS1 = GND; RD = GND; " FLO0 = GND; " FLO1 = GND; " PO0 = GND; " PO1 = GND; " HO0 = GND; " HO1 = GND; WR = GND; !SQRST = VCC; "end of equations "test vectors "end of test vectors END camvme