Anda di halaman 1dari 10

DEL INSTITUTE OF TECHNOLOGY

UJIAN TENGAH SEMESTER - TEORI


Semester II 2017/2018

Tanggal Ujian Sabtu, 07 April 2018


Mata Kuliah IF31280 Pemrograman Berorientasi Objek
Waktu Pengerjaan 110 menit
Pengajar Good Fried Panggabean

14S15046
NIM : _____________

NAMA Kumatetsu76
: _____________________________

KELAS Angkatan Sekarat


: _____________

PETUNJUK
Sebelum mengerjakan soal UTS, Anda diharapkan untuk membaca
petunjuk pengerjaan berikut ini:
1. Lembar soal terbagi atas lima bagian, yaitu bagian A, B, C, D, dan E.
Bagian A, B, C, D, E wajib untuk Anda jawab dengan nilai maksimal: 105.
2. Baca petunjuk pengerjaan masing-masing bagian dengan seksama.
3. Soal bagian B, C, dan D dijawab pada tempat yang telah disediakan pada
kertas soal halaman 10, soal bagian A dan E dijawab langsung pada
kotak yang tersedia pada soal.
4. Tulislah nama, NIM dan kelas Anda di tempat yang telah disediakan pada
lembar soal dan lembar jawaban.
5. Ujian bersifat closed book.

Total Jumlah Halaman 11 (termasuk halaman sampul)

BERKAS SOAL UJIAN DIKUMPULKAN KEMBALI


Bagian A – Benar Atau Salah [Total Nilai: 20]

Tulislah jawaban anda pada tempat yang disediakan pada halaman 10.
1. F Logic cell dapat diconfigurasi untuk menyediakan interkoneksi antar logic cell dan
programmable switch dapat dikostumisasi untuk melakukan fungsi sederhana.
2. F Kamera digital merupakan embedded system yamg tidak begitu membutuhkan pemrosesan
gambar khusus dan kemampuan kompresi.
3. F Kebanyak embedded system harus memenuhi constrain real-time, artinya respon sistem tidak
boleh datang terlambat tetapi boleh datang lebih dini dari yang ditentukan.
4. T Embedded system biasanya terhubung ke physical environment (lingkunga fisik) melalui
sensor dan aktuator.
5. T Salah satu perbedaan embedded system (ES) dengan General Purpose Computing (GPC)
adalah EC tidak dapat diprogram oleh end user sedangkan GPC dapat diprogram oleh end user.
6. T Implementasi ES dengan FPGA memberikan performance power effeciency yang lebih baik
dibandingkan microcontroller atau DSPs, namun microcontroller atau DSPs memberikan
fleksibilitas yang lebih baik dibandingkan FPGA.
7. T VHDL adalah hardware description language yang dapat digunakan untuk mendefinisikan
fungsionalitas FPGA.
8. T Simulasi digunakan untuk menguji fungsionalitas desain Anda sebelum
mengimplementasikannya perangkat keras.
9. T Kode VHDL dibagi menjadi tiga bagian: deklarasi library, deklarasi entity, dan
architecture body
10. F vSemua VHDL proses (process) pada architecture akan aktif sepanjang waktu ketika
architecture tersebut aktif.
11. T Semua signal yang dideklarasikan pada entity akan visible di semua architectures yang
ditetapkan untuk entity ini.
12. F Tipe data std_logic VHDL hanya mempunyai dua nilai ‘1’ dan ‘0’.
13. T Embedded system berbasis SoPC memberikan dimensi baru dari segi fleksibilitas karena baik
hardware dan software dapat kostumisasi untuk memenuhi kebutuhan khusus.
14. F Software/hardware partition adalah tahapan untuk menentukan tugas-tugas apa yang
diimplementasikan sebagai hardware dan software. Tugas dengan kompleksitas yang tinggi
tetapi tidak membutuhkan constrain waktu yang tinggi sebaiknya diimplementasikan sebagai
hardware.
15. F NIOS II adalah hard processor core yang disediakan oleh vendor FPGA Altera.
16. T Kebanyakan FPGA menyediakan embedded memori on-chip, ukuran memori ini tergantung
pada kepadatan perangkat FPGA yang digunakan.
17. F NIOS II processor mendukung cache dan virtual memory, virtual memory ini dapat
diimplementasikan hanya dengan System Operasi tanpa menggunakan memory management
unit.
18. T Nios II processor menggunakan metode memory-mapped I/O untuk melakukan input dan
output antara prosesor dan perangkat peripheral.
19. T PIO (parallel input/output) core menyediakan memory-mapped interface antara port Avalon
interconnect dan general-purpose I/O port.
20. F HAL (hardware abstraction layer) mendefinisikan basic routines untuk berinteraksi dengan
perangkat I/O.

