FPGA Introduction Course Training #07 – NonBlocking Assignment

YouTube-Channel-Art-Template.png


fpga introduction course training #7 - 1.PNG
– 위 그림에서 FF2의 D는 FF1의 Q에 연결되어 있음. 두 개의 FF 모두 동일한 clk으로 동작함.
– 첫 번째 rising edge에서 Q1은 propagation delay 이후에 1로 바뀜. 이 때문에 Q2의 값은 1로 바뀌지 못함. 첫 번째 rising edge에서 Q1이 1이 아니었기 때문. 두 번째 rising edge에서야 Q2의 값이 1로 바뀜.

fpga introduction course training #7 - 2.PNG
– 첫 번째 rising edge에서 d1이 1이라고 할 때, Q1은 propagation delay 이후에 1로 바뀜. 반면에 Q2는 여전히 0임. 그리고 두 번째 rising edge에서 1로 바뀌게 됨.
– 흔히 발생하는 실수이다. 일반적인 프로그래밍 언어에서 Q2, Q1, d1은 모두 같은 값을 가져야 하지만, HDL인 verilog에서는 propagation delay로 인해 값이 다를 수 있다.

fpga introduction course training #7 - 3.PNG
– 저지르기 쉬운 프로그래밍 오류이다. 일반적인 프로그래밍 언어에서는 Q1이 즉시 1이 되겠지만, verilog에서는 그렇지 않다.
– 첫 번째 rising edge에서 Q1은 0이고, 두 번째 rising edge에서야 1이 된다. 따라서 Q2는 세 번째 rising edge에서야 1이 된다.

fpga introduction course training #7 - 4.PNG
– Vivado에서 cascaded FF를 구현함.

fpga introduction course training #7 - 5.PNG
– Simulation해보면 실제로 delay가 발생하는 것을 확인할 수 있다.

Advertisements
Tagged with: , , , , , , , , , , , , , , , , ,
Posted in FPGA

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Recent Posts
누적 방문자 수
  • 142,141 hits
%d bloggers like this: