본문 바로가기

전체 글

(42)
81일차 10월 18일 어제 static RAM test bench에서 에러났던 거 수정. module tb_staticRAM(); reg i_clk = 0; reg i_ce; reg i_rw; reg [5:0] i_addr; //reg [7:0] io_data; wire [7:0] io_data; reg [7:0] rio_data; assign io_data = i_rw ? 8'bzzzzzzzz : rio_data; staticRAM dut( .i_clk(i_clk), .i_ce(i_ce), .i_rw(i_rw), .i_addr(i_addr), .io_data(io_data) ); always #5 i_clk = ~i_clk; initial begin i_clk = 0; i_ce = 0; i_rw = 0; i_..
80일차 10월 17일 IP Intelectual Property 설계된 걸 사와서 내 설계에 접목해보자. 비어있는 포트들이 설정이 안 돼서 나타나는 오류 다시 create HDL Wrapper를 진행하니 정상적으로 완료됐다. /* 2022.10.19 이걸 가져와서 썼을 때 제대로 동작하지 않고 timing loop가 발견됐다면서 에러가 나왔는데 IP가 아니라 다른 모듈에서 always 내부에 posedge i_clk가 아니라 그냥 i_clk로 써서 그랬던 거였다. */ ------- non-blocking / blocking non-blocking 비동기식 always@(*) begin ... r_value
79일차 10월 14일 ------ 과제 버튼 LED 4FND 속도단계 0 x 0 1 0 1 2 00 2 3 000 3 4 0000 4 2A L298N https://m.blog.naver.com/eduino/222070425318 아두이노 모터 드라이버 2A L298N / Arduino Motor driver 모터의 속도를 제어 및 회전방향을 제어할 수 있는 회로장치로서 아두이노 보드 또는 MCU를 통해 사용할... blog.naver.com https://youtube.com/shorts/hEFoCiUW_ck?feature=share https://github.com/316415/FSM_Motor_PWM_control.git GitHub - 316415/FSM_Motor_PWM_control: FSM_Moto..
78일차 10월 13일 Tri Buffer 이미지 출처 https://www.electronics-tutorials.ws/logic/logic_9.html Digital Buffer and the Tri-state Buffer Tutorial Digital Electronics Tutorial about the Digital Buffer and the Tri-state Buffer also known as a non-inverting digital buffer used in digital logic circuits www.electronics-tutorials.ws enable X buffer Y not Buffer Y 0 X Z Z 1 0 0 1 1 1 1 0 출력이 세 가지임. 그래서 three state b..
77일차 10월 12일 어제 과제 test bench simulation ------ 시계 어떻게 시, 분, 초를 나타낼까? (그냥 60으로 나누면 되는 거 아닌가? 교수님 질문 의도를 이해 못 하는 중) module tb_time_clock_counter(); reg i_clk = 0, i_reset = 0; wire [5:0] o_hour, o_min, o_sec; wire [6:0] o_ms; time_clock_counter udt( .i_clk(i_clk), .i_reset(i_reset), .o_hour(o_hour), .o_min(o_min), .o_sec(o_sec), .o_ms(o_ms) ); always #5 i_clk = ~i_clk; initial begin #00 i_reset = 1'b0..
76일차 10월 11일 조합논리회로 Combinational Logic Circuit 기초로 Gate를 다뤘음 (and, or,m not, exor etc) 나아가 Decoder, MUX ... 등을 이용해서 가산기, 감산기를 만들었음. 스위치, Led, Seven segment로 출력을 확인했음. 한계점은 한 자릿수만 출력한다는 것. --> 4 자릿수를 표현하려면 잔상을 이용해야 함. c 언어 때는 INT를 이용해 주기마다 자릿수를 옮겨서 출력을 진행했음. FPGA에서 자체적으로 처리하기 위해 알아야 될 개념 : 순차논리회로 -------- 순차논리회로 Sequential Logic Circuit 메모리 기능을 가지고 있음. == 과거의 값을 저장하고 있다.(현재와 과거의 값 조합에 따라 결과 출력이 나온다.)..
75일차 10월 7일 c언어로 펌웨어 구조 만드는 법. c언어가 크기가 작으면서 속도가 빨라서 대부분 c언어로 펌웨어를 만든다고 함. c++보다도 작으면서 빠름. 구조체와 포인터 활용이 중요함. ----- 어제 했던 구조 비슷하게 다시 코딩. module digit_select_decoder( input [1:0] i_digit_position, input i_En, output [3:0] o_select_position ); reg [3:0] r_select_position; assign o_select_position = r_select_position; always @(i_digit_position or i_En) begin if (i_En) begin r_select_position = 4'b1111; e..
74일차 10월 6일 어제 한 건 크게 보면 반도체를 설계한 거라고 한다. 별로 와닿지는 않는다... 어제 한 부분에서 net list를 만든다. 이 파일을 가지고 반도체 게이트 회로 등을 배열을 한다(P&R 작업). pcb로 얘기해보자면 schematic에서 설계를 한 거로 net list를 만들고 pcb editor work로 로딩을 한다. 그러면 라이브러리에 맞춰 부품들이 화면에 나타난다. 무질서한 부품의 나열에서 어떤 배치를 하느냐로 pcb 성능이 달라진다. 선을 어떻게 연결하느냐 두껍게 하느냐 길게 하느냐 등 안정성에 영향을 준다. 하드웨어가 복잡할수록, 클락이 높아질수록 민감해지며 관련 노하우가 중요하다. 심하면 선길이 1cm 차이로도 에러가 나타난다고 하는데 자주 일어나는 일이 아니라서 이런 경우 정..