In a simple control unit using microcoded sequencing, I use a ROM to store the sequences of control signals. The instruction forms the top 8 bits of the ROM address, and the bottom eight bits are formed by a counter that is incremented on the falling edge of the clock.
The zero address of the ROM contains the signal to load an instruction into the instruction register, thus pointing the ROM to that address and outputting the data there in order. After the instruction is completed, the ROM will output bits to clear the instruction register and microcode counter, restarting the whole process. When these bits are set high, the ROM address is instantly reset and the bits go low immediately.
My goal is to implement this circuit using 7400 series logic and an EEPROM, but I am suspicious that my method of using the ROM data to asynchronously reset its own address registers will introduce a race condition or otherwise invalid state. Is this method acceptable. If not, what is the appropriate way to do this?