본문 바로가기

testbench4

[Harman 세미콘 아카데미] 58일차 - Verilog(PWM 코드 및 시뮬레이션) [PWM] 📌 PWM 기초 클락의 펄스를 예로 들어 보자. module clock_usec( input clk, rst, input enable, output clk_usec ); // 125개 카운트하면 1us reg [6:0] cnt_8nsec; wire cp_usec; // cp : clock pulse always @(posedge clk, posedge rst) begin if(rst) cnt_8nsec = 0; // reset이 들어오면 cnt = 0 else if(cnt_8nsec >= 124) cnt_8nsec = 0; // 0부터 124번까지 카운트하면 다시 0으로 else cnt_8nsec = cnt_8nsec + 1; end assign cp_usec = cnt_8nsec < 63 ?.. 2023. 9. 15.
[Harman 세미콘 아카데미] 58일차 - Verilog(Ultrasonic : 오류 수정, FSM 없이 구현, Testbench) [오류 수정] 동작 중에 echo wire를 뺴버리면, 동작이 중단되고 pedge를 기다리는 상태에 갇혀서 못 빠져나온다. 따라서 이러한 에러가 발생했을 경우에 에러 처리를 하는 코드를 추가해보자. S_WAIT_PEDGE : begin LED_bar[2] 2023. 9. 15.
[Harman 세미콘 아카데미] 55일차 - Verilog(온습도 센서 : Testbench, LED Debugging) [Testbench을 사용하여 Simulation] 📌 Testbench Code Testbench가 온습도 센서 역할을 하도록 작성해주면 된다. module tb_DHT11(); reg clk, reset_p; tri1 dht11_data; // tri1 : 풀업달린 선이라 생각하면 된다.(z주면 1)(시뮬레이션에서만 쓰는 데이터타입), 회로만들 때는 다 wire wire [7:0] humidity, temperature; integer i; // 테스트벤치가 온습도 센서 역할을 하면 시뮬레이션된다. DHT11 DUT(clk, reset_p, dht11_data, humidity, temperature); // 순서대로 작성하면 굳이 .clk(clk) 이렇게 안 써줘도 된다. // 소수부는 0으로 두고.. 2023. 9. 12.
[Harman 세미콘 아카데미] 52일차 - Verilog(Cook Timer - Button controller, Time setting, Down counter, Timeout, Alarm) Full Code는 맨 아래에~ [Button controller] 📌 Button controller module 자주 사용하는 기능이니까 모듈로 만들어 버리자. module button_cntr( input clk, reset_p, input btn, output btn_pe, btn_ne ); // DFF를 위한 분주기 reg [16:0] clk_div = 0; // 이렇게 = 0 해놓으면 시뮬레이션에서 자동으로 0으로 초기화된다. // 보드에서 쓸 때는 시스템적으로 0으로 초기화 always @(posedge clk) clk_div = clk_div + 1; // Debounce wire debounced_btn; D_flip_flop_n debnc(.d(btn), .clk(clk_div[16]).. 2023. 9. 7.