2 / 63 · Konsep
Sistem bilangan dan representasi lebar tetap
Selain konversi basis, hitung rentang representasi, jumlah bit yang diperlukan, dan kesalahan pemotongan.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
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 bit adalah:
10110110 bernilai . 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.
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 keadaan adalah:
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 , 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 bit adalah operasi modulo.
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.
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 nilai sehingga memerlukan 12 bit; rentang kedua memiliki 4097 nilai sehingga memerlukan 13 bit. Karena , nilai tersimpan adalah 8'hFF. Ini saja tidak membuktikan tidak terjadinya overflow.