전체 글 100

2024.7.4 [Verilog]13 - 초음파센서

2024.7.4 수업날오늘은 습도센서와 방식이 유사한 초음파센서를 베릴로그로 구현한다.초음파센서는 Atmega 128a에서도 사용한적이 있다.Atmega 128a에서는 Uart 통신을 사용하여 초음파 센서를 사용하였는데,이번에는 Basys3 보드와 연결하여 사용한다. 먼저 소스코드를 작성하기 전에 상태도를 그려서 초음파센서가 어떻게 구동되는지 전체적인 흐름을 파악해야한다.크게 4가지 단계로 구분할 수 있다.1. S_ILDE: 1초 딜레이 시간이 있으며 Trigger가 0인 상태이다.2. Trigger: Trigger가 1이고, 10us를 카운트한다. 그 후에는 Trigger가 0이된다.3. Echo: 상승에지를 먼저 기다린 후에 초음파 왕복펄스를 구하기 위해서 usec_count_e를 1로 하여 카운터를..

2024.7.3 [Verilog]12 - 습도센서 테스트벤치, 에러 대비, 16진수를 10진수로 변환하기

2024.7.3 수업날 오늘은 어제 습도센서를 Basys3 보드와 연결했을 때, 결과가 왜 나오지 않는지를 확인하고 이를 방지하는 방법에 대해 알아본다.Basys3 보드에 결과가 출력되지 않으면, 두가지 문제점을 고려해야한다. 하나는 코드의 문제이고, 다른 하나는 보드의 문제가 있다는 것이다. 먼저 코드에 문제가 있는지 테스트벤치(testbench)를 추가로 작성해보자. 테스트벤치란 Verilog 코드의 동작을 검증하는 시뮬레이션을 위해 필요한 파일을 만드는 것이다. 즉, 작성한 코드가 의도하는 대로 동작하는지 보는 과정이다. 테스트벤치 파일을 만드는 방법은 아래와 같다. 먼저 Add Sources에서 simulation source를 추가한다. 다음으로 Create File를 클릭하여 아래와 같이 파일..

2024.7.2 [Verilog]11 - 키패드, 습도센서

2024.7.2 수업날오늘은 키패드, 습도센서를 Basys3 보드에 연결하여 결과를 관찰해보자이번에 사용할 키패드는 4x4의 키패드이다.아래 사진과 같이 16개의 버튼이 있으며, 버튼을 사용하여 문자, 기호를 표현하는 기능을 가졌다.  본격적으로 Basys3 보드에 연결하기 전에 임피던스에 대해 알아야한다.전류를 잘 흐르지 못하게 하는 저항이 주파수에 따라 달라지는 저항값을 임피던스라고 한다. 임피던스에는 하이(HIGH) 임피던스가 있다. 하나의 신호선에 복수의 출력 소자를 연결하는 경우에는 신호를 출력할 소자와 수신할 소자만 연결되어 있어야한다.만약 회로 제어를 잘못하여 복수의 출력 회로가 동시에 접속되면, 소자가 파괴될 수 있다.이런 위험을 방지하기 위해 출력하지 말아야 할 소자는 전기적으로 절연 상..

2024.7.1 [Verilog]10 - 주방 타이머 만들기

2024.7.1 수업날오늘은 지난주에 배운 타이머를 응용하여 주방 타이머를 만들어본다.(다운카운터, 0분 0초가 되면 led가 켜지면서 부저도 울리는 기능)먼저 지난주 금요일에 마지막쯤에 만들었던 상위 2비트에 초, 하위 2비트에 1/100초를 출력하는 스탑워치 소스코드의 회로도를 그려보자.stop_watch_top_ss 소스코드///////////////////// 시작, 스톱, 랩 기능이 있는 상위 2비트에는 초, 하위 2비트에는 0.01초가 출력되는 스톱워치module stop_watch_top_ss( input clk, reset_p, input [1:0] btn, output [3:0] com, output [7:0] seg_7, output [1:..