
Verilog HDL를 주제로 한 여덟번째 포스팅부터는 제품을 하나 설계해 보겠습니다. 설계의 과정은 설계제안, 설계보완, 최종데모 순으로 포스팅을 진행할것이며 회로도와 변수명, 모듈의 동작원리등이 여러방면으로 수정되고 보완될수 있습니다. 특히 프로젝트 제안에 대한 포스팅의경우 방향성을 제시한것이기때문에 수정될 부분이 많음으로 참고정도만 부탁드립니다! 제가 주제로 정한 디바이스는 바로 달력입니다. 대학교 2학년 시절 디지털시스템설계 과목을 수강하며 한학기 동안 설계한 디바이스 이며 총 세번의 포스팅을 통하여 설계과정을 리뷰할계획입니다. 제가 팀장으로 총 3명의 팀 구성원들과 함께 3개월의 기간동안 팀 프로젝트를 진행하였고 설계 프로젝트의 이름은 "알테라사의 싸이클론2 DE2보드를 이용한 디지털 달력 설계..

Verilog HDL를 주제로 한 일곱번째 포스팅에서는 Digital_clock에서 am/pm 이 표시되는 12시간체제의 Digital_clock을 설계해 보겠습니다. 먼저 지난 포스팅에서 다룬 내용을 복습해보겠습니다. sec counter - MOD 60 Counter의 clk으로 1Hz을 취해 60초마다 carry가 발생하는 초 시계 min counter - MOD 60 Counter의 clk으로 sec counter의 carry를 취하여 60초마다 count가 up되는 분 시계 hour counter - MOD 24 Counter의 clk으로 min counter의 carry를 취하여 60분마다 count가 up되는 시 시계 위 세가지 counter를 이용하여 저번 포스팅까지 간단한 Digital_..

Verilog HDL를 주제로 한 여섯번째 포스팅에서 다룰내용은 Sec counter를 이용하여 시,분,초를 다 포함한 Digital_clock을 설계해 보겠습니다. 지난 포스팅에서는 1초마다 업카운팅 시켜주며 60카운팅시 캐리를 발생시키는 Sec counter(초 시계)를 다루어 보았습니다. Sec counter에서는 count_out의 값이 60이 될때 값을 0으로 초기화 하고 carry를 발생 시켰었는데요, 바로 이 60sec를 카운트시 발생하는 carry를 CLK(클럭) 값으로 취하고 또 다시 60카운트를 돌리면 Min counter(분 시계)가 됩니다. 똑같은 설계구조로 Min counter의 carry를 CLK(클럭) 값으로 취하고 24카운트를 돌리면 우리가 이번 포스팅에서 목표로 한 Hour..

Verilog HDL를 주제로 한 다섯번째 포스팅에서 다룰 내용은 1초마다 업카운팅 시켜주며 60카운팅시 캐리를 발생시키는 Sec counter(초 시계)입니다 지난 포스팅까지 보드에 있는 오실레이터에서 50MHz의 입력을 인풋으로 진동수 1Hz를 발생시키는 Clock generator와 MOD값의 이전값까지 카운팅을 해주고 MOD값이 되었을떄 carry를 발생시키는 counter를 설계했습니다. 이번 포스팅은 Binary코드를 7-segment로 표현 하게 해주는 Binary to 7-segment 모듈을 설계한후 앞서 설계한 Clock generator와 counter를 엮어서 sec counter를 설계하고 그 결과를 Binary to 7-segment 모듈을 이용하여 DE2보드에서 확인해 보겠습니..

Verilog HDL를 주제로 한 네번째 포스팅에서 다룰내용은 일정한 주기의 진동신호를 만들어주는 클럭 제너레이터 입니다. 원리는 DE2보드내에 있는 50MHz 오실레이터를 이용합니다 DE2보드 내의 해당소자 이름은 CLOCK_50이며 핀넘버는 PIN_N2입니다. 50MHz 오실레이터는 50MHz의 진동수를 발생시키고 이 신호를 프로그래밍을 통해 다른 신호로 이용할수 있습니다. 이번 포스팅은 이 50MHz의 진동수를 쪼개어 1헐쯔 짜리 듀티 사이클 신호로 만드는 Clock Generator를 설계 해보도록 하겠습니다. 모듈의 인풋과 아웃풋은 다음과 같습니다. 리셋 : RST 오실레이터에서 가져올 50헐쯔의 인풋 : CLK_50MHz 마지막에 배출될 아웃풋 1헐쯔 : CLK_1Hz 설계 과정도은 50MHz..

Verilog HDL를 주제로 한 세번째 포스팅에서 다룰내용은 진동수에 따라 카운팅을 시켜주는 Counter 입니다..! mod-60 카운터를 만들 계획 입니다. 60으로 나눈 나머지값들의 모임인셈이죠 1,2,3,4,5,6 ... ... 58, 59 순서로 카운팅됩니다. 카운터의 원리는 무엇일까요 진법의 원리 와 같습니다 N진법에서 N으로 카운팅될때 carry를 하나 올려주고 해당 자리수를 0으로 초기화하여 다시 N까지 카운팅해주는 것이죠 이러한 카운터의 특성을 살려 모듈의 구성을 먼저 해보겠습니다. 카운팅의 기준이 될 CLK 카운팅되고 있는 숫자를 표현할 count_out 자리수가 올라가면 발생될 carry_out 리셋 rst, 신호가 들어오면 전부 0으로 초기화 이정도 구성으로 카운터를 꾸려 보겠습니..

Verilog HDL를 주제로 한 두번째 포스팅에서 다룰내용은 BCD코드 입력을 디바이스의 SevenSegment에서 확인가능한 코드로 변환해주는 모듈의 구현입니다. 먼저 SevenSegment에 대한설명을 드리겠습니다. 세븐세그먼트는 우리 주변에서 흔히 볼수있는 숫자표현 디바이스입니다. 전자식 손목시계 또는 알람시계, 타이머 등등 여러 장비에서 확인이 가능한데요 사진을 보시면 아~ 이거~ 하시며 느낌이 오실것입니다. 위의 그림과 같이 생겼습니다. 오늘은 저번 포스팅에서 만든 BCD코드를 바로 이7-Segment를 통해 눈으로 확인해볼것입니다. 물론 코드는 BCD지만 눈에보이는 형식은 10진수처럼 보이게 말이죠 ㅎㅎ 거두절미하고 바로 설계과정 설명드리겠습니다. 회로도를 먼저 살펴보겠습니다. 복잡해보이는 ..

Verilog HDL를 주제로 한 첫번째 포스팅에서 다룰내용은 2진수된 입력을 BCD코드로 변환해주는 모듈의 구현입니다. 먼저 2진수와 BCD코드에 대하여 테이블과 함께 설명드리겠습니다. 2진수란 0과 1로 이루어진 수의 체제를 말합니다. 우리가 보통 사용하고 있는 10진수의 경우 자릿수의 올림인 carry가 진수를 표현하는 숫자가 될때 발생합니다. 즉 9에서 10으로 올라갈떄 다음자리수로 carry가 1생기고 해당 자리수는 0으로 초기화 되는것입니다. 이러한 원리로 9에서 10이 되고 19에서 20으로 카운팅 됩니다. 2진수의 경우도 마찬가지입니다. 진수를 표현하는 숫자가 될때 carry가 발생합니다. 즉, 0,1까지 카운팅후 2가될때 0으로 초기화 되고 carry를 1발생합니다. 카운팅의 순서가 00..