Upload
nguyenmien
View
232
Download
4
Embed Size (px)
Citation preview
VHDL 프로그래밍VHDL 프로그래밍
11. 단순 디지털 회로 설계
한 동 일
학습 목표학습 목표버퍼 및 삼상태 버퍼의 동작 원리를 이해한다 버퍼 및 삼상태 버퍼의 동작 원리를 이해한다.
std_logic 신호의 사용 이유를 이해한다.
입출력 버퍼의 동작 원리를 이해한다.
버스에 연결된 입출력 버퍼의 동작을 제어할 수 있 버스에 연결된 입출력 버퍼의 동작을 제어할 수 있다.
유한 상태 기계의 상태 천이도 표현을 이해한다.
주어진 문제로부터 상태 천이도를 작성할 수 있다 주어진 문제로부터 상태 천이도를 작성할 수 있다.
상태 천이도를 VHDL 코드로 변환할 수 있다.
파일 입력문을 사용할 수 있다.
생성문을 활용할 수 있다
2/55
생성문을 활용할 수 있다.
버퍼(buffer) 설계버퍼(buffer) 설계
단순 버퍼(b ff ) 단순 버퍼(buffer) 출력 신호의 팬 아웃(fan out)을 증가시키는 용도
in out
in out
0 0
1 1
3/55
버퍼(buffer) 설계버퍼(buffer) 설계
단순 버퍼(b ff )의 사용 예 단순 버퍼(buffer)의 사용 예
architecture spartan3 top of spartan3 top isarchitecture spartan3_top of spartan3_top is
component BUFG
port ( I : in std logic;port ( I : in std_logic;
O : out std_logic );
end component;end component;
-- 중략
beginbegin
-- camera clock interface
camclk proc :camclk_proc :
BUFG port map ( I => camclk_in, O => camclk);
중략
4/55
-- 중략
버퍼(buffer) 설계버퍼(buffer) 설계
삼상태 버퍼(t i t t b ff ) 삼상태 버퍼(tri-state buffer)
enable in enable out
0 0 z
1 0 zin out
1 0 z
0 1 0
1 1 1
enable n in enable n outenable_n in enable_n out
0 1 z
in out1 1 z
0 0 0
5/55
1 0 1
버퍼(buffer) 설계버퍼(buffer) 설계
td l i td l i 형의 정의 std_logic, std_ulogic 형의 정의 IEEE 라이브러리의 std_logic_1164 패키지에 정의
type std_ulogic is ( 'U', -- Uninitialized'X', -- Forcing Unknown'0', -- Forcing 0'1', -- Forcing 1'Z' High ImpedanceZ , -- High Impedance 'W', -- Weak Unknown'L', -- Weak 0 'H', -- Weak 1 '-' -- Don't care
););
function resolved ( s : std_ulogic_vector ) return std_ulogic;
6/55
subtype std_logic is resolved std_ulogic;
버퍼(buffer) 설계버퍼(buffer) 설계
td l i 형의 9가지 값의 의미 std_ulogic 형의 9가지 값의 의미 'U' : 초기화가 안 되었을 경우의 기본값으로 사용됨
'X' : ‘0’값과 ‘1’ 값의 충돌로 값이 정의가 안 되는 경우
'0' : 0 :
'1' : 트랜지스터가 VCC 값이 됨
'Z' : 삼상태 버퍼 출력이 고저항 상태일 때 Z : 삼상태 버퍼 출력이 고저항 상태일 때
'W‘ : ‘L’값과 ‘H’ 값의 충돌로 값이 정의가 안 되는 경우
'L' : pull down 저항에 의해서 연결되어 외부 신호가 없을 때 ‘0’으로 출력되는 경우
'H' : pull up 저항에 의해서 연결되어 외부 신호가 없을때 ‘1’로 출력되는 경우
7/55
'-' : Don't care, 어떠한 값이 되어도 상관없는 경우
버퍼(buffer) 설계버퍼(buffer) 설계
l d 함수의 정의 resolved 함수의 정의function resolved ( s : std_ulogic_vector ) return std_ulogic is
variable result : std_ulogic := 'Z'; -- weakest state default
begin
if (s'LENGTH = 1) then
return s(s'LOW);
else
for i in s'RANGE loop
result := resolution_table(result, s(i));
end loop;
end if ;
return result;
8/55
end resolved;
버퍼(buffer) 설계버퍼(buffer) 설계
l ti t bl 의 내용 resolution table의 내용constant resolution_table : stdlogic_table := (
--| U X 0 1 Z W L H - | |
( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- | U |
( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), -- | X |
( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ), -- | 0 |
( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ), -- | 1 |
( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ), -- | Z |
( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ), -- | W |
( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ), -- | L |
( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ), -- | H |
( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ) -- | - |
9/55
);
버퍼(buffer) 설계버퍼(buffer) 설계
삼상태 버퍼의 VHDL 표현 삼상태 버퍼의 VHDL 표현library ieee ;
use ieee.std_logic_1164.all ;
entity tribuf is
port (
i, enable : in std_logic;
o : out std_logic
);
end tribuf;
architecture behavioral of tribuf is
begin
o <= i when enable = '1' else 'Z';
10/55
end ;
버퍼(buffer) 설계버퍼(buffer) 설계
삼상태 버퍼의 테스트 벤치 구성 삼상태 버퍼의 테스트 벤치 구성library ieee; use ieee.std_logic_1164.all;
tit tb t ib f ientity tb_tribuf isend tb_tribuf;architecture sim of tb tribuf is_
component tribuf port ( i, enable : in std_logic;
t td l i )o : out std_logic );end component;signal i, enable : std logic; g , _ g ;
begini <= '0', '1' after 15 ns, '0' after 25 ns, '1' after 35 ns, '0' after 45 ns,
'1' ft 55 '0' ft 65 '1' ft 75 '0' ft 85'1' after 55 ns, '0' after 65 ns, '1' after 75 ns, '0' after 85 ns;enable <= '0', '1' after 20 ns, '0' after 40 ns, '1' after 70 ns, '0' after 90 ns;u0 : tribuf port map (i=>i, enable=>enable, o=>open);
11/55
p p ( , , p );end sim ;
버퍼(buffer) 설계버퍼(buffer) 설계
시뮬레이션 파형 예 시뮬레이션 파형 예
12/55
버퍼(buffer) 설계버퍼(buffer) 설계
입출력 버퍼(IO b ff ) 입출력 버퍼(IO buffer)
enable
d_in data
d_in enable data d_out
0 0 z z_
1 0 z z
0 1 0 00 1 0 0
1 1 1 1
d_out
13/55
버퍼(buffer) 설계버퍼(buffer) 설계
입출력 버퍼의 VHDL 표현 입출력 버퍼의 VHDL 표현library ieee ;
use ieee.std_logic_1164.all ;
entity iobuf is
port ( d_in, enable : in std_logic;
d_out : out std_logic;
data : inout std_logic);
end iobuf;
architecture behavioral of iobuf is
begin
data <= d_in when enable = '1' else 'Z';
d_out <= data;
14/55
end ;
버퍼(buffer) 설계버퍼(buffer) 설계
시뮬레이션 파형 예 시뮬레이션 파형 예
15/55
버퍼(buffer) 설계버퍼(buffer) 설계
버스의 공유 버스의 공유enable1
bus
data1d_in1
data1enable2
d_in2data2
d_out1
d out2…
16/55
d_out2
버퍼(buffer) 설계버퍼(buffer) 설계
시뮬레이션 파형 예 시뮬레이션 파형 예
17/55
버퍼(buffer) 설계버퍼(buffer) 설계
잘못된 버스 제어 예 잘못된 버스 제어 예
18/55
유한 상태 기계 설계유한 상태 기계 설계
유한 상태 기계(fi it t t hi ) 유한 상태 기계(finite-state machine) 디지털 회로의 동작을 유한개의 상태와 상태 사이의 전
이 및 동작으로 서술하는 방법
유한 상태 기계의 분류 Moore Machine
유한 상태 기계의 출력이 현재 상태의 함수로 결정
VHDL에서 추천하는 설계 방식
Mealy machine 유한 상태 기계의 출력이 현재 상태와 입력의 함수로 결정
두 방식의 혼합 모델
19/55
유한 상태 기계 설계유한 상태 기계 설계
무어 방식의 상태 기계 무어 방식의 상태 기계
current
next state
state outputlogic
state
next outputstatelogic
register logic
input
nextstate
p
clk
20/55
유한 상태 기계 설계유한 상태 기계 설계
밀리 방식의 상태 기계 밀리 방식의 상태 기계
outputlogic
currentstate output
next statelogic
state registernext
t tinput
logic state
clk
21/55
유한 상태 기계 설계유한 상태 기계 설계
상태 천이도( t t t iti di ) 사용 형식 상태 천이도(state transition diagram) 사용 형식
transitionconditiontransition
t t
state 1 state 2
condition 1state
state 1
output 1
state 2
output 2
condition 2action
22/55
유한 상태 기계 설계유한 상태 기계 설계
유한 상태 기계 설계 예 신호기
pulse = ‘0’
유한 상태 기계 설계 예 : 신호기
red
p
r_on = ‘1’
pulse = ‘1’ pulse = ‘1’
green yellowpulse = ‘0’ pulse = ‘0’
green
g_on = ‘1’
yellow
y_on = ‘1’pulse = ‘1’
23/55
유한 상태 기계 설계유한 상태 기계 설계
신호기의 VHDL 표현 신호기의 VHDL 표현
type light_state is (red, green, yellow);signal current_state, next_state: light_state;-- 중략
state_register: process (dispclk, reset_disp_n)begin
if ( t di '0') thif (reset_disp_n='0') thencurrent_state <= red;
elsif (dispclk='1' and dispclk'event) thenelsif (dispclk 1 and dispclk event) thenif pulse = '1' then
current state <= next state;_ _ ;end if;
end if;
24/55
end process;
유한 상태 기계 설계유한 상태 기계 설계
신호기의 VHDL 표현 신호기의 VHDL 표현
next state logic : process (pulse, current state)_ _ g p (p , _ )begin
case current_state iswhen red => r_on <= '1'; g_on <= '0'; y_on <= '0';
next_state <= green;h > < '0' < '1' < '0'when green => r_on <= '0'; g_on <= '1'; y_on <= '0';
next_state <= yellow;when yellow => r on <= '0'; g on <= '0'; y on <= '1';when yellow > r_on < 0 ; g_on < 0 ; y_on < 1 ;
next_state <= red;when others => r_on <= '0'; g_on <= '0'; y_on <= '1';
next_state <= red;end case;
25/55
end process;
유한 상태 기계 설계유한 상태 기계 설계
시뮬레이션 파형 예 시뮬레이션 파형 예
26/55
패턴 검출기의 설계패턴 검출기의 설계
패턴 검출기 설계 문제 패턴 검출기 설계 문제 클럭을이용하여 생성한 비트스트림이 지속적으로 입력
입력 예) 111101101011110110110110111010
입력 비트스트림에서 다음의 패턴을 검출 “011011”
위의 패턴이 입력될 경우 detect_flag를 ‘1'로 출력하고나머지 경우에는 ’0‘을 출력
위의 패턴이 연속적으로 입력될 경우에도 마지막 6번째‘1’이 입력될 때마다 detect_flag를 ‘1’로 출력
27/55
패턴 검출기의 설계패턴 검출기의 설계
상태 천이도 작성 예 상태 천이도 작성 예
28/55
패턴 검출기의 설계패턴 검출기의 설계
올바른 상태 천이도 올바른 상태 천이도
29/55
패턴 검출기의 설계패턴 검출기의 설계
패턴 검출기의 VHDL 표현
state_reg: process (dispclk, reset_disp_n)
패턴 검출기의 VHDL 표현
beginif (reset_disp_n='0') then
current state <= idle;
library ieee ;use ieee.std_logic_1164.all ;entity pattern detector is _ ;
elsif (dispclk='1' and dispclk'event) thencurrent_state <= next_state;
end if;
y p _port (
bitstream : in std_logic;detect flag : out std logic; end if;
end process;
t t t ( t t bit t )
detect_flag : out std_logic;reset_disp_n : in std_logic;dispclk : in std_logic);d tt d t t next_state : process (cur_state, bitstream)
begincase cur_state is
end pattern_detector;architecture behavie of pattern_detector istype state_type is
when idle => detect_flag <= '0';if bitstream = '1' then
next_state <= idle;
(idle, tap1, tap2, tap3, tap4, tap5, tap6);signal cur_state, next_state: state_type;begin
30/55
_else next_state <= tap1; end if;
g
패턴 검출기의 설계패턴 검출기의 설계
패턴 검출기의 VHDL 표현
when tap1 => detect_flag <= '0';
패턴 검출기의 VHDL 표현
when tap5 => detect_flag <= '0';if bitstream = '1' then
t t t < t 6
if bitstream = '1' thennext_state <= tap2;
else next state <= tap1; end if;next_state <= tap6;
else next_state <= tap1; end if;when tap6 => detect_flag <= '1';
_ p ; ;when tap2 => detect_flag <= '0';
if bitstream = '1' thennext state <= tap3;
if bitstream = '1' thennext_state <= idle;
else next state <= tap1; end if;
next_state < tap3;else next_state <= tap1; end if;
when tap3 => detect_flag <= '0';if bit t '1' th
_ p ; ;when others => detect_flag <= '0';
next_state <= idle;end case;
if bitstream = '1' thennext_state <= idle;
else next_state <= tap4; end if;end case;
end process;end ;
when tap4 => detect_flag <= '0';if bitstream = '1' then
next_state <= tap5;
31/55
_ pelse next_state <= tap1; end if;
패턴 검출기의 설계패턴 검출기의 설계
패턴 검출기의 테스트 벤치 구성 예 패턴 검출기의 테스트 벤치 구성 예
-- 중략bitstream <= '1', '1' after 10 ns, '1' after 20 ns, '1' after 30 ns,
'0' after 40 ns, '1' after 50 ns, '1' after 60 ns, '0' after 70 ns, '1' after 80 ns '0' after 90 ns '1' after 100 ns '1' after 110 ns1 after 80 ns, 0 after 90 ns, 1 after 100 ns, 1 after 110 ns, '1' after 120 ns, '1' after 130 ns, '0' after 140 ns, '1' after 150 ns,'1' after 160 ns, '0' after 170 ns, '1' after 180 ns, '1' after 190 ns,'0' ft 200 '1' ft 210 '1' ft 220 '0' ft 230'0' after 200 ns, '1' after 210 ns, '1' after 220 ns, '0' after 230 ns,'1' after 240 ns, '1' after 250 ns, '1' after 260 ns, '0' after 270 ns, '1' after 280 ns, '0' after 290 ns;
u0 : pattern_detector port map(bitstream => bitstream,
detect flag => opendetect_flag > open, reset_disp_n => rst_n, dispclk=>clk);
d i
32/55
end sim ;
패턴 검출기의 설계패턴 검출기의 설계
패턴 검출기의 시뮬레이션 파형 예 패턴 검출기의 시뮬레이션 파형 예
33/55
패턴 검출기의 설계패턴 검출기의 설계
파일 입력을 통한 검증 파일 입력을 통한 검증 짧은 데이터 :
대용량 데이터의 테스트 경우 파일 처리 필요 데이터가 파일 형태로 저장되어 있는 경우
34/55
패턴 검출기의 설계패턴 검출기의 설계
패턴 검출기의 테스트 벤치 구성 예 패턴 검출기의 테스트 벤치 구성 예use STD.TEXTIO.all;
중략-- 중략process (dispclk, reset_disp_n)file INFILE_BS : text open read_mode is "bitstream.txt";
i bl b l li i bl b i t i t 0 t 1variable bs_val : line; variable bs_int : integer range 0 to 1;begin
if (reset_disp_n='0') thenbitstream <= '0';
elsif (dispclk='1' and dispclk'event) thenif not (endfile(INFILE BS)) then( ( _ ))
readline(INFILE_BS, bs_val);read(bs_val, bs_int);
end if;end if;if bs_int = 0 then bitstream <= '0';else bitstream <= '1'; end if;
end if;
35/55
end if; end process;
패턴 검출기의 설계패턴 검출기의 설계
파일 입력을 이용한 패턴 검출기의 시뮬레이션 파형 파일 입력을 이용한 패턴 검출기의 시뮬레이션 파형
36/55
패턴 검출기의 설계패턴 검출기의 설계
파일 입력을 이용한 패턴 검출기의 시뮬레이션 파형 파일 입력을 이용한 패턴 검출기의 시뮬레이션 파형
37/55
디지털 동기 신호 검출기 설계디지털 동기 신호 검출기 설계
디지털 데이터의 동기 신호 정보 표현 디지털 데이터의 동기 신호 정보 표현
HSYNC
DigitalD
1280T362T4T 4T
EAV SAV Video DataBlanking Codewords EAVDataStream
eav0000FF sav0000FF
38/55
디지털 동기 신호 검출기 설계디지털 동기 신호 검출기 설계
디지털 데이터의 EAV/SAV 시퀀스 정보 디지털 데이터의 EAV/SAV 시퀀스 정보
4567 0123Bit number
MSB LSB
1111 1111FF
0000 000000
00 0000 0000
HVF1 P0P1P2P3eav/sav
39/55
디지털 동기 신호 검출기 설계디지털 동기 신호 검출기 설계
동기 신호 검출기 설계 문제 동기 신호 검출기 설계 문제 클럭을이용하여 이용하여 생성한 영상 데이터 스트림이
지속적으로 입력 입력 예) 23 35 129 210 255 0 0 80
입력 영상 데이터 스트림에서 다음의 패턴을 검출 255 0 0
위의 패턴이 입력될 경우 detect_flag를 ‘1'로 출력하고나머지 경우에는 ’0‘을 출력
40/55
디지털 동기 신호 검출기 설계디지털 동기 신호 검출기 설계
상태 천이도 상태 천이도
41/55
디지털 동기 신호 검출기 설계디지털 동기 신호 검출기 설계
시뮬레이션 파형 예 시뮬레이션 파형 예
42/55
디지털 동기 신호 검출기 설계디지털 동기 신호 검출기 설계
시뮬레이션 파형 예 시뮬레이션 파형 예
43/55
ALU의 설계ALU의 설계
ALU의 종류 및 기능 ALU의 종류 및 기능
44/55
ALU의 설계ALU의 설계
ALU 설계 시 고려사항 ALU 설계 시 고려사항 각각 4비트의 두 개의 입력 데이터
A(3 downto 0), B(3 downto 0)
자리 올림 데이터 입력 Cn, 출력 Cn+4
입력 제어 신호 S(2 downto 0)
4비트의 출력 데이터 F(3 downto 0)
45/55
ALU의 설계ALU의 설계
자리 올림과 자리 빌림 규칙 자리 올림과 자리 빌림 규칙
82
뎃셈 연산
82
뺄셈 연산
55 5580 5682+ 17
99
82+ 17+ 1
00
55- 55
00
55- 55- 1
99
80+ 17+ 1
98
56- 55- 1
0099 001
00 99-1
Cn = ‘0’ Cn = ‘1’ Cn = ‘1’ Cn = ‘1’ Cn = ‘0’ Cn = ‘0’
98 00
Cn 0 Cn 1 Cn 1 Cn 1 Cn 0 Cn 0Cn+4 = ‘0’ Cn+4 = ‘0’ Cn+4 = ‘1’ Cn+4 = ‘1’ Cn+4 = ‘1’ Cn+4 = ‘0’
46/55
ALU의 설계ALU의 설계
ALU의 VHDL 표현library ieee;
ALU의 VHDL 표현
use ieee.std_logic_1164.all ;use ieee.std_logic_unsigned.all;entity ls382a isyport ( cn : in std_logic;
s : in std_logic_vector(2 downto 0);a, b : in std logic vector (3 downto 0);a, b : in std_logic_vector (3 downto 0);f : out std_logic_vector(3 downto 0);cn4: out std_logic);
end;end;architecture behavioral of ls382a is
constant CLEAR : std_logic_vector(2 downto 0) := "000";B MINUS A d l i (2 d 0) "001"constant B_MINUS_A : std_logic_vector(2 downto 0) := "001";
constant A_MINUS_B : std_logic_vector(2 downto 0) := "010";constant A_PLUS_B : std_logic_vector(2 downto 0) := "011";
47/55
-- 중략
ALU의 설계ALU의 설계
ALU의 VHDL 표현 계속begin
ALU의 VHDL 표현 - 계속
process (s, a, b, cn)begin
case s iswhen CLEAR => f <= "0000"; cn4 <= '0';when B_MINUS_A => -- 중략when A MINUS B => -- 중략when A_MINUS_B 중략when A_PLUS_B => -- 중략when A_XOR_B => f <= a XOR b; cn4 <= cn;when A OR B => f <= a OR b; cn4 <= cn;when A_OR_B => f <= a OR b; cn4 <= cn;when A_AND_B => f <= a AND b; cn4 <= cn;when PRESET => f <= "1111"; cn4 <= cn;
h th f "0000" 4 '0'when others => f <= "0000"; cn4 <= '0';end case;
end process;
48/55
end behavioral;
ALU의 설계ALU의 설계
시뮬레이션 파형 예 시뮬레이션 파형 예
49/55
ALU의 설계ALU의 설계
ALU의 8비트 확장 ALU의 8비트 확장
A(3:0) B(3:0)A(7:4) B(7:4)
ALU(U1)S ALU(U0)S
c(0)c(4)c(8)F(3:0)F(7:4)
c(0)c(4)c(8)
50/55
ALU의 설계ALU의 설계
8비트 ALU의 VHDL 표현 8비트 ALU의 VHDL 표현
architecture behavioral of ALU 8bit isarchitecture behavioral of ALU_8bit issignal carry : std_logic;component ls382a
t ( i td l i i td l i t (2 d t 0)port ( cn : in std_logic; s : in std_logic_vector (2 downto 0);a, b : in std_logic_vector (3 downto 0); f : out std_logic_vector (3 downto 0); cn4: out std_logic);
end component;beginu0 alu : ls382a port map ( cn => cin, s(2 downto 0) => s(2 downto 0), _ p p ( , ( ) ( ),
a(3 downto 0) => a(3 downto 0), b(3 downto 0) => b(3 downto 0), f(3 downto 0) => f(3 downto 0), cn4 => carry);
u1 alu : ls382a port map ( cn => carry s(2 downto 0) => s(2 downto 0)u1_alu : ls382a port map ( cn > carry, s(2 downto 0) > s(2 downto 0), a(3 downto 0) => a(7 downto 4), b(3 downto 0) => b(7 downto 4), f(3 downto 0) => f(7 downto 4), cn4 => cout);
end behavioral;
51/55
end behavioral;
ALU의 설계ALU의 설계
8비트 ALU의 시뮬레이션 파형 예 8비트 ALU의 시뮬레이션 파형 예
52/55
ALU의 설계ALU의 설계
생성문을 이용한 32비트 ALU
a, b : in std_logic_vector (31 downto 0);
생성문을 이용한 32비트 ALU
-- 중략begincarry(0) <= cin;y( ) ;g0 : for i in 0 to 7 generate
u0_alu : ls382aport map (port map (
cn => carry(i),s(2 downto 0) => s(2 downto 0),(3 d t 0) > (4*i+3 d t 4*i)a(3 downto 0) => a(4*i+3 downto 4*i),
b(3 downto 0) => b(4*i+3 downto 4*i),f(3 downto 0) => f(4*i+3 downto 4*i),cn4 => carry(i+1));
end generate;cout <= carry(8);
53/55
y( )end behavioral;
ALU의 설계ALU의 설계
제네릭과 생성문을 이용한 ALUgeneric (N : integer := 8);port ( a b : in std logic vector (4*N 1 downto 0);
제네릭과 생성문을 이용한 ALU
port ( a, b : in std_logic_vector (4*N-1 downto 0);-- 중략
begin(0) < icarry(0) <= cin;
g0 : for i in 0 to N-1 generateu0_alu : ls382a
port map (cn => carry(i),s(2 downto 0) => s(2 downto 0),( ) ( )a(3 downto 0) => a(4*i+3 downto 4*i),b(3 downto 0) => b(4*i+3 downto 4*i),f(3 downto 0) => f(4*i+3 downto 4*i),f(3 downto 0) f(4 i+3 downto 4 i),cn4 => carry(i+1));
end generate;cout <= carry(8);
54/55
cout <= carry(8);end behavioral;