Well show us some of those ideas you've got right now. Once we've seen where you are at we can make suggestions or help clear up stuff you may not quite have right.
To give you something to mull over if you have no clue where to start...
At the most basic level you'll need a counter to divide down your clock to something slow enough that you can see the motion. It looks like you need about 1/2 a second to sweep in on direction, which means you'll be sitting with a specific LED lit for 500ms/10=10ms (based on the way the l1 & l2 disappear) so make sure you have a counter that can divide down the clock input to that time interval. You'll use that divided down enable to increment your led selector. If you use a brute force approach you can used the selector in a case statement to determine which LEDs are turned on.
I'll leave it at that for the moment and let you come up with how you implement all that and let you think about how you're going to apply your PWM enable to the correct LED as the led selector increments along. If you really think about it there are some clever things you can do with generating mux selects in a weird bi-direction shift register that might be a neat way to implement this.
Regards