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.
10 trang |
Chia sẻ: yendt2356 | Lượt xem: 649 | Lượt tải: 0
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:
- 26_424_phanhaiphong_dangxuanvinh_hoangleha_12_hai_phong_027_2020353.pdf