6 / 37 · Konsep
Indeks vektor, urutan bit, dan tanda
Baca jalur data dengan memisahkan indeks, urutan transmisi serial, dan interpretasi aritmetika.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
Indeks adalah nama; arah deklarasi menentukan maknanya
Pada logic [7:0] a;, a[7] berada paling kiri. Pada logic [0:7] b;, b[0] paling kiri. Memberi 8'h96 pada keduanya menghasilkan pola kiri-ke-kanan sama, 10010110, tetapi indeks bitnya berbeda. Asumsi “bit 0 selalu LSBLSB Bit berbobot terendah. Periksa arah penulisan dan aturan indeks bersama.” hanya boleh dipakai setelah memeriksa deklarasi.
Arah konsisten di seluruh antarmuka memudahkan peninjauan. Nyatakan juga urutan tampilan gelombang dan array bit berkas. Array JSON masukan mata kuliah ini ditulis mulai LSB; vektor RTL biasanya dibaca mulai MSBMSB Bit berbobot tertinggi. Indeksnya bergantung arah deklarasi vektor, sehingga tidak selalu nomor indeks terbesar..
Periksa arah melalui sambungan nyata
Pada q <= {q[1:0], din};, q[2] berikutnya menerima q[1] lama, q[1] menerima q[0] lama, dan q[0] menerima din.
Indeks mana menerima sinyal mana adalah spesifikasi lebih tepat daripada arah gambar.
Panah menunjukkan posisi penyimpanan yang dilewati satu bit. Semua registerRegister Rangkaian penyimpan beberapa bit keadaan. Register sinkron mata kuliah ini menangkap masukan yang ditentukan pada tepi clock. Selengkapnya membaca nilai lama pada tepi sama; din tidak langsung mencapai q2 dalam satu tepi.
- din: Bit yang diterima pada tepi ini
- q0: Tangkap din
- q1: Tangkap q0 lama
- q2: Tangkap q1 lama
Geser logis dan aritmetika
>> adalah geser kanan logis yang mengisi posisi kosong di kiri, sisi paling signifikan, dengan nol. >>> memperluas tanda ketika operand kirinya signed. Pola sama dapat menghasilkan nilai berbeda menurut deklarasi signed operand.
logic signed [7:0] x;
logic [7:0] logical_right, arithmetic_right;
assign logical_right = x >> 1;
assign arithmetic_right = x >>> 1;Untuk x=8'b11111000 (-8), hasilnya 01111100 dan 11111100. Geser kanan aritmetika bilangan negatif tidak selalu mengikuti aturan pembulatan pembagian bilangan bulat negatif; periksa tersendiri dalam algoritma numerik.
Coba sendiri
Untuk q=101 tiga bit dan din=0, hitung nilai berikutnya dari q<={q[1:0],din} serta q<={din,q[2:1]}.
Baca penjelasan
Keduanya menghasilkan 010: kedua arah kebetulan sama pada masukan ini. Dengan q=001,din=0, hasilnya 010 dan 000, sehingga kesalahan arah dapat dibedakan.