본문 바로가기

전체 글24

1. systemverilog Hello world, eum사용, string 사용 시스템 베릴로그를 사용하기 위한 기초적인 문법을 활용후 컴파일을 해보겠습니다. module tb; initial begin forever begin #5$display ("Hello World !"); end end initial #50$finish; endmodule module enum_test2(); enum {RED, GREEN, BLUE, YELLOW} color; initial begin color = color.first(); # 20 $display("color = %0d, %0s", color, color.name() ); color = color.next(); # 20 $display("color = %0d, %0s", color, color.name() ); color = color... 2023. 6. 12.
vivado, FPGA로 Stopwatch 만들기 FPGA의 FND와 BUTTON을 이용하여 스탑워치를 만들어보겠습니다. 만들기전에 FSM을 제작하여 로직에 대하여 확고히 해야 verilog 코딩하기 편해집니다. 클럭이 0.005초마다 토글이된다 (클럭이 0.01초마다 발생) 1) 스탑워치 버튼을 만듭니다 (1) runStop Button, (2) clear Button (3)reset Button 2) (1)과 (2) 와(3)을 위의 FSM reg를 만들어줍니다. 3) FND를 계속해서 켜주는 ClockDivider 1개와 FND를 밀리초부터 초까지 변경시켜주는 ClockDiver 1개 총 2개를 사용합니다. 같은 클럭을 주게되면 우리 눈에 보이는 숫자는 바뀌지 않는것으로 보이기때문에 크기가 다른 클럭을 줍니다. 제가 설계한 경우에는 FND에 4개를 .. 2023. 5. 15.
vivado, FPGA로 LED right hift, LED left shift하기 led right shift, led left shift를 하는것을 vivado의 Verilog 로 수행하였습니다. LED를 구성하기전에 FSM을 구성해보면 다음과 같습니다. FSM은 Finite State Machine으로 유한상태머신입니다. 이는 내가 어떻게 작동이 될지 예상을하고 설계하는 과정입니다. led shift를 하기위해서는 크게 3가지가 필요하다고 생각하였습니다. 첫째는, clock을 나누어줄 분주기 레지스터 둘째는 led를 제어할 레지스터들 셋째는 스위치를 이용해 작동하킬 레지스터입니다 ClockDiver 부분을 코드로 작성 하면 다음과 같습니다. module clockDivider( input in_clk, in_reset, output out_clk ); parameter MAX_CO.. 2023. 5. 15.
클럭펄스 플립플롭 D플립플롭,T플립플롭,JK플립플롭, SR플립플롭 플립플롭은 클럭에 따라서 움직이게되는 순서논리회로입니다. 따라서 vivado의 verilog를 통해 RTL Schemetic과 Simulation으로 검증을 통해 플립플롭의 동작을 알아보겠습니다. 먼저 D플립플롭입니다. D플립플롭의 진리표는 다음과 같습니다. d Q(t) 0 0(Reset) 1 1(set) 위의 D 플립플롭의 진리표를 참고하여 verilog 코드를 작성해보면 아래와 같습니다. module d_ff( input in_clk, in_d, output reg out_q = 0 ); always @(posedge in_clk)begin case (in_d) 1'b0 : out_q 2023. 5. 15.