intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Trần Văn Thắng | Ngày: | Loại File: PDF | Số trang:7

151
lượt xem
12
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Giáo trình Thực hành thiết kế logic số - Bài 2: Xây dựng bộ cộng trừ trên cơ sở khối cộng bằng toán tử thông qua ví dụ xây dựng khối cộng trừ sử dụng toán tử +, trong bài thực hành này sinh viên tự viết mô tả cho các khối thiết kế, qua đó ôn tập lại các cấu trúc lệnh tuần tự, cách sử dụng tham số tĩnh, cách cài đặt module con, và cuối cùng là cách thức kiểm tra thiết kế.

Chủ đề:
Lưu

Nội dung Text: Giáo trình Thực hành thiết kế logic số: Bài 2

  1. Khoa 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 02: Xây dựng bộ cộng trừ trên cơ sở khối cộng bằng toán tử Mục đích Thông qua ví dụ xây dựng khối cộng trừ sử dụng toán tử +, trong bài thực hành này sinh viên tự viết mô tả cho các khối thiết kế, qua đó ôn tập lại các cấu trúc lệnh tuần tự, cách sử dụng tham số tĩnh, cách cài đặt module con, và cuối cùng là cách thức kiểm tra thiết kế. Công cụ phục vụ thực hành : Máy vi tính Thời gian : 1h30
  2. 1. Khối cộng đơn giản Khối cộng đơn giản: thực hiện phép cộng giữa hai số được biểu diễn dưới dạng std_logic_vector hay bit_vector. Các cổng vào gồm hạng tử A, B, bit nhớ Cin, các cổng ra bao gồm tổng Sum, và bit nhớ ra Cout: A B Cin Cout Σ Sum Hình 2.6: Sơ đồ khối bộ cộng Bước 1: Viết mô tả (adder.vhd) cho khối cộng sử dụng trực tiếp toán tử cộng, đầu vào A, B và đầu ra Sum có kiểu STD_LOGIC_VECTOR 32 bit, Cout và Cin có kiểu STD_LOGIC. Hướng dẫn: 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; Khối cộng đơn giản có thể viết bằng cú pháp SUM
  3. Khi đó giá trị Cout là bit cao nhất của Sum1 Cout
  4. DUT: component adder port map ( A, B, Cin, Sum, Cout); Bước 3: Xem lại phần lý thuyết về khai báo tham số tĩnh, bổ xung vào bộ cộng tham số tĩnh N là số bit. Hướng dẫn: Tham số tĩnh khai báo trong khai báo thực thể của thiết kế. Ví dụ: Entity adder is Generic (N : natural :=32); Port (… Sử dụng giá trị tham số tĩnh này trong thiết kế để tùy biến số Bit của các hạng tử và kết quả như sau: Với các cổng A : in std_logic_vector(N-1 downto 0); Sum : out std_logic_vector(N-1 downto 0); Với các tín hiệu: Signal A1 : std_logic_vector(N downto 0); Bước 4: Thực hiện thay đổi module kiểm tra để kiểm tra cho bộ cộng dùng tham số tĩnh N, thay đổi giá trị N = 16 và thực hiện kiểm tra lại như bước 2. Hướng dẫn: Để cài đặt module có tham số tĩnh thì phải cài đặt tham số tĩnh tương tự như cài đặt các tín hiệu cho cổng, xem ví dụ sau đây: Adder32: component adder generic map (32) port map (A, B, Cin, Sum, Cout); *Lưu ý là sau generic map () không có dấu ; hay , mà để trống. 2. Khối trừ Bước 5: Nghiên cứu cấu trúc khối trừ như sau: Vì các số có dấu trên máy tính được biểu diễn dưới dạng số bù 2 (2’complement), do đó để thực hiện phép trừ A-B thì tương đương với thực hiện A + bù2(B) Xét ví dụ A = 10 = 1010, B = 5 = 0101 biểu diễn dưới dạng số có dấu 5-bit ta phải thêm bit dấu bằng 0 vào trước.
  5. A = 01010, Bù2(A) = not (A) + 1 = 10101 + 1 = 10110 B = 00101, Bù2(B) = not (B) + 1 = 11010 + 1 = 11011 Tính A – B: A 01010 01010 - = - = + B 00101 11011 1 00101 Loại bỏ bit nhớ ở kết quả cuối cùng ta được A – B = 00101 = 5. Tính B – A: B 00101 00101 - = - = + A 01010 10110 0 11011 Loại bỏ bit nhớ ta được B – A = 11101, đây là số âm, muốn tính giá trị tuyệt đối để kiểm tra lại lấy bù 2 của 11101 Bù 2 (11101) = 00100 + 1 = 00101 = 5 vậy B – A = -5 Dựa trên tính chất trên của số bù hai ta chỉ cần thay đổi một chút trong cấu trúc của bộ cộng để nó có khả năng thực hiện cả phép cộng lẫn phép trừ mà không phải thay đổi nhiều về cấu trúc phần cứng. Tại đầu vào có thêm tín hiệu SUB, tín hiệu này quyết định sẽ thực hiện phép cộng hay phép trừ. Khi SUB = 1 để lấy bù 2 của B sẽ lấy đảo B và cho giá trị đầu vào Cin =1, để hiện thực trên mạch cấu trúc bộ cộng được bổ xung một khối MUX trước cổng B, khối này có hai đầu vào là B và not B, nếu SUB= 0 thì B được chọn, nếu SUB = 1 thì not B được chọn. Đầu vào Cin được OR với SUB trước khi vào bộ cộng.
  6. Sub Cin A B MUX Cout Σ Sum Hình 2.8: Sơ đồ khối bộ cộng trừ đơn giản Bước 6: Viết mô tả cho khối MUX 2 đầu vào trên hình vẽ, số bit của các dữ liệu đầu cài đặt bằng tham số tĩnh N như trường hợp của khối cộng, viết module mô phỏng kiểm tra hoạt động của khối MUX. Hướng dẫn: Để viết khối MUX có thể dùng cấu trúc Process có danh sách Sensitive list là các tín hiệu đầu vào và cấu trúc IF THEN / END IF; process (Sel, data_in1, data_in2) if Sel = '1' then data_out
  7. Bước 8: Thực hiện mô phỏng kiểm tra khối cộng trừ, tín hiệu SUB cần được thay đổi theo thời gian để quan sát kết quả với các phép toán khác nhau. Hướng dẫn: Để thay đổi tín hiệu SUB (hoặc bất kỳ tín hiệu nào theo thời gian dùng cấu trúc WAIT FOR của VHDL: … wait for 20 ns; SUB
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
7=>1