7 / 37 · Konsep
Lebar slice, konkatenasi, dan pengulangan
Bangun jalur data dengan menghitung lebar total dan syarat pelestarian nilai.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
Konkatenasi bukan penjumlahan
{a,b} menempelkan bit b setelah bit a. Untuk lebar M dan N, hasilnya M+N bit. Jika polanya 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. Selengkapnya:
Dengan a=2'b10 dan b=3'b101, hasilnya 5'b10101 atau 21, bukan jumlah aritmetika 7.
Bit a bergeser naik sebanyak lebar b. KonkatenasiKonkatenasi Penyambungan pola bit berdampingan. Lebar hasil adalah jumlah lebar operand, berbeda dari penjumlahan numerik. harus dibaca a×2³+b, bukan a+b.
- a = 10: Lebar 2 bit, bilangan bulat 2
- b = 101: Lebar 3 bit, bilangan bulat 5
- {a,b} = 10101: Lebar 5 bit, 2×8+5=21
Tulis lebar di samping ekspresi
logic [7:0] word;
logic [3:0] upper, lower;
logic [7:0] swapped;
assign upper = word[7:4];
assign lower = word[3:0];
assign swapped = {lower, upper};Masukan 8'hA3 menghasilkan swapped=8'h3A. Kesalahan batas sliceSlice Pemilihan rentang bit berurutan pada vektor. Rentang pilihan menentukan lebar dan urutan bit hasil. mengubah lebar atau nilai. Seleksi parsial dapat dianggap sebagai nilai unsigned tersendiri meskipun berasal dari vektor signed; periksa kembali maknanya sebelum operasi signed.
Perluasan tanda dan pengulangan
logic signed [3:0] small;
logic signed [7:0] extended;
assign extended = {{4{small[3]}}, small};Empat salinan bit tanda disambung dengan empat bit asli menjadi delapan bit. Perluasan tanda bukan menambah 1 ketika MSBMSB Bit berbobot tertinggi. Indeksnya bergantung arah deklarasi vektor, sehingga tidak selalu nomor indeks terbesar. Selengkapnya=1, melainkan memperlebar susunan bit sambil mempertahankan nilai interpretasinya.
Pergeseran generik dengan q[N-2:0] tidak memiliki rentang valid untuk N=1. Batasi lebar minimum atau tangani N=1 melalui cabang generate. Mengganti angka dengan parameter saja belum menyelesaikan parameterisasi.
Coba sendiri
a adalah 101 tiga bit dan b adalah 11 dua bit. Tentukan lebar serta nilai {a,b}, lalu hasil penyimpanan pada empat bit.
Baca penjelasan
Lebarnya lima bit, polanya 10111, nilainya . Pada empat bit, bit tinggi dibuang dan tersisa 0111 atau 7.