Variable Assignment
디지털에는 두가지 타입의 element가 있다.
Combination , Sequential
Combination Logic(조합 논리 회로)
ð 출력이 단지 현재의 입력 값에 의해서만 결정된다.
ð ex) 가산기, 비교기, 디코더, 인코더, Mux & DeMux
ð and, or , not gate
ð 만약 reg type으로 구현하면 현재 값을 유지할 필요가 없기에 wire처럼 합성.
Sequential Logic(순차 논리 회로)
ð 현재의 입력과 기억 소자에 기록된 과거 출력들 과의 조합에 의해 현재의 출력 값이 결정된다. (‘시간 개념’ 도입)
ð 정보를 저장하는 기억소자, 혹은 데이터 정보를 전송하는 회로에도 사용.
è Latch = 신호의 level에서 동작하는 비동기식 ( Verilog 설계에서 사용 x)
è Flip-Flop = 신호의 edge 에서 동작하는 동기식. (clock 신호와 동기 되며, Verilog 설계에서 주로 사용)
Always
always@( ) = @뒤에 있는 () 속에 들어간 port의 변화가 있을 때마다 동작한다.
ð level sensitive = 괄호 내부의 input port중 변하는 것이 있다면 always문 수행.
ð edge sensitive = 괄호 내부의 input port 앞에 posedge 혹은 negedge를 붙여 edge에 따라 always문 수행.
ð 무조건 reg type.(always , initial)
조건연산자 (? : )
assign 변수명 = (조건) ? 참인경우 : 거짓인경우
Assign
ð assign statement 는 combination logic 에서 사용되므로 연속적으로 동작한다.
ð 즉, 어떤 sensitive list가 필요 없이 동작하는 경우에 사용된다.
ð reg type에는 assign문 사용 불가하며, wire type에 사용 가능.
여기서 reg 는 register를 의미하는 것인가?
ð reg type의 변수가 무조건 flip-flop(register)로 생성되는 것은 아니다.
ð 정보를 저장하는 전선
ð 초기값 = x (unknown) 반대로, wire 초기값 = z(하이 임피던스)
è 그릇으로 비유 가능한데, 값을 유지할 필요가 있다면 그릇에 담아두지만 절차적 할당 (always 문 등) 을 사용하여 combination logic 을 구현할 때는 값이 유지될 필요가 없으므로 그릇을 비운다.
그러므로, 기억소자가 필요하다 = always문을 사용함(reg type), 기억소자가 필요 없다 = 일반적인 combination logic으로 구현.
참고)
https://dreamsailor.tistory.com/8
'공부 > Verilog' 카테고리의 다른 글
[Verilog 팁] 폭 없는 파라미터에 ~ 썼다가 ||가 항상 TRUE 되는 함정 (0) | 2025.05.02 |
---|---|
Combinational logic delay (2) | 2022.08.26 |
[그냥 공부]#2 signed & unsigned (1) | 2022.03.06 |
[그냥 공부]#1 등가 연산자 , 타이밍 제어 (1) | 2022.03.01 |
플립플롭(Flip - Flop) S-R , D , J-K , T (0) | 2022.02.26 |