Permasalahan Ripple Carry Adder dalam FPGA menggunakan VHDL

Diagram ripple carry ditunjukkan pada gambar 1.

Gambar 1

secara khusus dapat digambarkan menurut gambar 2.

Gambar 2.

Sehingga dengan mengasumsikan full adder yang dibentuk secara struktural dari beberapa half adder maka VHDL dari ripple carry ini sebagaimana berikut,

library ieee;

use ieee.std_logic_1164.all;

use work.pack.all;

ENTITY addbit IS

PORT (a :   IN   std_logic_vector(2 downto 0);

b : IN   std_logic_vector(2 downto 0);

cin : IN   std_logic;

s :   OUT std_logic_vector(2 downto 0);

cout :   OUT   std_logic);

END;

ARCHITECTURE struktural OF addbit IS

SIGNAL cin1, cin2: std_logic;

BEGIN

fa0: fa PORT MAP(a(0),b(0), cin, s(0), cin1 );

fa1: fa PORT MAP(a(1),b(1), cin1, s(1), cin2 );

fa2: fa PORT MAP(a(2),b(2), cin2, s(2), cout );

END;

atau bisa juga menggunakan deskripsi architecture yang lebih singkat lagi, dengan cara menuliskan kode VHDL-nya sebagai berikut,

ARCHITECTURE struktural OF addbit IS

SIGNAL cy : std_logic_vector (3 downto 0);

BEGIN

Penjumlah:

FOR i IN 0 TO 2 GENERATE

myfa:fa PORT MAP(a(i),b(i),cy(i),s(i),cy(i+1));

END GENERATE;

cout <= cy(3);

cy(0) <= cin;

END;

Rangkaian carry ripple sangat lambat pewaktuannya karena banyaknya penyambungan per langkah blok rangkaian penjumlah separuhnya, sehingga untuk mengatasi hal ini bisa menggunakan metode pipelining, retiming atau dengan cara bus. Namun, cara yang paling sering digunakan adalah pipelining.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s