Giáo trình Vi mạch số lập trình cung cấp cho người học những kiến thức như: Đại cương về điều khiển lập trình cỡ nhỏ; Các tập lệnh của dữ liệu; Các phép toán số của bộ lập trình cỡ nhỏ; Lắp đặt mô hình điều khiển bằng bộ lập trình cỡ nhỏ;...Mời các bạn cùng tham khảo!
BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP VÀ THƯƠNG MẠI GIÁO TRÌNH Tên mơ đun: Vi mạch số lập trình NGHỀ: ĐIỆN TỬ CƠNG NGHIỆP TRÌNH ĐỘ TRUNG CẤP/CAO ĐẲNG NGHỀ Ban hành kèm theo Quyết định số: /QĐ-CĐCNPY, ngày tháng năm 2018 Hiệu trưởng trường Cao đẳng Công nghiệp Thương mại Vĩnh Phúc, năm 2018 MỤC LỤC Trang CHƯƠNG TRÌNH MƠ ĐUN BÀI 1: ĐẠI CƯƠNG VỀ LẬP TRÌNH CỠ NHỎ 1.1.Tổng quan điều khiển lập trình: .4 1.1.1 Điều khiển nối cứng điều khiển lập trình .4 1.1.2.Cấu trúc lậpi tình cỡ nhỏ 1.2.Thiết bị điều khiển lập trình 11 1.2.1 Địa ngõ vào/ 11 1.2.2 Phần chữ vị trí kích thước ô nhớ 13 1.2.3 Ma trận Fast CONNECT Switch 14 1.2.4 Cấu trúc nhớ 15 1.3 Xử lí chương trình 16 1.3.1 Vịng qt chương trình 16 1.3.2 Cấu trúc chương trình 16 1.3.3 Phương pháp lập trình 21 1.4 Cài đặt sử dụng phần mềm 22 1.4.1 Những yêu cầu với máy tính PC 22 1.4.2 Cài đặt phần mềm lập trình ứng dụng 24 BÀI 2: CÁC TỆP LỆNH CỦA DỮ LIỆU 26 2.1 Các liên kết logic 26 2.1.1 Các lệnh vào/ra lệnh tiếp điểm đặc biệt 26 2.1.2 Các lệnh liên kết logic 28 2.1.3 Liên kết cổng logic 31 2.2.4 Bài tập ứng dụng 34 2.2 Các lệnh ghi/xóa giá trị cho tiếp điểm 34 2.2.1 Lệnh Set(s) Reset(r) 34 2.2.2 Các ví dụ 35 2.3.Timer 40 2.3.1 On - Delay Timer (TON) 40 2.3.2 Retentive On - Delay Timer (TONR) 53 2.4 Couter (Bộ đếm) 55 2.4.1 Bộ đếm lên (Counter up) 55 2.4.2 Bộ đếm lên/ xuống (Counter up - down) 56 BÀI 3: CÁC PHÉP TOÁN SỐ CỦA BỘ LẬP TRÌNH CỠ NHỎ 61 3.1.Chức truyền dẫn 61 3.1.1 Truyền Byte, Word, Doubleword 61 Tạo Project ISE 69 3.2 Chức so sánh 74 3.2.1 Chức dịch chuyển 74 3.3 Đồng hồ thời gian 104 BÀI 4:LẮP ĐẶT MƠ HÌNH ĐIỀU KHIỂN BẰNG LẬP TRÌNH CỠ NHỎ 107 4.1 Giới thiệu 107 Cách nối dây 107 4.3 Các mô hình tập ứng dụng 108 4.3.1 Điều khiển van điện từ cuộn dây 108 4.3.3 Điều khiển hệ thống cung cấp thuỷ lực 114 4.3.4 Điều khiển hệ thống thơng gió 116 4.3.5 Điều khiển động thuận nghịch 119 CHƯƠNG TRÌNH MƠ ĐUN Tên mơ đun: VI MẠCH SỐ LẬP TRÌNH (FPGA) Mã mô đun: Thời gian thực mô đun: 75 (Lý thuyết: 15 giờ; Thực hành: 57 giờ; KT: giờ) I Vị trí, tính chất mơ đun: - Vị trí: Trước học mơ đun cần hồn thành mơn học sở nghề số mô đun chuyên môn nghề như: PLC bản, Kỹ thuật Vi điều khiển - Tính chất: Là mơ đun tự chọn chương trình đào tạo ngành/ nghề Điện tử công nghiệp II Mục tiêu mô đun: - Về kiến thức: + Trình bày nguyên lý hệ điều khiển lập trình cỡ nhỏ + Phân tích cấu tạo phần cứng nguyên tắc hoạt động lập trình cỡ nhỏ - Về kỹ năng: + Thực số toán ứng dụng đơn giản công nghiệp + Kết nối thành thạo phần cứng lập trình cỡ nhỏ, PC với thiết bị ngoại vi Viết chương trình nạp chương trình vào lập trình cỡ nhỏ để thực số toán ứng dụng đơn giản công nghiệp - Về lực tự chủ trách nhiệm: + Chủ động, sáng tạo đảm bảo an tồn q trình học tập + III Nội dung mô đun: Nội dung tổng quát phân phối thời gian: Thời gian STT Tên mơ đun Tổng số Lý thuyết Thực hành, thí Kiểm nghiệm, tra thảo luận, tập Bài 1: Đại cương điều khiển lập trình cỡ nhỏ 2 0 15 10 1.1 Tổng quát điều khiển lập trình 1.2 Thiết bị điều khiển lập trình 1.3 Xử lý chương trình 1.4 Cài đặt sử dụng phần mềm Bài 2: Các tập lệnh liệu 2.1 Các liên kết logic 2.2 Các lệnh ghi/xóa giá trị cho tiếp điểm 2.3 Timer 2.4 Couter (Bộ đếm) Bài 3: Các phép toán số lập trình cỡ nhỏ 3.1 Chức truyền dẫn 3.2 Chức so sánh 3.3 Đồng hồ thời gian thực 30 25 Bài 4: Lắp đặt mơ hình điều khiển lập trình cỡ nhỏ 4.1 Giới thiệu 28 22 75 15 57 4.2 Cách kết nối dây 4.3 Các mơ hình tập ứng dụng Cộng: BÀI 1: ĐẠI CƯƠNG VỀ LẬP TRÌNH CỠ NHỎ Mục tiêu: - Trình bày cấu trúc nhiệm vụ khối chức lập trình cỡ nhỏ - Thực kết nối lập trình cỡ nhỏ thiết bị ngoại vi - Mô tả cấu trúc chương trình lập trình cỡ nhỏ - Chủ động, sáng tạo đảm bảo an tồn q trình học tập Nội dung chính: 1.1.Tổng quan điều khiển lập trình: 1.1.1 Điều khiển nối cứng điều khiển lập trình Vi mạch khả trình gồm dạng sau: v SPLD (Simple Programmable Logic Device) bao gồm loại IC khả trình PROM, PAL, PLA, GAL Đặc điểm chung nhóm IC chứa số lượng cổng tương đương vài chục (PROM) đến vài trăm (PAL, GAL) cổng v CPLD (Complex Programmable Logic Device) IC khả trình phức tạp thường ghép từ nhiều SPLD chip đơn Số lượng cổng tương đương CPLD đạt từ hàng nghìn đến hàng chục nghìn cổng v FPGA (Field – Programmable Gate Array) IC khả trình cấu trúc từ mảng khối logic lập trình PROM (Programmable Read – Only Memory) phát minh Wen Tsing Chow năm 1956 làm việc Arma Division công ty American Bosch Arma Garden, New York PROM chế tạo theo đơn đặt hàng từ lực lượng không quân Mỹ lúc với mục đích có thiết bị lưu trữ tham số mục tiêu cách an toàn linh động Thiết bị dùng máy tính hệ thống phóng tên lửa Atlas E/F giữ bí mật vịng vài năm trước Atlas E/F trở nên phổ biến PROM vi mạch lập trình đơn giản nhóm vi mạch bán dẫn lập trình (PLD – Programmable Logic Device) PAL (Programmable Array Logic) đời cuối năm 1970 Cấu trúc PAL kế thừa cấu trúc PROM, sử dụng hai mảng logic PROM mảng OR mảng lập trình PAL mảng AND lập trình được, cịn mảng OR gắn cứng, nghĩa thành phần tích thay đổi tổ hợp chúng cố định, cải tiến tạo linh hoạt việc thực hàm khác Ngồi cấu trúc PAL cịn phân biệt với PROM đầu mảng OR lập trình được dẫn khối logic gọi Macrocell PLA (Programmable Logic Array) đời năm 1975, chip lập trình thứ hai sau PROM Cấu trúc PLA không khác nhiều so với cấu trúc PAL, ngoại trừ khả lập trình hai ma trận AND OR Nhờ cấu trúc mà PLA có khả lập trình linh động hơn, bù lại tốc độ PLA thấp nhiều so với PROM PAL sản phẩm loại Thực tế PLA ứng dụng không nhiều nhanh chóng bị thay cơng nghệ GAL, CPLD,… GAL (Generic Array Logic) phát triển công ty Lattice Secmiconductor vào năm 1983 Cấu trúc GAL không khác biệt PAL thay lập trình sử dụng cơng nghệ cầu chì nghịch GAL dùng cơng nghệ PROM CMOS xóa điện, mà đơi tên gọi GAL sử dụng, mà gọi PAL cải tiến Tất chip khả trình PROM, PAL, GAL có khuyết điểm thiết kế đơn giản, chi phí thấp cho sản xuất thiết kế, chuyển dễ dàng từ công nghệ sang công nghệ khác Tuy nhiên, nhược điểm tốc độ làm việc thấp, số lượng cổng logic tương đương nhỏ, khơng đáp ứng thiết kế phức tạp đòi hỏi nhiều tài nguyên tốc độ cao hơn, mà CPLD (Complex Programmable Logic Devices) đời CPLD Altera tiên phong nghiên cứu chế tạo đầu tiên, nhằm tạo IC khả trình dung lượng lớn MAX5000, MAX7000 Sau thành cơng hãng Altera, loạt hãng khác bắt tay vào nghiên cứu chế tạo CPLD Xilinx với dòng sản phẩm họ CPLD XC95xx, Lattice với họ ISP Mach 4000, ISP March XO,… Số lượng cổng CPLD ngày trở nên nhỏ cho ứng dụng lớn phức tạp Năm 1985, cơng ty Xilinx đưa ý tưởng hồn tồn mới, kết hợp thời gian hồn thành sản phẩm khả điều khiển PLD với mật độ ưu chi phí Gate Array để tạo FPGA (Field Programmable Gate Array) Hiện nay, Xilinx nhà sản xuất chip FPGA số giới FPGA có cấu trúc hoạt động phức tạp CPLD 1.1.2.Cấu trúc lậpi tình cỡ nhỏ Trong phần trình bày cấu trúc số loại IC khả trình thuộc dịng SPLD PAL, GAL, PLA PAL: PAL cấu trúc từ mảng AND lập trình mảng OR gắn cứng, đồng thời đầu mảng OR lập trình dẫn khối logic gọi Macrocell hình 1.1 Hình 1.1 – Cấu trúc PAL Hình 1.2 minh họa cho ta thấy macrocell (MC) Mỗi macrocell chứa flip–flop, mux2 mux8 cổng logic ba trạng thái Tín hiệu điều khiển mux4 lập trình phép dẫn tín hiệu qua đầu vào 0, 1, 2, mux4 gửi ngồi cổng giao tiếp IO Tùy thuộc vào cấu hình mà tín hiệu gửi ngồi IO hay khơng Hình 1.2 – Cấu trúc Macrocell Nhờ có cấu trúc macrocell mà PAL sử dụng để thực hàm logic tổ hợp mà hàm logic PLA: Cấu trúc PLA khác cấu trúc PAL chỗ PLA lập trình hai ma trận AND ma trận OR (hình 1.3) Hình 1.3 – Cấu trúc PLA GAL Như trình bày phần 1.1, cấu trúc GAL khơng khác biệt PAL, thay lập trình sử dụng cơng nghệ cầu chì nghịch GAL sử dụng cơng nghệ PROM CMOS xóa điện, GAL cho phép lập trình lại giống EEPROM 109 Hằng số kiểu sized: khai báo số kiểu sized ta quan tâm đến tầm giá trị số Có thể coi số có kiểu sized số có kiểu Dạng biểu diễn: ‘ Trong đó: v : biểu diễn dạng số thập phân để số bit tối đa số v : hệ số v : Chứa giá trị số phải phù hợp với Ví dụ: 4’b1111; 12’habc; 16’d255; //đây số nhị phân bit //đây số thập lục phân 12 bit // số thập phân 16 bit Hằng số kiểu unsized: Khai náo số kiểu unsized không quan tâm đến tầm giá trị số Ta coi số kiểu unsized số khơng có kiểu Dạng biểu diễn: ‘ Nếu khơng có ngầm định thập phân Do không khai báo nên số bit tối đa phụ thuộc vào trình mơ phỏng, trình biên dịch có giá trị bit tối thiểu 32 bit Ví dụ: 23456; // số thập phân 32 bit ‘hc3; // số hex 32 bit ‘o21; // số octan 32 bit c Giá trị tùy định tổng trở cao: Verilog có hai ký hiệu biểu diễn giá trị tùy định tổng trở cao, giá trị quan trọng thiết kế mạch số: Giá trị tùy định ký hiệu “ x ”, giá trị tổng trở cao ký hiệu “ z ” Ví dụ: 12’h13x; 2’bzz; //đây số hex 12 bit, bit thấp có giá trị tùy định //đây số nhị phân bit có giá trị tổng trở cao d Số âm: Số âm biểu diễn cách đặt dấu trừ phía trước trị số kích thước Các số kích thước ln ln dương Giá trị khơng hợp lệ ta đặt dấu trừ Ví dụ: -6’d3; //số âm 110 -4’d-2; //cách biểu diễn không hợp lệ e Chuỗi ký tự: Là loạt ký tự nằm dấu ngoặc kép “ ” Chuỗi phải nằm hàng không chứa ký tự Enter Các ký tự chuỗi mã thoát, chuỗi xử lý giá trị liên tục bảng mã ASCII f Kí tự gạch dấu hỏi: Một kí tự gạch “-” chấp nhận đâu số ngoại trừ ký tự Ký tự gạch cho vào dùng để tăng tính dễ đọc số bỏ trình biên dịch Verilog Một dấu chấm hỏi “?” Verilog sử dụng thay cho z biểu diễn số Ví dụ: 12’b1111_0000_1100; //dùng thêm ký tự gạch cho dễ đọc 4’b10?? ; //tương dươi với 4’b10zz 4.3.2 Điều khiển hệ thống cung cấp khí nén a Giá trị thiết lập: Trong Verilog hỗ trợ bốn giá trị (bảng 6.1) tám mức độ mạnh để mô tả chức phần cứng thực Bảng 6.1: Các giá trị thiết lập Mức không, điều kiện không thỏa Mức một, điều kiện X Giá trị tùy định Z Trạng thái tổng trở cao, trạng thái động Tám mức thường sử dụng để giải xung đột tín hiệu khác mạch số Giá trị có thêm mức độ ưu tiên theo bảng 6.2 Bảng 6.2: Các mức ưu tiên Mức ưu tiên Độ ưu tiên 111 Mức ưu tiên Loại Supply Driving Strong Driving Pull Driving Large Storage Weak Driving Medium Storage Small Storage hightz High Impedance Cao Thấp Hai tín hiệu có mức độ ưu tiên điều khiển đường dây, tín hiệu có độ ưu tiên cao chọn Ví dụ, hai tín hiệu có độ ưu tiên strong1 weak0 xung đột, kết giải strong1 Nếu hai tín hiệu có mức ưu tiên nhau, kết không xác định b Kiểu net: Dùng để mô tả kết nối mạch phần cứng thực Kiểu net thực tên đường kết nối mạch Kiểu net thường khai báo từ khóa wire Giá trị mặc định z có độ rộng bit Chú ý net từ khóa, mà lớp liệu wire, wand, wor, tri, triand, trior, trireg,…trong đó, wire sử dụng thường xuyên wire Ví dụ: wire a; //khai báo dây a mạch c Kiểu reg: Biến kiểu reg dùng để lưu trữ giá trị ghi Giá trị lưu trữ có giá trị khác ghi đè lên Khơng nhầm lẫn kiểu ghi Verilog với ghi phần cứng mạch thực Trong Verilog, ghi có nghĩa biến lưu liệu, không cần xung clock ghi phần cứng Giá trị ghi thay đổi lúc Các kiểu ghi thơng thường khai báo từ khóa reg Giá trị mặc định x, độ rộng mặc định bit reg ; 112 Ví dụ: reg a; //khai báo biến a để lưu liệu initial begin a = 1’b1; //cho biến a lưu giá trị #100 a = 1’b0; //sau 100 đơn vị thời gian cho a lưu giá trị end d Kiểu Vector: Net reg khai báo vector (độ rộng nhiều bit) Biến kiểu vector khai báo dạng sau [MSB:LSB], bit có trọng số cao ln ln nằm bên trái ngoặc vng [MSB:LSB] ; Ví dụ: wire [7:0] a; //khai báo biến a kiểu net với độ rộng bit reg [9:0] b; //khai báo biến b kiểu reg với độ rộng 10 bit e Kiểu mảng: Mảng biến cấu trúc có nhiều phần tử kiểu, phần tử biến mảng Mỗi biến thành phần biến bình thường để phân biệt phần tử với phần tử Như vậy, để truy xuất tới phần tử mảng ta cần biết số Verilog cho phép biến mảng có kiểu reg, integer, time, real, realtime vector Verilog cho phép định nghĩa mảng chiều, số phần tử chiều gọi kích thước chiều [MSB:LSB] ; Ví dụ: reg [7:0] port_a [0:7]; /* khai báo kiểu mảng có phần tử, phần tử có độ rộng bit */ integer counter [0:7]; counter [4]; /* khai báo kiểu mảng có phần tử, phần tử có độ rộng bit */ //truy suất phần tử thứ mảng counter f Các kiểu liệu Real, Integer Time Register: Integer kiểu liệu thường dùng cho việc đếm Các biến khai báo từ khóa integer Mặc dù sử dụng reg theo cách tương tự, thuận lợi sử dụng integer cho mục đích đếm, mặc định độ 113 rộng integer phụ thuộc vào độ rộng đơn vị nhớ hệ thống, 32 bit integer ; Ví dụ: integer counter; //mục đích thơng thường sử dụng đếm Real biến số thực khai báo từ khóa real, biến số thực khơng có giới hạn, giá trị mặc định Khi giá trị biến chuyển sang dạng số nguyên, số thực làm tròn đến giá trị số nguyên nhỏ real ; Ví dụ: real a; //khai báo biến số thực a initial begin a = 4e10; //a gán giá trị theo số mũ //a gán giá trị 2.13 a = 2.13; end Time kiểu liệu đặc biệt dùng để khai báo biến kiểu thời gian Một biến thời gian khao báo từ khóa time Độ rộng biến 64 bit Hàm chức $time dùng để lấy thời gian mô tức thời time ; Ví dụ: time save_s; //khai báo biến thời gian initial save_s = $time; //lưu lại thời gian mô tức thời g Kiểu chuỗi: Chuỗi lưu reg Mỗi biến phải đủ rộng để chứa chuỗi, kí tự chuỗi dài byte Nếu độ rộng ghi chứa chuỗi rộng chiều dài chuỗi verilog lấp đầy giá trị Nếu độ rộng ghi nhỏ hơn, verilog bỏ bớt kí tự chuỗi Vì vậy, phải ln khai báo chuỗi có độ rộng lớn độ rộng cần thiết Ví dụ: reg [8*8:1] bien_chuoi; //khai báo biến rộng byte initial bien_chuoi = “hello hdl”; //chuỗi chứa biến 114 chuỗi chứa mã sau: Bảng 6.3: Bảng mã thoát Mã thoát Chức \n Xuống dòng \t Tab %% % \\ \ \” ” h Khai báo số Verilog cho phép khai báo số module từ khóa parameter Các giá trị số thay đổi q trình thực module việc dùng phát biểu defparam Trong verilog cịn có số cục bộ, số định nghĩa từ khóa localparam, giá trị khơng bị thay đổi phát biểu defparam, sử dụng để bảo vệ chống lại việc vô ý định lại giá trị số parameter = ; Ví dụ: parameter a = 5; //định nghĩa port a localparam b = 4’h5, c =4’h8; //định nghĩa số cục 4.3.3 Đieu khien hệ thong cung cap thuỷ lực a Chỉ thị hệ thống: Verilog cung cấp thị để hệ thống thực nhiệm vụ hiển thị lên màng hình, theo dõi giá trị đường dây, dừng, kết thúc chương trình Các thị bắt đầu $ Ở đây, trình bày thị hệ thống thường dùng Để hiển thị thông tin ta dùng hàm $dislay, lúc hệ thống hiển thị giá trị biến, chuỗi hay biểu thức Cách dùng: $dislay (p1,p2,…,pn); P1,p2, ,pn chuỗi hay biến, biểu thức Dạng $dislay giống với printf ngôn ngữ C Chuỗi hiển thị định dạng theo quy định cho bảng 6.4 Bảng 6.4: Bảng thị hệ thống Mã định dạng Hiển thị 115 %d hay %D Hiển thị giá trị theo số 10 %b hay %B Hiển thị giá trị theo kiểu nhị phân %s hay %S Hiển thị chuỗi %h hay %H Hiển thị biến theo số 16 %c hay %C Hiển thị kí tự ASCII %m hay %M Hiển thị theo thứ bậc %v hay %V Hiển thị theo mức ưu tiên 5o hay %O Hiển thị theo hệ số %t hay %T Hiển thị thời gian hành %e hay %E Hiển thị theo kiểu khoa học (ví dụ 3e10) %f hay %F Hiển thị số thực theo kiểu thập phân %g hay %G Hiển thị số thực theo kiểu khoa học thập phân, cho ngắn Để theo dõi thông tin, verilog cung cấp chế theo dõi thay đổi tín hiệu, thị $monitor Cách dùng: $monitor (p1,p2, ,pn); Định dạng $monitor giống $dislay, $monitor cần gọi lần, hiển thị liên tục giá trị biến hay tín hiệu có thay đổi Chỉ danh sách theo dõi hoạt động thời điểm, có nhiều thị $monitor q trình mơ phỏng, thị $monitor cuối hoạt động Hai thị thường sử dụng để mở tắt chức theo dõi $monitoron $monitoroff Quá trình theo dõi mặc định bắt đầu với việc mô phỏng, mở tắt trình mổ hai thị Để dừng kết thúc mô phỏng, verilog cung cấp thị $stop Cách dùng: $stop; Chỉ thị $stop sử dụng để dừng q trình để sửa lỗi, thay đổi tín hiệu thiết kế, đưa q trình mơ vào chế độ treo Chỉ thị $finish dùng để kết thúc mô Cách dùng: $finish; 116 b Chỉ thị biên dịch: Verilog cung cấp số thị biên dịch Tất thị định nghĩa cấu trúc ‘ Hai thị biên dịch hữu ích ‘define ‘inclucde ‘define dùng để định nghĩa macro verilog, giống #define ngơn ngữ C ‘include dùng phép đưa vào file mã nguồn verilog chương trình khác trình biên dịch Cách làm việc giống #include C Chỉ thị thường dùng để thêm vào nội dung tồn cục định nghĩa thơng dụng 4.3.4 Điều khiển hệ thống thơng gió a.Các thành phần module: Module cấu trúc ngôn ngữ verilog Mọi thành phần verilog chứa module Một module có khả giao tiếp với module khác thông qua port Cấu trúc bên module truy suất từ module khác, tính chất linh hoạt verilog giúp người thiết kế thay đổi cấu trúc bên module mà không làm ảnh hưởng đến thiết kế khác Cấu trúc module verilog hình 6.3 Hình 6.3 – Cấu trúc module verilog Định nghĩa module khóa module phải kết thúc từ khóa endmodule Mỗi module phải có tên riêng đại diện cho module đó, khai báo port (nếu có), tùy chọn khai báo thông số (parameter) phải đặt đầu module Port list port có module có cổng giao tiếp với mơi trường bên ngồi Có năm thành phần bên module là: khai 117 báo biến, câu lệnh mức dataflow, tạo module thấp hơn, khối lệnh hành vi, nhiệm vụ - chức module Các thành phần đặt đâu, vị trì bên module Verilog cho phép ghép nhiều module định nghĩa file Các module định nghĩa vị trí file b.Port : Port cung cấp giao diện, qua module truyền thơng với mơi trường bên ngồi Các thành phần bên module khơng nhìn thấy từ mơi trường bên Sự thay đổi thành phần bên khơng ảnh hưởng đến mơi trường bên ngồi, miễn giao diện không bị thay đổi Điều cung cấp tính linh hoạt mạnh cho người thiết kế Danh sách port tùy chọn, khai báo định nghĩa module Nếu module không trao đổi tín hiệu với bên ngồi, ta khơng cần danh sách port Tất port danh sách port phải khai báo module, port khai báo thuộc ba dạng sau: Từ khóa Loại port input Port ngõ vào output Port ngõ inout Port hai chiều (vào/ra) Lưu ý port input inout thường khai báo dạng wire, port output lưu trữ giá trị port phải khai báo dạng reg Có nhiều quy luật chi phối kết nối port module thể bên module khác, Trình mơ báo lỗi ta vi phạm quy luật kết nối port Các quy luật tóm tắt sau: Hình 6.4 – Ngun tắc kết nối port 118 v Input: bên port input ln ln có kiểu net, cịn bên ngồi port input kết nối đến biến kiểu reg kiểu net v Ouput: bên port output có kiểu reg kiểu net, cịn bên nồi port output phải ln ln nối với biến kiểu net không nối với biến kiểu reg v Inout: bên port inout phải ln có kiểu net, cịn bên ngồi port inout phải luôn nối với kiểu net v Tương thích độ rộng: việc nối mục bên bên ngồi có kích thước khác hợp lệ thực nối port module, lúc có kèm theo cảnh báo (warning) v Port khơng kết nói: verilog cho phép port trì khơng kết nối Một vài port ngõ đơn dùng để gỡ rối Để kết nối đến tín hiệu bên ngồi, verilog hỗ trợ hai phương pháp thực kết nối tín hiệu rõ thể module port định nghĩa module Hai phương pháp không trộn lẫn với v Kết nối theo danh sách thứ tự: kết kết nối cho thấy tương tác 1–1 trực quan Cụ thể, tín hiệu module phải truyền vào module theo thứ tự port module định nghĩa sẵn Ví dụ: module Top; //Declare connection variables reg [3:0]A,B; reg C_IN; wire [3:0] SUM; wire C_OUT; //Instantiate fulladd4, call it fa_ordered //Signals are connected to ports in order (by position) fulladd4 fa_ordered(SUM, C_OUT, A, B, C_IN); Endmodule v Kết nối theo tên: tín hiệu module truyền vào module không cần thứ tự, mà phải phù hợp với tên Đây ưu điểm 119 verilog, danh sách port dài, việc kết nối theo vị trí dễ bị lỗi Ví dụ: // kết nối đến module theo tên fulladd4 fa_byname(.c_out(C_OUT), sum(SUM), b(B), c_in(C_IN), a(A),); // Các port khơng sử dụng bỏ qua, không cần viết tên vào fulladd4 fa_byname(.sum(SUM), b(B), c_in(C_IN), a(A),); 4.3.5 Điều khiển động thuận nghịch Loại cổng AND/OR: Các cổng and/or có nhiều ngõ vào ngõ Tên danh sách port kết nối với cổng ngõ ra, tên lại ngõ vào Các cổng and/or verilog and, or, xor, nand, nor xnor Kí hiệu cổng and/or hai ngõ vào ngõ hình 6.5 Hình 6.5 – Ký hiệu loại cổng and/or Người thiết kế dễ dàng thêm ngõ vào thực cổng tương ứng Ta khơng cần rõ tên thể cổng, điều cho phép thực vài trăm cổng mà khơng cần đặt tên Ví dụ: wire OUT, IN1, IN2; // cổng and a1(OUT, IN1, IN2); nand na1(OUT, IN1, IN2); or or1(OUT, IN1, IN2); 120 nor nor1(OUT, IN1, IN2); xor x1(OUT, IN1, IN2); xnor nx1(OUT, IN1, IN2); // có nhiều ngõ, cổng nand ngõ vào nand na1_3inp(OUT, IN1, IN2, IN3); // cổng không cần tên and (OUT, IN1, IN2); Bảng 6.5 – Bảng thật cổng Loại cổng Bufif/Notif: Cổng bufif/notif có ngõ vào có nhiều ngõ Các cổng cung cấp verilog bufif notif, ngõ vào in ngõ out Các loại cổng bufif/notif thể verilog bufif1, notif1, bufif0 notif0 121 Hình 6.6 – Ký hiệu loại cổng bufif notif Các loại cổng truyền tín hiệu có tín hiệu điều khiển, trạng thái tổng trở cao tín hiệu điều khiển Ví dụ: //cổng bufif bufif1 b1 (out, in, ctrl); bufif0 b0 (out, in, ctrl); //cổng notif notif1 n1 (out, in, ctrl); notif0 n0 (out, in, ctrl); Các ví dụ: v Bộ dồn kênh 4-1 (4-1 multiplexer): Sơ đồ cổng logic Mô tả trực quan cổng verilog: // dồn kênh 4-1, với ngõ in/out sơ đồ cổng module mux4_to_1 (out, i0, i1, i2, i3, s1, s0); // khai báo in/out output out; 122 input i0, i1, i2, i3; input s1, s0; // Khai báo dây nối bên wire s1n, s0n; wire y0, y1, y2, y3; // thực cổng //Tạo tín hiệu s1n s0 not (s1n, s1); not (s0n, s0); // Các cổng and ngõ vào and (y0, i0, s1n, s0n); and (y1, i1, s1n, s0); and (y2, i2, s1, s0n); and (y3, i3, s1, s0); // Cổng or ngõ vào or (out, y0, y1, y2, y3); endmodule v Bộ cộng bit: Sơ đồ cổng logic Mô tả verilog: // Khai báo cộng bit module fulladd (sum, c_out, a, b, c_in); // Khai báo cổng IO output sum, c_out; input a, b, c_in; // Các dây nối bên wire s1, c1, c2; // Hiện thực cổng logic xor (s1, a, b); 123 and (c1, a, b); xor (sum, s1, c_in); and (c2, s1, c_in); xor (c_out, c2, c1); endmodule ... -0 .22 - -0 .8 mA VIN=0V,VCCO=1.8V -0 .10 - -0 .42 mA VIN=0V,VCCO=1.5V -0 .06 - -0 .27 mA VIN=0V,VCCO=1.2V -0 .04 - -0 .22 mA VIN=0V,VCCO= 3.0V tới 3.465V 2.4 - 10.8 kΩ VIN=0V,VCCO=2.3V tới 2.7V 2.7 - 11.8... 4 -4 6 -6 8 -8 Đặc tính mức điện áp VOL Max(V) VOH Min(V) 0.4 2.4 0.4 VCCO-0.4 40 LVCMOS25 LVCMOS18 LVCMOS15 LVCMOS12 12 12 -1 2 16 16 -1 6 2 -2 4 -4 6 -6 8 -8 12 12 -1 2 2 -2 4 -4 6 -6 8 -8 2 -2 ... 4 -4 6 -6 2 -2 0.4 VCCO-0.4 0.4 VCCO-0.4 0.4 VCCO-0.4 0.4 VCCO-0.4 Trong đó: - IOL: dòng điện ngõ mức thấp - IOH: dòng điện ngõ mức cao - VOL: điện áp ngõ mức thấp - VOH: điện áp ngõ mức cao -