회원가입 ID/PW 찾기
AA

전가산기를 아래와 같이 설계해봤습니다. 더 간단하게도 되지만 그냥 Behavioral로 이렇게 해봤어요

 

마치 C프로그램 짜듯이

 

그런데 원하는 출력값이 나오질 않습니다.

 

코드 설명을 잠깐 드리자면

 

a,b,ci 순서로 하나씩 확인해가면서 하나라도 1이 있으면 그 개수를 temp에 저장합니다.

 

temp가 2개 이상이면 carry가 발생하니 c=1 주고요(반대는 생략)

 

temp가 짝수이면 s=0 줍니다. (반대는 생략)

 

사용한 signal은 a,b:input ci:carry input c:carry s:sum 입니다.

 

k는 그냥 a,b,ci를 저장하고 for문으로 다루기위한 bit벡터입니다.

 

 

이렇게 해놓고

 

첨부한 파일을 보시면 a=0 b=0 ci=1일 때, s=1이어야 하는데

  

안맞는걸 확인하실 수 있을겁니다.

 

혹시나 해서 temp signal을 그냥 2만 대입해봤더니 이상하게

 

c, s에서 변화가 생깁니다. 아래 코드만 보면 c, s는 temp 값에의해 결정되니깐

 

변화가 없어야 정상인 것 같은데요.

 

원인이 무엇인지 도통 감이 잡히질 않습니다.

 

rem 연산 때문일까요??

 

 

 

 

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;


entity Fulladder is
    Port ( a : in  bit;
           b : in  bit;
           ci : in  bit;
           s : out  bit;               ---- sum
           c : out  bit;              ----- carry
    
end Fulladder;

architecture Behavioral of Fulladder is

signal k : bit_vector (1 to 3);

begin
 
 process(a,b,ci)
 variable temp : integer;
 begin
  temp := 0;  --- temp 변수 초기화 및 for문 조작을 위해 벡터에 a,b,ci 입력
  k(1) <= a;
  k(2) <= b;
  k(3) <= ci;

 

  for i in 1 to 3 loop                                        --- bit a, b, ci 중에 논리값이 1인 개수를 샌다.
   if (k(i)='1') then
    temp := temp + 1;    --- 개수를 temp에 저장
   end if;
  end loop;
  
  if ((temp rem 2)=0) then                                --- 짝수개이면 s=0 홀수면 s=1 : sum 결정
   s <= '0';
  else
   s <= '1';
  end if;
  
  if (temp < 2) then                                      --- 2개이상이면 c=1 1개이하이면 c=0 : carry 결정
   c <= '0';
                 else
   c <= '1';
                 end if;
 end process;

end Behavioral;

 

 

댓글 0

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
234 Allegro & OrCAD HOTtext 폰트를 바꿀수 있는지요?2 만내 1890 2011.04.06
233 PADS HOTBGA 아트웍시 Via설정방법 문의2 김진효 3346 2011.04.06
232 PADS HOTcopper pour 설정방법좀 알려주세요~~2 스코프 2395 2011.04.05
231 ECAD 아무거나 HOT9.3VERSION에서 DxDEDIGNER동작 하나요?1 정상에서 1647 2011.04.04
230 PADS HOTpads 9.2와 pads 9.3 서로 호환되나요?2 스코프 3687 2011.04.02
229 Allegro & OrCAD HOT거버파일은 있습니다. 질문좀 ㅠㅠ2 마모루 2068 2011.03.29
228 PADS HOTpads9.2 버전에 대해 질문이요~4 세디피아 2438 2011.03.24
227 Allegro & OrCAD HOT부품번호 자동수정에 관한 질문입니다.1 쨍용 1869 2011.03.24
226 Allegro & OrCAD HOTvia 크기 바꾸는 방법??5 한방부르스 2722 2011.03.23
225 PADS HOT윈도7에서 pads깔기~5 세디피아 2745 2011.03.22
224 PADS HOT흠.....pads2009...7 세디피아 1933 2011.03.18
223 PADS HOT음..윈도우7에서의 pads호환...5 세디피아 3218 2011.03.18
222 PADS HOTpads의 장점은 무엇인가요?2 Pnokio 3408 2011.03.18
221 PADS HOT로고 음각 문의요..3 오토가조아 2195 2011.03.11
220 PADS HOTpads 동영상 강좌 구하기 헨리 3145 2011.03.10
219 PADS HOTPADS 9.2 설치 문의요~~~4 Bluegurami 2661 2011.03.09
218 PADS HOTGERBER 파일 불러오기..2 나다날르다3 3144 2011.03.09
217 Allegro & OrCAD HOTPCB Editor의 설정 변경방법 문의 (Window7-64bit)1 외날 2317 2011.03.08
216 Allegro & OrCAD HOT"다각형 패드가 포함된 심볼" 그리는 방법 알려주세요~4 외날 3950 2011.03.08
215 Allegro & OrCAD HOT예전버전 여는법좀. 쨍용 1470 2011.03.07
Prev 1 ... 16 17 18 19 20 21 22 23 24 25 ... 32 Next
  • 입은 화의 문이요, 혀는 이 몸을 베는 칼이다. 입을 닫고 혀를 깊이 간직하면 몸 편안히 간 곳마다 튼튼하다.
    - 전당시
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.