8) Bộ nhân nối tiếp
4.5 Bộ ghi dịch
Chúng ta biết có một số loại ghi dịch thường được sử dụng là:
Bộ ghi dịch lô-gic: Thực hiện việc dịch một số sang trái hoặc phải và điền vào các vị
trí trống các bít 0. Các phép dịch này thường được kí hiệu là >> hoặc << trong ngôn ngữ Verilog. Ví dụ 1011 LSR 1 = 0101, 1011 LSL 1 = 0110.
Bộ ghi dịch số học: Cũng tương tự như bộ ghi dịch lô-gic, nhưng trong các phép dịch
phải nó sẽ điền các vị trí bít bậc cao nhất với các bản sao của bít dấu (để hiển thị dấu một cách đúng đắn, các số bù 2 mở rộng khi sử dụng phép dịch phải bởi k nhịp tương ứng với việc chia bởi 2k). Các thao tác này được ký hiệu là >>> hoặc <<< trong ngôn ngữ Verilog. Ví dụ 1011 ASR 1 = 1101, 1011 ASL 1 = 0110.
Bộ ghi dịch vòng (quay): Thực hiện việc quay vòng các số theo vòng tròn sao cho các
vị trí trống được điền đầy bởi các bít được dịch ra khỏi ở phía đầu cuối bộ ghi. Ví dụ 1011 ROR 1 = 1101, 1011 ROL 1 = 0111.
130 Bộ ghi dịch hình phễu (funnel shifter) có thể thực hiện cả ba thao tác vừa nêu. Bộ ghi dịch loại này thực hiện việc chắp nối hai đầu vào N-bít và lựa chọn một vùng con N-bít của Y, như trong minh họa hình 4.49 [12].
Hình 4.49Minh họa hoạt động của bộ ghi dịch hình phễu
Bảng 4.5 [12] liệt kê các đầu vào cần được sử dụng để thực hiện một thao tác dịch trái hoặc dịch phải đi k bít của một từ N-bít A. Việc tạo ra độ lệch (offset) cho các phép dịch trái yêu cầu một phép trừ số bù 2. Nếu N là một số lũy thừa của 2 thì bộ ghi dịch hình phễu có thể được đơn giản hóa hơn bằng cách chấp nhận một đầu vào (2N-1)-bít Z và bằng cách đơn giản lấy phần bù của các bít 1 (tức là thực hiện việc đảo theo bít) của phần dịch cho các phép dịch trái, như minh họa trong bảng 4.6 [12].
Bảng 4.5: Hoạt động của bộ ghi dịch hình phễu
Kiểu dịch B C Offset
Dịch phải logic 0…0 AN-1…A0 k
Dịch trái logic AN-1…A0 0…0 N-k
Dịch phải số học AN-1…AN-1 AN-1…A0 k
Dịch trái số học AN-1…A0 0 N-k
Dịch phải vòng AN-1…A0 AN-1…A0 k
Dịch trái vòng AN-1…A0 AN-1…A0 N-k
Bộ ghi dịch hình phễu có thể hỗ trợ mọi loại thao tách dịch và quay vòng bằng cách chọn các đầu vào Z thích hợp, hoặc nó có thể nối mạch cứng (hardwire) cho các thao tác ghi dịch đặc biệt nào đó.
Bảng 4.6: Bộ ghi dịch hình phễu đơn giản hóa
Kiểu dịch Z Offset
Dịch phải logic 0…0, AN-1…A0 k
Dịch trái logic AN-1…A0, 0…0 k
Dịch phải số học AN-1…AN-1, AN-1…A0 k
Dịch trái số học AN-1…A0, 0…0 k
Dịch phải vòng AN-2…A0, AN-1…A0 k Dịch trái vòng AN-1…A0, AN-1…A1 k
Thiết kế của một bộ ghi dịch hình phễu đơn giản nhất bao gồm một mảng các bộ ghép kênh NN-đầu vào chấp nhận các tín hiệu lựa chọn 1-trong-N (một bộ ghép kênh cho mỗi bít đầu ra). Một bộ ghi dịch mảng như vậy được minh họa trong hình 4.50 [12] trong đó sử dụng các transistor truyền nMOS cho các bộ ghi dịch 4-bít. Đại lượng dịch được đảo ngược cưỡng
131 bức và được mã hóa thành các tín hiệu lựa chọn, các tín hiệu này được dẫn theo trục thẳng đứng đi qua mảng.
Hình 4.50Bộ ghi dịch hình phễu mảng
Các đầu ra được lấy theo phương ngang. Mỗi hàng transistor được gắn với một đầu ra để tạo thành một trong các bộ ghép kênh. Các đầu vào 2N-1 chạy theo phương đường chéo tới các đầu vào ghép thích hợp. Sơ đồ layout hình que của một trong N2
transistor trong mảng được minh họa trong hình 4.51 [12]. Các transistor truyền chịu một sự rơi ngưỡng, nhưng vấn đề này có thể được giải quyết bằng cách tiền nạp các đầu ra hoặc bằng cách sử dụng các cổng truyền CMOS đầy đủ.
132
Hình 4.52Bộ ghi dịch hình phễu nhiều mức
Bộ ghi dịch mảng làm việc tương đối tốt đối với các bộ dịch kích thước trung bình trong các thiết kế mức transistor, nhưng có dung kháng ký sinh cao trong các bộ ghi dịch lớn hơn và không tuân theo các thiết kế ô tiêu chuẩn (standard cell). Hình 4.52 [12] minh họa một bộ ghi dịch 4-bít dựa trên nhiều mức của các bộ ghép kênh nhỏ hơn (các bộ mà, tất nhiên, có thể là các cổng truyền). Một cách tổng quát, mức đầu tiên dịch đi N/2, mức thứ hai dịch đi N/4, ..., cho đến mức cuối cùng được dịch đi 1. Với cấu trúc như vậy, không cần thiết phải có bộ giải mã. Các cổng XOR trên các đầu vào điều khiển đảo cưỡng bức đại lượng cần dịch cho các phép dịch trái.
Các lựa chọn dịch khác, bao gồm cả việc tráo đổi, đảo bít, trao đổi bít, đôi khi cũng được yêu cầu. Các bộ ghi dịch cho các lựa chọn này cũng được xây dựng từ các kết hợp thích hợp của các bộ ghép kênh. Tốc độ của một bộ ghi dịch N-bít tỷ lệ thuận với log(N), do đó việc dịch có thể nói là một thao tác nhanh. Các bộ ghép kênh 4:1 làm việc tốt trong các bộ ghi dịch lớn hơn nhằm giảm nhỏ số lượng các mức lô-gic.