오후 12:50 2007-12-07
조경민 bro@shinbiro.com
verilog: blocking, nonblocking equal
===================================

assign 구문이나
assign Q2 =  ( (J&K&Clock) & ~Q2) |


always level sensitive ㅇ
always @( a or b ..)
 y = a | b;


일때만 = equal 쓰고



모든 always edge triggered인 경우는 <=를 쓴다.
<= 한 클럭 안에 모든 statement가 동시에 진행된다.
따라서 temporary 저장할 수 없다.
C = A+B;
D = C+1; 하면 A=1, B=1, C=0이면 C는 2, D는 2가 된다.


결국
D = C+1;
C = A+B;
를 한것과 동일하다. 코딩 순서에 의미가 있지 않다.



만일 A+B결과를 D에 반영하고 싶으면 현 클럭에서는 불가하다.
C = A+B;
D = A+B; 로 하든지


C = A+B;
t = A+B;한 후
다음 클럭에서
D = t 해야 한다.



C = A+B;
D = #2 C+1; 이렇게 delay를 줘도 결과는 동일하다. 다만 simulation시 지연이 보일 뿐이다.


 



(1)


always @(a or b or c)
begin
    temp = a + b;
    y = temp + c;
end


 


(2)
always @(posedge clk)
begin
    temp <= a + b;
    y <= temp + c;
end

'KB > embbeded sw' 카테고리의 다른 글

arm armulator  (0) 2008.03.17
ARM11 MPCore simulator  (0) 2008.02.25
RTOS 추천책  (0) 2007.09.13
usb msc  (0) 2007.08.03
Overview of Parallel IO  (0) 2007.08.01

+ Recent posts