Giáo trình Thực hành thiết kế logic số: Bài 2
Số trang: 7
Loại file: pdf
Dung lượng: 939.17 KB
Lượt xem: 16
Lượt tải: 0
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 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ế.
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 2Khoa 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ử +, trongbà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ínhThời gian : 1h301. 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ễndưới dạng std_logic_vector hay bit_vector. Các cổng vào gồm hạng tử A, B, bitnhớ 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ộngBướ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 Khi đó giá trị Cout là bit cao nhất của Sum1 Cout 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 thamsố 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ạngtử 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ựchiệ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-bitta phải thêm bit dấu bằng 0 vào trước. A = 01010, Bù2(A) = not (A) + 1 = 10101 + 1 = 10110 B = 00101, Bù2(B) = not (B) + 1 = 11010 + 1 = 11011Tính A – B: A 01010 01010 - = - = + B 00101 11011 1 00101Loạ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 11011Loạ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 = 5vậ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 trongcấ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ínhiệu SUB, tín hiệu này quyết định sẽ thực hiện phép cộng hay phép trừ. KhiSUB = 1 để lấy bù 2 của B sẽ lấy đảo B và cho giá trị đầu vào Cin =1, để hiệnthự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 = 1thì not B được chọn. Đầu vào Cin được OR với SUB trước khi vào bộ cộng. Sub Cin A B MUX Cout Σ Sum Hình 2.8: Sơ đồ khối bộ cộng trừ đơn giảnBướ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ínhiệ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 Bước 8: Thực hiện mô phỏ ...
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 2Khoa 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ử +, trongbà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ínhThời gian : 1h301. 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ễndưới dạng std_logic_vector hay bit_vector. Các cổng vào gồm hạng tử A, B, bitnhớ 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ộngBướ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 Khi đó giá trị Cout là bit cao nhất của Sum1 Cout 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 thamsố 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ạngtử 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ựchiệ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-bitta phải thêm bit dấu bằng 0 vào trước. A = 01010, Bù2(A) = not (A) + 1 = 10101 + 1 = 10110 B = 00101, Bù2(B) = not (B) + 1 = 11010 + 1 = 11011Tính A – B: A 01010 01010 - = - = + B 00101 11011 1 00101Loạ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 11011Loạ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 = 5vậ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 trongcấ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ínhiệu SUB, tín hiệu này quyết định sẽ thực hiện phép cộng hay phép trừ. KhiSUB = 1 để lấy bù 2 của B sẽ lấy đảo B và cho giá trị đầu vào Cin =1, để hiệnthự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 = 1thì not B được chọn. Đầu vào Cin được OR với SUB trước khi vào bộ cộng. Sub Cin A B MUX Cout Σ Sum Hình 2.8: Sơ đồ khối bộ cộng trừ đơn giảnBướ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ínhiệ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 Bước 8: Thực hiện mô phỏ ...
Tìm kiếm theo từ khóa liên quan:
Thực hành thiết kế logic số Bài 2 Thực hành thiết kế logic số Thiết kế logic số Xây dựng bộ cộng trừ Khối cộng đơn giản Tài liệu thiết kế logic sốTài liệu liên quan:
-
Bài giảng Thiết kế logic số (VLSI design): Chương 4.3 - Trịnh Quang Kiên
22 trang 51 0 0 -
Giáo trình Thực hành thiết kế logic số: Phụ lục
70 trang 50 0 0 -
Giáo trình Thiết kế logic số: Phần 1
312 trang 29 0 0 -
Bài giảng Thiết kế logic số: Lecture 4.2 - TS. Hoàng Văn Phúc
22 trang 24 0 0 -
Bài giảng Thiết kế logic số (VLSI Design): Chương IV/4.3
22 trang 22 0 0 -
Bài giảng Thiết kế logic số: Lecture 4.1 - TS. Hoàng Văn Phúc
19 trang 20 0 0 -
Bài giảng Thiết kế logic số: Lecture 1 - TS. Hoàng Văn Phúc
45 trang 20 0 0 -
Bài giảng Nhập môn mạch số: Chương 4 - Hà Lê Hoài Trung
49 trang 20 0 0 -
Giáo trình Thực hành thiết kế logic số: Bài 3
10 trang 19 0 0 -
Bài giảng Thiết kế logic số: Lecture 4.3 - TS. Hoàng Văn Phúc
15 trang 19 0 0