MODULE LED_8BIT CLK PIN 7; " Should be mapped to GCK IDSEL PIN 18; FRAME PIN 20; IRDY PIN 22; TRDY PIN 24; DEVSEL PIN 26; STOP PIN 28; RST PIN 39; " Should be mapped to GSR. CBE3..CBE0 PIN 19,25,27,34; AD3,AD2 PIN 29,33; LED_A3..LED_A0 PIN 2,3,4,5; LED_B3..LED_B0 PIN 38,43,44,1; DEBUG PIN 6; CBE = [CBE3..CBE0]; LED_A = [LED_A3..LED_A0]; LED_B = [LED_B3..LED_B0]; FRAME_REG node istype 'reg'; CBE_REG3..CBE_REG0 node istype 'reg'; CBE_REG = [CBE_REG3..CBE_REG0]; AD_REG3..AD_REG2 node istype 'reg'; AD_REG = [AD_REG3..AD_REG2]; FRAME_START node; ST0,ST1,ST2 node istype 'reg'; WR_READY node; " Initial value is 0x39. XILINX PROPERTY 'INIT=S LED_REG5'; XILINX PROPERTY 'INIT=S LED_REG4'; XILINX PROPERTY 'INIT=S LED_REG3'; XILINX PROPERTY 'INIT=S LED_REG0'; LED_REG7..LED_REG0 node istype 'reg'; LED_REG = [LED_REG7..LED_REG0]; RD_ACTIVE3..RD_ACTIVE0 node istype 'reg'; XILINX PROPERTY 'BUFG=OE AD_OE'; AD_OE node; XILINX PROPERTY 'BUFG=OE TGT_OE'; TGT_OE node; CMD_CSREAD = ^b1010; CMD_CSWRITE = ^b1011; EQUATIONS FRAME_REG := FRAME; FRAME_REG.clk = CLK; FRAME_START = FRAME_REG & !FRAME & IDSEL & ((CBE == CMD_CSREAD) # (CBE == CMD_CSWRITE)); CBE_REG := CBE; CBE_REG.clk = CLK; CBE_REG.ce = FRAME_START; AD_REG := [AD3..AD2]; AD_REG.clk = CLK; AD_REG.ce = FRAME_START; ST0 := FRAME_START & (CBE == CMD_CSREAD) & ([RD_ACTIVE3..RD_ACTIVE0] == ^b1111); ST1 := ST0 # (FRAME_START & (CBE == CMD_CSWRITE)); ST2 := ST1; [ST2..ST1].ce = !ST1 # !IRDY; [ST2..ST0].clr = FRAME & IRDY; [ST2..ST0].clk = CLK; TGT_OE = ST1 # ST2; DEVSEL = !ST1; DEVSEL.oe = TGT_OE; TRDY = !ST1; TRDY.oe = TGT_OE; STOP = !ST1; STOP.oe = TGT_OE; [LED_A,LED_B] = LED_REG; WR_READY = ST1 & !IRDY & (CBE_REG == CMD_CSWRITE); LED_REG := [AD3..AD2,AD3..AD2,AD3..AD2,AD3..AD2]; LED_REG[7..6].ce = WR_READY & (AD_REG == 3); LED_REG[5..4].ce = WR_READY & (AD_REG == 2); LED_REG[3..2].ce = WR_READY & (AD_REG == 1); LED_REG[1..0].ce = WR_READY & (AD_REG == 0); LED_REG.clk = CLK; [RD_ACTIVE3..RD_ACTIVE0] := ^b1111; RD_ACTIVE0.ce = WR_READY & (AD_REG == 0); RD_ACTIVE1.ce = WR_READY & (AD_REG == 1); RD_ACTIVE2.ce = WR_READY & (AD_REG == 2); RD_ACTIVE3.ce = WR_READY & (AD_REG == 3); [RD_ACTIVE3..RD_ACTIVE0].clk = CLK; [RD_ACTIVE3..RD_ACTIVE0].aclr = !RST; [AD3..AD2] = (AD_REG == 0) & LED_REG[1..0] # (AD_REG == 1) & LED_REG[3..2] # (AD_REG == 2) & LED_REG[5..4] # (AD_REG == 3) & LED_REG[7..6]; [AD3..AD2].oe = AD_OE; AD_OE = ST1 & (CBE_REG == CMD_CSREAD) & ([RD_ACTIVE3..RD_ACTIVE0] == ^b1111); DEBUG = FRAME_START; END