목차
1. 2비트 감산기
- 209페이지 Source 코드 참고
< 시뮬레이션 결과 >
< H/W 확인 >
< .ucf 파일 생성 >
< 동작 확인 >
2. 4비트 가감산기
< 시뮬레이션 결과 >
< .ucf 파일 생성 >
<동작확인>
- 209페이지 Source 코드 참고
< 시뮬레이션 결과 >
< H/W 확인 >
< .ucf 파일 생성 >
< 동작 확인 >
2. 4비트 가감산기
< 시뮬레이션 결과 >
< .ucf 파일 생성 >
<동작확인>
본문내용
OGIC_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 를 동작 하였을 때>
소개글