TRƯỜNG ĐẠI HỌC SƯ PHẠM TP HỒ CHÍ MINH TẠP CHÍ KHOA HỌC HO CHI MINH CITY UNIVERSITY OF EDUCATION JOURNAL OF SCIENCE KHOA HỌC TỰ NHIÊN VÀ CÔNG NGHỆ NATURAL SCIENCES AND TECHNOLOGY ISSN: 1859-3100 Tập 15, Số 12 (2018): 176-185 Vol 15, No 12 (2018): 176-185 Email: tapchikhoahoc@hcmue.edu.vn; Website: http://tckh.hcmue.edu.vn ỨNG DỤNG CÔNG NGHỆ FPGA ĐỂ THIẾT KẾ BỘ TRUYỀN, NHẬN DỮ LIỆU GIAO TIẾP VỚI MÁY TÍNH TRÊN THIẾT BỊ DE1 QUA ĐƯỜNG TRUYỀN UART Đặng Lành1*, Phạm Xuân Hải2, Trương Trường Sơn3 Trường Đại học Đà Lạt Viện Nghiên cứu Hạt nhân – Đà Lạt Trường Đại học Sư phạm Thành phố Hồ Chí Minh Ngày nhận bài: 23-7-2018; ngày nhận sửa: 03-12-2018; ngày duyệt đăng: 21-12-2018 TĨM TẮT Ứng dụng cơng nghệ FPGA vào thiết kế, chế tạo thiết bị điện tử khả lập trình cho phép khai thác mạnh kĩ thuật lập trình, tạo mềm dẻo linh hoạt hiệu cho thiết kế phần cứng Bài báo trình bày thiết kế mạch truyền, nhận liệu bit FPGA (sử dụng mạch DE1 hãng Altera) máy tính theo chuẩn giao tiếp UART chuyển cổng USB Sản phẩm thiết kế ứng dụng hiệu điều khiển tự động Từ khóa: DE1-Altera, FPGA, UART, USB ABSTRACT Application of FPGA technology in design of data transfer-receive devices interfacing to PC in DE1 board via UART Application of FPGA technology in design and construction of programmable electronics devices enables the exploitation of the advantages of programming techniques, creating flexibility effectively for hardware design as well as control of peripheral devices This work presents an 8-bit data transfer-receive circuit design between FPGAs (using Altera's DE1 board) and computer via UART standard to USB cable Designed products can be used effectively for control of specialized automation Keywords: DE1_Altera, FPGA, UART, USB Đặt vấn đề Kĩ thuật điều khiển tự động hóa coi ngành mũi nhọn, then chốt trường đại học Vì vậy, trường cần đầu tư xây dựng nhiều mơ hình, thí nghiệm thực hành chun ngành tự động hóa Với phát triển mạnh mẽ công nghệ điện tử đương đại, vi mạch bán dẫn lập trình đáp ứng kích thước nhỏ, công suất tiêu thụ thấp, tạo hệ thống điều khiển tự động ngày thông minh giải nhiều toán phức tạp hơn, việc ứng dụng FPGA (Field Programmable Gate Array) thiết bị lập trình được, cơng nghệ đột phá FPGA có khả tái lập trình nên đạt độ linh hoạt cao, đáp ứng nhiều thuật * Email: lanhd@dlu.edu.vn 176 TẠP CHÍ KHOA HỌC - Trường ĐHSP TPHCM Đặng Lành tgk toán hay yêu cầu khác phần cứng, thích hợp với mạch điều khiển tự động thông minh, giao tiếp PC, truyền nhận xử lí liệu tốc độ cao Từ đó, sử dụng FPGA để thiết kế, xây dựng số thí nghiệm thực hành dùng chuyên ngành tự động hóa cần thiết Để có thí nghiệm thực hành chip FPGA, quy trình thiết kế hồn chỉnh từ xây dựng phần cứng đến phần mềm phải trọng Mục tiêu báo dùng mạch DE1, hãng Altera sử dụng ngôn ngữ mô tả phần cứng VHDL (Very high speed integrated circuit Hardware Description Language) để thiết kế mạch truyền, nhận liệu bit ngoại vi với máy tính qua cổng giao tiếp RS 232 chuyển USB Sản phẩm thiết kế ứng dụng hiệu điều khiển tự động Khái quát giao tiếp UART UART (Universal Asynchronous Receiver Transmitter) gọi thu, phát liệu không đồng nối tiếp [2] Truyền, nhận liệu theo chuẩn UART thực theo phương thức song cơng, hay bán song công Bộ truyền UART làm nhiệm vụ phát bit byte liệu cách Bộ thu UART chịu trách nhiệm lắp ghép bit lại thành byte hoàn chỉnh Mỗi UART gồm có hai ghi dịch, dùng làm thành phần việc chuyển nối tiếp sang song song ngược lại, nghĩa phát có nhiệm vụ chuyển đổi byte liệu từ song song sang nối tiếp thêm vào bit start, stop để tạo thành khung truyền (frame) Dữ liệu truyền điều khiển xung clock gọi tốc độ baud, thu lấy mẫu tín hiệu, tập hợp lại khơi phục tín hiệu gốc Cơ chế lấy mẫu tín hiệu: bit thơng tin chia thành 16 điểm lấy mẫu [2], điểm lấy mẫu tín hiệu điểm bit thơng tin Thiết kế truyền, nhận FPGA 3.1 Sơ đồ khối tổng thể thiết kế Sơ đồ khối cấu trúc tổng thể mạch truyền, nhận liệu FPGA máy tính trình bày Hình Mỗi khối có chức hoạt động riêng, FPGA khối trung tâm kết nối tất khối chức lại Các khối có nhiệm vụ cụ thể sau: Khối led đoạn – hiển thị liệu từ FPGA gửi đi, liệu FPGA nhận từ máy tính hiển thị tham số cấu hình tốc độ baud; khối led đơn – hiển thị trạng thái bit liệu từ FPGA gửi lên máy tính, hiển thị trạng thái nút điều khiển tích cực; khối liệu vào – cơng tắc ‘on’ ‘off’ thể bit liệu vào ‘1’ ‘0’; khối nút điều khiển – nút nhấn cho phép truyền, nhận hoạt động, cho phép truyền liệu, reset nạp tham số cấu hình tốc độ baud; máy tính – thực q trình truyền nhận liệu Để kết nối với FPGA, tín hiệu từ cổng RS232 máy tính phải qua mạch chuyển đổi MAX232 [4] để trở thành tín hiệu theo chuẩn UART; FPGA – mảng phần tử logic lập trình thiết kế ngơn ngữ lập trình VHDL 177 TẠP CHÍ KHOA HỌC - Trường ĐHSP TPHCM Tập 15, Số 12 (2018): 176-185 Hình Sơ đồ khối tổng thể thiết kế 3.2 Thực thiết kế mạch DE1 Altera 3.2.1 Thiết kế khối chức chip FPGA mạch DE1 Hình Bản mạch DE1 Bản mạch DE1 trình bày Hình 2, sử dụng công nghệ phần cứng công cụ CAD (Computer Aid Design) [5], cung cấp phương tiện tối ưu để nghiên cứu phát triển lĩnh vực logic số [4] Cơng trình nghiên cứu sử dụng 10 nút chuyển mạch (switch), nút nhấn (button), 10 led đơn đỏ (led red), led đơn xanh (green led), led đoạn (7-seg display) cổng RS232 để thiết kế Sử dụng ngôn ngữ lập trình phần cứng VHDL [1], [2], [6] để thiết kế khối chức truyền, 178 TẠP CHÍ KHOA HỌC - Trường ĐHSP TPHCM Đặng Lành tgk nhận UART chip FPGA – Cyclone II EP2C20F484C7 Cấu trúc chương trình viết theo mơ hình gồm bốn phần tử (Hình 3): Khối tạo tốc độ baud, khối điều khiển – hiển thị, khối truyền liệu nối tiếp khối nhận liệu nói tiếp Trong khối tác vụ xử lí đồng thời (process) sử dụng để thực đoạn chương trình nhỏ xử lí song song như: Tạo đếm; chia tần; phát bit; lấy mẫu bit Hình Sơ đồ thiết kế khối chức truyền nhận UART 3.2.2 Nguyên tắc hoạt động khối Khối điều khiển – hiển thị (Control - Display) Hình Lưu đồ thuật tốn khối hiển thị 179 TẠP CHÍ KHOA HỌC - Trường ĐHSP TPHCM Tập 15, Số 12 (2018): 176-185 Khối (Hình 4) thực hai chức năng: điều khiển hiển thị Tiếp nhận tín hiệu điều khiển tx_in (mức thấp) để tạo tín hiệu tx_enable (mức cao) cho phép khối truyền liệu hoạt động, lần nhấn nút tx_in (có thể giữ nút kéo dài vài xung clock) có xung tín hiệu tx_enable cho phép truyền hoạt động truyền khung liệu Chức thứ hai hiển thị liệu truyền, nhận hiển thị giá trị tham số brg Hình trình bày lưu đồ thuật tốn khối hiển thị Khi switch = ‘1’, nhấn nút brg_in xuống mức thấp (brg_in = ‘0’), liệu vào data_in chuyển sang số integer (to_integer (dat_in)) nạp vào tham số brg khối baud rate, đồng thời liệu data_in chuyển sang số BCD (Binary Coded Decimal) Sau chuyển đổi tách thành số thập phân tương ứng với hàng ngàn, trăm, chục, đơn vị, hiển thị số thập lên led đoạn Nếu switch = ‘0’ liệu vào data_in liệu nhận rc_data hiển thị led đoạn Khối truyền liệu nối tiếp (Transmitter) Khối truyền liệu (Hình 5) nhận tín hiệu cho phép truyền tx_enable, khối truyền nhận bit liệu từ ngõ vào data_in [7:0], sau chuyển liệu từ dạng song song sang dạng nối tiếp phát bit liệu nối tiếp qua chân tín hiệu uart_tx dựa tốc độ baud tính khối baud rate Q trình truyền liệu thể cụ thể lưu đồ thuật toán (Hình 8) Bắt đầu, ghi truyền tsr gán 10 bit trạng thái ‘1’ (tsr = “1111111111”), ngõ truyền uart_tx gán bit ‘1’ (uart_tx = ‘1’); đếm bit liệu phát tx_count gán (tx_count = “0000”) Khi chưa có tín hiệu cho phép truyền (tx_enable), truyền trạng thái chờ; có tín hiệu cho phép truyền, bit liệu vào ghép với bit start (trạng thái ‘0’) bit stop (trạng thái ‘1’) tạo thành khung truyền 10 bit Bộ truyền chờ cạnh lên cạnh lên xung truyền brg_tx_clk (brg_tx_clk = ‘1’), có cạnh lên xung truyền brg_tx_clk bit đầu tiên, bit start (có trọng số thấp nhất) ghi tsr truyền đi, nghĩa liệu bit gán cho ngõ uart_tx truyền; đồng thời đếm bit liệu phát 180 TẠP CHÍ KHOA HỌC - Trường ĐHSP TPHCM Đặng Lành tgk tx_count tăng lên đơn vị Nếu số lượng bit phát chưa đủ 10 bit phát tiếp tục phát bit liệu lên đường truyền theo xung nhịp brg_tx_clk; đủ 10 bit (tx_count = “1001”) đợi xung nhịp brg_tx_clk (brg_tx_clk = ‘1’) để kết thúc trình truyền byte liệu truyền trở trạng thái chờ, chuẩn bị cho trình truyền liệu Khối nhận liệu nối tiếp (Receiver) Khối nhận liệu nối tiếp (Hình 6), phát bit start (mức ‘0’), lấy mẫu liệu từ chân nhận tín hiệu nối tiếp uart_rx; sau chuyển liệu từ dạng nối tiếp sang dạng song song Quá trình nhận liệu trình bày cụ thể lưu đồ thuật tốn Hình Bắt đầu, ghi nhận liệu rsr gán bit ‘0’ (rsr = “00000000”); đếm bit lấy mẫu samp_count gán (samp_count = “0000”); đếm bit liệu nhận rx_count gán (rx_count = “0000”) Khi bit lấy mẫu chưa ‘0’ (uart_rx_sync = ‘1’), tức nhận chưa phát bit start nên nhận liệu trạng thái chờ; phát bit start, nhận chờ cạnh lên xung nhận brg_rx_clk (brg_rx_clk = ‘1’), có cạnh lên xung brg_rx_clk đếm mẫu samp_count tăng lên đơn vị; tiếp theo, đếm mẫu đếm chưa đủ bit tiếp tục đếm lên, đếm đếm đủ bit mà tín hiệu lấy mẫu mức thấp bit start hợp lí chấp nhận chu trình thu nhận bit liệu, cịn bit start khơng hợp lí truyền quay lại trang thái chờ ban đầu Chu trình thu bit liệu, bit lấy mẫu start mức thấp, nhận chờ cạnh lên xung nhận brg_rx_clk, có cạnh lên xung brg_rx_clk đếm mẫu samp_count tăng lên đơn vị, đếm mẫu đếm chưa đủ bit tiếp tục đếm lên đến đếm đếm đủ bit đếm bit liệu nhận rx_count tăng lên đơn vị, nghĩa nhận lấy mẫu (thu) bit liệu dịch bit liệu vào ghi rsr (uart_rx_sync & rsr (7 downto 1)) Tương tự 181 TẠP CHÍ KHOA HỌC - Trường ĐHSP TPHCM Tập 15, Số 12 (2018): 176-185 trình đếm mẫu (samp_count) lấy mẫu (rx_count) dịch bit liệu vào ghi rsr tiếp tục nhận, nhận đủ bit lại Kết thúc trình nhận byte liệu nhận trở trạng thái chờ, chuẩn bị cho trình nhận liệu Thực nghiệm bình luận kết Sử dụng phần mềm Quartus II 9.0 hãng Altera [4] để soạn thảo biên dịch thiết kế Gán tín hiệu vào, thiết kế với chân I/O chip FPGA (Cyclone II EP2C20F484C7) mạch DE1, nạp thiết kế lên mạch DE1 Sơ đồ kết nối mạch DE1 máy tính trình bày Hình Dùng switch (từ SW0 đến SW9) để thiết lập tốc độ baud đưa liệu vào cho truyền; KEY làm tín hiệu điều khiển, KEY0: tín hiệu cho phép truyền, KEY1: cho phép truyền hoạt động, KEY2: reset KEY3: nạp tham số brg; bốn Led đoạn để hiển thị liệu truyền nhận FPGA máy tính, hiển thị tham số brg, thạch anh dao động cấp cho hệ thống 50MHz Sử dụng phần mềm Advanced Serial Port Terminal 5.5 để thực quan sát trình truyền, nhận liệu (Hình 8) Hình Kết nối Bản mạch DEI máy tính Hình Giao diện phần mềm Advanced Serial Port Terminal 5.5 4.1 FPGA truyền liệu lên máy tính Để thực truyền, nhận liệu phải chuyển SW9 xuống mức ‘0’ Đưa liệu vào đường truyền cách thay đổi trạng thái bit switch (từ SW0 đến SW7), liệu hiển thị mã nhị phân led đơn (từ LEDR0 đến LEDR7) mã thập lục phân led đoạn (HEX0 HEX1) Nhấn nút cho phép truyền liệu (KEY0), byte liệu (ví dụ: 9C) led đoạn HEX0, HEX1 truyền sang máy tính (Hình 9) Phần mềm Advanced Serial Port Terminal nhận liệu hiển thị cửa sổ phần mềm (Hình 10) Tương tự tiếp tục truyền nhiều byte liệu khác với nhiều tốc độ baud khác để kiểm tra độ xác truyền 182 Đặng Lành tgk TẠP CHÍ KHOA HỌC - Trường ĐHSP TPHCM Hình Bản mạch DEI truyền byte liệu (9C) lên máy tính Hình 10 Máy tính nhận byte liệu (9C) từ mách DEI truyền đến 4.2 FPGA nhận liệu từ máy tính truyền đến Vẫn giữ SW9 mức ‘0’, từ cửa sổ phần mềm Advanced Serial Port Terminal (Hình 11), thực gửi “send” byte liệu (ví dụ: A4) mạch DE1 nhận giá trị hiển thị hai led đoạn HEX2 HEX3 (Hình 12) Tương tự tiếp tục gửi nhiều byte liệu khác với nhiều tốc độ baud khác để kiểm tra độ xác nhận liệu Thực nghiệm với nhiều tốc độ baud khác Bảng 1, thực nhiều lần trình truyền, nhận liệu, nhằm kiểm tra độ hoạt động ổn định truyền nhận, kết trình truyền, nhận hoạt động tốt, nhiên tốc độ baud lớn xảy lỗi Hình 10 Bản mạch DEI nhận byte liệu (A4) từ máy tính truyền xuống Hình 11 Máy tính truyền byte liệu (A4) lên Bản mạch DEI 4.3 Sai số truyền, nhận liệu Sai số trình truyền, nhận tính [3] theo cơng thức (1) Dựa vào cơng thức này, tính sai số số tốc độ baud thực nghiệm trình bày Bảng BaudRateClosest Match Error (%) 1 100 BaudRate 183 (1) TẠP CHÍ KHOA HỌC - Trường ĐHSP TPHCM Tập 15, Số 12 (2018): 176-185 Bảng Sai số số tốc độ baud thực nghiệm BRG Float Integer Baud Rate (Closest Match) 9600 324,5208 325 9586 -0,1 14400 216,0139 216 14401 19200 161,7604 162 19172 -0,1 38400 80,3802 80 38580 0,5 56000 54,8036 55 55804 -0,4 57600 53,2535 53 57870 0,5 115200 26,1267 26 115741 0,5 128000 23,4141 23 130208 1,7 230400 12,5634 13 223214 -3,1 10 256000 11,2070 11 260417 1,7 11 460800 5,7817 446429 -3,1 12 921600 2,3908 1041667 13,0 Số thứ tự Baud Rate ERROR (%) Dựa vào bảng số liệu cho thấy, với tần số thạch anh 50MHz (trên mạch DE1) hầu hết có sai số thiết kế truyền, nhận UART Sai số chấp nhận từ tốc độ truyền 9600bps đến 115200bps Ở tốc độ truyền từ 128000bps đến 921600bps sai số lớn, trình truyền, nhận liệu tốc độ xảy lỗi Tốc độ truyền 14400bps có sai số thấp nên q trình truyền, nhận liệu tốc độ xác khơng bị lỗi Ở tốc độ 921600bps có sai số lớn nên trình truyền, nhận xảy lỗi nhiều Kết luận Bài báo trình bày mạch thiết kế FPGA ghép nối với máy tính, phần cứng sử dụng mạch DE1 Altera phần mềm chương trình viết ngôn ngữ VHDL Kết thiết kế thực truyền, nhận liệu FPGA máy tính qua cổng RS 232 với sai số nhỏ 1% q trình truyền, nhận tốt khơng bị lỗi Sản phẩm thiết kế làm tài liệu tham khảo, giảng dạy học tập chuyên ngành điều khiển tự động Qua sản phẩm thiết kế giúp người thực nắm rõ chất lập trình phần cứng, người học thiết kế hệ thống logic số, hiểu môn học liên quan kĩ thuật số, vi điều khiển, kĩ thuật vi xử lí Đây phương pháp dạy học tích cực giúp sinh viên tiếp cận công nghệ chế tạo phần cứng FPGA FPGA thay hệ thống số từ IC (Intergrated Circuit) số đơn giản đến vi điều khiển phức tạp với kì vọng phát triển thiết kế phong phú đa dạng chun ngành tự động hóa 184 TẠP CHÍ KHOA HỌC - Trường ĐHSP TPHCM [1] [2] [3] [4] [5] [6] Đặng Lành tgk Tuyên bố quyền lợi: Các tác giả xác nhận hồn tồn khơng có xung đột quyền lợi TÀI LIỆU THAM KHẢO Bài giảng thiết kế số dùng ngôn ngữ mô tả phần cứng VHDL, Trường Đại học Kinh tế – Kĩ thuật Công nghiệp, 2012 Thiết kế logic số, Học viện Kĩ thuật Quân Hà Nội, 2011 Datasheet ATmega16 – Atmel DE1 Development and Education Board User Manual – Altera Quartus II Introduction Using VHDL Design (2011) – Altera Volnei A Pedroni, Circuit Design with VHDL MIT Press Cambridge, Massachusetts London, England, 2004 185 ... Language) để thiết kế mạch truyền, nhận liệu bit ngoại vi với máy tính qua cổng giao tiếp RS 232 chuyển USB Sản phẩm thiết kế ứng dụng hiệu điều khiển tự động Khái quát giao tiếp UART UART (Universal... nhiều Kết luận Bài báo trình bày mạch thiết kế FPGA ghép nối với máy tính, phần cứng sử dụng mạch DE1 Altera phần mềm chương trình viết ngôn ngữ VHDL Kết thiết kế thực truyền, nhận liệu FPGA máy tính. .. thông tin Thiết kế truyền, nhận FPGA 3.1 Sơ đồ khối tổng thể thiết kế Sơ đồ khối cấu trúc tổng thể mạch truyền, nhận liệu FPGA máy tính trình bày Hình Mỗi khối có chức hoạt động riêng, FPGA khối