Altifigence Academy

2 / 63 · Konsep

Sistem bilangan dan representasi lebar tetap

Selain konversi basis, hitung rentang representasi, jumlah bit yang diperlukan, dan kesalahan pemotongan.

Titik awal mata kuliah

Aljabar tingkat SMA dan pengalaman pemrograman dasar disarankan. Bilangan biner dan aljabar BooleanAljabar Boolean Aljabar nilai 0 dan 1 serta operasi AND, OR, NOT. Tanda tambah biasanya berarti OR, sehingga aturannya berbeda dari penjumlahan bilangan bulat. Selengkapnya dibahas dalam mata kuliah, lalu pembelajaran berjalan cepat pada tingkat awal universitas. Utamakan penentuan kondisi masukan, lebar bit, dan waktu pengamatan serta verifikasi melalui contoh, bukan sekadar menghafal rumus.

Bedakan pola bit dan nilainya

Rangkaian menyimpan deretan bit yang berhingga. Kontrak desain menentukan interpretasinya sebagai bilangan bulat, nilai bertanda, atau bilangan titik tetapTitik tetap Representasi dengan posisi titik tetap yang menerapkan skala tertentu pada pola bit bilangan bulat. Lebar, tanda, dan jumlah bit pecahan harus ditetapkan bersama. Selengkapnya. Pelajaran ini mengasumsikan pengetahuan operasi bilangan bulat dan perpangkatan, lalu langsung membahas perhitungan rentang yang diperlukan dalam RTL.

Interpretasi nilai unsignedUnsigned Interpretasi pola bit sebagai bilangan bulat nonnegatif. Rentang n bit adalah 0 hingga 2^n−1 dan dapat berbeda dari interpretasi signed pola yang sama. selebar NN bit adalah:

u=∑i=0N−1bi2i,0≤u≤2N−1u=\sum_{i=0}^{N-1}b_i2^i,\qquad 0\le u\le 2^N-1

10110110 bernilai 128+32+16+4+2=182128+32+16+4+2=182. Jika dikelompokkan per empat bit, hasilnya B6, sehingga 8'hB6 dan 8'b10110110 menyatakan pola bit yang sama. Satu digit heksadesimal selalu mewakili empat bit, sehingga alamat, mask, dan bentuk gelombang mudah dikonversi.

Pola bit tetap, interpretasi berbeda

Ubah b7 di bawah. Pada interpretasi unsigned, bobot 128 ditambahkan; pada komplemen duaKomplemen dua Representasi bilangan bulat bertanda dengan pola bit berlebar tetap. Rentang n bit adalah −2^(n−1) hingga 2^(n−1)−1. Selengkapnya, bobot bit paling signifikan adalah −128. Buat 0x7F dan 0x80 untuk membandingkan batas kedua interpretasi.

Bit dan representasi bilangan

10110110 → unsigned 182 · signed -74 · hex 0xB6

Mengubah pola bit berbeda dari menafsirkannya sebagai signed. Walaupun lebar rangkaian sama-sama delapan bit, informasi tanda yang diterima operator dapat mengubah hasil perbandingan.

Tentukan rentang sebelum lebar bit

Jumlah bit minimum untuk membedakan MM keadaan adalah:

N=⌈log⁡2M⌉N=\left\lceil\log_2 M\right\rceil

Menghitung 0 hingga 999 memerlukan representasi 1000 nilai, sehingga dibutuhkan 10 bit. Dari 0 hingga 1024 ada 1025 nilai, sehingga dibutuhkan 11 bit. Mencampuradukkan nilai maksimum dan jumlah keadaan menyebabkan kekurangan satu bit tepat di batas. Jika RTL diparameterkan hingga M=1M=1, batasi lebar minimum menjadi 1 agar tidak terbentuk vektor nol bit.

Apa yang terjadi pada sinyal lebih sempit?

Penyimpanan unsigned yang membuang bit tinggi dan menyisakan NN bit adalah operasi modulo.

xstored=x mod 2Nx_{stored}=x\bmod 2^N

Hasil perhitungan 9 bit sebesar 300 yang disimpan dalam delapan bit menyisakan 44. Ini bukan pembulatan atau saturasi. Saturasi memerlukan rangkaian tersendiri untuk mendeteksi pelampauan rentang dan memilih nilai maksimum.

SystemVerilog
logic [7:0] a, b, low;
logic [8:0] full_sum;
assign full_sum = {1'b0, a} + {1'b0, b};
assign low = full_sum[7:0];

Kedua operand diperluas terlebih dahulu agar maksud mempertahankan carry jelas. Jangan menganggap notasi basis saja menentukan tanda atau lebar hasil. Interpretasi bentuk gelombang membutuhkan lebar, tanda, dan basis.

Coba sendiri

Berapa bit yang diperlukan untuk menghitung dari 0 hingga 4095 dan dari 0 hingga 4096? Nilai apa yang tersisa jika 511 disimpan dalam unsigned delapan bit?

Baca penjelasan

Rentang pertama memiliki 4096=2124096=2^{12} nilai sehingga memerlukan 12 bit; rentang kedua memiliki 4097 nilai sehingga memerlukan 13 bit. Karena 511 mod 256=255511\bmod256=255, nilai tersimpan adalah 8'hFF. Ini saja tidak membuktikan tidak terjadinya overflow.

Pilihan berlaku di peramban ini. Ubah kapan saja di bagian bawah halaman.