논리회로설계 실험 예비보고서 #7실험 7. 카운터 설계1. 실험 목표순차회로의 응용회로인 카운터에 대해 종류와 각각의 기능에 대해 학습하여 동작원리와 각각의 동작 특성을 알고, 이를 바탕으로 8비트 비동기식 업카운트와 8비트 동기식 다운카운트를 설계를 해본다.2. 예비 이론(1) 카운터- 계수기라고도 불리며 반복해서 일어나는 현상의 수를 셈하는 장치로 클록 펄스에 따라 수를 세는 계수능력을 갖는 논리회로이다.- 2개 이상의 플립플롭으로 구성되어있고, 미리 정해진 순서대로 상태가 변한다.- 컴퓨터가 여러 가지 동작을 수행하는 데에 필요한 타이밍 신호를 제공한다.- 카운터는 비트 수에 따라서 최대 카운트가 결정된다. 다시 말해 n비트 카운터는2 ^{n-1} -1까지 카운트가 가능하다.- 카운트를 시작해서 카운트를 끝낸 후, 다시 처음 상태가 돌아올 때까지의 상태 수를 카운터 계수라고 한다. 10진 카운터는 0~9까지의 10개의 상태가 존재하고 카운터 계수는 10이 된다. 이렇게 카운터에서 구별되는 상태수가 m일 때, modul-m(m진)의 카운터라고 한다.- 카운터가 계수한 이진수나 이진화 십진수가 디코더를 통해서 7 세그먼트에 표시되는 숫자로 변환하여 인간이 알아볼 수 있는 정보가 된다.- 인코더가 정보를 이진수로 변환한 것을 카운터를 통해 계수 처리를 실시 할 수 있다.(2) 동기식 카운터- 카운터에는 동기식과 비동기식이 있는데 카운터의 출력이 하나의 입력 클록에 의해 동기 되는지의 여부에 의해 구분된다.- 동기식의 경우에 클록 펄스가 모든 플립플롭의 클록 입력에 연결되며, 하나의 마스터클록은 모든 플립플롭을 동시에 동작시킨다.- 순차 논리회로의 설계에 따라 설계할 수 있다.- 카운터의 동작 시 전파지연시간이 없다.- 아래의 그림은 4비트 mod - 16 리플 카운터의 논리회로도 이다.(3) 비동기식 카운터- 카운터 내의 플립플롭 출력이 동시에 발생하지 않고 순차적으로 발생하여 리플(Ripple) 카운터라고도 불린다.- 앞단의 플립플롭의 출력이 다음 단 플립플롭의 클록으로 인가되기 때문에 출력이 순차적으로 발생한다.- 플립플롭마다 클록입력단자에 인가되는 신호선이 다르고 모든 JK플립플롭 혹은 T 플립플롭의 입력은 1로 연결하여 토글모드로 동작한다.- 카운터는 비동기식 카운터와 업 카운터로도 구분할 수 있다. 아래의 그림은 본 예비실험에서 사용되는 비동기식 업카운트의 상태도와 논리회로도이며, 4비트의 2진 카운터이다. 0부터 클록의 수가 증가하면 15까지 증가하게 되고, 16개의 상태를 지녀, mod-16 카운터로도 불린다.4비트 2진 업 카운터의 상태도4비트 2진 업 카운터의 논리회로(4) 링 카운터- 첫 단 플립플롭의 출력은 2단으로, 2단 플립플롭의 출력은 3단으로 연결되어 마지막 단 플립플롭의 출력이 첫 단으로 되돌아가도록 연결하면 플립플롭이 하나의 고리모양으로 연결되므로 이와 같은 형식의 카운터를 링카운터라고 말한다.- 링카운터에서는 각각의 플립플롭은 외부의 트리거원으로부터 직접적으로 트리거 신호를 받으며, 플립플롭 사이의 연결은 트리거를 시키기 위한 목적은 아니다.- 링카운터에서는 1자리는 1상태이며, 나머지의 모든 자리는 0상태로 되고 트리거에 따라서 1상태는 다음 플립플롭으로 옮겨진다.- n자리를 갖는 링카운터를 생각해 보자 초단의 플립플롭을 1로 Set시키면 각 플립플롭의 내용은 다음 단으로 옮겨가므로 n자리의 링카운터로서는 n가지의 상태를 카운터 할 수 있다. 그러므로 링카운터는 계단식 스위치와 유사하다고 말할 수 있다.- 오른쪽의 그림은 링카운터의 논리회로도이다.(5) 존슨 카운터- 존슨 카운터는 시프트 카운터라고도 말하며 이것은 특별한 순차를 만들어 낸다.- 동일한 수의 플립플롭을 가지고 링카운터의 2배의 출력을 나타내기 위하여 사용되는 회로이다.- 링카운터의 마지막 단에서 출력을 끄집어내어 첫 단의 입력과 엇갈리게 결합시켜 놓은 것이다.- 존슨 카운터는 4가지의 플립플롭으로 8개의 상태 표현이 가능하다. 따라서 N개의 플립플롭으로 2×N가지의 상태를 나타낼 수가 있다.4비트 - JK플립플롭은 사용한 존슨카운터(6) BCD 카운터- BCD카운터는 10진 카운터(Decimal Counter)라고도 불린다.BCD 카운터의 논리회로도- 그림과 같이 4개의 플립플롭이 직렬로 연결되어 있으며, 이로 인해 16가지의 출력상태를 나타낼 수 있다. 하지만 0부터 9까지 카운트한 뒤 A가 되는 타이밍에 0이 되게끔 플립플롭을 모두 리셋시킴으로써 0~9까지의 출력상태만 출력되도록 설계하여 BCD만을 표현하게 한다.- 리셋 신호가 각 플립플롭 회로의 응답시간보다 늦게 도착하게 하여 리셋이 된 후 플립플롭 회로에서 출력 값이 나와 0으로 리셋 되지 않은 출력이 발생할 수 있으므로 주의해야한다.3. 실험 내용- 실험 1. 8비트 비동기식 업카운터와 8비트 동기식 다운카운터를 설계하시오.(1) 8비트 비동기식 업카운터와 8비트 동기식 다운카운터1) 소스코드8비트 비동기식 업카운터8비트 동기식 다운카운터? 업카운터의 경우 Reset이 1일 때 작동하게 하여, Y의 값이 0부터 시작하게 하였다. 또한 CLK이 걸릴 때 마다 Y의 값이 1씩 증가하게 하여 숫자가 점점 업 되도록 설계하였다.? 다운카운터도 마찬가지로 Reset이 1일 때, 작동하게 하였고, Y의 값이 255부터 시작해서 CLK이 한번 걸릴 때 마다 1씩 감소하도록 하였고, 값이 0이 되면 다시 255의 값이 되 순환하도록 설계하였다.2) 테스트 벤치? 본래 CLK의 주기를 10ns으로 주어 준 다음 CLK의 값을 2로 나누어 시간을 할당해 주었으나, wave form형태에서 원하지 않는 값이 나타나, 5ns씩 할당해 주었다.? Reset의 값이 교재와 같이 40~70ns에만 1로 출력되도록 설정하였다.3-1) 8비트 비동기식 업카운터 Wave Form? Reset의 값이 1에 도달하지 않았을 때에는 clk의 흘러도 변화가 없었지만 Reset이 1이 된 후에는 1일 때의 경우에는 clk의 흘러도 초기 값만 출력되었으나, 0이 된 후에는 출력의 변화를 볼 수 있다.? ClK의 주기가 지날 때 마다 출력 값이 1씩 증가하는 것을 보아 제대로 설계되었음을 확인 할 수 있다.? 본래 10진수로 표현되는 것이 없었으나, 출력 값의 변화를 쉽게 파악할 수 있도록 추가하였다.? 8비트 업카운터의 경우 0에서부터 1씩 증가하여 255까지 될 수 있으나, 255까지의 파형을 첨부하기 난해해, 0~9까지의 경우만 첨부하였다.3-2) 8비트 동기식 다운카운터 Wave Form? 업카운터와 마찬가지로 Reset의 역할을 확인 할 수 있었고, 똑같이 10진수로 출력 값의 변화를 쉽게 파악할 수 있도록 추가하였다.? ClK의 주기가 지날 때 마다 출력 값이 1씩 감소하는 것을 보아 제대로 설계되었음을 확인 할 수 있다.? 8비트 다운카운터의 경우 255에서부터 1씩 감소하여 0까지 될 수 있으나, 255까지의 파형을 첨부하기 난해해, 255~246까지 다운되는 경우만 첨부하였다.4. 출처 (Reference)1) 카운터, 동기, 비동기- 카운터http://soofi.tistory.com/entry/%EC%B9%B4%EC%9A%B4%ED%84%B0counter-%EA%B3%84%EC%88%98%EA%B8%B0http://ktword.co.kr/abbr_view.php?m_temp1=4561&m_search=%C4%AB%BF%EE%C5%CDhttps://cms.kut.ac.kr/user/yjjang/digi09/ch10.pdf- 동기, 비동기 카운터http://soofi.tistory.com/entry/%EC%83%81%ED%96%A5-%EB%B9%84%EB%8F%99%EA%B8%B0%EC%8B%9D-%EC%B9%B4%EC%9A%B4%ED%84%B0http://m.blog.naver.com/cs0911ke/600884644592) 기타 카운터- 존슨카운터http://dawnsea.tistory.com/107- 링카운터http://dawnsea.tistory.com/108
논리회로설계 실험 예비보고서 #6실험 6. 순차회로 설계1. 실험 목표순차회로의 기본 회로인 Latch와 Flip ? Flop, 레지스터에 대해 학습하고, 플립플롭 중 하나인 JK 플립플롭에 대해 심화적인 학습과 설계를 해본다. 또한 병렬 레지스터의 회로도를 직접 그려보고 4 bit 시프트 레지스터를 설계함으로써 레지스터의 구조와 설계를 터득한다.2. 예비 이론(1) Latch- 수동적 또는 전자적 조작으로 상태를 바꾸지 않는 한 그 상태를 유지해 주는 비동기식 장치 또는 회로이다.- 주어진 상태를 보관 유지할 수 있도록 NAND 게이트 또는 NOR게이트를 이용하여 회로를 구성한다.- 논리 회로로 구성되었기 때문에 논리회로에 준하는 빠른 동작속도를 얻을 수 있고 플립플롭으로 활용 가능하다.- 대표적인 래치로써 Set-Reset 래치가 있다. S는 출력 1을, R은 출력 0으로 되도록 한다는 의미이다.(2) Flip - Flop- 1비트의 정보를 기억할 수 있는 회로로 컴퓨터의 주기억장치 RAM이나 캐시 메모리, 레지스터를 구성하는 기본 회로- 전원이 공급되는 한, 상태의 변화를 위한 외부 신호가 발생할 때까지 현재의 상태를 그대로 유지하는 동기식 순서논리회로이다.- 기본적으로 두 개의 NAND 또는 NOR 게이트를 이용하여 구성한다.- 플립플롭의 종류로는 D, JK, T, RST, 마스터슬레이브 플립플롭 등이 존재하며 그림은 D FF이다.(3) 레지스터- 플립플롭 여러 개를 일렬로 배열하고 적당히 연결한 것을 말한다.- 여러 비트의 2진수를 일시적으로 저장하거나 저장된 비트를 좌측 또는 우측으로 하나씩 이동할 때 사용한다.- 이동(shift)레지스터가 있다. 이는 데이터를 좌우로 이동시키는 레지스터로, 직렬 입력, 병렬 출력, 병렬 입력, 직렬 출력 형태를 포함하여 직병렬의 입출력 조합을 갖고 있다.- 양방향성 이동 레지스터, 순환 레지스터- 병렬처리 방식은 모든 비트의 데이터를 한 번에 전송한다. Clock Pulse 시간 동안에 전송되므로 전송속도가 빠르다. 비트 수만큼 데이터 전송경로를 가져 직렬방식에 비하여 복잡하다.- 직렬방식은 레지스터에 직렬 입력과 직렬 출력을 연결하여 한 번에 한 비트씩 전송한다?.데이터를 전송할 때 전송 속도가 느리지만 하드웨어의 규모가 간단하다.3. 실험 내용- 실험 1. JK Flip-Flop을 설계하시오.(1) jk ffJK FF의 특성표Q(t)JKQ(t+1)**************************0111101) 진리표와 특성표JK FF의 진리표CLKJKQ(t+1)100Q(t) (불변)10101101111{bar{Q(t)}} (toggle)2) 상태도와 논리기호 및 Nor게이트를 이용한 JK FF 회로도3) 소스코드JK FF의 소스코드? Q와 Q_bar는 입출력 모두에 사용되므로 inout으로 설정하였다.? 또한 PR과 CLR이 특정한 값일 때 Q와 Q_bar이 입력과 상관없는 값을 지니게 하였다.? rising_edge를 사용하여 CLK이 걸릴 때마다의 경우를 고려해서 Q와 Q_bar가 출력이 되게 하였다.4) 테스트 벤치? CLK의 초기 값을 1로 설정하여 교재와 같은 파형인 처음에 0이 출력되도록 설정하였고, 주기를 10ns로 주었다.? 교재와 같은 파형이 나타날 수 있도록 각 입력 값들을 입력하였다.5) Wave Form? j와 k의 값에 상관없이 CLR의 값이 1일 때 Q의 값이 1, Q_bar가 0, PR의 값이 1일 때 Q의 값이 0, Q_bar의 값이 1이라는 것을 확인하여 제대로 코드를 작성하였음을 확인하였다.? 또한 위의 PR와 CLR의 구간을 제외한 나머지 구간은 JK FF의 진리표대로 작동하는 것을 확인 할 수 있었다.- 실험 2. 레지스터를 설계하시오.(1) D FF 4개를 가지는 병렬 레지스터 회로도1) schematic 방법을 사용한 회로도? 논리기호인 FDCE를 이용하여 D FF을 표현하였고 4개를 병렬시키며 하나의 CLK을 갖게 작성하였다.2) 테스트 벤치? E의 값에 따라 I의 입력 값이 Y의 값에 제대로 출력되는지 확인하기 위한 방법으로 작성하였다.3) Wave form? D 플립플롭은 E의 값이 0일 때 출력 값을 유지하고 1일 때, 입력 값을 받아들여 출력하는 역할을 한다. 파형을 보면 E의 값이 1일 때 Y의 값이 바뀌는 것을 볼 수 있다.? 150ns~250ns의 구간을 보면 E의 값으로 인해 출력 값이 바뀌고 180ns쯤 입력 값이 바뀌었음에도 E의 값이 0이므로 Y의 값은 계속 같은 값을 지니고 있다가 E의 값이 변화한 순간 그 당시의 입력 값을 받아들임을 확인 할 수 있었다.(2) 4비트 시프트 레지스터1) 소스코드Component 설계 : D FFSISO 구조적 설계? D 플립플롭으로 Reset값이 1일 때 출력 값이 무조건 0이고, 0일 때, rising_edge를 이용하여 CLK에서 입력 값을 그대로 출력시키도록 하였다.? 4bit 시프트 레지스터는 SISO(shift input shift output)의 형태로 4개의 D FF을 사용해 작성하였다.2) 테스트 벤치? D FF가 Reset 값에 따라서 출력 값이 정해지므로 그에 따라 출력의 형태가 어떻게 변화하는지 보기 위해 변화를 줘 작성하였다.3) Wave form? reset의 값이 1일 때 출력 값이 0으로 나오는 것을 보아 reset이 제대로 작동함을 확인 할 수 있다.? I의 입력과 Y의 출력을 살펴보면 출력 값이 입력의 오른쪽으로 4번 shift 된 Y의 값을 파형을 통해 볼 수 있다.4. 출처 (Reference)1) 래치http://blog.naver.com/PostView.nhn?blogId=tpwls173&logNo=130119279268&parentCategoryNo=&categoryNo=9&viewDate=&isShowPopularPosts=false&from=postView2) 플립플롭http://wingsofgod.tistory.com/entry/%EC%88%9C%EC%84%9C%EB%85%BC%EB%A6%AC%ED%9A%8C%EB%A1%9Chttps://ko.wikipedia.org/wiki/%ED%94%8C%EB%A6%BD%ED%94%8C%EB%A1%AD#.EB.9E.98.EC.B9.98.28latch.29플립플롭 상태도 http://bigdark.tistory.com/353) 레지스터http://blog.naver.com/tpwls173/130119892213레지스터 그림 http://ktword.co.kr/abbr_view.php?m_temp1=17475. 고찰이번 예비실험에서는 순차논리회로에 대해 학습하였다. 순차논리회로란 입력이 들어가서 출력이 되고 다시 그 출력이 입력이 되는 회로다. 순차회로 Latch, Flip Flop, 레지스터에 대해 알아보아 그것들의 공통점과 차이점에 대해 알았다. JK Flip ? Flop에서 in 이나 out 이 아닌 입출력을 동시에 하는 경우에 대해서 설계를 해보았다. 또한 D FF를 사용해서 4bit 병렬 레지스터와 시프트 레지스터를 설계하였다. 병렬 레지스터에서 이제까지의 설계는 우리가 논리기호를 만들어서 사용하였지만 4 bit 병렬 레지스터의 경우에는 이미 만들어져 있는 논리기호를 사용하여 간편하게 작성할 수 있었고, shift 회로의 경우 오른쪽으로 이동한 것이 파형을 통하여 잘 관측할 수 있었다. 하지만 한쪽 방향으로만 이동할 수 있는 것이 아니라 양쪽으로 이동할 수 있다고 학습을 하여 왼쪽으로 이동한 것을 작성하여 입력보다 더 빨리 결과가 나온다는 것과 shift가 한쪽으로만 계속 하다보면 결국 같은 자리로 돌아온다는 것을 확인하지 못하여 아쉽다. JK FF와 shift 설계 모두 rising_edge를 사용하였는데, 아직 이 기능에 대해 자세히 익히지 못하여 확실한 사용법을 몰라 이에 대해 알아보고 추후에 학습해야겠다. 또한 이번예비실험에서는 플립플롭과 래치에 대해 일부분의 회로밖에 설계하지 않았는데, 기회가 된다면 다른 순차회로도 설계해봐야겠다.
논리회로설계 실험 예비보고서 #5실험 5. 비교기와 MUX, ALU1. 실험 목표출력이 입력에 의해서만 정해지는 조합논리회로인 비교기, MUX, DEMUX, ALU의 개념과 특성에 대해 알아보고, 조합논리회로의 한 예로 주어진 ALU의 진리표를 토대로 8가지의 다양한 기능을 가진 ALU를 설계해본다.2. 예비 이론(1) 비교기- 두 개의 수를 비교하여 기준으로 정한 한 수가 작다와 크다 또는 같다를 결정해주는 조합논리회로- 비교하는 방법은 2진 코드 상태의 절대 값을 상대적으로 비교하므로 대수적인 비교와는 다르다.- 전자공학에서는 복수의 신호를 평가하고, 어떤 특정한 규칙으로 일치하는지 표시하는 회로라고 여긴다. 이 경우 일치는 h(high) 상태이고, 불일치는 l(low) 상태로 표시한다.(2) MUX- Multiplexer의 줄임말 으로, 2^n개의 입력선 중에서 1개를 선택하여 그 선으로부터 입력되는 값을 1개의 출력 선으로 출력시키는 회로이다.- 2^n개의 입력선 중 1개의 선을 선택하기 위해 n개의 선택선(Select Line)을 이용하고, 선택선 들의 값에 따라서 특별한 입력선이 선택된다.- 여러 회선의 입력이 한곳으로 집중될 때 특정 회선을 선택하게 하므로 선택기라고도 불린다.- S0과 S1은 출력을 결정하게 하는 결정자 또는 선택 자가 되어 입력된 4개의 값 중 하나를 선택해 출력한다.- 주로 전화회선을 통신매체로 이용할 때 쓰이는 통신장비에 사용되며, 통신망 구성과 비용을 크게 절감시킨다. 일반적으로 통계 시분할방식이나 시분할방식을 사용하여 통신 채널을 공유하며, 모뎀과 단말기 사이에 설치된다.(3) DEMUX- Demultiplexer의 줄임말 으로, 1개의 입력 선을 받아들여 n개의 선택선의 조합에 의해 2^n개의 출력선 중에서 하나를 선택하는 회로이다.- 출력선의 선택은 선택입력의 비트 조합에 의해 결정된다.- 데이터 분배기(Data distributor)라고도 불린다.- 1개의 입력선이 S1,S0의 선택 자에 의해서 4개의 출력선 중 하나를 선택해 출력하는 방식이다.- 위의 논리회로도와 논리기호를 보면 알 수 있듯이 멀티플렉서의 반대기능을 수행하며 오른쪽의 그림은 멀티플렉서와 디멀티플렉서의 관계이다.(4) ALU- arithmetic and logic unit의 약칭으로 산출논리 연산 유니트, 또는 간단히 연산유니트라고도 부른다.- 중앙처리장치(CPU)의 일부로서 컴퓨터 명령어 내에 있는 연산자들에 대해 덧셈 · 뺄셈 · 곱셈 · 나눗셈의 사칙연산, AND · OR · SHIFT 등의 논리연산을 하는 장치.- 입력된 연산자와, 현재 더해지고 있는 연산자, 누산기에 저장된 결과, 그리고 시프트된 결과들을 저장하기 위한 공간을 가지고 있다.- 일반적으로 몇 비트의 데이터를 병렬로 처리할 수가 있다.- 16비트 컴퓨터와 같이 n비트 컴퓨터라고 표현할 때 n은 그 CPU가 가지는 ALU로서 일시에 병렬로 처리할 수 있는 데이터의 비트 수를 나타낸다.- ALU의 설계는 분명히 프로세서의 중요한 부분으로서, 명령어를 좀 더 신속하게 다루기 위한 새로운 접근방식이 지속적으로 개발되고 있다.3. 실험 내용- 실험 1. 8가지 기능을 가진 ALU를 설계하시오.1) 논리기호와 진리표S2S1S0논리식기능000Y = AA의 전송001Y = A+B가산010Y = A-B감산011Y = A+1A의 증가100Y A and BAND101Y = A or BOR110Y = A xor BXOR111Y = not ANOT2) 소스코드동작적 모델링자료 흐름 모델링? 동작적 모델링에서는 case문을 사용하여 S의 값이 특정한 값일 때, Y의 값이 출력되도록 하였고 라이브러리를 추가하여 산술연산을 가능하게 함으로써 간단하게 설계가 가능하였다.? 자료 흐름 모델링에서는 when ~ else문을 사용하여 S가 특정한 값일 때 Y의 값을 설정해 주었고 마찬가지로 라이브러리를 추가하여 간단하게 설계하였다.3) 테스트 벤치? 임의로 초기 A의 값과 B의 값을 각각 1001와 0111로 설정하였고 A, B가 다른 값일 때에도 제대로 연산이 되는 것을 확인하기 위해 S의 총 주기인 800ns 뒤에 A와 B의 값이 0101과 1100으로 설정하였다.4) Wave Form? S의 값에 따라 주어진 산술연산을 하는 출력 값이 제대로 됐음을 파형으로 살펴 볼 수 있다. 게다가 A와 B값이 달라짐에 따라 S값에 의해 행하는 산술연산은 동일하나 출력 값이 바뀌는 것을 보아 제대로 설계가 됐음을 확인할 수 있다.4. 출처 (Reference)1) 비교기http://blog.naver.com/PostView.nhn?blogId=hanhi95&logNo=220317741024&parentCategoryNo=&categoryNo=12&viewDate=&isShowPopularPosts=false&from=postViewhttp://terms.naver.com/entry.nhn?docId=818348&cid=42344&categoryId=423442) MUX & DEMUXhttp://blog.naver.com/PostView.nhn?blogId=asd7979&logNo=30109725011http://rnrlehddl.tistory.com/173http://soofi.tistory.com/85http://wingsofgod.tistory.com/entry/%EA%B8%B0%ED%83%80-%EC%A1%B0%ED%95%A9%EB%85%BC%EB%A6%AC%ED%9A%8C%EB%A1%9C3) ALUhttp://blog.naver.com/brokenmagnum/110112124868
논리회로설계 실험 예비보고서 #3실험 3. 병렬 가산기 설계1. 실험 목표1의 보수와 2의 보수에 대해 학습하고 병렬가산기, 병렬 가감산기를 논리기호를 사용하지 않고 설계하고 작동방법에 대해 알아보아 둘의 차이점에 대해 알아본다. 또한 병렬가산기를 동작적, 자료흐름, 구조적 모델링 방법으로 설계한다.2. 예비 이론(1) 1의 보수이진수의 숫자를 반전시키거나, 수를 2의 제곱수-1에서 빼서 얻은 음수를 표현하기 위한 이진수이며, 오른쪽 그림과 같은 방법을 통해 구한다.(2) 2의 보수어떠한 수를 2의 제곱수에서 빼서 얻은 이진수이다. 1의 보수에서 1을 더하여서도 구할 수 있으며, 주로 산술연산에서 음수처럼 취급되고 다음과 같이 구한다.2의 보수의 계산법은 다음과 같다. 이것은 100-75의 계산으로 100+(-75)와 같으므로 이런 식이 나왔다. 계산결과에서 2의 보수에서는 가장 높은 자리에서 자리올림이 발생시, 이를 무시하므로 결과값은 00011001이다.(3) 병렬가산기 논리회로오른쪽의 그림은 8bit 병렬가산기의 논리회로도이다. 구조를 자세히 보면 전가산기 8개가 쓰였다는 것을 알 수 있다.(4) 병렬 가감산기의 논리회로와 작동원리병렬 가감산기는 8개의 전가산기와 각 입력마다 XOR게이트가 달려있다. sign의 값이 0일 때는 가산기와 같이 작동하지만, 1일 때에는 감산기로 작동한다.작동원리는 다음과 같다. 맨 처음의 캐리 입력과 각 자리의 B입력과 XOR게이트의 입력으로 sign값으로 하고, 하고, XOR게이트의 출력을 전가산기의 두 번째 입력으로 한다. sign의 값이 0이면 B값이 출력되고 1일 때, B와 반대 값이 출력된다. 이 출력이 입력으로 전가산기로 들어간다. 따라서 sign이 1일시, XOR게이트 출력은 B의 1의보수가 되고 처음 캐리값이 1이므로 1이 더해지게 된다. 따라서 전체적으로 sign의 값이 1일 때, A의 값과 B의보수가 더해지고 캐리에 1이 더해지므로 2의 보수 뺄셈이 된다.(5) 병렬 가산기와 병렬 가감산기의 차이구조적인 차이점으로는 B의 입력이 바로 들어가는 것이 아닌, XOR게이트를 통해서 간다는 것이다. 따라서 가감산기에는 1bit마다 XOR게이트가 하나가 더 많다. 기능적인 차이점으로는 병렬 가산기는 덧셈만 가능하지만 병렬 가감산기는 덧셈과 뺄셈이 둘 다 수행가능한 점이다. 가감산기의 경우 sign값이 1일 때, 2의 보수의 뺄셈을 하는 기능을 갖고 있다.(6) 병렬가산기와 병렬 가감산기의 입출력 표병렬가산기InputOutputa(3downto0)b(3downto0)c_outsum(3downto0)*************000*************0***************************************0**************************00001111병렬 가감산기InputOutputsa(3downto0)b(3downto0)c_outsum(3downto0)0**************************1**************************1****************************************************111113. 실험 내용- 실험 1. 병렬가산기를 동작적 모델링과 자료 흐름 모델링, 구조적 모델링(Schematic 방법)으로 작성하시오.(1) 병렬 가산기의 구조적 모델링(스키메틱)1) 소스 코드병렬가산기의 논리기호 내의 전가산기 회로구조적 모델링? 전가산기를 먼저 작성하여 병렬 가산기의 전가산기 논리기호를 사용 가능하게 하였고, 그를 이용하여 8bit 가산기를 만들었다.2) 테스트 벤치 코드? 입력 A와 B를 8비트의 0으로 초기화 시켰고, 캐리 값 C_in 또한 초기값을 0으로 설정하였다. 또한 C_in의 값을 300ns의 주기를 주어 C_in의 값에 따라 출력이 어떻게 바뀌는지 알 수 있게 하였다.3) Wave Form- 2진수의 값으로 나타낸 파형- 10진수의 값으로 나타낸 파형? 파형을 2진수와 10진수 두 가지 방법으로 나타내었다. 2진수만으로는 C_in의 값의 유무를 파악하기 어려움을 겪어 10진수로도 나타낸 것이다. sum의 값을 살펴보면 A+B의 값이 아닌 A+B+C_in임을 확인 할 수 있다.(2) 병렬 가산기의 동작적, 자료흐름 모델링1) 소스 코드동작적 모델링자료 흐름 모델링? 동작적 모델링에서는 전가산기의 자료흐름적 방법에 loop문을 사용하여 값을 표현하였다.? 자료흐름모델링에서는 라이브러리를 추가하여 산술연산 방법으로 쉽게 작성하였다.2) 테스트 벤치 코드? 좌측의 코드는 동작적 모델링에서 쓰인 코드이다. 마지막 Carry값을 C에 저장하게 하여 캐리값을 따로 알 수 있게 작성하였다.? 이 테스트벤치는 자료흐름모델링에서 쓰인 코드로, 위의 테스트벤치와 Carry의 값을 C에 저장하느냐, sum(8)에 저장하는가의 약간의 차이 밖에 가지지 않고 같은 코드이다. 따라서 작게 등록하였다..3) Wave Form? 동작적모델링의 파형으로 이번 예비실험의 경우 덧셈을 하는 자리값이 8bit를 넘지 않아, 9bit의 Carry값이 표현되지 않음을 C의 값으로 확인 할 수 있었다.? 자료흐름모델링의 파형으로 A,B의 값이 제대로 더해졌음을 확인 할 수 있다.4. 출처 (Reference)1) 1의 보수 : https://ko.wikipedia.org/wiki/1%EC%9D%98_%EB%B3%B4%EC%88%982) 2의 보수 : https://ko.wikipedia.org/wiki/2%EC%9D%98_%EB%B3%B4%EC%88%983) 병렬 가감산기 : http://blog.naver.com/k97b1114/1401592913964) 병렬 가산기 : 논리회로설계실험 국태용교수님 아이캠퍼스 강의자료 http://www.icampus.ac.kr/
논리회로설계 실험 예비보고서 #2실험 2. 반가산기 & 전가산기1. 실험 목표반가산기와 전가산기에 대해 알아보고 반가산기의 진리표와 논리식을 작성하고 그에 따른 논리회로를 그리고 자일링스 프로그램을 사용하여 VHDL언어로 동작적, 자료흐름, 구조적 모델링, Schematic Design을 사용하여 방식을 이용하여 각 게이트를 설계하고 파형을 살펴본다.2. 예비 이론(1) 가산기가산기란 이진수의 덧셈을 하는 논리회로이며 디지털회로, 조합회로의 하나이다. 전자계산기가 발명된 당시에는 진공관에 의해서 구성되었고 현재는 집적회로로 설계되어서 다양한 기능을 가진다. 입력신호 전압의 덧셈을 출력하는 디지털 회로도 있는데 이를 가산회로라고도 부른다.(2) 반가산기반가산기는 컴퓨터 내에서 2진 숫자를 덧셈하기 위해 사용되는 논리회로의 일종이다. 2개의 디지털입력(비트)을 받고, 2개의 디지털 출력(비트)를 생성한다. 반가산기는 이와 같이 자리올림 비트를 출력할 수 있지만 앞의 덧셈으로부터 자리 올림을 받을 수는 없다.(3) 전가산기컴퓨터 내에서 2진 숫자를(비트)를 덧셈하기 위한 논리 회로의 하나로 온 덧셈기라고도 한다. 전가산기는 3개의 디지털 입력(비트)을 받고, 2개의 디지털 출력(비트)을 생성한다. 덧셈해야 할 2개의 비트와 다른 숫자 위치에서 보내 온 자리 올림 비트를 받아 2개의 출력, 즉 합과 새로운 자리 올림수를 생성한다. 컴퓨터는 2개의 반가산기를 전가산기와 조합시켜, 동시에 4개 비트 또는 그 이상의 덧셈을 할 수 있다.3. 실험 내용- 실험 1. 반가산기를 동작적 모델링과 자료 흐름 모델링, 구조적 모델링, Schematic 방법으로 작성하시오.(1) 반가산기1) 진리표입력출력XYS(sum)C(carry)*************101S는 sum으로 덧셈연산에서 두 개의 입력을 합한 값이다. 따라서 이진수에서의 덧셈이 0+0=0으로 나오고 1+0은 1로 나온다. 1+1은 10으로 0으로 출력되는 것이다.C는 Carry로 두 개의 입력은 더하고 자리올림 되는 값이다. 그러므로 1+1 = 10에서만 1로 출력이 된다. 위의 진리표를 논리식으로 나타내면 다음과 같다.S`=` {bar{X}} Y`+`X {bar{Y}} `=`X` OPLUS `Y#C`=`XY2) 논리회로① AND 게이트 2개와 OR 게이트 2개를 사용한 논리회로와 논리식② AND 게이트 3개와 OR 게이트 1개를 사용한 논리회로와 논리식③ AND 게이트 1개와 XOR 게이트 1개를 사용한 논리회로와 논리식이 외에도 NOT게이트를 사용하면 더 많은 논리회로들을 그릴 수 있으나 본 실험에는 세 개의 논리회로만 그려보았다.2) 소스 코드동작적 모델링자료 흐름 모델링구조적 모델링구조적 모델링 內 AND, XOR게이트AND 게이트XOR 게이트구조적 모델링에서의 AND게이트와 XOR게이트는 간편하게 자료흐름모델링으로 작성하였다.3) Schematic 시뮬레이션앞에서 다룬 세 개의 논리회로중에서 가장 간단한 회로인 XOR 게이트 1개와 AND 게이트 1개를 사용한 회로로 Schematic을 하였다.4) 테스트 벤치 코드우측에 있는 테스트벤치는 Schematic의 작동 소스이고 좌측에 있는 코드는 각 모델링 방법에 사용된 테스트 벤치이다. 이 두 개의 테스트 벤치는 다소 다른 형태를 지녔지만 같은 내용의 테스트벤치이다.5) Wave Form앞의 진리표와 보았던 대로 S와 C값이 제대로 나오는 것을 확인 할 수 있다. 또한 논리식의 값과 같음을 알 수 있다.4. 출처 (Reference)1) 가산기https://ko.wikipedia.org/wiki/%EA%B0%80%EC%82%B0%EA%B8%B02) 반가산기http://kin.naver.com/openkr/detail.nhn?docId=238683) 전가산기http://blog.naver.com/gozooc/*************) 논리회로도http://blog.naver.com/seunghyub_l/*************) 논리회로설계실험 국태용교수님 아이캠퍼스 강의자료http://www.icampus.ac.kr/5. 고찰이번 예비실험에서는 반가산기와 전가산기에 대해 알아보게 되었다. 예비실험에서는 반가산기만 코드작성 및 논리회로도를 그렸는데 저번실험과 달리 동작적, 자료흐름 모델링만을 해보지 않고 이론으로 배운 구조적 모델링 방법과 Schematic 방법을 사용하여 코드를 작성해보았다. 구조적 모델링은 한가지의 파일만 사용하는 것이 아닌 정말 말 그대로 그 회로의 구조적으로 구성요소 코드를 작성 후 본 코드를 작성하는 방법이었다. 처음 사용하는 방법이라 다소 생소한 개념이었지만 하드웨어적인 관점으로 보니까 정말 이해하기 쉬운 방법이었다. Schematic은 더욱더 낯선 방법이었는데 C언어에서는 상상도 못하는 xilinx를 통해 회로를 그리는 방법이었다. xilinx는 단지 코드를 짜는 그런 프로그램인 줄만 알았지만 Schematic의 작성을 통해 새로운 면을 알게 되었다. 실험시간에는 이번에 작성하였던 반가산기를 이용해 전가산기를 작동하게 할 텐데 반가산기를 2개 작성하는 등 더욱더 복잡해지기 때문에 쉽지않은 실험이 될 것 같다.