L2_P4 data_average 코드 리뷰 및 waveform 질문 드립니다.
2
작성한 질문수 3
`timescale 1ns / 1ps
module data_avg (
input logic clk,
input logic rstn,
input logic [7:0] i_data,
input logic i_valid,
output logic [7:0] o_data,
output logic o_valid
);
//TODO
logic [7:0] recent_data [0:3];
logic [9:0] sum;
logic [1:0] valid_count;
// store recent 4 data when i_valid == 1
always_ff @(posedge clk or negedge rstn) begin
if(!rstn) begin
for(integer i = 0; i < 4; i++) begin
recent_data[i] <= 8'b0;
end
end
else if(i_valid) begin // store data only when i_valid == 1
recent_data[0] <= i_data;
for(integer i = 1; i < 4; i++) begin
recent_data[i] <= recent_data[i-1];
end
end
else begin // remain data when i_valid == 0
recent_data[0:3] <= recent_data[0:3];
end
end
// o_valid is high when valid_count == 4
always_ff @(posedge clk or negedge rstn) begin
if(!rstn) begin
o_valid <= 1'b0;
valid_count <= 2'b0;
end
else if(i_valid) begin
if(valid_count == 3) begin
o_valid <= 1'b1;
end
else if(valid_count < 3) begin
o_valid <= 1'b0;
valid_count <= valid_count + 1;
end
end
else begin
o_valid <= 1'b0;
end
end
always_comb sum = recent_data[0] + recent_data[1] + recent_data[2] + recent_data[3];
always_comb o_data = o_valid ? ( sum[1] == 1 ? (sum[9:2] + 1) : sum[9:2] ) : 8'b0;
endmodule
안녕하세요, 강의 잘 수강하고 있습니다.
Q1. 작성하신 부분과 꽤 다르게 counter로 설계하였는데 간단하게 리뷰 부탁드리며 counter로 설계할 때와 fsm으로 설계할 때의 장단점이 궁금합니다.
Q2. waveform에서 네번째 data가 들어온 바로 다음 rising edge 이후 valid와 average 값이 나와야 할 것 같은데 파형의 expected_data는 왜 한cycle이 더 delay돼서 나오는지 궁금합니다.
감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 정회운님!
Q1. Counter로 설계할 때와 FSM으로 설계할 때의 장단점
Counter 설계의 장단점:
장점:
- 간단성: Counter는 추가적인 상태가 필요 없기 때문에 비교적 간단하고 이해하기 쉬운 구조입니다.
- 자원 절약: 적은 자원으로 상태를 나타낼 수 있습니다. 특히 상태가 많지 않을 때 효율적입니다.
- 간단성: Counter는 추가적인 상태가 필요 없기 때문에 비교적 간단하고 이해하기 쉬운 구조입니다.
단점:
- 유연성 부족: 상태가 복잡하거나 분기 조건이 많을 경우, FSM에 비해 다루기 어렵습니다.
- 확장성 한계: 상태가 많아지면 counter 방식은 구조가 복잡해질 수 있습니다.
- 유연성 부족: 상태가 복잡하거나 분기 조건이 많을 경우, FSM에 비해 다루기 어렵습니다.
FSM 설계의 장단점:
장점:
- 복잡한 제어: 다양한 상태와 조건을 처리할 수 있어 복잡한 제어 로직에 유리합니다.
- 명확한 상태 구분: 상태가 명확하게 구분되므로 디버깅과 유지보수에 용이합니다.
- 복잡한 제어: 다양한 상태와 조건을 처리할 수 있어 복잡한 제어 로직에 유리합니다.
단점:
- 자원 사용 증가: 상태가 많아질수록 자원 사용이 증가할 수 있습니다.
- 복잡성 증가: 상태와 전이 조건이 많아지면 설계가 복잡해질 수 있습니다.
- 자원 사용 증가: 상태가 많아질수록 자원 사용이 증가할 수 있습니다.
각 방식은 사용될 설계 환경과 요구 사항에 따라 선택해야 합니다. 간단한 제어에는 counter를, 복잡한 상태관리가 필요한 경우는 FSM을 사용하는 것이 일반적입니다.
Q2. Waveform에서의 delay
네 번째 데이터 입력 후 유효한 출력이 예상되는 한 사이클 뒤에 나오는 이유는 로직의 타이밍과 동기화에 관한 문제일 수 있습니다. 구체적으로 이유는 아래와 같습니다:
데이터전파 지연:
always_ff블록 내에서 데이터는 클럭의 상승 에지(posedge)에 반응하므로 그 다음 에지까지 데이터가 진행되기까지 시간이 필요합니다.Valid 신호의 지연: 마지막 데이터가 유효하다는 것을 확인한 후에
valid_count가 조건을 만족하여o_valid가 설정되기 때문에 조건을 만족한 후에 완전히 적용되기까지 사이클의 지연이 생길 수 있습니다.
결국, 이 특성들은 동기식 설계의 일반적인 특성으로, 입력이 클럭의 포지티브 에지에 동기화되며 항상 한 사이클의 지연이 사실상 발생하게 됩니다.
이러한 파형 지연에 대해 깊이 있는 이해가 필요하다면, Verilog HDL에서의 설계 타이밍 관련 자료를 참고하시면 더욱 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Ubuntu 20.04.5 설치관련 문의드립니다
0
49
2
LV2-2 Patter Detector code review 부탁드립니다.
1
27
1
환경 설정하는 guide 최신화 부탁드립니다.
1
51
2
Arty A7-35T 구매 불가
0
48
2
git hub 404 error 도움 부탁드립니다.
1
49
2
LT스파이스 라이브러리 다운이 안됩니다.
0
41
2
어떤 방식으로 이 강의를 듣고 공부를 해야 하는지 고민 됩니다.
0
42
2
쿼터스 스케메틱에 대한 질문
0
35
2
실행 시 node or model name expected.
0
33
2
FIFO 질문
0
32
2
cache관련 질문 드립니다
0
50
1
수업자료내 출처 문의 드립니다.
0
41
2
보드 관련 질문 드립니다.
1
63
2
34장의 맛비 패턴 generator 관련 질문입니다!
1
62
2
34장과 35장에서 설계한 IP는 DDI의 구조를 설계한 것인가요?
1
59
1
HW가속기 설계에서 더 보완할 수 있는 방법이 있을까요?
1
68
2
환경설정 문
2
72
2
[HDL 32장-2부] 참고 링크 관련
1
77
2
강의 만료일 연장 신청
0
74
2
기초예제 파일 불러오기 문의
0
67
2
Zybo 환경에서 PL RTL UART 보드 검증 방법
0
64
2
혹시 별도의 자료가 있나요?
0
68
2
queue assignment pattern 문의 건
0
59
1
Mission 5 문의 건
0
85
2