PST/UTS Hal. 2 dari 10


Bagian B – Melengkapi Kode Program [Total Nilai: 15]

1. A. [5] Jelaskan apa yang dimaksud dengan embedded system?


Jawab:
An embedded system is a computer system with a dedicated function within a larger mechanical or
electrical system, often with real-time computing constraints. It is embedded as part of a complete
device often including hardware and mechanical parts

B. [5] Jelaskan 4 perbedaan implementasi embedded system dengan microcontroller vs FPGA?


Jawab:
Specifications Microcontroller FPGA

Principle of Desired program is flashed in the Desired program to hardwire


operation microcontroller which executes the logic circuit of FPGA is
instruction consecutively. It works based loaded. Based on this logic
on software program. FPGA works as desired.
Software C, C++, C# etc. VHDL, Verilog
Programming
Language used
Application Suitable to be used for serial execution of It is used for parallel
instruction. Here speed is proportional to execution.
execution time of the instruction.
Processing power It is time limited. The execution depends It is space limited. More is
on processor cycling power. the work, more is the logic
circuits required to be
created on FPGA chip.

Components All the required components are It requires RAM, ROM and
needed sufficiently available on chip itself. No external storage. Almost
external components are needed unless most of the FPGA boards
for specific requirements. come up with these
components in order to
have rapid prototype
developments.

2. [10] Saat merancang sistem komputer, kita harus mempertimbangkan berbagai factor seperti
cost, general computation speed, special computation need, real-time constraint, reliability,
power consumption. Gambarkan radar chart untuk sistem berikut (a) microwave oven dan (b)
vehicle ESC system dan berikan penjelasan untuk kedua chart tersebut.
Jawab:

PST/UTS Hal. 3 dari 10


3. [10] Masalah pertama yang harus diselesaikan saat merancang sistem tertanam adalah memilih
jenis perangkat apa yang akan digunakan sebagai central processing unit. Untuk masing-
masing kasus berikut, tunjukkan jika tugas yang terbaik ditangani dengan menggunakan
perangkat FPGA, ASIC, atau menggunakan mikrokontroler dan jelaskan mengapa anda
memilih perangkat tersebut (masing-masing 5 point).
a. Anda harus membuat sensor wireless untuk memantau semua jembatan di Sumatera
Utara. Masing-masing dari 1000 atau lebih jembatan akan membutuhkan rata-rata 10
sensor (sekitar 100 jembatan hanya membutuhkan 2 sensor). Node sensor wireless ini
umumnya akan dimatikan kecuali sensor getaran (vibration sensor) menyebabkan
perangkat untuk bangun (wake up), dalam hal ini akan diperlukan pembacaan sederhana
dari sensor getaran (vibration sensor) dan kemudian power akan kembali mati (down).
Perangkat akan memiliki sel surya kecil menjaga baterai tetap terisi.
Jawab:
Mikrokontroler karena tidak perlu konstrain waktu yg tinggi, sensor yang diguanakn sederhana,
dibutuhkan jumlah yg banyak perlu perimbangan harga yang lebih murah.
b. Anda harus membuat perangkat yang mengontrol scanning tunneling electron
microscope untuk laboratorium fisika. Mikroskop menghasilkan data 100KB data per
detik dari berbagai sensor tidak standar (termasuk sensor analog, pulse-width based
sensors, dan enam atau lebih perangkat I2C yang membutuhkan update setiap 50 μs).
Output sistem terdiri dari tiga SPI streams: dua ke motor dan satu ke servo, serta
koneksi USB ke PC sebagai tempat data dikirimkan.
Jawab:
FPGA karena ada konstrain waktu update 50 us hanya bs diimplementasikan dengan FPGA, akusisi
data yang cukup tinggi, seonsor yang beragam dan tidak standard termasuk PWS.

