Project4 [Project] Verilog Term Project-2차방정식 #Project 3-순차회로를 이용해 2차 방정식의 해를 계산하는 계산기 만들기(멀티사이클 구조) 마지막으로 순차회로를 이용해 2차 방정식의 해를 구하는 모듈을 설계해 보자. 2차 방정식의 해를 구하는 방법에는 여러 가지 방법이 존재하지만 그중에서도 가장 대표적인 방법은 근의 공식을 활용하는 방법이다. 중등과정에서 배우는 근의공식은 수학에서 가장 기본이 되는 공식이며, 아마 첫 번째로 외우는 식일 것이다. 근의 형태에는 서로 다른 두 실근, 하나의 중근, 서로 다른 복소근이 존재한다. 중근과 복소근은 실제적으로 구현하는 데에 한계가 있기 때문에 서로 다른 두실근의 경우만 이번모듈에서 다루겠다. #모듈의 입출력 요구되는모듈의 입출력은 다음과 같다. 입력은 a, b, c각각 4비트, 3비트, 3비트 2 의보.. 2023. 1. 14. [Project] Verilog Term Project-루트계산기(3) #Project 2-순차회로로 루트계산기 만들기(멀티사이클 구조) 이번에는 순차회로로 루트계산기를 한번 만들어보자. 앞서 만든 조합회로로 계산기를 만든 것은 로직의 과정이 한 번만에 결과가 나와야 해서 코드의 길이가 길고 비교기가 많이 사용되었다. 하지만 순차회로로 만들면 input에 대한 output이 한과정만에 나오지 않아도 된다. 즉, 여러 사이클에 의해서 결과가 나오는 것을 의미하며 이로 인해서 코드의 길이가 조합회로와 비교했을 때 비교적 짧고 로직또한 비교적 간단하게 설계될 수 있다는 것을 의미한다. 이를 multi-cycle구조라고 한다. 앞서 설계한 조합회로는 클럭의 개념이 들어가 있지 않지만 구조상으로 single-cycle구조라고도 한다. 멀티사이클 구조는 로직의 사용과 코드가 단순하고,.. 2023. 1. 13. [Project] Verilog Term Project-루트계산기(2) #Project 1-조합회로로 루트계산기 만들기 앞서 설명한 루트계산기를 조합회로(combination logic)으로 구현해 보자. 조합회로로 주어진 모듈을 설계하려면 1 과정만에 결괏값이 나와야 한다. 즉 모듈에서 시퀀셜 한 과정이 이루어지면 안 되고 주어진 로직에서 한 번만에 연산이 이루어져서 출력값이 나와야 한다는 것이다. 따라서 로직합성과정에서 FF(플립플랍)를 생성해서는 안된다. 이러한 조건에서 한번 설계해 보자. 먼저 루트값을 계산하기 위해서는 소수 부분의 계산이 필수적인데 앞서 설명한 2가지 방법으로 소수계산을 진행해 보자. 필자의 경우에는 부동소수점 방법을 이용해 루트계산기를 설계하였다. #설계의 과정 설계의과정은 루트값을 구하고, 구한 값의 근삿값을 결정하고, 근삿값을 변환해서 segm.. 2023. 1. 11. [Project] Verilog Term Project-루트계산기(1) 이번에는 베릴로그 언어로 텀프로젝트를 수행한 내용을 한번 알아보자. 텀 프로젝트 주제는 입력값 0~1023까지의 입력을 받아서 각각의 루트값을 근사해서 결괏값을 출력하는 모듈을 만드는 것이다. 예를 들어 입력값 10진수 892가 입력되었을 때 root(892)=29.8663... 이므로 이 근삿값인 29.875로 근사해서 출력하는 모듈을 만드는 것이다. 소수부분과 정수 부분의 출력기준은 Q(5.3)을 기준으로 출력한다. 29.875=11101.111 이므로 MSB를 기준으로 각각 4개씩 끊어서 출력하면 1110/1111 이므로 이는 16진수로 표현하면 EF이다. 따라서 29.875이면 출력은 2개의 hex로 출력하며 각각의 헥스는 segment display 2개를 통해서 최종적으로 EF가 출력되게 하는.. 2023. 1. 8. 이전 1 다음