본문 바로가기

전체 글53

[FPGA = Basys3] 다중 시계 Multiple_watch 구현 이번에는 지금까지 만든 디지털 시계, 타이머, 스톱워치를 만들었던 모듈들을 사용하여 버튼을 누르면 모드가 바뀌는 다중 시계를 구현해 보도록 하겠습니다.multiple_watch 기능:watch_top → 일반 시계cook_timer → 요리 타이머stop_watch → 스톱워치입력:clk : 시스템 클럭reset_p : 리셋btn[3:0] : 버튼 입력a[1:0] : 모드 선택 스위치출력:seg_7 : 7세그먼트 데이터com : 7세그먼트 자리 선택led : LED 표시alarm : 알람 출력 (타이머 전용) - FPGA보드에 Piezo Buzzer를 달아 알람으로 사용모드 선택(a 값)a 값 모드 사용 버튼 설명00watch_topbtn[2:0]일반 시계01cook_timerbtn[3:0]쿠킹 타이머1.. 2025. 8. 21.
[FPGA - Basys3] Stop Watch 구현 stop_watch 모듈 개요stop watch 또한 앞에서 진행된 인스턴스들을 활용해서 구현하였습니다.기능: FPGA 기반 스톱워치 (시작/정지, 랩 타임, 초기화)입력:clk : 시스템 클럭reset_p : 비동기 리셋 (양의 에지)btn[2:0] : [시작/정지, 랩, 초기화] 버튼출력:seg_7 : 7세그먼트 디스플레이 segment 신호com : 7세그먼트 자리 선택led : 랩 상태 표시버튼 처리 (btn_cntr 모듈 활용)버튼 입력을 양의 에지 검출로 처리하여 순간 신호(btn_pedge)를 생성.버튼 의미 내부 신호btn[0]시작/정지 토글btn_startbtn[1]랩 타임 토글btn_lapbtn[2]초기화btn_clear시작/정지 상태 제어if (reset_p) start_stop = .. 2025. 8. 20.
[FPGA - Basys3] Timer 타이머 구현 이번에는 저번에 디지털 시계에서 사용한 인스턴스들을 가지고 타이머를 Verilog 언어를 사용해서 FPGA 보드에 구현해보겠습니다.1) cook_timer — 요리 타이머 (카운트다운 + 알람)설명 (step-by-step)버튼:btn[0] 시작/정지(모드 토글)btn[1] 초 +1btn[2] 분 +1 (0~99)btn[3] 알람 끔상태 흐름:설정 상태(start_set=0, alarm=0): 분/초 증분btn_mode & 현재 시간이 0이 아니면 카운트다운 시작(start_set=1), 현재값을 set_min/sec에 백업카운트다운: 1초마다 감소, 00:00 도달 시 alarm=1, start_set=0알람 중: 아무 조작(알람 off/증분/모드)으로 alarm=0, set_flag=1복구: set_.. 2025. 8. 19.
[FPGA - Basys3] Clock 디지털 시계 구현(MM:SS) 그동안 공부한 Verilog 언어를 바탕으로 Vivado 프로그램을 사용해 FPGA보드에 시계를 구현해보았습니다.구현하기 위해 필요한 코드들을 작성해 보겠습니다.1) edge_detector_n — (negedge 샘플) 엣지 검출기설명목적: cp 신호의 상/하엣지를 1클럭 펄스로 검출샘플링: negedge clk로직: {ff_cur, ff_old} 비교2'b10 → 상승엣지2'b01 → 하강엣지verilog복사module edge_detector_n( input clk, input reset_p, input cp, output p_edge, output n_edge ); reg ff_cur, ff_old; always @(negedge clk or posedg.. 2025. 8. 18.
[Verilog] Edge Detecter 구현 1. Verilog 코드Behavioral 구조module edge_detector_n ( input clk, reset_p, // 클럭, 리셋 input cp, // 입력신호 감지 output p_edge, n_edge // 라이징 감지 출력, 폴링 감지 출력); reg ff_cur, ff_old; // 현재 cp값과 이전 cp값을 저장할 플립플롭 always @(negedge clk, posedge reset_p) begin if(reset_p) begin //리셋시 플립플롭 초기화 ff_cur 2. Test Bench로 시뮬레이션 돌리기시뮬레이션을 위해 새로운 Verilog 파일을 생성하고.. 2025. 8. 17.
[Verilog] Down Counter 구현 Down Conter 실습 정리1. Verilog 코드Structural 방식 (비동기식 T-flip flop사용)// down countermodule down_counter_asyc ( input clk, input reset_p, output [3:0] count); T_flip_flop_p T0( .clk(clk), .reset_p(reset_p), .t(1'b1), .q(count[0]) ); T_flip_flop_p T1( .clk(count[0]), .reset_p(reset_p), .t(1'b1), .q(count[1]) ); T_flip_flop_.. 2025. 8. 13.