4. [Total 25] Tuliskan VHDL untuk mengimplementasikan rangkaian four-bit ripple-carry adder
seperti gambar berikut.

PST/UTS Hal. 4 dari 10


a. [5] Tuliskan VHDL entity untuk mengimplementasikan 2-to1 multiplexer subcircuit

Multiplexer 1 bit 2 to 1
LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY mux2to1 IS
PORT(
x,y,s : IN STD_LOGIC;
m : OUT STD_LOGIC
);
END mux2to1;

ARCHITECTURE Arch OF mux2to1 IS


BEGIN
m <= (NOT (s) AND x) OR (s AND y);
END Arch;

b. [10] Tuliskan VHDL entity untuk mengimplementasikan full adder subcircuit yamg
menginstansiasi satu buah 2-to1 multiplexer
Full adder subcircuit
LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY fadder IS
PORT(
a,b,ci : IN STD_LOGIC;
s, co : OUT STD_LOGIC
);
END fadder;

ARCHITECTURE Arch OF fadder IS


COMPONENT mux2to1
PORT(
x,y,s : IN STD_LOGIC;
m : OUT STD_LOGIC
);
END COMPONENT;
SIGNAL tmp_xor : STD_LOGIC;
BEGIN
tmp_xor <= a XOR b;
s <= ci XOR tmp_xor;
m2to1: mux2to1 PORT MAP (x=>b , y => ci, s=>tmp_xor , m=>co);

PST/UTS Hal. 5 dari 10


END Arch;

c. [10]Tuliskan top-level VHDL entity untuk mengimplementasikan four-bit ripple-carry


adder circuit yamg menginstansiasi empat buah full adder.
Top-level VHDL

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY bit4fadder IS
PORT(
a4, b4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
cin : IN STD_LOGIC;
s4 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
cout : OUT STD_LOGIC
);
END bit4fadder;

ARCHITECTURE Behavior OF bit4fadder IS


COMPONENT fadder
PORT(
a,b,ci : IN STD_LOGIC;
s, co : OUT STD_LOGIC
);
END COMPONENT;
SIGNAL c1,c2,c3 : STD_LOGIC;
BEGIN
fadd0 : fadder PORT MAP (a=>a4(0), b=>b4(0), ci=>cin, s=>s4(0), co=>c1);
fadd1 : fadder PORT MAP (a=>a4(1), b=>b4(1), ci=>c1, s=>s4(1), co=>c2);
fadd2 : fadder PORT MAP (a=>a4(2), b=>b4(2), ci=>c2, s=>s4(2), co=>c3);
fadd3 : fadder PORT MAP (a=>a4(3), b=>b4(3), ci=>c3, s=>s4(3), co=>cout);
END Behavior;

5. [Total 25] Diketahui sebuah rangkaian division dengan entity seperti gambar berikut akan
digunakan sebagai accelerator untuk mempercepat operasi pembagian. Rangkaian pembagi
memiliki dua port data masukan (dvnd dan dvsr), dua port data output (quo dan rmd), satu
sinyal kontrol (start), dan dua sinyal status (ready dan done_tick). Sinyal ready bernilai 1
ketika rangkaian siap untuk mengambil input data baru. Rangkaian ini akan diintegrasikan
dengan system NIOS II menggunakan custom I/O peripheral dengan PIO cores.

a. [7] Jika lebar data adalah 32 bit, tuliskan instansiasi modul PIO yang diperlukan untuk
mengintegrasikan rangkaian pembagi tersebut. Tuliskan pada table berikut :
Nama Modul Lebar data Direction
dvnd 32-bit output-only
dvsr 32-bit output-only
start 1-bit output-only
quo 32-bit input-only

PST/UTS Hal. 6 dari 10


rmd 32-bit input-only
ready 1-bit input-only
done .tick 1-bit input-only

b. [10] Jika diketahui contoh VHDL untuk deklarasi sistem NIOS dari Qsys seperti
dibawah ini, tuliskan top-level HDL file untuk menginstansiasi nios system dan
rangkaian division, gunakan internal signal untuk menghubungkan rangkaian division
dan Nios II processor.
component nios_system is
port (
clk_clk : in std_logic := 'X'; -- clk
reset_reset_n : in std_logic := 'X'; -- reset_n
switch_export : in std_logic_vector(9 downto 0) := (others => 'X'); -- export
ledg_export : out std_logic_vector(7 downto 0); -- export
ledr_export : out std_logic_vector(9 downto 0); -- export
sseg_export : out std_logic_vector(31 downto 0); -- export
btn_export : in std_logic_vector(3 downto 0) := (others => 'X'); -- export
done_tick_external_connection_export : in std_logic := 'X'; -- export
ready_external_connection_export : in std_logic := 'X'; -- export
rmd_external_connection_export : in std_logic_vector(31 downto 0) := (others => 'X'); -- export
quo_external_connection_export : in std_logic_vector(31 downto 0) := (others => 'X'); -- export
start_external_connection_export : out std_logic; -- export
dvsr_external_connection_export : out std_logic_vector(31 downto 0); -- export
dvnd_external_connection_export : out std_logic_vector(31 downto 0) -- export
);
end component nios_system;

u0 : component nios_system
port map (
clk_clk => CONNECTED_TO_clk_clk, -- clk.clk
reset_reset_n => CONNECTED_TO_reset_reset_n, -- reset.reset_n
switch_export => CONNECTED_TO_switch_export, -- switch.export
ledg_export => CONNECTED_TO_ledg_export, -- ledg.export
ledr_export => CONNECTED_TO_ledr_export, -- ledr.export
sseg_export => CONNECTED_TO_sseg_export, -- sseg.export
btn_export => CONNECTED_TO_btn_export, -- btn.export
done_tick_external_connection_export => CONNECTED_TO_done_tick_external_connection_export, -- done_tick_external_connection.export
ready_external_connection_export => CONNECTED_TO_ready_external_connection_export, -- ready_external_connection.export
rmd_external_connection_export => CONNECTED_TO_rmd_external_connection_export, -- rmd_external_connection.export
quo_external_connection_export => CONNECTED_TO_quo_external_connection_export, -- quo_external_connection.export
start_external_connection_export => CONNECTED_TO_start_external_connection_export, -- start_external_connection.export
dvsr_external_connection_export => CONNECTED_TO_dvsr_external_connection_export, -- dvsr_external_connection.export
dvnd_external_connection_export => CONNECTED_TO_dvnd_external_connection_export -- dvnd_external_connection.export
);

Jawab:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;

ENTITY nios_divl_top IS
PORT (
CLOCK_50 : IN STD_LOGIC;
KEY : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
SW : IN STD_LOGIC_VECTOR (9 DOWNTO 0);
LEDG : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
LEDR : OUT STD_LOGIC_VECTOR (9 DOWNTO 0);
HEX0, HEX1,HEX2,HEX3 : OUT STD_LOGIC_VECTOR (6 DOWNTO 0)
);
END nios_divl_top;

ARCHITECTURE arch OF nios_divl_top IS


COMPONENT nios_system
port (
clk_clk : in std_logic := 'X';
-- clk
reset_reset_n : in std_logic := 'X';
-- reset_n
switch_export : in std_logic_vector(9 downto 0) := (others =>
'X'); -- export
ledg_export : out std_logic_vector(7 downto 0);
-- export
ledr_export : out std_logic_vector(9 downto 0);
-- export
sseg_export : out std_logic_vector(31 downto 0);
-- export
btn_export : in std_logic_vector(3 downto 0) := (others =>
'X'); -- export

PST/UTS Hal. 7 dari 10


done_tick_external_connection_export : in std_logic := 'X';
-- export
ready_external_connection_export : in std_logic := 'X';
-- export
rmd_external_connection_export : in std_logic_vector(31 downto 0) := (others =>
'X'); -- export
quo_external_connection_export : in std_logic_vector(31 downto 0) := (others =>
'X'); -- export
start_external_connection_export : out std_logic;
-- export
dvsr_external_connection_export : out std_logic_vector(31 downto 0);
-- export
dvnd_external_connection_export : out std_logic_vector(31 downto 0)
-- export
);
END COMPONENT;
SIGNAL sseg4 : std_logic_vector(31 downto 0);
SIGNAL dvnd, dvsr, quo, rmd: std_logic_vector(31 downto 0);
SIGNAL start, ready, done_tick: std_logic;

