이론
- 동기식: always @(posedge clk) if(reset) —> 좀 더 안정적임 그래서 고주파회로에서 많이 사용됨
- 비동기식: always @(posedge clk,negedge reset) if(reset) —> 상대적으로 덜 안정적이지만 많이 사용되고 있음
Blocking vs NonBlocking
- Blocking: 현재할당문의 실행이 완료된 후 다음 할당문이 실행되는 순차적 흐름을 가짐
- NonBlocking: 나열된 할당문들이 순차적 흐름에 대한 Blocking 없이 정해진 할당스케줄에 의해 값이 할당 (우변이 동시에 평가된 후 문장의 나열 순서 또는 지정된 지연값에 따른 할당 스케줄에 의해 좌변의 변수에 값이 갱신된다.)
join: process가 모두 끝나면 다음 코드 실행.
join_any: process 중 하나만 끝나도 다음 코드 실행.
join_none: process가 모두 실행 후 process의 끝나는 것과 상관없이 다음 코드 실행
생성문 : 많은 모듈 인스턴스를 위해 사용하는 문법이다.
function VS task
MUX 만들 때 case 문 말고 if else if 문 사용시에는 우선순위를 줄 수 있다.
다수의 always 블록에서 동일한 reg변수에 값을 할당하지 않는다. → race condition
FSM
무어 머신 :
출력이 플립플롭들의 "현재 상태"들만의 함수로 구성되는 상태 머신이다.
밀리머신:
현재 상태뿐만 입력 변수가 무엇이냐에 따라 달라지는 상태 머신인데, 같은 상태일지라도 입력에 따라 달라지는 것을 의미한다.
과제
여기서 counter_next = 0; 으로 넣어서 클리어를 구현했는데
그전에 counter_reg =0; 하니까 오
류가 많이 뜸 → 다른 always 문에서 같은 변수의 값을 조정하여서
'Verilog > 기본모듈 및 이론' 카테고리의 다른 글
Day 7 - UART_Rx (0) | 2024.06.19 |
---|---|
Day 6 - FSM, UART_Tx (0) | 2024.06.17 |
Day 4 - Sequential Logic (1) | 2024.06.17 |
Day3 - COUNTER CIRCUIT (0) | 2024.06.17 |
Day2 - FULL ADDER, FND (0) | 2024.06.17 |