목차
1. 2비트 감산기
- 209페이지 Source 코드 참고
< 시뮬레이션 결과 >
< H/W 확인 >
< .ucf 파일 생성 >
< 동작 확인 >
2. 4비트 가감산기
< 시뮬레이션 결과 >
< .ucf 파일 생성 >
<동작확인>
- 209페이지 Source 코드 참고
< 시뮬레이션 결과 >
< H/W 확인 >
< .ucf 파일 생성 >
< 동작 확인 >
2. 4비트 가감산기
< 시뮬레이션 결과 >
< .ucf 파일 생성 >
<동작확인>
본문내용
IC_VECTOR (1 downto 0);
BR : out STD_LOGIC_VECTOR (1 downto 0));
end sub2;
architectiure Behavioral of sub2 is
signal TMP : std_logic_vector(2 downto 0);
begin
TMP <= ("0" & A) - ("0" & B);
-- TMP <= ('0' & A) - ('0' &B); 써도 무방함
-- 2비트 일 때는 무조건 “00”을 붙여줘야 한다.
BR(1) <= TMP(2);
BR(0) <= (not A(0)) and B(0);
D <= TMP(1 downto 0);
end Behavioral;
< 시뮬레이션 결과 >
< H/W 확인 >
A <= "00"; B <="00"; Wait for 100 ns;
-- A(1) <= 'B'; A(0) <= '0'; B(1) <= '0'; B(0) <='0'; 위의 소스와 같은 결과 값 나타냄
A <= "00"; B <="01"; Wait for 100 ns;
A <= "00"; B <="10"; Wait for 100 ns;
A <= "00"; B <="11"; Wait for 100 ns;
A <= "01"; B <="00"; Wait for 100 ns;
A <= "01"; B <="01"; Wait for 100 ns;
A <= "01"; B <="10"; Wait for 100 ns;
A <= "01"; B <="11"; Wait for 100 ns;
A <= "10"; B <="00"; Wait for 100 ns;
A <= "10"; B <="01"; Wait for 100 ns;
A <= "10"; B <="10"; Wait for 100 ns;
A <= "10"; B <="11"; Wait for 100 ns;
A <= "11"; B <="00"; Wait for 100 ns;
A <= "11"; B <="01"; Wait for 100 ns;
A <= "11"; B <="10"; Wait for 100 ns;
A <= "11"; B <="11"; Wait for 100 ns;
< .ucf 파일 생성 >
NET A(1) LOC = "P67"; -- 버튼 1번
NET A(0) LOC = "P63"; -- 버튼 2번
NET B(1) LOC = "P62"; -- 버튼 3번
NET B(0) LOC = "P61"; -- 버튼 4번
NET D(1) LOC = "P139"; -- LED 0번
NET D(0) LOC = "P138"; -- LED 1번
NET BR(1) LOC = "P136"; -- LED 2번
NET BR(0) LOC = "P135"; -- LED 3번
< 동작 확인 >
2. 4비트 가감산기
entity fouurbit_lsi is
Port ( C0 : in STD_LOGIC;
A : in STD_LOGIC_VECTOR(4 downto 1);
B : in STD_LOGIC_VECTOR(4 downto 1);
S : out STD_LOGIC_VECTOR(4 downto 1);
C4 : out STD_LOGIC);
end fouurbit_lsi;
architecture Behavioral of fouurbit_lsi is
signal TMP : std_logic_vector ( 5 downto 1);
begin
process(C0, A, S)
begin
if C0 = '0' then
TMP <= A+B;
elsif C0 = '1' then
TMP <= A-B;
end if;
end process;
C4 <= TMP(5);
S <= TMP(4 downto 1);
end Behavioral;
< 시뮬레이션 결과 >
256가지의 경우의 수가 있기 때문에, 소스 코드를 다 짤 수 없어서 A에 4 B에 2의 값을 넣어서 합(+)와 차(-)를 시뮬레이션함.
< .ucf 파일 생성 >
NET C0 LOC = P41;
NET A<4> LOC =P67;
NET A<3> LOC =P63;
NET A<2> LOC =P62;
NET A<1> LOC =P61;
NET B<4> LOC =P60;
NET B<3> LOC =P59;
NET B<2> LOC =P58;
NET B<1> LOC =P57;
NET S<4> LOC =P139;
NET S<3> LOC =P138;
NET S<2> LOC =P136;
NET S<1> LOC =P135;
<동작확인>
<4 + 2 를 동작 하였을 때>
<4 - 2 를 동작 하였을 때>
BR : out STD_LOGIC_VECTOR (1 downto 0));
end sub2;
architectiure Behavioral of sub2 is
signal TMP : std_logic_vector(2 downto 0);
begin
TMP <= ("0" & A) - ("0" & B);
-- TMP <= ('0' & A) - ('0' &B); 써도 무방함
-- 2비트 일 때는 무조건 “00”을 붙여줘야 한다.
BR(1) <= TMP(2);
BR(0) <= (not A(0)) and B(0);
D <= TMP(1 downto 0);
end Behavioral;
< 시뮬레이션 결과 >
< H/W 확인 >
A <= "00"; B <="00"; Wait for 100 ns;
-- A(1) <= 'B'; A(0) <= '0'; B(1) <= '0'; B(0) <='0'; 위의 소스와 같은 결과 값 나타냄
A <= "00"; B <="01"; Wait for 100 ns;
A <= "00"; B <="10"; Wait for 100 ns;
A <= "00"; B <="11"; Wait for 100 ns;
A <= "01"; B <="00"; Wait for 100 ns;
A <= "01"; B <="01"; Wait for 100 ns;
A <= "01"; B <="10"; Wait for 100 ns;
A <= "01"; B <="11"; Wait for 100 ns;
A <= "10"; B <="00"; Wait for 100 ns;
A <= "10"; B <="01"; Wait for 100 ns;
A <= "10"; B <="10"; Wait for 100 ns;
A <= "10"; B <="11"; Wait for 100 ns;
A <= "11"; B <="00"; Wait for 100 ns;
A <= "11"; B <="01"; Wait for 100 ns;
A <= "11"; B <="10"; Wait for 100 ns;
A <= "11"; B <="11"; Wait for 100 ns;
< .ucf 파일 생성 >
NET A(1) LOC = "P67"; -- 버튼 1번
NET A(0) LOC = "P63"; -- 버튼 2번
NET B(1) LOC = "P62"; -- 버튼 3번
NET B(0) LOC = "P61"; -- 버튼 4번
NET D(1) LOC = "P139"; -- LED 0번
NET D(0) LOC = "P138"; -- LED 1번
NET BR(1) LOC = "P136"; -- LED 2번
NET BR(0) LOC = "P135"; -- LED 3번
< 동작 확인 >
2. 4비트 가감산기
entity fouurbit_lsi is
Port ( C0 : in STD_LOGIC;
A : in STD_LOGIC_VECTOR(4 downto 1);
B : in STD_LOGIC_VECTOR(4 downto 1);
S : out STD_LOGIC_VECTOR(4 downto 1);
C4 : out STD_LOGIC);
end fouurbit_lsi;
architecture Behavioral of fouurbit_lsi is
signal TMP : std_logic_vector ( 5 downto 1);
begin
process(C0, A, S)
begin
if C0 = '0' then
TMP <= A+B;
elsif C0 = '1' then
TMP <= A-B;
end if;
end process;
C4 <= TMP(5);
S <= TMP(4 downto 1);
end Behavioral;
< 시뮬레이션 결과 >
256가지의 경우의 수가 있기 때문에, 소스 코드를 다 짤 수 없어서 A에 4 B에 2의 값을 넣어서 합(+)와 차(-)를 시뮬레이션함.
< .ucf 파일 생성 >
NET C0 LOC = P41;
NET A<4> LOC =P67;
NET A<3> LOC =P63;
NET A<2> LOC =P62;
NET A<1> LOC =P61;
NET B<4> LOC =P60;
NET B<3> LOC =P59;
NET B<2> LOC =P58;
NET B<1> LOC =P57;
NET S<4> LOC =P139;
NET S<3> LOC =P138;
NET S<2> LOC =P136;
NET S<1> LOC =P135;
<동작확인>
<4 + 2 를 동작 하였을 때>
<4 - 2 를 동작 하였을 때>
소개글