! ###############################################################
! ###############################################################
! ###                                                         ###
! ###  IOMD PROGCTL block model                               ###
! ###                                                         ###
! ###  Created 18/8/92: David Flynn                           ###
! ###                                                         ###
! ###   Dummy contents!!                                      ###
! ###                                                         ###
! ###############################################################
! ###############################################################
! ###  Revision History:                                      ###
! ###   27/8/92: DWF : new PROGCTL and revised VBUSRQ/AQ      ###
! ###   07/9/92: DWF : PROGCTL spilt from IOMDSYS file        ###
! ###   11/9/92: DWF : vprog and dmarq added                  ###
! ###   15/9/92: DF  : export rclkprogUS (unsynchronised)     ###
! ###   16/9/92: DF  : armrq renamed busrq with 2nd proc added ##
! ###  10/11/92: DF  : new progsm with merged progstrobes     ###
! ###  21/12/92: DF  : rclkprogUS inverted to RCLKGEN speedup ###
! ###                  and NRESET replaces NINIT              ###
! ###  20/1/93   WO    inverted sense of busrq for speed      ###
! ###############################################################


FROM iomd.progsm           IMPORT  progsm
FROM STDParts.Gates        IMPORT $SGate1


! ###############################################################
! IOMD PROG-space Controller (PROG statemachine)
! ###############################################################

BLOCK PROGCTL(
  {IN}  ck32,
  {IN}  Nreset,
  {IN}  Nbusrq,
  {IN}  dmarq,
  {IN}  proggo,
  {IN}  extprog,
  {IN}  vprog,
  {IN}  vbusak,
  {IN}  la[3:2],
  {IN}  lwrite,
  {OUT} vbusrq,
  {OUT} prog,
  {OUT} rclkprogUN
)

busrq      = $SGate1(Nbusrq    ) => busrq      WITH (OP=INV, delay=1)
rclkprogUN = $SGate1(rclkprogUS) => rclkprogUN WITH (OP=INV, delay=1)

progsm = PROGSM(
     ck32,
     Nreset,
     busrq,
     dmarq,
     proggo,
     extprog,
     vprog,
     vbusak,
     la[3:2],
     lwrite
   )
   =>  (
     vbusrq,
     prog,
     rclkprogUS
   )

END {PROGCTL}
