분류 전체보기 100

2024.6.26 [Verilog]⑦ - 병렬입력-병렬출력 레지스터, 메모리, 스톱워치 만들기 진행단계

2024.6.26 수업날오늘부터 베릴로그 수업을 다시 진행한다.저번에 배웠던 레지스터를 이어서 배워보고, 메모리에 대해 알아보며 스톱워치 만들기 초기단계를 진행한다.병렬입력-병렬출력 레지스터는 입력을 AND 게이트로 입력값으로 연결하여WR가 1이면 AND게이트를 통해 D플립플롭의 입력으로 들어간다. 만약 WR가 0이면 0이 써지므로 초기화가 된다. 병렬입력 병렬 출력 레지스터에도 3상버퍼가 쓰인다.E의 값이 0이면 출력값이 입력값을 따라가고, E의 값이 1이면 출력값은 모두 임피던스가 된다. 병렬입력-병렬출력 레지스터/////////////////////////////////////////////////// 2024.6.26//병렬입력 병렬출력 레지스터module register_n( ..

2024.6.25 [혼자 공부하는 C언어]③ - 연산자

2024.6.25 교재 113p~이번에느 데이터를 가공하는 다양한 연산자를 알아보고 연산자를 효율적으로 사용하는 방법을 알아본다.산술 연산자에는 +, -, *, /, %(나머지) 가 있다.모두 2개의 피연산자(연산의 대상이 되는 데이터)를 사용하며, -는 피연산자를 하나만 사용할 때 피연산자의 부호를 바꾸는 역할도 한다.나눗셈 연산은 피연산자가 모두 실수이면 실수, 피연산자가 모두 정수이면 몫만 계산되므로 값을 저장하는 변수도 그에 맞게 사용해야한다.실수 연산에는 나머지의 개념이 없으므로 나머지 연산자의 피연산자로는 반드시 정수만 사용한다.  예를 들어, a라는 int형 변수에 1을 더하려면 a = a + 1; 이라고 할 수 있지만, 더 간단하게 a++ 로 표현할 수 있다.이는 -연산에서도 마찬가지이다...

2024.6.25 [ATmega128a]⑨ - Ultrasonic(int, ICP), EZ motor R300

2024.6.25 수업날오늘은 어제 배웠던 HC-SR04(Ultrasonic) 초음파 센서를 가지고 INT, ICP 형식으로 코드를 작성하고EZ moter r300으로 선풍기를 만드는 프로젝트를 진행하였다.어제 배웠던 Ultrasonic 초음파 센서를 INT 형식으로 소스코드를 작성한다.결과는 똑같지만, 소스코드의 내용에는 차이가 있다./* * def.h * * Created: 2024-06-25 오전 9:20:11 * Author: USER */ #ifndef DEF_H_#define DEF_H_#define F_CPU 16000000UL#include #include #include #include #include #include #endif /* DEF_H_ */먼저, def.h라는 헤더파일이 추..

2024.6.24 [혼자 공부하는 C언어]② - 변수와 데이터 입력(수정중)

2024.6.24오늘은 효율적인 데이터 처리를 위해 필요한 다양한 변수의 형태와 특징을 알아본다. 교재 81p~예를 들어, 정수를 저장할 변수는 int a; 라고 나타낸다.int 가 자료형이고, a가 변수명이다. 변수명은 메모리에 붙이는 임시 주소와 같은 개념이다. 컴퓨터의 메모리는 재활용되는데, 프로그램이 종료되면 사용하던 메모리 공간을 반납하고 새로 실행된 프로그램이 그 공간을 사용한다. 새 프로그램에서 종료된 프로그램이 어떤 값을 메모리 공간에 남겨 놓았는지는 알 수 없으므로 의미가 없는데 이를 쓰레기 값이라고 한다.이 쓰레기 값 때문에 오류가 생길 수 있으므로 반드시 원하는 값으로 바꾸는 초기화 과정이 필요하다.a = 10; 을 예로 들면 = 라는 대입연산자를 사용하여 오른쪽의 값을 왼쪽으로 저장..

2024.6.24 [ATmega128a]⑧ - I2C 통신, ULTRASONIC(HC-SR04)

2024.6.24 수업날오늘부터 내일까지 ATmega128a를 활용하여 다시 공부해보는 시간을 가진다.I2C통신은 여러 주변장치들이 최소한의 연결선만을 사용하여 저속으로 통신하는 방법이다.I2C는 송신과 수신이 동시에 이루어질 수 없는 반이중 방식을 사용한다.슬레이브 장치의 개수와 무관하게 데이터 전송을 위한 SDA, 클록 전송을 위한 SCL의 2개의 선을 필요로한다. I2C는 동기 방식이다. 따라서 수신된 데이터는 SCL이 HIGH인 경우 SDA의 데이터는 안정된 상태에 있어야만 한다. 데이터 전이는 SCL이 LOW인 상태에서만 가능하다. 하지만 SCL이 HIGH인 경우에도 데이터 전이가 발생하는 두 가지 예외 상황이 있는데, 데이터 전송 시작과 종료를 나타내는 경우다.SCL이 HIGH인 경우 SDA가..

