Tìm hiểu, nghiên cứu và thực thi thử nghiệm lỗi vi xử lý picoblaze trên công nghệ FPGA

Abstract: This paper focuses on both the study and research of structure of Picoblaze microprocessor core leading to method of implementation in a FPGA chip. Results attained are used for the evaluation of performance of this microprocessor core comparing to other ones. As a result, a microprocessor system is built from the most suitable core.

pdf10 trang | Chia sẻ: yendt2356 | Lượt xem: 548 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Tìm hiểu, nghiên cứu và thực thi thử nghiệm lỗi vi xử lý picoblaze trên công nghệ FPGA, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TÌM HIỂU, NGHIÊN CỨU VÀ THỰC THI THỬ NGHIỆM LÕI VI XỬ LÝ PICOBLAZE TRÊN CÔNG NGHỆ FPGA PHAN HẢI PHONG ĐẶNG XUÂN VINH - HOÀNG LÊ HÀ Trường Đại học Khoa học - Đại học Huế Tóm tắt: Bài báo tập trung vào việc nghiên cứu, tìm hiểu cấu trúc của lõi vi xử lý Picoblaze, từ đó đưa ra phương thức triển khai và thực thi lõi vi xử lý này lên một chip FPGA. Các kết quả đạt được sẽ phục vụ cho mục đích so sánh, đánh giá cách thức và hiệu năng hoạt động của lõi này với một số lõi vi xử lý khác. Từ đó đưa ra lựa chọn một lõi vi xử lý phù hợp cho việc xây dựng một hệ thống vi điều khiển dựa trên lõi đó. Từ khóa: Vi điều khiển (VĐK), vi xử lý (VXL), Picoblaze, FPGA. 1 GIỚI THIỆU CHUNG Ngày nay, cùng với sự phát triển của các hệ thống điện tử, tự động hoá, các hệ thống nhúng đã đặt ra yêu cầu về việc cần phải có các thế hệ VĐK mới có tốc độ hoạt động cao và tích hợp thêm nhiều thiết bị ngoại vi mới. Điều này đặt ra cho lĩnh vực thiết kế vi mạch điện tử một hướng nghiên cứu quan trọng, đó là phát triển các thế hệ VĐK mới có tốc độ cao hơn, hoạt động ổn định hơn và đặc biệt là phải tích hợp được thêm nhiều tính năng tiên tiến hơn. Để phát triển được một lõi VĐK tiên tiến, hoạt động với tốc độ cao, có nhiều thiết bị ngoại vi bổ trợ thì một yêu cầu cấp thiết được đặt ra đó là phải có một lõi VXL phù hợp để làm nhân xử lý chính cho toàn bộ hệ thống. Hiện nay, nhiều lõi VXL như vậy đã được phát triển: từ các lõi VXL 8-bit đơn giản như 8051, Picoblaze. . . cho đến những lõi VXL 32-bit phức tạp như MicroBlaze, NiosII, Leon3. . . Trong đó Picoblaze được xem như là một lõi VXL 8-bit đơn giản nhưng có hiệu năng cao, khả năng mở rộng lớn và thường được lựa chọn sử dụng trong các nghiên cứu cũng như trong các ứng dụng công nghiệp [1, 2]. Picoblaze là một lõi vi xử lý 8-bit có cấu trúc của tập lệnh thu gọn RISC (Reduced Instruction Set Computer) được tối ưu phát triển cho các họ FPGA [3] như Spartan 3, Tạp chí Khoa học và Giáo dục, Trường Đại học Sư phạm Huế ISSN 1859-1612, Số 01(33)/2015: tr. 78-87 TÌM HIỂU, NGHIÊN CỨU VÀ THỰC THI THỬ NGHIỆM LÕI VI XỬ LÝ... 79 Virtex II, và Virtex II Pro của Xilinx [5]. Lõi vi xử lý Picoblaze là một lõi vi xử lý có hiệu quả cao cho những ứng dụng nhỏ, yêu cầu xử lý dữ liệu đơn giản. Nó là một lõi vi xử lý ảo, tồn tại dưới dạng một lõi mềm được phát triển bởi hãng Xilinx. Picoblaze là một lõi vi xử lý đã được tối ưu về mặt hiệu suất và có chi phí phát triển thấp. Sau khi thực thi, nó chỉ chiếm khoảng 96 slices của FPGA, tương đương 12,5% tài nguyên của chip XC3S50 hoặc 0,3% tài nguyên của chip FPGA XC3S5000. Lõi vi xử lý Picoblaze có thể hoạt động với hiệu suất từ 44000 tới 100000 câu lệnh/giây (MPIS – milion instructions per second) tùy thuộc vào loại chip FPGA được sử dụng và tốc độ hoạt động tối đa của dòng chip đó. Bài báo này tập trung vào việc nghiên cứu, tìm hiểu về cấu trúc của lõi VXL Picoblaze, từ đó có thể đưa ra được phương thức triển khai, thực thi lõi này lên một phần cứng FPGA cụ thể. Từ kết quả thực thi sẽ rút ra các đánh giá, so sánh về hiệu năng, khả năng hoạt động của lõi VXL này trong thực tế. Các kết quả đánh giá sẽ được sử dụng trong việc lựa chọn một lõi VXL phù hợp nhằm để phát triển một hệ thống VĐK 8-bit hỗ trợ nhiều thiết bị ngoại vi và có khả năng ứng dụng cao. 2 KIẾN TRÚC CHUNG CỦA LÕI VXL PICOBLAZE Sơ đồ khối của lõi VXL Picoblaze được mô tả như trong Hình 1. Chức năng của một số khối chính trong lõi VXL này được mô tả như sau: Hình 1: Sơ đồ khối của lõi vi xử lý Picoblaze. • Khối xử lý số học ALU: Khối này sẽ thực hiện mọi tính toán của vi xử lý bao gồm: – Các phép tính số học cơ bản như cộng và trừ. – Các phép tính logic bit như AND, OR và XOR. – Các phép toán kiểm tra bit và so sánh số học. – Các phép toán dịch bit và xoay bit. 80 PHAN HẢI PHONG và cs. Tất cả các phép toán được thực hiện trong khối ALU đều dùng các toán hạng đích và toán hạng nguồn (trừ phép toán dịch bit và xoay bit là không có toán hạng nguồn), trong đó toán hạng đích là một trong các thanh ghi đặc biệt Sx. Toán hạng nguồn nếu có sẽ là thanh ghi thứ hai Sy hoặc là một hằng số trực tiếp 8 bit. Và do đó kết quả sẽ được trả lại chính toán hạng nguồn là thanh ghi Sx. • Khối các thanh ghi chức năng chung: Vi xử lý Picoblaze bao gồm 16 thanh ghi chức năng chung (từ S0 tới SF) có độ rộng 1 byte. Để cho dễ dàng trong khi lập trình, các thanh ghi này có thể được đổi tên bằng các chỉ lệnh hợp ngữ (assembler directive). Trong VXL Picoblaze không có thanh ghi nào có mức ưu tiên cao hơn hoặc dành riêng cho một tác vụ đặc biệt nào. VXL Picoblaze hoàn toàn không có thanh ghi tính toán như các vi điều khiển khác như: 8051, PIC, AVR. . . Do đó mỗi kết quả được tính toán trong một thanh ghi được chỉ định trước. • Các cờ chỉ thị (flags): Các phép tính thực hiện trên ALU ảnh hưởng tới trạng thái của các cờ ZERO và cờ CARRY. Cờ ZERO được thiết lập khi kết quả của phép toán trước bằng 0. Cờ CARRY được thiết lập phụ thuộc vào nhiều điều kiện khác nhau, và phụ thuộc vào quá trình thực hiện của phép toán trước. Cờ INTERRUPT_ENABLE cho phép hoạt động ngắt được thực hiện. • Các cổng vào/ra (Input/output): Các cổng vào/ra làm tăng khả năng ứng dụng của Picoblaze và cho phép VXL này có thể kết nối với bất kỳ thiết bị ngoại vi nào. Picoblaze có thể mở rộng đến 256 cổng vào, 256 cổng ra hoặc cho phép tạo nên một sự kết hợp giữa các cổng vào/ra này. Cổng ra PORT_ID là nơi chứa địa chỉ của cổng vào/ra. Trong quá trình đọc dữ liệu thì Picoblaze đọc dữ liệu từ cổng IN_PORT và lưu vào thanh ghi đặc biệt Sx. Trong quá trình xuất dữ liệu, Picoblaze ghi nội dung của thanh ghi Sx ra cổng OUTPUT. • Bộ đếm chương trình (Program Counter PC): Bộ đếm chương trình sẽ chỉ tới câu lệnh tiếp theo được thực hiện. Theo mặc định, PC tự động tăng lên tới địa chỉ của câu lệnh tiếp theo khi thực hiện một câu lệnh. Chỉ có các lệnh JUMP, CALL, RETURN, RETURNI và các sự kiện Interrupt, Reset là có thể thay đổi hành vi này. Nội dung của PC không thể thay đổi được bằng mã chương trình. PC có độ rộng 10 bit vì thế nó có thể trỏ tới bất kì đâu trong vùng không gian 1024 câu lệnh (từ 0x000 tới 0x3FF-hex). Nếu PC trỏ tới đỉnh bộ nhớ 0x3FF thì nó sẽ quay về lại vị trí ban đầu 0x000. • Khối điều khiển luồng chương trình (Program Flow Control): Khối điều khiển luồng chương trình cho phép thay đổi thứ tự thực hiện mặc định của chương trình thông qua các câu lệnh điều khiển luồng chương trình có điều kiện hoặc không có điều kiện. Các lệnh điều khiển thực thi này bao gồm: JUMP,CALL, RETURN, RETURNI. TÌM HIỂU, NGHIÊN CỨU VÀ THỰC THI THỬ NGHIỆM LÕI VI XỬ LÝ... 81 • Khối ngắt (Interrupts): Vi xử lý Picoblaze có một ngõ vào INTERRUPT tùy ý (Hình 2), cho phép vi xử lý Picoblaze có thể làm chủ được các sự kiện không đồng bộ bên ngoài. Ở đây, các sự kiện không đồng bộ liên quan đến ngắt có thể xảy ra tại mọi thời điểm trong một chu kỳ lệnh. Picoblaze đáp ứng các tín hiệu ngắt nhanh nhất là sau 5 chu kì xung clock. Để cho phép ngắt ta dùng lệnh ENABLE INTERRUPT và vô hiệu hóa ngắt ta dùng lệnh DISABLE INTERRUPT. Hình 2: Tín hiệu ngắt trên lõi vi xử lý Picoblaze. Các tín hiệu vào/ra trên VXL Picoblaze được mô tả như ở Hình 3 Hình 3: Giao diện vào ra của các tín hiệu trên Picoblaze. 3 PHƯƠNG PHÁP THỰC THI LÕI VXL PICOBLAZE LÊN FPGA Vi xử lý Picoblaze được cung cấp dưới dạng mã nguồn VHDL [4] trong một file có tên là KCPSM3.vhd. Lõi này đã được tối ưu về hiệu năng và đảm bảo trong việc thực thi trên các dòng FPGA của Xilinx như: Spartan-3, Virtex-II hay Vertex-II Pro. Các mã nguồn được sử dụng cho cả quá trình tổng hợp, mô phỏng. Trong quá trình phát triển và thực thi lõi VXL này, ta có thể sử dụng công cụ Xilinx Synthesizs Tool (XST) cho quá trình tổng hợp logic và phần mềm ModelSim để mô phỏng hoạt động của lõi VXL. Các công cụ tổng hợp logic và mô phỏng khác cũng có thể được sử dụng để thực thi và kiểm chứng hoạt động của Picoblaze. 82 PHAN HẢI PHONG và cs. Component KCPSM3 Port ( Address : out s td_log ic_vector (9 downto 0 ) ; I n s t r u c t i o n : in s td_log ic_vector (17 downto 0 ) ; Port_id : out s td_log ic_vector (7 downto 0 ) ; Write_strobe : out s td_log i c ; Out_port : out s td_log ic_vector (7 downto 0 ) ; Read_strobe : out s td_log i c ; In_port : in s td_log ic_vector (7 downto 0 ) ; In t e r tup t : in s td_log i c ; Interrupt_ack : out s td_log i c ; Reset : in s td_log i c ; Clk : in s td_log i c ) ; End component ; Component prog_rom Port ( Address : in s td_log ic_vector (9 downto 0 ) ; I n s t r u c t i o n : out s td_log ic_vector (17 downto 0 ) ; Clk : in s td_log i c ) ; End conponent ; Module KCPSM3 bao gồm ALU, các thanh ghi và bộ nhớ tạm RAM. Chỉ duy nhất bộ nhớ chương trình là không nằm trong KCPSM3. Picoblaze sẽ được khai báo như là một Component để có thể ghép nối với các thành phần khác trong mã nguồn một cách dễ dàng. Bộ nhớ chương trình ROM của Picoblaze cũng tồn tại dưới dạng mã nguồn VHDL và cũng được khai báo như một Componet để có thể dễ dàng ghép nối với Picoblaze. Chương trình điều khiển cho PicoBalade sẽ được viết dưới dạng hợp ngữ, sau đó sẽ được biên dịch và kết hợp với khối ROM này để tạo thành một khối thành phần có chứa mã chương trình cho VXL. Việc khai báo cho bộ nhớ ROM và cách ghép nối với nó vào hệ thống được thực hiện thông qua đoạn mã sau. Đoạn mã nguồn để ghép nối với lõi VXL Picoblaze Sau khi ghép nối, ta được mô hình ghép nối giữa Picoblaze và bộ nhớ ROM như ở Hình 4 Để viết mã lệnh cho chương trình (với tên mở rộng là .psm) thì chúng ta có thể dùng bất cứ trình soạn thảo nào để lập trình dựa theo tập lệnh của Picoblaze đã được cung cấp. Sau đó, chương trình biên dịch (KCPSM3.exe) sẽ kết hợp chương trình mã lệnh với các mã nguồn của bộ nhớ ROM đã được định nghĩa sẵn dưới dạng file .vhd, .coe, .v để biên dịch thành một khối nhớ ROM đã chứa mã lệnh ở dạng các file .vhd, .v để có thể thực thi trên FPGA. TÌM HIỂU, NGHIÊN CỨU VÀ THỰC THI THỬ NGHIỆM LÕI VI XỬ LÝ... 83 Program : prog_rom Port map( Address => address_s igna l , I n s t r u c t i o n=> in s t ru c t i on_s i gna l , Clk => c lk_s igna l ) ; Hình 4: Ghép nối giữa bộ nhớ chương trình ROM với Picoblaze. 4 THỰC THI THỬ NGHIỆM LÕI VXL PICOBLAZE Việc thực thi thử nghiệm lõi VXL lên FPGA để thực hiện một số tác vụ điều khiển được triển khai thông qua bộ phần mềm công cụ Xilinx ISE phiên bản 10.4. Để viết mã lệnh cho chương trình điều khiển, cũng như để mô phỏng và gỡ rối chương trình thì trong bài báo này chúng tôi đã sử dụng phần mềm pBlazIDE. Việc biên dịch chương trình thực thi và kết hợp với khối ROM để tạo thành bộ nhớ chương trình hoàn chỉnh cho lõi VXL được thực hiện thông qua phần mềm KCPSM3.exe. Để kiểm chứng khả năng hoạt động của Picoblaze khi được thực thi trên FPGA, chúng tôi tiến hành xây dựng một khối phần cứng cho phép kết hợp với lõi VXL Picoblaze để điều khiển hiển thị các số thập phân (từ 0 - 9) trên bốn led 7-đoạn. Một chương trình hợp ngữ sẽ được viết và biên dịch cho Picobaze nhằm hiển thị các số mong muốn. Khối phần cứng sẽ bao gồm hai thanh ghi: một thanh ghi 8-bit để điều khiển hiển thị số trên một led 7-đoạn và một thanh ghi 4-bit được dùng để điều khiển đóng mở bốn led 7 đoạn này (Hình 5). Việc sử dụng hai thanh ghi như trên mục đích là để mở rộng thêm cổng điều khiển cho Picoblaze thông qua tín hiệu giải mã địa chỉ từ Port_ID. Đoạn mã VHDL để mô tả hai thanh ghi này như sau. Sau khi thiết kế thành công các thanh ghi điều khiển, chúng tôi tiến hành lập trình cho Picoblaze để hiển thị lên led 7-đoạn các số theo yêu cầu. Chương trình sau khi được viết và biên dịch thành công sẽ được ghép với khối VXL thành một hệ thống thống nhất để có thể thực thi lên FPGA (Hình 6). Để hiển thị một số thập phân ra một led 7 đoạn tương ứng, ta cần gửi một dữ liệu tương ứng ra thanh ghi 4 bit để cho phép led đó hoạt động. Sau đó một dữ liệu nhị phân (đã được mã hóa tương ứng 84 PHAN HẢI PHONG và cs. LED_Register : process ( write , data_out , port_addx ) begin i f port_addx = x"00" then i f write ’ event and wr i t e = ’1 ’ then LED_Data <= data_out ; end i f ; end i f ; end process LED_register ; Anode_register : process ( write , data_out , port_addx ) begin i f port_addx = x"01" then i f write ’ event and wr i t e = ’1 ’ then anodes <= data_out (3 downto 0 ) ; end i f ; end i f ; end process Anode_register ; với số thập phân cần cần hiển thị) sẽ được đưa ra thanh ghi 8 bit để điều khiển các thanh hiển thị của led đó. Sau khi hoàn tất việc biên dịch chương trình điều khiển để tạo thành file cho bộ nhớ chương trình ROM, chúng tôi đã thực hiện việc ghép nối hoàn thiện các thành phần của bộ điều khiển hiển thị led 7-đoạn. Để kiểm chứng hoạt động của hệ thống trên thực tế, hệ thống này sẽ được thực thi lên trên dòng FPGA Spantar3E-100TQ144, sử dụng bo mạch phát triển Basys của hãng Digilent. Kết quả của việc thực thi và chạy thử hệ thống trên kit phát triển được thể hiện như trong Hình 7. Điều này đã chứng tỏ các thiết kế đưa ra là hoàn toàn đúng và phần mềm điều khiển dành cho VXL Picoblaze cũng đã hoạt động chính xác. 5 KẾT LUẬN Bài báo này đã tiến hành nghiên cứu và trình bày về cấu trúc của lõi VXL Picoblaze, một lõi vi xử lý mềm 8-bit được phát triển cho việc xây dựng các hệ thống VĐK tiên tiến. Bài báo cũng đã nghiên cứu về phương pháp triển khai và phương thức thực thi lõi VXL này trên công nghệ FPGA. Việc thực thi lõi VXL lên FPGA đã được thực hiện thành công thông qua việc xây dựng một hệ thống điện tử cho phép điều khiển một số led 7 đoạn để hiển thị các nội dung theo yêu cầu của người dùng. Một phần mềm điều khiển viết bằng hợp ngữ dựa trên tập lệnh của lõi VXL này cũng đã được viết và biên dịch thành công. Chương trình này cho phép điều khiển hoạt động của hệ thống vừa xây dựng TÌM HIỂU, NGHIÊN CỨU VÀ THỰC THI THỬ NGHIỆM LÕI VI XỬ LÝ... 85 Hình 5: Thiết kế thanh ghi để điều khiển led 7-đoạn. Hình 6: Ghép nối các khối để tạo thành hệ thống điều khiển led 7-đoạn hoàn chỉnh. một cách chính xác theo những yêu cầu đặt ra. Toàn bộ hệ thống bao gồm phần cứng và phần mềm đã được thực thi thành công lên kit phát triển Basys với dòng chip FPGA Spantar3E-100TQ144 chứng tỏ lõi Picoblaze hoàn toàn có thể triển khai trong thực tế với các hệ VĐK phức tạp hơn. 86 PHAN HẢI PHONG và cs. Hình 7: Kết quả thực thi thử nghiệm trên kit phát triển Basys. LỜI CẢM ƠN Bài báo này được thực hiện trong khuôn khổ đề tài nghiên cứu khoa học cấp Đại học Huế - mã số: DHH2014-01-54. TÀI LIỆU THAM KHẢO [1] Antonio-Torres et al (2009). A PicoBlaze-Based Embedded System for Monitoring Applications. Electrical, Communications, and Computers International Conference, CONIELECOMP 2009. 173-177. [2] Borawake, S.M.; Chilveri, P.G. (2014). Implementation of Wireless Sensor Network Using Microblaze and Picoblaze Processors. Communication Systems and Network Technologies (CSNT), 2014 Fourth International Conference. 1059-1064. [3] Bob Zeidman (1999). An Introduction to FPGA Design. Embedded Systems Confer- ence. 182-186. [4] Pedroni, V. A. (2004). Circuit Design with VHDL. MIT Press, Cambridge, Mas- sachusetts. [5] Xilinx (2008). Picoblaze 8-bit Embedded Microcontroller User Guide for Spartan-3, Spartan-6, Virtex-5, and Virtex-6 FPGAs. v2.0. 102-103. TÌM HIỂU, NGHIÊN CỨU VÀ THỰC THI THỬ NGHIỆM LÕI VI XỬ LÝ... 87 Title: STUDY, RESEARCH AND IMPLEMETATION OF PICOBLAZE MICROPRO- CESSOR CORE BASED ON FPGA TECHNOLOGY Abstract: This paper focuses on both the study and research of structure of Picoblaze microprocessor core leading to method of implementation in a FPGA chip. Results attained are used for the evaluation of performance of this microprocessor core comparing to other ones. As a result, a microprocessor system is built from the most suitable core. Keywords: Microcontroller, Microprocessor, Picoblaze, FPGA PHAN HẢI PHONG ĐẶNG XUÂN VINH HOÀNG LÊ HÀ Trường Đại học Khoa học - Đai học Huế

Các file đính kèm theo tài liệu này:

  • pdf26_424_phanhaiphong_dangxuanvinh_hoangleha_12_hai_phong_027_2020353.pdf