Continuous Assignments : Model the behavior of combinational logic by using expressiongs and operators
ex)
Wire [15:0] adder = data_a + data_b;
or
Wire [15:0] adder;
assign adder = data_a + data_b;
Continuous Assignments Characteristics
Wire [15:0] adder = data_a + data_b; 이 구문에서
= 기준으로 왼쪽을 Left Hand Side(LHS), 오른쪽을 Right Hand Side(RHS)라고 합니다.
1. LHS에는 "꼭" data type이 정의되어야 합니다.
2. RHS에는 어떤 data type이 와도 됩니다.
3. RHS의 값이 변동되면 LHS에 "즉시" 업데이트되며 이를 Always active 특성이라고 합니다.
Continuous Assignment Delay
assign #25 adder_out = mult_out + out ; 이 구문은 LHS와 RHS가 다릅니다.
LSH와 RHS가 다르다면 #25인 25 '단위' 이후 LHS 값이 할당되는 것으로 예정되어 있다는 구문입니다.
만약 RHS의 값이 25 단위 이전에 바뀌게 된다면 일단, 계산된 LHS 값은 취소가 됩니다. 그리고 다시 25 단위가 흐른 이후 되고 LHS에 값이 할당됩니다. 따라서 RHS가 지연 기간 내에 값을 일정하게 유지하도록 해야 합니다.
Two Procedural Blocks
initial : Used to initialize behavioral statements for simulation
alwawys : Used to describe the circuit functionallity using behavioral statements
initial과 always 블록은 동시에 진행되며 각 구문 안에서는 순서대로 진행됩니다. 그리고 서로 중첩해 사용할 수 없습니다.
Two Procedural Blocks Characteristics
1. LHS는 "반드시" variable data type이 와야 합니다.
2. LHS는 bit-select 나 part select가 될 수 있습니다.
3. RHS는 어느 표현이든 올 수 있습니다.
initial
1. behavioral statements로 구성되어 있습니다.
2. 시뮬레이션을 위해 사용됩니다.
3. 시작하는 순간 시스템 시간은 0입니다. 그리고 오직 1번만 실행되며 일단 시작하면 초기화할 수 없습니다.
4. initial 블록이 1개 이상의 behavioral statement를 포함할 시, "반드시" begin과 end의 키워드를 넣어야 합니다.
ex) time 0일 때, (a, b, c) = (0,1), time #5일 때, (a, b, c) = (0,1,0)인 구문
module initial_sytem;
reg a,b,c;
initial a=2'b00;
inital begin
b=2'b11;
#5 c = 2'b00;
end
initial #20 $finishe;
endmodule
always
1. initial과 마찬가지로 behavioral statements로 구성되어 있습니다.
2. 시작하면 시스템 시간은 0이며, 루핑 형태로 동작합니다. 즉, 이벤트가 지속적으로 발생하는 동안 반복해서 실행됩니다.
3. always 블록이 1개 이상의 behavioral statement를 포함할 시, "반드시" begin과 end의 키워드를 넣어야 합니다.
ex) 주기가 #40인 clock generator
module clock_gen
#(parameter period = 40)
(output reg clk
);
initial clk = 2'b0;
always
#(period/2) clk = ~clk;
initial #80 $finish;
endmodule
하만 세미콘 아카데미(harman semicon academy)에서 Intel Quatus Prime과 Modelsim을 사용해 Verilog를 실습하고 있습니다. 여기까지 Verilog Behavioral Modeling에 대해 알아보았습니다.