basys3 4

Vivado : Basys3 Servo motor, Analog 제어, 가변 저항, 포토 센서(조도 센서)

Servo Motor이번에는 서보모터를 제어할 예정이다. 서보모터 관련 내용은 아래의 사진의 내용과 같다.서보모터를 동작시킬 탑모듈의 코드는 아래의 내용과 같다. 코드를 살펴보면, 0도, 90도, 180도 그리고 일정 각도마다 움직일 수 있도록 선언을 한 것을 확인할 수 있다. module servo_motor_pwm_top( input clk, reset_p, input [3:0] btn, output motor_pwm, output [3:0] com, output [7:0] seg_7); reg [31:0] clk_div; always @(posedge clk or posedge reset_p)begin if(reset_p)clk_div = 0..

Language/Verilog 2024.08.02

Vivado : Basys3 Stop watch

Stop Watch이번에는 여러 가지 기능을 가진 스톱워치를 구현해 볼 예정이다.아래 구현할 스톱워치는 리셋을 누르면 0으로 초기화됨과 동시에 시간이 멈추며, 스위치(버튼)를 누를 때 시간이 멈추고, 다시 누르면 시간이 흐르는 동작을 수행한다. 스톱워치의 코드는 아래와 같다. 1 sec이 흐를 수 있도록 이전글에서 구현한 clock 코드를 가져와 사용하였고, 0번 버튼을 스위치로 사용하기 위해 "btn [0]"을 선언하였다. 이전글을 살펴보면 clock이 어떻게 동작하는지 설명되어 있다.  1101 -> 1011 -> 0" data-og-host="jangdong.tistory.com" data-og-source-url="https://jangdong.tistory.com/36" data-og-url="..

Language/Verilog 2024.07.18

Vivado : Basys3 FND / 디지털 시계, 분주

□ 본 게시글은 수업 내용을 바탕으로 주관적으로 작성한 것이기 때문에, 틀리거나 오류가 있을 수 있습니다!!!  FND Control FND 출력을 링카운터를 활용해 시프트 동작을 시켜 1110 -> 1101 -> 1011 -> 0111과 같은 동작을 반복하려고 한다. 따라서 다음과 같은 코드를 작성하였다. 코드를 살펴보면, reset이 발생하였을 때 1110으로 초기화된 후, clk_div_nedge가 발생할 때마다 1을 1비트씩 옆으로 이동하도록 하였다. 옆으로 이동하는 동작은 "else com = {com [2:0], 1'b1};" 문장에서 실행이 된다.  module ring_counter_fnd2( input clk, reset_p, output reg [3:0] com); ..

Language/Verilog 2024.07.17

Vivado : Basys3 7segment

이번에는 Basys3을 사용하여 7-segment를 제어하고자 한다. 7-segment의 구조는 아래와 같다.  4개의 스위치를 활용하여 4bit 스위치 역할을 수행하며, 세그먼트를 제어할 예정이다. 따라서 코드의 초반에는 '[3:0] hex_value'와 같이 선언하였다. 세그먼트 제어는 직관적으로 변경을 할 것이며, 따라서 비트를 하나하나 선언하여 변경할 것이다.세그먼트를 제어할 때에는 1이 주어지면 LED는 점등을 하며, 0이 주어질 시 꺼지는 동작을 수행한다.  구현된 코드는 아래와 같다.module decoder_7seg( input [3:0] hex_value, output reg [7:0] seg_7); always @(hex_value)begin case..

Language/Verilog 2024.07.16
728x90