VHDL을 이용한 ALU설계
본 자료는 7페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
해당 자료는 7페이지 까지만 미리보기를 제공합니다.
7페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

VHDL을 이용한 ALU설계에 대한 보고서 자료입니다.

본문내용

a2, a3 : in std_logic;
b0, b1, b2, b3 : in std_logic;
cin, vcc, gnd: in std_logic;
s0, s1: in std_logic_vector(1 downto 0);
cout: out std_logic;
y0, y1, y2, y3: out std_logic);
END lastalu;
ARCHITECTURE Structural OF lastalu IS
COMPONENT notgate PORT(
i: IN STD_LOGIC;
o: OUT STD_LOGIC);
END COMPONENT;
COMPONENT and2gate PORT(
i0, i1: IN STD_LOGIC;
o: OUT STD_LOGIC);
END COMPONENT;
COMPONENT or2gate PORT(
i0, i1: IN STD_LOGIC;
o: OUT STD_LOGIC);
END COMPONENT;
COMPONENT xor2gate PORT(
i0, i1: IN STD_LOGIC;
o: OUT STD_LOGIC);
END COMPONENT;
COMPONENT multiplexer4 PORT(
d0, d1, d2, d3: IN STD_LOGIC;
s : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
y: OUT STD_LOGIC);
END COMPONENT;
COMPONENT shiftLR PORT(
a0, a1, a2, a3 : IN STD_LOGIC;
sel, sinl, sinr : IN STD_LOGIC;
sh0, sh1, sh2, sh3 : OUT STD_LOGIC);
END COMPONENT;
COMPONENT arithmetic4bit IS PORT(
a0, a1, a2, a3 : in std_logic;
b0, b1, b2, b3 : in std_logic;
s: in std_logic_vector(1 downto 0);
e0, e1, e2, e3: out std_logic);
END COMPONENT;
COMPONENT fourfulladder IS PORT(
a0, a1, a2, a3 : IN STD_LOGIC;
b0, b1, b2, b3 : IN STD_LOGIC;
cin, zero : IN STD_LOGIC;
s : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
d0, d1, d2, d3, cout : OUT STD_LOGIC);
END COMPONENT;
SIGNAL d0, d1, d2, d3, e0, e1, e2, e3, sh0, sh1, sh2, sh3, sh00, sh11, sh22, sh33: std_logic;
begin
u0: fourfulladder port map(a0, a1, a2, a3, b0, b1, b2, b3, cin, gnd, s0, d0, d1, d2, d3, cout);
u1: arithmetic4bit port map(a0, a1, a2, a3, b0, b1, b2, b3, s0, e0, e1, e2, e3);
u2: shiftLR port map(a0, a1, a2, a3, gnd, gnd, gnd, sh0, sh1, sh2, sh3);
u3: shiftLR port map(a0, a1, a2, a3, vcc, gnd, gnd, sh00, sh11, sh22, sh33);
u4: multiplexer4 port map(d0, e0, sh0, sh00, s1, y0);
u5: multiplexer4 port map(d1, e1, sh1, sh11, s1, y1);
u6: multiplexer4 port map(d2, e2, sh2, sh22, s1, y2);
u7: multiplexer4 port map(d3, e3, sh3, sh33, s1, y3);
end structural;
- 마지막 전체 회로에 대한 코딩과 시뮬레이션 이다. 그래서 이름도 “lastalu"라고 정했다. 여러 오류를 잡다보니
회로 전체에 대한 이해도가 높아졌다. 다만 시뮬레이션을 보고 그 부분이 맞는지 틀린지에 대한 검사가 상당히
힘이 들었다. 그래서 그런지 대부분 맞는 값이 나오는데, "shift" 연산에서 오른쪽 명령이 떨어지면 오른쪽으로
이동을 하는데, 들어오는 값을 gnd 즉 그라운드에 걸어주어 모두 “0”이 들어가게끔 입력을 넣어주어 쉽게 구별할
수 있도록 회로를 설계하였디. 그리고 carry 연산은 “fourfulladder"에서 바로 나오는 값으로써 최종결과와는
다르게 나오지 않았다.
그리고 선택단자에선 2 bit s0, s1을 이용하여 수행하였는데, “cin"과 그룹화 시켜서 ”00000“에서 ”11111“
순서로 입력이 들어가게 하였다.
- 이 회로도가 지금까지 짜여진 VHDL 코딩에서 얻어낸 심볼로 "lastalu"를 설계한 회로도 이다.
결론
- 이번 연산은 산술뿐만 아니라 논리 연산까지 수행하는 4 bit ALU를 설계를 하였다. 스키메틱이 아닌 VHDL의
코딩으로 회로를 설계 하였는데, 처음 과제를 받았을 때 어떤식으로든 설계가 가능하다고 하셔서 Behaviral로
ALU를 설계해 갔었다. 지금 코딩한 스트럭쳐보다 상위 언어인 Behaviral로 코딩을 하면 중간의 과정을 알수 없이
오로지 결과값만을 정해주어서 회로를 설계할수 있는 회로로써 많은 시간을 절약하며 했었는데, 수업을 들은후
교수님의 의도가 그런식이 아니어서 이번에 다시 과제를 내게 되었습니다.
교수님의 의도를 제대로 파악하지 못한 자신에게 과오를 뉘우치고 하나하나 코딩을 짜보며 프로그램을 설계해
나갔습니다. 그 덕분에 상위 언어로 짰을 때에는 구조가 어떻게 돌아가는 것인지 어디서 어디로 이어지는 것인지
알수가 없었는데, 스트럭쳐로 짜 나가면서 확실하지는 않지만 ALU가 어떠한 형태로 내부구조로 이루어져 있는
지를 자세히 알수 있는 계기가 되었습니다. 다만 코딩이 늘어나고 연결하는 부위가 늘어날수록 생기는 오류를
잡아내는 것이 좀 어려웠지만 다하고 나니깐 새벽 늦게까지 열심히 해서 나온 결과에 보람을 느낄수 있었습니다.
다음 보고서를 쓰거나 설계 프로젝트를 써나갈때도 이러한 형식으로 준비해 나가겠습니다.

키워드

  • 가격3,000
  • 페이지수21페이지
  • 등록일2006.04.25
  • 저작시기2006.4
  • 파일형식한글(hwp)
  • 자료번호#346026
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니