ShIftShift는 이전 자리의 입력된 값이 clock이 rising edge나 falling edge때에 다음 bit의 자리로 옮겨가는 장치로, clear, data, clock를 입력해주는 D Flip Flop 4개로 연결 되어있다.◎ Shift의 회로도는 아래와 같다.{◎ Coding 과정..module my_shift1 (clear,clock,data,dout);input clear, clock, data;output [3:0]dout;my_dff u1(clear,clock,data,dout[0]),u2(clear,clock,dout[0],dout[1]),u3(clear,clock,dout[1],dout[2]),u4(clear,clock,dout[2],dout[3]);endmodulemodule my_dff(clear,clock,data,q,qb);input clear,clock,data;output q,qb;reg q,qb;always@(posedge clock)beginif(clear==0)beginq=0;qb=0;endelsebeginq=data;qb=~data;endendendmodule◎ 컴파일 및 파형 결과{위의 파형을 보면,data의 값이 1이고, riging edge에서 dout0의 값부터 1자리씩 올라가므로 위의 waveform을 보면 dout0와 dout1의 값이 1인데, 바로 옆에 다시 clock이 riging edge로 바뀌자 dout0의 값 1 이 dout1로 가고, dout1의 값 1 이 dout2로 가는 것을 확인할수 있다. 그리고, 있때 data의 값이 0이었으므로 dout0의 값은 0 이 된다. 마지막으로 여기서 clear의 값은 0일 때 reset으로 0000으로 돌아가고 1일때는 기존의 상태가 유지하게 된다.
Four_To_One Mux멀티플렉서(MUX : multiplexer) : 여러 회선의 입력이 한 곳으로 집중될 때 특정 회선을 선택하도록 할 수 있는 장치. 어느 회선에서 전송해야 하는지 결정하기 위하여 Select 신호가 함께 주어져야 한다.Four_Mux는 4개의 입력이 들어오면 Select 신호에 따라 하나의 출력을 내보내는 회로이다. Four_Mux의 회로도와 진리표는 다음과 같다.{{S1S2Out00D101D210D311D4Velilog Coding.module four_mux(out, s1, s2, d1, d2, d3, d4);input s1, s2, d1, d2, d3, d4;output out;and au1(a, ns1, ns2, d1),au2(b, s1, ns2, d2),au3(c, ns1, s2, d3),au4(d, s1, s2, d4);not nu1(ns1, s1),nu2(ns2, s2);or ou1(out, a, b, c, d);endmodule이것을 컴파일시키고 파형을 보면 다음과 같이 나왔다.{d1→0, d2→1, d3→10ns, d4→30ns, s1→50ns, s2→100ns를 넣었다.위 파형에서 보면 알 수 있듯이0ns부터 25ns일때 s1→0, s2→0이고 out→d1이 나오고25ns부터 50ns일때 s1→0, s2→1이고 out→d2가 나오고50ns부터 75ns일때 s1→1, s2→0이고 out→d3가 나오고75ns부터 100ns까지 s1→1, s2→1이고 out→d4가 나오고 그 뒤부터는 반복됨.