intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Thi Thi | Ngày: | Loại File: PDF | Số trang:10

91
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: 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ÌM HIỂU, NGHIÊN CỨU VÀ THỰC THI THỬ NGHIỆM<br /> LÕI VI XỬ LÝ PICOBLAZE TRÊN CÔNG NGHỆ FPGA<br /> <br /> PHAN HẢI PHONG<br /> ĐẶNG XUÂN VINH - HOÀNG LÊ HÀ<br /> Trường Đại học Khoa học - Đại học Huế<br /> <br /> 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<br /> lõi vi xử lý Picoblaze, từ đó đưa ra phương thức triển khai và thực thi<br /> lõi vi xử lý này lên một chip FPGA. Các kết quả đạt được sẽ phục vụ<br /> cho mục đích so sánh, đánh giá cách thức và hiệu năng hoạt động của<br /> 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ử<br /> 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<br /> đó.<br /> Từ khóa: Vi điều khiển (VĐK), vi xử lý (VXL), Picoblaze, FPGA.<br /> 1<br /> <br /> GIỚI THIỆU CHUNG<br /> <br /> 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<br /> 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<br /> 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<br /> 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ó<br /> 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<br /> năng tiên tiến hơn.<br /> Để 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<br /> 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<br /> 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<br /> 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<br /> phức tạp như MicroBlaze, NiosII, Leon3. . . Trong đó Picoblaze được xem như là một lõi<br /> 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<br /> 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].<br /> 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<br /> Instruction Set Computer) được tối ưu phát triển cho các họ FPGA [3] như Spartan 3,<br /> Tạp chí Khoa học và Giáo dục, Trường Đại học Sư phạm Huế<br /> ISSN 1859-1612, Số 01(33)/2015: tr. 78-87<br /> <br /> TÌM HIỂU, NGHIÊN CỨU VÀ THỰC THI THỬ NGHIỆM LÕI VI XỬ LÝ...<br /> <br /> 79<br /> <br /> 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<br /> 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ý<br /> ả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.<br /> 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<br /> 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<br /> nguyên của chip XC3S50 hoặc 0,3% tài nguyên của chip FPGA XC3S5000. Lõi vi xử lý<br /> 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<br /> instructions per second) tùy thuộc vào loại chip FPGA được sử dụng và tốc độ hoạt động<br /> tối đa của dòng chip đó.<br /> 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ừ<br /> đó 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<br /> 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<br /> độ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<br /> 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<br /> bị ngoại vi và có khả năng ứng dụng cao.<br /> 2<br /> <br /> KIẾN TRÚC CHUNG CỦA LÕI VXL PICOBLAZE<br /> <br /> 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ố<br /> khối chính trong lõi VXL này được mô tả như sau:<br /> <br /> Hình 1: Sơ đồ khối của lõi vi xử lý Picoblaze.<br /> <br /> • 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:<br /> – Các phép tính số học cơ bản như cộng và trừ.<br /> – Các phép tính logic bit như AND, OR và XOR.<br /> – Các phép toán kiểm tra bit và so sánh số học.<br /> – Các phép toán dịch bit và xoay bit.<br /> <br /> 80<br /> <br /> PHAN HẢI PHONG và cs.<br /> <br /> 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à<br /> 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),<br /> trong đó toán hạng đích là một trong các thanh ghi đặc biệt Sx. Toán hạng nguồn<br /> 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<br /> quả sẽ được trả lại chính toán hạng nguồn là thanh ghi Sx.<br /> • Khối các thanh ghi chức năng chung: Vi xử lý Picoblaze bao gồm 16 thanh ghi chức<br /> 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<br /> thanh ghi này có thể được đổi tên bằng các chỉ lệnh hợp ngữ (assembler directive).<br /> Trong VXL Picoblaze không có thanh ghi nào có mức ưu tiên cao hơn hoặc dành<br /> riêng cho một tác vụ đặc biệt nào. VXL Picoblaze hoàn toàn không có thanh ghi<br /> tính toán như các vi điều khiển khác như: 8051, PIC, AVR. . . Do đó mỗi kết quả<br /> được tính toán trong một thanh ghi được chỉ định trước.<br /> • 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<br /> 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<br /> 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à<br /> phụ thuộc vào quá trình thực hiện của phép toán trước. Cờ INTERRUPT_ENABLE<br /> cho phép hoạt động ngắt được thực hiện.<br /> • 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<br /> 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.<br /> 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<br /> 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<br /> vào/ra. Trong quá trình đọc dữ liệu thì Picoblaze đọc dữ liệu từ cổng IN_PORT và<br /> lưu vào thanh ghi đặc biệt Sx. Trong quá trình xuất dữ liệu, Picoblaze ghi nội dung<br /> của thanh ghi Sx ra cổng OUTPUT.<br /> • Bộ đếm chương trình (Program Counter PC): Bộ đếm chương trình sẽ chỉ tới câu<br /> 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ỉ<br /> 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,<br /> RETURN, RETURNI và các sự kiện Interrupt, Reset là có thể thay đổi hành vi này.<br /> Nội dung của PC không thể thay đổi được bằng mã chương trình. PC có độ rộng<br /> 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ừ<br /> 0x000 tới 0x3FF-hex). Nếu PC trỏ tới đỉnh bộ nhớ 0x3FF thì nó sẽ quay về lại vị<br /> trí ban đầu 0x000.<br /> • Khối điều khiển luồng chương trình (Program Flow Control): Khối điều khiển luồng<br /> 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<br /> 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.<br /> Các lệnh điều khiển thực thi này bao gồm: JUMP,CALL, RETURN, RETURNI.<br /> <br /> TÌM HIỂU, NGHIÊN CỨU VÀ THỰC THI THỬ NGHIỆM LÕI VI XỬ LÝ...<br /> <br /> 81<br /> <br /> • Khối ngắt (Interrupts): Vi xử lý Picoblaze có một ngõ vào INTERRUPT tùy ý<br /> (Hình 2), cho phép vi xử lý Picoblaze có thể làm chủ được các sự kiện không đồng<br /> 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<br /> 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<br /> nhanh nhất là sau 5 chu kì xung clock. Để cho phép ngắt ta dùng lệnh ENABLE<br /> INTERRUPT và vô hiệu hóa ngắt ta dùng lệnh DISABLE INTERRUPT.<br /> <br /> Hình 2: Tín hiệu ngắt trên lõi vi xử lý Picoblaze.<br /> Các tín hiệu vào/ra trên VXL Picoblaze được mô tả như ở Hình 3<br /> <br /> Hình 3: Giao diện vào ra của các tín hiệu trên Picoblaze.<br /> <br /> 3<br /> <br /> PHƯƠNG PHÁP THỰC THI LÕI VXL PICOBLAZE LÊN FPGA<br /> <br /> 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à<br /> 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<br /> dòng FPGA của Xilinx như: Spartan-3, Virtex-II hay Vertex-II Pro. Các mã nguồn được<br /> 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<br /> VXL này, ta có thể sử dụng công cụ Xilinx Synthesizs Tool (XST) cho quá trình tổng hợp<br /> 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<br /> 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<br /> của Picoblaze.<br /> <br /> 82<br /> Component KCPSM3<br /> Port (<br /> Address<br /> Instruction<br /> Port_id<br /> Write_strobe<br /> Out_port<br /> Read_strobe<br /> In_port<br /> Intertupt<br /> Interrupt_ack<br /> Reset<br /> Clk<br /> End component ;<br /> <br /> PHAN HẢI PHONG và cs.<br /> <br /> :<br /> :<br /> :<br /> :<br /> :<br /> :<br /> :<br /> :<br /> :<br /> :<br /> :<br /> <br /> out s t d _ l o g i c _ v e c t o r ( 9 downto 0 ) ;<br /> in s t d _ l o g i c _ v e c t o r ( 1 7 downto 0 ) ;<br /> out s t d _ l o g i c _ v e c t o r ( 7 downto 0 ) ;<br /> out s t d _ l o g i c ;<br /> out s t d _ l o g i c _ v e c t o r ( 7 downto 0 ) ;<br /> out s t d _ l o g i c ;<br /> in s t d _ l o g i c _ v e c t o r ( 7 downto 0 ) ;<br /> in s t d _ l o g i c ;<br /> out s t d _ l o g i c ;<br /> in s t d _ l o g i c ;<br /> in s t d _ l o g i c ) ;<br /> <br /> Component prog_rom<br /> Port (<br /> Address : in s t d _ l o g i c _ v e c t o r ( 9 downto 0 ) ;<br /> I n s t r u c t i o n : out s t d _ l o g i c _ v e c t o r ( 1 7 downto 0 ) ;<br /> Clk<br /> : in s t d _ l o g i c ) ;<br /> End conponent ;<br /> <br /> Module KCPSM3 bao gồm ALU, các thanh ghi và bộ nhớ tạm RAM. Chỉ duy nhất bộ<br /> nhớ chương trình là không nằm trong KCPSM3. Picoblaze sẽ được khai báo như là một<br /> 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.<br /> 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<br /> được khai báo như một Componet để có thể dễ dàng ghép nối với Picoblaze. Chương trình<br /> đ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à<br /> 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<br /> 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<br /> 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<br /> 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<br /> 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<br /> 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 đó,<br /> 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<br /> 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<br /> 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.<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2