저장장소 : project_register
우선 4bit register의 기능에 대해 설명하겠다.
stay (dout의 값을 그대로 유지한다)
load(din의 값을 내보낸다
shift right : dout3를 din2로(즉 dout2가 된다), dout2를 dout1으로, dout1을 dout0으로 보낸다.
*이때, din3가 dout3가 된다.!

shift left : shift right와 마찬가지이다. din0가 dout0가 되니 유의하자.
rotate right : shift와 비슷해 보이지만 다르다. dout3가 dout2가 되는 방식은 유사하나, dout0가 dout3가 된다는 차이가 있다.

DUT과 테스트벤치를 작성해준다.



웨이브폼을 뽑아내었다.

이때, 웨이브폼이 잘못 뽑아진 것을 확인할 수 있다.
위에서 shift기능을 수행할 때, shift right에선 dout3의 값이 din3가 되어야 한다고 말했다. 그러나 shift right(sel = 010)과 shift left(sel = 011)을 수행했을 때, 각각 dout3와 dout0이 0이 되는것을 볼 수 있다.