COMPONENT division
generic (
W : integer:=8;
CBIT: integer:=4 -- CBIT=log2(W)+l
);
port(
clk, reset : in std_logic;
start : in std_logic;
dvsr, dvnd: in std_logic_vector(W-1 downto 0);
ready, done_tick: out std_logic;
quo, rmd: out std_logic_vector(W-1 downto 0)
);
END COMPONENT;
BEGIN
-- instantiate processor
u0 : component nios_system
port map (
clk_clk => CLOCK_50, -- clk.clk
reset_reset_n => KEY(0), -- reset.reset_n
switch_export => SW(9 DOWNTO 0), -- switch.export
ledg_export => LEDG(7 DOWNTO 0), -- ledg.export
ledr_export => LEDR(9 DOWNTO 0), -- ledr.export
sseg_export => sseg4, -- sseg.export
btn_export => KEY(3 DOWNTO 0), -- btn.export
done_tick_external_connection_export => done_tick, -- done_tick_external_connection.export
ready_external_connection_export => ready, -- ready_external_connection.export
rmd_external_connection_export => rmd, -- rmd_external_connection.export
quo_external_connection_export => quo, -- quo_external_connection.export
start_external_connection_export => start, -- start_external_connection.export
dvsr_external_connection_export => dvsr, -- dvsr_external_connection.export
dvnd_external_connection_export => dvnd -- dvnd_external_connection.export

);

-- instantiate division circuit


u1 : component division
generic map(W=>32, CBIT=>5)
port map(clk=>CLOCK_50, reset=>'0', start=>start,
dvsr=>dvsr, dvnd=>dvnd, quo=>quo, rmd=>rmd,
ready=>ready, done_tick=>done_tick);

HEX0 <= sseg4(30 DOWNTO 24);


HEX1 <= sseg4(22 DOWNTO 16);
HEX2 <= sseg4(14 DOWNTO 8);
HEX3 <= sseg4(6 DOWNTO 0);
--LEDG <= rmd(7 downto 0);
END arch;

c. [8] Berikut adalah main program yang digunakan untuk mengakses dan berkomunikasi
dengan peripheral. Lengkapi listing program dibawah ini, Gunakan fungsi read dan
write dari Altera io.h untuk mengirim dan me

PST/UTS Hal. 8 dari 10


#include "alt_types.h"
#include "system.h"
#include "io.h"

int main()
{

alt_u32 a,b,q, r, ready, done;

/* Event loop never exits. */


printf("Division accelerator test #1: \n\n");

while (1){
printf("Perform division a / b = q remainder r\n");
printf("Enter a: " );
scanf ("%d " , &a);
scanf ("%d" , &b);

//send data a to division accelerator


IOWR(DVND_BASE, 0, a);
//send data b to division accelerator
IOWR(DVSR_BASE, 0, b);
// wait until the division accelerator is ready
while (1) {
ready = IORD(READY_BASE,0)& 0x00000001;
if(ready == 1)
break;
}

printf("Start . . . \ n " ) ;
// generate a start pulse
IOWR(START_BASE, 0, 1);
// wait for completion
while (1) {
done = IORD(DONE_TICK_BASE , 0) & 0x00000001;
if (done== 1)
break ;
}
// clear done-tick register
IOWR(DONE_TICK_BASE , 0, 1);
// retrieve results from division accelerator
q = IORD(QUO_BASE,0);
r = IORD(RMD_BASE,0);
printf (" Hardware : %u / %u = %u remainder %u\n" , a, b, q, r) ;
/* compare results with built—in C operators */
printf (" Software : %u / %u = %u remainder %u\n\n\n" , a, b, a/b, a%b) ;

}// end while

return 0;
}

Akhir Soal Ujian

PST/UTS Hal. 9 dari 10


NIM : _____________________
NAMA : __________________________________
KELAS : _____________________
Jawaban – Bagian B
1. 2. 3. 4. 5.
2.
6. 7. 8. 9. 10.
Pernyataan Yang Benar Jika Jawaban Anda Salah (S) Adalah:
1.
2.
3.
4.
5.
6.
3.
7.
8.
9.
10.
Jawaban – Bagian C
1. 6. 11. 16. 21.
2. 7. 12, 17. 22.
3. 8. 13, 18. 23.
4. 9. 14. 19. 24.
5. 10. 15. 20. 25.

Jawaban – Bagian D
1.

Anda mungkin juga menyukai