목차
1. Background
2. ALU Function Table
3. ALU 설계방법
4. VHDL Code 및 시뮬레이션
5. Synthesis
6. Conclusion
2. ALU Function Table
3. ALU 설계방법
4. VHDL Code 및 시뮬레이션
5. Synthesis
6. Conclusion
본문내용
ee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity TB_ALU is
end TB_ALU;
architecture TB of TB_ALU is
component ALUport(
sel : in std_logic_vector(4 downto 0);
A, B : in std_logic_vector(7 downto 0);
C_in : in std_logic;
Y : out std_logic_vector(7 downto 0));
end component;
signal sel : std_logic_vector(4 downto 0);
signal A, B : std_logic_vector(7 downto 0);
signal C_in : std_logic;
signal Y : std_logic_vector(7 downto 0);
begin
ALU_0 : ALU port map(
sel => sel,
A => A,
B => B,
C_in => C_in,
Y => Y );
-- sel signal (5bits)
process
begin
sel<="00000";wait for 4000 ns;
sel<="00001";wait for 4000 ns;
sel<="00010";wait for 4000 ns;
sel<="00011";wait for 4000 ns;
sel<="00100";wait for 2000 ns;
sel<="00101";wait for 2000 ns;
sel<="00110";wait for 2000 ns;
sel<="00111";wait for 2000 ns;
sel<="00000";wait for 2000 ns;
sel<="01000";wait for 2000 ns;
sel<="10000";wait for 2000 ns;
sel<="11000";wait for 2000 ns;
end process;
-- A signal (8bits)
process
begin
A <= "00001111"; wait;
end process;
-- B signal (8bits)
process
begin
B <= "00110011"; wait;
end process;
-- C_in (1bit)
process
begin
C_in <= '0' ; wait for 2000 ns;
C_in <= '1' ; wait for 2000 ns;
C_in <= '0' ; wait for 2000 ns;
C_in <= '1' ; wait for 2000 ns;
C_in <= '0' ; wait for 2000 ns;
C_in <= '1' ; wait for 2000 ns;
C_in <= '0' ; wait for 2000 ns;
C_in <= '1' ; wait for 2000 ns;
C_in <= '0' ; wait;
end process;
end TB;
5. Synthesis
- 합성을 Synplify 프로그램을 이용하여 수행하였습니다. 합성된 결과를 살펴보면, 앞서 설계하였던 Logic_unit block, Arithmetic_unit block, Mux, block, Shifter block으로 이루어져 있음을 확인 할 수 있습니다. 입력으로는 8bit의 A, B 신호와 연산의 종류를 선택하게 되는 5bit의 sel 신호, 그리고 Carry in을 나타내는 1bit의 C_int신호가 있고, 출력으로는 8bit의 Y신호가 있습니다. 5bit의 sel 신호는 Logic_unit과 Arithmetic_unit, Shifter block에서는 2bit 씩 사용되고, Mux에서는 1bit가 사용되고 있습니다. 강의 자료에 나와 있는 ALU의 Block diagram과 비교해 보았을 때, 정상적인 합성이 이루어졌다는 사실을 확인 할 수 있습니다.
6. Conclusion
- 이번 과제는 VHDL을 이용하여 ALU(Arithmetic logic unit)을 설계해보고, 합성 툴을 이용한 합성을 통하여 설계된 ALU가 정상적으로 동작하는지 여부를 확인해보는 것 이였습니다. 전반적인 Code에 조건문으로 IF문을 많이 사용하였고, 각 블록 단위로 코딩을 실시하여 디버깅이 쉽게 하였습니다.
이번 과제를 통하여 VHDL에 익숙해 질 수 있었고, 시뮬레이션 툴이나 합성 툴의 사용법을 다시 한번 숙지 할 수 있는 좋은 기회가 되었습니다. 그리고 ALU에 대한 개념과 원리에 대해서 이해 할 수 있는 시간이 되었습니다.
use ieee.std_logic_arith.all;
entity TB_ALU is
end TB_ALU;
architecture TB of TB_ALU is
component ALUport(
sel : in std_logic_vector(4 downto 0);
A, B : in std_logic_vector(7 downto 0);
C_in : in std_logic;
Y : out std_logic_vector(7 downto 0));
end component;
signal sel : std_logic_vector(4 downto 0);
signal A, B : std_logic_vector(7 downto 0);
signal C_in : std_logic;
signal Y : std_logic_vector(7 downto 0);
begin
ALU_0 : ALU port map(
sel => sel,
A => A,
B => B,
C_in => C_in,
Y => Y );
-- sel signal (5bits)
process
begin
sel<="00000";wait for 4000 ns;
sel<="00001";wait for 4000 ns;
sel<="00010";wait for 4000 ns;
sel<="00011";wait for 4000 ns;
sel<="00100";wait for 2000 ns;
sel<="00101";wait for 2000 ns;
sel<="00110";wait for 2000 ns;
sel<="00111";wait for 2000 ns;
sel<="00000";wait for 2000 ns;
sel<="01000";wait for 2000 ns;
sel<="10000";wait for 2000 ns;
sel<="11000";wait for 2000 ns;
end process;
-- A signal (8bits)
process
begin
A <= "00001111"; wait;
end process;
-- B signal (8bits)
process
begin
B <= "00110011"; wait;
end process;
-- C_in (1bit)
process
begin
C_in <= '0' ; wait for 2000 ns;
C_in <= '1' ; wait for 2000 ns;
C_in <= '0' ; wait for 2000 ns;
C_in <= '1' ; wait for 2000 ns;
C_in <= '0' ; wait for 2000 ns;
C_in <= '1' ; wait for 2000 ns;
C_in <= '0' ; wait for 2000 ns;
C_in <= '1' ; wait for 2000 ns;
C_in <= '0' ; wait;
end process;
end TB;
5. Synthesis
- 합성을 Synplify 프로그램을 이용하여 수행하였습니다. 합성된 결과를 살펴보면, 앞서 설계하였던 Logic_unit block, Arithmetic_unit block, Mux, block, Shifter block으로 이루어져 있음을 확인 할 수 있습니다. 입력으로는 8bit의 A, B 신호와 연산의 종류를 선택하게 되는 5bit의 sel 신호, 그리고 Carry in을 나타내는 1bit의 C_int신호가 있고, 출력으로는 8bit의 Y신호가 있습니다. 5bit의 sel 신호는 Logic_unit과 Arithmetic_unit, Shifter block에서는 2bit 씩 사용되고, Mux에서는 1bit가 사용되고 있습니다. 강의 자료에 나와 있는 ALU의 Block diagram과 비교해 보았을 때, 정상적인 합성이 이루어졌다는 사실을 확인 할 수 있습니다.
6. Conclusion
- 이번 과제는 VHDL을 이용하여 ALU(Arithmetic logic unit)을 설계해보고, 합성 툴을 이용한 합성을 통하여 설계된 ALU가 정상적으로 동작하는지 여부를 확인해보는 것 이였습니다. 전반적인 Code에 조건문으로 IF문을 많이 사용하였고, 각 블록 단위로 코딩을 실시하여 디버깅이 쉽게 하였습니다.
이번 과제를 통하여 VHDL에 익숙해 질 수 있었고, 시뮬레이션 툴이나 합성 툴의 사용법을 다시 한번 숙지 할 수 있는 좋은 기회가 되었습니다. 그리고 ALU에 대한 개념과 원리에 대해서 이해 할 수 있는 시간이 되었습니다.
추천자료
VHDL을 이용한 ALU설계
HDL programming : VHDL to Verilog (16bit myrisc processor)
vhdl을 이용한 8-bit MPU(Micro processor unit) 설계
xilinx를 이용한 8x1 MUX 설계(vhdl)
xilinx를 이용한 shifter설계 (vhdl)
무선인터넷의 성장
VHDL을 이용한 간단한 ALU 프로그램
[디지털시스템] ALU - Arithmetic Logical Unit 결과보고서
[디지털시스템(Verolog)] Multiplexer & Logical Unit 결과보고서