Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 416 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
416
Dung lượng
9,81 MB
Nội dung
HỌC VIỆN KỸ THUẬT QUÂN SỰ BỘ MÔN KỸ THUẬT XUNG SỐ, VI XỬ LÝ – KHOA VÔ TUYẾN ĐIỆN TỬ THIẾT KẾ LOGIC SỐ (Dùng cho đối tƣợng đào tạo quy hệ quân dân sự) LƢU HÀNH NỘI BỘ HÀ NỘI -2011 CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt LỜI GIỚI THIỆU Thiết kế logic số mơn học chƣơng trình Điện tử số Nội dung chƣơng trình mơn học tập trung vào hai vấn đề kiến thức Thứ toán thiết kế mặt chức cho khối số có mật độ tích hợp lớn cỡ LSI, VLSI lớn Vấn đề thứ hai giới thiệu công nghệ giúp thực hóa thiết kế chức thành sản phẩm ứng dụng, tập trung vào cơng nghệ FPGA, tảng công nghệ phát triển mạnh Khác với toán tổng hợp phân tích Điện tử số chủ yếu toán cho mạch cỡ SSI, MSI, tốn có hƣớng tới ứng dụng cụ thể thực tiễn với quy mô lớn buộc phải sử dụng công cụ trợ giúp thiết kế máy tính ngơn ngữ thiết kế VHDL Chƣơng trình Thiết kế logic số nhắm vào trang bị kiến thức sở ngành cho tất đối tƣợng sinh viên thuộc chuyên ngành kỹ thuật Điện tử viễn thông, Điều khiển tự động Trƣớc học môn sinh viên phải học qua môn sở ngành gồm Cấu kiện điện tử, Điện tử số, Kỹ thuật Vi xử lý hai mơn đầu bắt buộc Thiết kế logic số môn học mang tính thực hành cao nên cấu trúc chƣơng trình dành nhiều thời gian cho thực hành thí nghiệm nhƣ bắt buộc sinh viên kết thúc môn học phải thực đồ án tập thiết kế cỡ vừa lớn theo nhóm dƣới dạng Bài tập lớn Đồ án môn học Kiến thức kỹ sinh viên giúp ích lớn cho toán chuyên ngành Đồ án tốt nghiệp sau ứng dụng xử lý số dần chiếm vai trò quan trọng hệ thống kỹ thuật Bên cạnh cơng cụ truyền thống Vi xử lý, máy tính thiết kế phần cứng FPGA công nghệ tƣơng tự hƣớng phát triển mang lại hiệu vƣợt trội khả ứng dụng thích nghi tốt Giáo trình thức cho mơn học đƣợc hồn thiện sau khóa đào tạo cho sinh viên hệ đào tạo dân sự, quân Học viện Kỹ thuật quân Nhóm tác giả xin chân thành cám ơn ủng hộ nhiệt tình lãnh đạo Khoa Vơ tuyến điện tử, lãnh đạo môn Kỹ thuật xung số, vi xử lý, đồng nghiệp khoa môn có nhiều ý kiến đóng góp quý báu góp phần hồn thiện nội dung cho giáo trình, cám ơn anh chị em nhân viên mơn góp nhiều cơng sức cho cơng việc chế cho giáo trình Nhóm tác giả gửi lời cám ơn tới CuuDuongThanCong.com https://fb.com/tailieudientucntt tồn sinh viên khóa đào tạo trình học tập, nghiên cứu thực tế có ý kiến đóng góp giúp tác giả điều chỉnh khung chƣơng trình nội dung ngày hợp lý hiệu Vì thời gian hạn chế môn học chắn nhiều khiếm khuyết giáo trình Nhóm tác giả mong tiếp tục nhận đƣợc ý kiến đóng góp ngƣời sử dụng, ý kiến gửi Bộ mơn Kỹ thuật Xung số, Vi xử lý – Học viện KTQS vào hòm thƣ điện tử quangkien82@gmail.com Hà nội 12-2011 CuuDuongThanCong.com https://fb.com/tailieudientucntt Mục lục LỜI GIỚI THIỆU DANH SÁCH CÁC KÝ HIỆU VIẾT TẮT 11 Chƣơng 1: CÁC KIẾN THỨC CƠ SỞ 15 Các khái niệm chung 16 1.1 Transitor 16 1.2 Vi mạch số tích hợp 17 1.3 Cổng logic 18 1.4 Phần tử nhớ 20 1.5 Mạch logic tổ hợp 23 1.6 Mạch logic 24 1.7 Các phƣơng pháp thể thiết kế 25 Yêu cầu thiết kế logic 27 Các công nghệ thiết kế mạch logic số 28 Kiến trúc IC khả trình 31 4.1 Kiến trúc PROM, PAL, PLA, GAL 31 4.2 Kiến trúc CPLD, FPGA 36 Câu hỏi ôn tập chƣơng 39 Chƣơng 2: NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL 41 Giới thiệu VHDL 42 Cấu trúc chƣơng trình mơ tả VHDL 43 2.1 Khai báo thƣ viện 44 2.2 Mô tả thực thể 45 2.3 Mô tả kiến trúc 48 2.4 Khai báo cấu hình 53 Chƣơng trình gói 56 CuuDuongThanCong.com https://fb.com/tailieudientucntt 3.1 Thủ tục 56 3.2 Hàm 58 3.3 Gói 59 Đối tƣợng liệu, kiểu liệu 62 4.1 Đối tƣợng liệu 62 4.2 Kiểu liệu 63 Toán tử biểu thức 70 5.1 Toán tử logic 70 5.2 Các phép toán quan hệ 71 5.3 Các phép toán dịch 72 5.4 Các phép toán cộng trừ hợp 74 5.5 Các phép dấu 74 5.6 Các phép toán nhân chia, lấy dƣ 75 5.7 Các phép toán khác 76 Phát biểu 76 6.1 Phát biểu đợi 76 6.2 Phát biểu xác nhận báo cáo 79 6.3 Phát biểu gán biến 80 6.4 Phát biểu gán tín hiệu 81 6.5 Lệnh rẽ nhánh lệnh lặp 83 Phát biểu đồng thời 87 7.1 Phát biểu khối 88 7.2 Phát biểu trình 89 7.3 Phát biểu gán tín hiệu đồng thời 92 7.4 Phát biểu generate 95 7.5 Phát biểu cài đặt khối 97 Phân loại mã nguồn VHDL 99 Kiểm tra thiết kế VHDL 101 CuuDuongThanCong.com https://fb.com/tailieudientucntt 9.1 Kiểm tra nhanh 102 9.1 Kiểm tra tự động nhiều tổ hợp đầu vào 104 Bài tập chƣơng 111 Bài tập 111 Câu hỏi ôn tập lý thuyết 116 Chƣơng 3: THIẾT KẾ CÁC KHỐI MẠCH DÃY VÀ TỔ HỢP THÔNG DỤNG 117 Các khối 118 1.1 Khối cộng đơn giản 118 1.2 Khối trừ 119 1.3 Khối cộng thấy nhớ trƣớc 121 1.4 Thanh ghi 125 1.5 Bộ cộng tích lũy 127 1.6 Bộ đếm 129 1.7 Bộ dịch 131 1.8 Thanh ghi dịch 133 Các khối nhớ 136 2.1 Bộ nhớ RAM 136 2.2 Bộ nhớ ROM 139 2.3 Bộ nhớ FIFO 141 2.4 Bộ nhớ LIFO 142 Máy trạng thái hữu hạn 143 Khối nhân số nguyên 145 4.1 Khối nhân số nguyên không dấu dùng phƣơng pháp cộng dịch 146 4.2 Khối nhân số nguyên có dấu 150 4.3 Khối nhân dùng mã hóa Booth số 155 Khối chia số nguyên 158 5.1 Khối chia dùng sơ đồ khôi phục phần dƣ 159 CuuDuongThanCong.com https://fb.com/tailieudientucntt 5.2 Khối chia dùng sơ đồ không khôi phục phần dƣ 162 5.3 Khối chia số nguyên có dấu 164 Các khối làm việc với số thực 169 6.1 Số thực dấu phẩy tĩnh 169 6.2 Số thực dấu phẩy động 170 6.3 Chế độ làm tròn số thực dấu phẩy động 173 6.4 Phép cộng số thực dấu phẩy động 176 6.5 Phép nhân số thực dấu phẩy động 181 6.6 Phép chia số thực dấu phẩy động 183 Bài tập chƣơng 186 Bài tập 186 Câu hỏi ôn tập lý thuyết 194 Chƣơng 4: THIẾT KẾ MẠCH SỐ TRÊN FPGA 195 Tổng quan kiến trúc FPGA 196 1.2 Khái niệm FPGA 196 1.3 Ứng dụng FPGA xử lý tín hiệu số 198 1.4 Công nghệ tái cấu trúc FPGA 199 1.5 Kiến trúc tổng quan 200 Kiến trúc chi tiết Xilinx FPGA Spartan-3E 201 2.1 Khối logic khả trình 204 2.2 Khối điều khiển vào 221 2.3 Hệ thống kết nối khả trình 224 2.4 Các phần tử khác FPGA 227 Quy trình thiết kế FPGA ISE 237 3.1 Mô tả thiết kế 238 3.2 Tổng hợp thiết kế 239 3.3 Hiện thực hóa thiết kế 244 3.4 Cấu hình FPGA 250 CuuDuongThanCong.com https://fb.com/tailieudientucntt 3.5 Kiểm tra thiêt kế FPGA 250 Một số ví dụ thiết kế FPGA ISE 251 4.1 Thiết kế khối nhận thông tin UART 253 4.2 Thiết kế khối điều khiển PS/2 cho Keyboard, Mouse 267 4.3 Thiết kế khối tổng hợp dao động số NCO 270 4.4 Thiết kế khối điều khiển LCD1602A 282 4.5 Thiết kế điều khiển VGA FPGA 294 Bài tập chƣơng 308 Bài tập sở 308 Bài tập nâng cao 309 Câu hỏi ôn tập lý thuyết 312 PHỤ LỤC 313 Phụ lục 1: THỐNG KÊ CÁC HÀM, THỦ TỤC, KIỂU DỮ LIỆU CỦA VHDL TRONG CÁC THƢ VIỆN CHUẨN IEEE 314 Các kiểu liệu hỗ trợ thƣ viện chuẩn IEEE 314 Các hàm thông dụng hỗ trợ thƣ viện chuẩn IEEE 315 Các hàm phục vụ cho trình mơ kiểm tra thiết kế 319 Các hàm biến đổi kiểu liệu dùng VHDL 322 Phụ lục 2: THỰC HÀNH THIẾT KẾ VHDL 325 Bài 1: Mô VHDL ModelSim 326 Bài 2: Xây dựng cộng trừ sở khối cộng toán tử 338 Bài 3: Khối dịch ghi dịch 344 Bài 4: Bộ cộng bit nối tiếp dùng FA (serial-bit adder) 353 Phụ lục 3: MẠCH PHÁT TRIỂN ỨNG DỤNG FPGA 364 Giới thiệu tổng quan 364 Các khối giao tiếp có mạch FPGA 366 2.4 Khối giao tiếp Keypad 367 2.5 Khối 8x2 Led-Diod 367 CuuDuongThanCong.com https://fb.com/tailieudientucntt 2.6 Khối Switch 367 2.7 Khối giao tiếp 4x7-seg Digits 367 2.9 Khối giao tiếp USB 368 2.10 Khối giao tiếp PS/2 368 Phụ lục 4: THỰC HÀNH THIẾT KẾ MẠCH SỐ TRÊN FPGA 371 Bài 1: Hƣớng dẫn thực hành FPGA Xilin ISE Kit SPARTAN 3E 372 Bài 2: Thiết kế khối giao tiếp với 4x7Seg -digits 397 Phụ lục 5: CÁC BẢNG MÃ THÔNG DỤNG 407 Mã ASCII điều khiển 408 Mã ASCII hiển thị 410 Bảng mã ký tự cho LCD 1602A 414 TÀI LIỆU THAM KHẢO 415 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt entity numeric_led is Port ( CLK : in STD_LOGIC; nRESET : in STD_LOGIC; ANOD : out STD_LOGIC_VECTOR (3 downto 0); SEG7 : out STD_LOGIC_VECTOR (7 downto 0) ); end numeric_led; architecture Behavioral of numeric_led is component counter10 IS PORT( clk : in std_logic; reset : in std_logic; clock_enable : in std_logic; count_out : out std_logic_vector(3 DOWNTO 0) ); END component; component clk_div20 IS GENERIC(baudDivide : std_logic_vector(19 downto 0) := x"00000"); PORT( clk_in : in std_logic; clk_out : inout Std_logic ); END component; component scan_digit is Port ( CLK : in STD_LOGIC; ANOD : out STD_LOGIC_VECTOR(3 downto 0); RESET : in STD_LOGIC); end component; component bcd_adder is Port ( a : in STD_LOGIC_VECTOR (3 downto 0); b : in STD_LOGIC_VECTOR (3 downto 0); s1 : out STD_LOGIC_VECTOR (3 downto 0); s2 : out STD_LOGIC_VECTOR (3 downto 0)); end component; component BCD_7seg is Port ( nbcd : in STD_LOGIC_VECTOR (3 downto 0); 402 CuuDuongThanCong.com https://fb.com/tailieudientucntt seg : out STD_LOGIC_VECTOR (7 downto 0)); end component; signal reset, cnt1_enable : std_logic; signal clk0, clk1 : std_logic; signal nbcd0, nbcd1 : std_logic_vector(3 downto 0); signal nbcd2, nbcd3 : std_logic_vector(3 downto 0); signal nbcd : STD_LOGIC_VECTOR(3 downto 0); signal anod_sig, nanod : std_logic_vector(3 downto 0); begin reset