회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
106 펌웨어 & 코딩언어 객체지향프로그래밍4 끼르 348 2017.06.19
105 펌웨어 & 코딩언어 적외선 센서에 대한 질문입니다.3 jaemi2010 348 2016.02.25
104 펌웨어 & 코딩언어 구조체 포인터 캐스팅??1 기다려줄래 319 2015.07.10
103 펌웨어 & 코딩언어 matlab에서 작성된 m file을 c++로 변환하고 싶습니다.1 마린스토리 287 2014.04.28
102 펌웨어 & 코딩언어 HOTC언어로된 MPPT제어 프로그램 Code Vision 으로 변환하기 찰떡젤리 583 2014.04.21
101 펌웨어 & 코딩언어 HOTC 명령어 좀 상세히 알고 싶습니다1 jsp 405 2014.04.03
100 펌웨어 & 코딩언어 HOT피보나치 수열..2 aNitMotD 558 2013.10.30
99 펌웨어 & 코딩언어 HOT1D FEM coding 문제 ..원하는 답이 안나와요 수치해석미쵸 511 2013.09.29
98 펌웨어 & 코딩언어 HOTPIC 16F628A와 CCSC 기반의 프로그래밍 질문입니다. 제발 도와주세요ㅠㅠ 신천동주민 485 2013.09.24
97 펌웨어 & 코딩언어 HOT비주얼베이직 연산 및 줄바꿈에 대한 질문입니다.1 원할머니보고쌈 686 2012.11.07
96 펌웨어 & 코딩언어 c언어 질문인데요..3 하하하하히 397 2012.09.10
95 펌웨어 & 코딩언어 HOTC언어제어3 tbwnaoslwj1 655 2012.08.09
94 펌웨어 & 코딩언어 HOTmatlab 질문입니다.. 소다수1 416 2012.06.06
93 펌웨어 & 코딩언어 HOT-(C언어(함수호출)로 만든 크리스*마스*트리*프로그램)-1 리종순2 1479 2011.12.14
92 펌웨어 & 코딩언어 HOT외부 SRAM 컨트롤하는 것좀 도와주세요.1 쩡무 1382 2011.11.15
91 펌웨어 & 코딩언어 HOTunikey program 수정 jjhuem 1129 2011.10.11
90 펌웨어 & 코딩언어 HOTAtmega128에서 Reset 하는 방법 중 궁금한 점이 있습니다!!!4 공돌이의꿈 3164 2011.06.21
89 펌웨어 & 코딩언어 HOTC언어랑 matlab의 차이?1 약곰탱이 3529 2011.06.02
펌웨어 & 코딩언어 HOTVHDL 전가산기 설계 질문입니다. 나트륨 2993 2011.03.26
87 펌웨어 & 코딩언어 HOTC 배열이용해서 엑셀 데이터 끌어오는 방법???2 꼬꼴리 2125 2011.03.24
  • 모든 원인은 하나 이상의 결과를 낳는다.
    - 하버트 스펜서
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.