2024.6.23 [혼자 공부하는 C언어] - c프로그램의 구조와 데이터 출력방법

2024.6.23학부 시절, 교양 과목으로 C언어 프로그래밍 이라는 수업을 들은 적이 있다.하지만, 프로그래밍 언어를 배운 것을 교양 수업이 전부이기에, 거의 드문드문 기억나는 수준이 되어버렸다.​때문에 Harman 세미콘 아카데미 수업에서 받은 라는 교재를 가지고 ATmega 128a와 관련된 C언어에 대해 공부하려 한다.혼자 공부하는 C언어는 비주얼 스튜디오 2022 커뮤니티 컴파일러를 사용한다. - 교재53p ~main 함수는 head, body로 구성된다.머리는 함수 원형이라고 하며, 함수의 이름과 필요한 데이터 등을 표시한다.함수에서 실행할 일은 몸통의 중괄호{} 안에 작성하며몸통의 마지막에는 return 0;을 넣어 프로그램을 종료한다. 몸통 부분에는 함수에서 실행할 일을 적으며, 아래와 같은..

2024.6.22 [Verilog 언어] (수정중)

2024.6.22업계에서 자주 쓰이는 베릴로그는 처음 배우기도 하고 C언어와도 다른 부분이 많다고 해서 개인적으로 공부의 필요성을 느꼈다.때문에 Verilog HDL 설계 교재를 보면서 베릴로그 언어에 대해 알아본다. // : 단일 라인용 주석문이며, //가 시작되는 위치에서부터 그 라인의 끝까지 주석문으로 처리된다./ * ~ */ : 블록용 주석문이며, 이 사이에 있는 내용은 전부 주석처리된다. 블록 주석문 단축키는 ctrl + 윈도우 + / 이다. 베릴로그에서 정수형 상수는 10진수, 16진수, 8진수, 2진수로 표현될 수 있다.3개의 어휘 토큰을 사용하여 [size_constant]'base_format 의 형식으로 수를 표현한다.size_constant : 상수 값의 비트 수를 나타내는 상수로서..

2024.6.21 [Verilog]⑥ - 링카운터 활용 + basys3 보드 연결, 레지스터

2024.6.21 수업날오늘은 어제 이어서 배운 링카운터를 활용해보고 basys3보드에 연결해서 결과를 관찰해본다.그리고 직렬출력 레지스터 직렬입력 병렬출력 레지스터, 병렬입력 직렬출력 레지스터를 알아본다.1. Basys3 보드에서 FND 링카운터 실행하기먼저 Basys3에 있는 fnd에 어제 배운 링카운터를 활용하여 4자리의 숫자가 각각 따로 작동되는것을 확인한다.아래 사진에서 4번의 fnd, 5번의 스위치를 사용한다. Fnd용 링카운터 소스코드//////////////////////////////////////////////////////////////// 2024.6.21/////////////////////////fnd용 링카운터module ring_counter_fnd( input cl..

2024.6.20 [Verilog]⑤ - 비동기 카운터, 동기카운터, BCD 카운터, 업다운 카운터, 링카운터, 주종형 D플립플롭

2024.6.20 수업날오늘은 카운터의 종류에 대해 알아보고, 주종형 D플립플롭에 대해 알아본다. 카운터에 대해 알아보기 전에 기본 단어에 대해 알아보자.먼저 카운터란, 클록 펄스를 계수하는 디지털 회로이다.카운터는 플립플롭으로 구성하며, 업카운트와 다운 카운터로 구분한다. 업 카운터는 계수가 계속 증가하는 카운터이다. 초기 상태를 00으로 설정하면, 클록 펄스가 주어질 대마다 증가하고, 클록 펄스가 계속 주어지면 00으로 돌아가 동작을 반복한다.다운 카운터는 계수가 감소하는 카운터이다. 초기 상태를 11로 설정하면 클록 펄스가 계속 주어지면 11로 돌아가 계수 동작을 반복한다.   비동기 카운터란 클록 펄스를 첫 번째 플립플롭에만 연결한다.나머지 플립플롭들은 앞단의 출력이 클록 펄스로 작용하며, 각각 ..

2024.6.19 [Verilog]④ - 7세그먼트 디코더, 인코더, 멀티플렉서+디멀티플렉서, 플립플롭

2024.6.19 수업날오늘은 어제 코드만 작성했던 7세그먼트 디코더를 실행시켜보고조합 논리회로인 인코더, 멀티플렉서, 디멀테플렉서를 알아보고순서 논리회로인 플립플롭의 종류에 대해 알아본다.어제 마지막 시간에 Basys3 보드에 있는 FND를 사용하여 숫자를 표현하기 위해 4개의 스위치를 누름에 따라 각각 다른 기능을 할 수 있도록 코딩했다. 보드에 나타나는 결과를 관찰하기 위해 vivado에서 몇 가지 설정해주어야 하는 것이 있다.먼저 어제 작성했던 코드의 구조를 가볍게 살펴보자7세그먼트 디코더 소스코드////////////////////////////////////////// 7세그먼트 디코더module decoder_7seg( input [3:0] hex_value, //0~15까지의 ..