The task you have set before you are these main items:
- create a sequence 89 counts long
- convert the sequence number to a 7-segment display
The first part is a 4-bit counter that resets itself on count = 8. Easy enough.
The rest of it can be done a couple of ways.
- Easy way: use a 4-bit out lookup table for the digits, then use a 4-line to 7-segment decoder
- Hard(er) way: use a 7-bit out lookup table.
- Hard(est) way: express each segment with a Sum of Products expression
I've rendered the 'easy' way below (simulate it here)
The counter resets itself when the count reaches 1000 binary. Fun fact: you can make a D flip-flop into a T flip-flip by using an XOR gate. In fact the logic doing all that -The XORs and ANDs - is a logic block calledform an incrementer: it adds one to the present value.
I used four 8:1 multiplexers plus a 'special case' 2:1 for count=8. A little trick to allow using smaller muxes, but of course you could use 16:1 types.
To do direct encodingdecoding of 7-segment you'd add 3 more multiplexers and set them up with the digit segment tables.
To do Sum Of Products form you'd replace the seven multiplexers with seven AND-OR arrays, one for each segment. You would wire up AND terms for each segment-lit case then OR them together.