Danh mục

Giáo trình Thực hành thiết kế logic số: Bài 3

Số trang: 10      Loại file: pdf      Dung lượng: 1.01 MB      Lượt xem: 16      Lượt tải: 0    
10.10.2023

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Giáo trình Thực hành thiết kế logic số - Bài 3: Khối dịch và thanh ghi dịch giúp sinh viên viết mô tả và kiểm tra cho khối dịch bằng các phương pháp khác nhau: bằng toán tử dịch, bằng sơ đồ thuật toán dịch, cách tạo nhiều giá trị kiểm tra bằng mã VHDL, cách viết và sử dụng thực thể có nhiều kiến trúc.
Nội dung trích xuất từ tài liệu:
Giáo trình Thực hành thiết kế logic số: Bài 3Khoa Vô tuyến điện tửBộ môn Kỹ thuật Xung, số, VXL Thực hành: Thiết kế logic số Bài 03: Khối dịch và thanh ghi dịchMục đích Viết mô tả và kiểm tra cho khối dịch bằng các phương pháp khácnhau: bằng toán tử dịch, bằng sơ đồ thuật toán dịch. Các tạo nhiều giátrị kiểm tra bằng mã VHDL, cách viết và sử dụng thực thể có nhiều kiếntrúc.Công cụ phục vụ thực hành : Máy vi tínhThời gian : 1h301. Khối dịch dùng toán tử dịch Các phép toán quan hệ gồm sll, srl, sla, sra, rol, ror đượchỗ trợ trong thư viện ieee.numeric_bit, và ieee.numeric_std. Cú pháp của cáclệnh dịch có hai tham số là sho (shift operand) và shv (shift value), ví dụ cúpháp của sll như sau sha sll shv;Toán Phép toán Kiểu của sho Kiểu của Kiểu kết quảtử shvsll Dịch trái logic Mảng 1 chiều kiểu BIT hoặc Integer Cùng kiểu sho BOOLEANsrl Dịch phải logic Mảng 1 chiều kiểu BIT hoặc Integer Cùng kiểu sho BOOLEANsla Dịch trái số học Mảng 1 chiều kiểu BIT hoặc Integer Cùng kiểu sho BOOLEANsra Dịch phải số học Mảng 1 chiều kiểu BIT hoặc Integer Cùng kiểu sho BOOLEANrol Dịch vòng tròn Mảng 1 chiều kiểu BIT hoặc Integer Cùng kiểu sho sang trái BOOLEANror Dịch vòng tròn Mảng 1 chiều kiểu BIT hoặc Integer Cùng kiểu sho phải BOOLEAN Đối với dich logic thì tại các vị trí bị trống sẽ được điền vào các giá trị ‘0’còn dịch số học thì các các vị trí trống được thay thế bằng bit có trọng số caonhất MSB nếu dịch phải, và thay bằng bit có trọng số thấp nhất nếu dịch trái.Đối với dịch vòng thì các vị trí khuyết đi sẽ được điền bằng các bit dịch ra ngoàigiới hạn của mảng. Quan sát ví dụ dưới đây # sho = 11000110 # sho sll 2 = 00011000 # sho srl 2 = 00110001 # sho sla 2 = 00011000 # sho sra 2 = 11110001 # sho rol 2 = 00011011 # sho ror 2 = 10110001Bước 1: Viết cho khối dịch logic phải.Hướng dẫn: (file mô tả có tên shifter.vhd) Sơ đồ khối của khối dịch như sau: Shift_in Shift_value SHIFTERToán tử dịch có cấu trúc: Shift_out = Shift_in sll shift_value;Trong đó bắt buộc shift_in và shift_out có kiểu BIT_VECTOR, còn shift_value cókiểu INTEGER.Trên thực tế các đầu vào này cần được khai báo dạng STD_LOGIC_VECTOR đểtương thích với các khối khác do vậy có các hàm chuyển đổi sau: TO_BITVECTOR(shift_in) - chuyển sang kiểu BIT_VECTOR; CONV_INTEGER(„0‟ & shift_value) – chuyển sang kiểu INTEGER; TO_STDLOGICVECTOR(sho) – chuyển ngược lại STD_LOGIC_VECTOR;Chú ý rằng khi chuyển sang kiểu INTEGER cần thêm bit 0 đằng trước để lấyđúng giá trị biểu diễn không dấu của giá trị dịch.Khi đó buộc phải khai báo thư viện như sau: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; USE ieee.Numeric_STD.all; USE ieee.Numeric_BIT.all; Với các tín hiệu dầu vào là STD_LOGIC_VECTOR ta phải khai báo các tínhiệu trung gian kiểu tương thích với lệnh dịch ở phần khai báo kiến trúc: signal shi: bit_vector(31 downto 0); signal sho: bit_vector(31 downto 0); signal sa : integer; Dựa trên hướng dẫn trên viết khối dịch dùng toán tử cho phép dịch phảicho chuỗi 32-bit đầu vào.Bước 2: Viết module kiểm tra cho khối dịch ở bước 1.Hướng dẫn: Ở bài thực hành trước chúng ta quen với cách kiểm tra nhanh với1 tổ hợp đầu vào. Ở bài này sẽ làm quen với phương pháp kiểm tra nhanh chomột số tổ hợp giá trị đầu vào. Để làm được như cần bổ xung vào phần mô tảkiến trúc của khối kiểm tra đoạn mã tạo các dữ liệu đầu vào bằng lệnh wait for.Ví dụ như sau: create_data: process begin shift_in -- khoi dich su dung toan tu dich architecture behavioral of shifter_32 is begin ... --Mo ta kien trúc 1 end behavioral; -- khoi dich su dung thuat toan dich don gian architecture rtl of shifter_32 is Begin --mota kien trúc 2 end rtl; Thuật toán dịch không sử dụng toán tử dịch như sau:Nhận xét rằng độ phức tạp của khối dịch trên nằm ở chỗ giá trị dịch là khôngxác định, nếu giá trị dịch xác định thì phép dịch có thể thực hiện hết sức dễdàng bằng toán tử hợp &. Ví dụ để dịch chuỗi bit đi 4 bit logic sang phải shift_out = “0000” & shift_in(31 downto 4); Từ đó có thể xây dựng khối dịch bằng sơ đồ thuật toán đơn giản như ...

Tài liệu được xem nhiều: