Displaying 4 different characters on a seven segment display with Verilog?
What you want to do:

Put a pattern onto your seg_cat pins
Pull just one of your seg_an pins low
Wait a while -- this needs to be slow enough so that the electronics have time to react, and fast enough so that you don't see flicker.  Figure that if you refresh the display at 50Hz or faster, you're fine -- that means about 5ms per digit.  This is slow for an FPGA.
Pick a different pattern &amp; seg_an pin, and repeat

What you are doing:

Pick some random pattern of seg_cat pins
Pull all of the seg_an pins low (probably -- because you're anding individual seg_cat pins).

It gets really open-ended from here, but you need to have a delay module that outputs a trigger pulse once every 5ms.  You need to have a sequencing module that takes that trigger pulse as an input and advances the state of the seg_an pins (or that counts out a state from 0 to 3 and repeat), you need a module to drive the appropriate seg_an pin low, and you need a module to put the correct pattern out on the seg_cat pins.
You can do this all in one module if you don't mind being messy -- but I can tell you now that you should have an &quot;always @posedge clock&quot; in there, and a counter, and something that keeps track of which digit should be lit up at any given moment.