Các kiểu dữ liệu MicroBlaze

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu và triển khai hệ vi xử lý trên cơ sở lõi xử lý MicroBlaze, thử nghiệm ứng dụng trên FPGA (Trang 45)

2.4.2. Các quy ước sử dụng ngăn xếp và thanh ghi

Quy ƣớc sử dụng thanh ghi:

MicroBlaze có 32 thanh ghi mục đích chung. Các thanh ghi này đƣợc chia thành 3 loại: các thanh ghi đa năng, các thanh ghi cố định và các thanh ghi chuyên dụng.

- Các thanh ghi đa năng: Là các thanh ghi đƣợc sử dụng để lƣu trữ dữ liệu tạm thời và không lƣu trữ lại các giá trị qua việc gọi chức năng. Các thanh ghi từ R3 đến R12 là các thanh ghi đa năng trong đó hai thanh ghi R3 và R4 đƣợc sử dụng để quay trở về giá trị khi gọi chức năng. Từ thanh ghi R5-R0 đƣợc sử dụng để chuyển giao các tham số giữa các thủ tục con.

- Từ thanh ghi R19 đến thanh ghi R31 dùng để lƣu giữ lại nội dung của chúng qua việc gọi các chức năng và đƣợc gọi là các thanh ghi cố định. Các chức năng đƣợc gọi đƣợc lƣu vào các thanh ghi cố định đang sử dụng. Chúng đƣợc lƣu ở ngăn xếp

Các kiểu dữ liệu MicroBlaze (Dành cho các chương trình assembly )

Kiểu dữ liệu

ANSIC tương ứng Kích cỡ (bytes)

data8 char 1

data16 short 2

data32 int 4

data32 long int 4

data32 float 4

data32 enum 4

- Các thanh ghi chắc chắn đƣợc sử dụng nhƣ các thanh ghi chuyên dụng và ngƣời lập trình không sử dụng chúng cho các mục đích khác:

+ Từ thanh ghi R14 đến R17 đƣợc sử dụng để lƣu trữ địa chỉ quay trở về từ ngắt, thủ tục, bẫy và các ngoại lệ. Các thủ tục đƣợc gọi sử dụng nhánh và liên kết lệnh để lƣu thanh ghi đếm chƣơng trình hiện tại vào thanh ghi R15.

+ Các con trỏ vùng dữ liệu nhỏ đƣợc sử dụng để truy cập tới các vị trí bộ nhớ nào đó với 16 bit giá trị tức thì.

+ Thanh ghi R1 lƣu trữ giá trị con trỏ ngăn xếp và đƣợc cập nhập trên lối vào, và ra từ các chức năng.

+ Thanh ghi R18 đƣợc sử dụng tạm thời cho các hoạt động của Assembler. MicroBlaze gồm các thanh ghi đặc biệt nhƣ: thanh ghi đếm chƣơng trình (rpc), thanh ghi trạng thái máy (rmsr), thanh ghi trạng thái ngoại lệ, thanh ghi địa chỉ ngoại lệ, thanh ghi trạng thái dấu chấm động, thanh ghi đích rẽ nhánh, thanh ghi dữ liệu ngoại lệ, thanh ghi quản lý bộ nhớ, thanh ghi phiên bản xử lý. Các thanh ghi không đƣợc sắp xếp trực tiếp tới tệp thanh ghi vì vậy việc sử dụng các thanh ghi này khác so với các thanh ghi mục đích chung. Giá trị của các thanh ghi mục đích đặc biệt có thể đƣợc đƣợc chuyển tới các thanh ghi mục đích chung hoặc từ thanh ghi mục đích chung chuyển đến theo thứ tự định sẵn bằng cách sử dụng lệnh mts and mfs.

Quy ước sử dụng ngăn xếp

Khi chƣơng trình bắt đầu thực hiện thì con trỏ ngăn xếp có giá trị lớn nhất. Nhƣ đúng chức năng đƣợc gọi, con trỏ ngăn xếp sẽ đƣợc giảm do số từ yêu cầu bởi mỗi chức năng cho khung ngăn xếp của nó. Con trỏ ngăn xếp của mỗi chức năng gọi luôn có giá trị cao hơn so với chức năng đƣợc gọi. Quy ƣớc ngăn xếp đƣợc chỉ ra trong Bảng 7.

Bảng 7: Bảng quy ước ngăn xếp.

Địa chỉ cao

Các tham số chức năng cho thủ tục đƣợc gọi (Arg n .. Arg1)

(Tuỳ chọn: Số lớn nhất của đối số đã yêu cầu cho bất cứ thủ tục nào đƣợc gọi từ thủ tục hiện tại)

Xét một ví dụ: Ở đây Func1 gọi Func2, lần lƣợt gọi Func3. Sự mô tả ngăn xếp đƣợc chỉ ra trong Hình 17. Sau khi gọi chức năng Func1 tới Func2, giá trị con trỏ ngăn xếp (SP) giảm xuống. Giá trị con trỏ ngăn xếp tiếp tục giảm khi điều chỉnh khung ngăn xếp đến Func3. Khi trở về từ Func3, giá trị con trỏ ngăn xếp lại tăng về giá trị gốc của chức năng 2.

Hình 17: Ví dụ mô tả giá trị thay đổi con trỏ ngăn xếp trong các lệnh.

* Quy ƣớc gọi: Chức năng gọi qua tham số tới chức năng đƣợc gọi hoặc sử dụng các thanh ghi (R5-R10) hoặc trên khung ngăn xếp của nó. Chức năng đƣợc gọi sử dụng vùng ngăn xếp của chức năng gọi để lƣu các tham số tới chức năng đƣợc gọi.

Trong ví dụ trên các tham số của Func2 đƣợc lƣu hoặc trong các thanh ghi R5 đến R10 hoặc trên khung ngăn xếp đƣợc chỉ định đối với Fun1.

Thanh ghi lƣu đối tƣợng đƣợc gọi (R31....R19)

(Tuỳ chọn : chỉ những thanh ghi đƣợc sử dụng bởi thủ tục hiện tại đƣợc lƣu)

Các biến số cục bộ cho thủ tục hiện tại

(Tuỳ chọn : Chỉ hiện tại nếu các biến cục bộ đƣợc định nghĩa trong thủ tục)

Các tham số chức năng (Arg n .. Arg 1)

(Tuỳ chọn : Số lớn nhất của đối số yêu cấu cho bất cứ thủ tục nào đƣợc gọi từ thủ tục hiện tại)

Con trỏ ngăn xếp mới Thanh ghi liên kết Địa chỉ thấp

2.5. Tập lệnh của MicroBlaze

2.5.1. Khuôn dạng lệnh

MicroBlaze sử dụng hai dạng lệnh: Loại A và loại B

- Lệnh loại A: Lệnh loại A sử dụng kiểu lệnh thanh ghi- thanh ghi. Nó bao gồm mã toán, một thanh ghi đích và hai thanh ghi nguồn

- Lệnh loại B: Lệnh loại B sử dụng lệnh thanh ghi tức thì. Nó gồm mã toán, một thanh ghi đích và một thanh ghi nguồn, một giá trị nguồn tức thì 16 bit.

2.5.2. Các nhóm lệnh

- Các từ khóa, các lệnh tiền xử lý, các chức năng chuỗi, ký tự và bảng mã ASCII tuân theo ngôn ngữ C chuẩn

- Tần số hoạt động của Vi xử Lý + 180MHz với dòng Virtex 4 + 150MHz với dòng Virtex 2 + 100MHz với dòng Spartan 3

- Tập lệnh của MicroBlaze gồm các nhóm lệnh sau:

* Nhóm lệnh số học: Thực hiện các phép toán số học nhƣ cộng, trừ, nhân chia. Bao gồm các lệnh: add, addi, rsub, mul, mulh, mulhu, mulhsu, idiv… (1 chu kỳ hoặc 3 chu kỳ).

Ví dụ: Lệnh cộng số học add

add rD, rA, rB Số chu kỳ: 1

Hoạt động: (rD) ← (rA) + (rB)

* Nhóm lệnh logic: Thực hiện các pháp toán logic. Bao gồm các lệnh: and, andi, andn, andni, or, ori… (1 chu kỳ).

Ví dụ: Lệnh hoặc logic

Số chu kỳ: 1

Hoạt động: (rD) ←(rA) √ (rB)

* Nhóm lệnh với dấu chấm động nhƣ cộng, trừ, nhân, chia, so sánh, căn bậc hai dấu chấm động. Bao gồm các lệnh: fadd, frsub, fmul, fdiv…

* Nhóm lệnh dịch và so sánh: Thực hiện các phép dịch trái, dịch phải, so sánh, quay vòng…Bao gồm các lệnh bsrl, bsra, bsrly, cmp, src, sra…

* Nhóm lệnh rẽ nhánh: Thực hiện rẽ nhánh có điều kiện, rẽ nhánh không điều kiện, rẽ nhánh tức thời. Bao gồm các lệnh beq, beqi, beg, begi, bgt…

* Nhóm lệnh lƣu trữ: Gồm các lệnh lƣu từ, lƣu nửa từ , lƣu byte…nhƣ sh, shi, sbi, sb…

* Nhóm lệnh ghi bộ đệm lệnh, bộ đệm dữ liệu nhƣ wdc, wic.

* Nhóm lệnh điều khiển nhƣ các lệnh thực hiện tạm dừng, quay trở về từ ngắt, quay trở về từ tạm dừng, quay trở về từ thủ tục…. Ví dụ lệnh brk, brki, rtid, rtbd…

Chương 3 Triển khai hệ vi xử lý trên cơ sở lõi xử lý MicroBlaze

Để xây dựng một hệ vi xử lý trên cơ sở lõi vi xử lý MicroBlaze thì trƣớc tiên ta phải nghiên cứu một cách khái quát các bƣớc thực thi một hệ thống sau đó phải đƣa ra ý tƣởng xây dựng, sơ đồ khối, các thành phần của hệ vi xử lý. Trên cơ sở đó tiến hành các bƣớc triển khai hệ vi xử lý. Chƣơng này trình bày về quá trình thiết kế hệ vi xử lý trên cơ sở lõi xử lý MicroBlaze từ ý tƣởng xây dựng hệ vi xử lý đến các bƣớc dùng phần mềm EDK để kết nối các thành phần trong hệ và thực thi hệ trên kit FPGA Spartan-3E của hãng Xilinx.

3.1. Thực thi hệ thống vi xử lý trên kit FPGA sử dụng phần mềm EDK

EDK là công cụ phần mềm hữu ích dùng để thiết kế hệ thống vi xử lý nhúng trên kit phát triển FPGA của hãng Xilinx [9]. Đây là một công cụ khá thân thiện với ngƣời sử dụng, cho phép ta thiết kế một hệ thống phức tạp chỉ với những thao tác tƣơng đối đơn giản. Thực chất EDK sử dụng các chƣơng trình viết sẵn bằng ngôn ngữ mô tả phần cứng VHDL (gọi là các IP - Intellectual Property), thƣờng đƣợc biên dịch và tổng hợp sẵn. Ngƣời sử dụng có thể dùng các IP đó, xây dựng các mạch logic kết nối và viết phần mềm để điều khiển chúng. EDK bao gồm hai thành phần chính là công cụ thiết kế phần cứng của hệ thống xử lý nhúng XPS (Xilinx Platform Studio) và môi trƣờng phát triển tích hợp SDK (Software Development Kit). SDK là công cụ hỗ trợ cho XPS, đƣợc sử dụng để xây dựng, biên dịch và kiểm chứng các ứng dụng phần mềm nhúng viết bằng ngôn ngữ C/C++. SDK đƣợc xây dựng trên Eclipse™ open- source framework. Ngoài ra EDK còn bao gồm một số thành phần khác nhƣ các thƣ viện, các trình điều khiển, các chỉ dẫn và một số ví dụ.

Việc thực thi một hệ thống xử lý trên kit FPGA sử dụng phần mềm EDK bao gồm nhiều công đoạn khác nhau từ việc mô tả yêu cầu thiết kế hệ thống, tạo project, kết nối các thành phần của hệ thống, tổng hợp phần cứng/phần mềm cho đến việc mô phỏng và cuối cùng là thực thi hệ thống trên kit FPGA. Các công đoạn thiết kế hệ thống xử lý trên kit FPGA cơ bản đƣợc minh hoạ nhƣ Hình 18.

Quy trình thiết kế một hệ thống vi xử lý trên kit FPGA sử dụng EDK bao gồm:

- Bước 1: Trƣớc tiên để xây dựng một hệ vi xử lý ta cần xây dựng bài toán thiết kế. Tại bƣớc này, ngƣời thiết kế mô tả ý tƣởng và mục đích xây dựng hệ vi xử lý (gồm sơ đồ khối hệ thống, các thành phần để triển khai hệ thống, các kết nối của hệ

thống…) và các tiêu chí kỹ thuật cơ bản để có thể triển khai hệ thống trên cơ sở lõi vi xử lý mềm MicroBlaze.

Yêu cầu thiết kế hệ thống Mô tả các thành phần của hệ thống Xây dựng Project Kết nối các thành phần của hệ thống Mô phỏng và kiểm chứng

Thực thi trên kit FPGA

Hình 18: Quy trình thiết kế hệ thống trên FPGA.

- Bước 2: Sau khi đã xác định đƣợc đặc tả cơ bản của hệ thống cần triển khai ở bƣớc 1, ngƣời thiết kế sẽ mô tả chi tiết cấu trúc, đặc điểm và các thông số kỹ thuật của từng thành phần dùng để triển khai hệ thống.

- Bước 3: Ngƣời thiết kế sử dụng các công cụ của phần mềm EDK để tạo Project gồm lõi xử lý MicroBlaze kết nối với các thành phần đã đƣợc mô tả ở trên (việc kết nối này đƣợc thực hiện thông qua việc gán các chân tín hiệu của MicroBlaze và các chân tín hiệu của các thành phần khác với nhau) và lựa chọn các tiêu chí kỹ thuật chi tiết nhƣ tần số, kích thƣớc bộ nhớ BRAM (Block RAM), các ngoại vi…

- Bước 4: Sau khi đã tạo đƣợc Project, ngƣời thiết kế thực hiện thao tác tổng hợp logic và kết nối phần cứng và phần mềm của hệ thống. Sau đó, thực hiện việc mô phỏng phần cứng nhằm kiểm tra xem hệ thống có lỗi về mặt kết nối hay không.

- Bước 5: Thực hiện mô phỏng, kiểm chứng thiết kế trƣớc khi thực thi trên kit FPGA. Việc mô phỏng và kiểm chứng giúp ngƣời thiết kế tìm ra các lỗi (nếu có) và thực hiện sửa chữa lỗi. Nếu việc mô phỏng chƣa đạt yêu cầu, ngƣời thiết kế phải chỉnh sửa và tối ƣu lại thiết kế.

- Bước 6: Thực thi hệ thống trên FPGA. Tại bƣớc này EDK cho phép thực thi hệ thống trực tiếp trên kit FPGA thông qua các công cụ nạp phần cứng, phần mềm lên vi mạch FPGA và bộ nhớ chƣơng trình.

3.2. Ý tưởng xây dựng hệ vi xử lý sử dụng lõi xử lý MicroBlaze

Nhƣ đã trình bày ở Chƣơng 2, một hệ vi xử lý hoàn chỉnh bao gồm bộ vi xử lý trung tâm (µP: MicroProcessor) kết hợp với các bộ phận ngoại vi khác nhƣ: các mạch nhớ để lƣu trữ chƣơng trình và dữ liệu; các mạch ngoại vi điều khiển vào/ra hay các mạch ngoại vi tạo ra giao tiếp giữa hệ vi xử lý với con ngƣời, với môi trƣờng bên ngoài… Trong đề tài này, hệ vi xử lý đƣợc xây dựng trên cơ sở lõi xử lý mềm MicroBlaze của hãng Xilinx. Do đó, hệ vi xử lý đề xuất bao gồm một lõi xử lý MicroBlaze kết nối với các thành phần ngoại vi khác nhƣ: bộ chuyển đổi tƣơng tự-số ADC (Analog to Digital Conversion), bộ chuyển đổi số-tƣơng tự DAC (Digital to Analog Conversion), khối giao tiếp mạng Ethernet, khối giao tiếp vào/ra nối tiếp theo chuẩn RS-232, giao diện đồ hoạ VGA, giao diện màn hình tinh thể lỏng LCD, các bộ định thời (timers)… Mô hình hệ vi xử lý MicroBlaze đƣợc thể hiện trong Hình 19.

Trong phạm vi đề tài này, do thời gian có hạn tôi triển khai một hệ vi xử lý MicroBlaze đơn giản bao gồm một lõi xử lý MicroBlaze kết nối với bộ chuyển đổi số- tƣơng tự DAC qua giao diện SPI và một bộ giao tiếp truyền thông nối tiếp RS-232 cho phép giao tiếp với thiết bị khác thông qua chuẩn truyền thông nối tiếp RS-232. Mục đích của việc sử dụng chuẩn SPI để kết nối với DAC là nhằm đơn giản hoá quá trình ghép nối vi xử lý với DAC và cũng phù hợp hơn với kit phát triển hiện có tại phòng thí nghiệm. Hơn nữa, tốc độ hoạt động của DAC đƣợc xác định trong hệ thống đề xuất là tƣơng đối thấp (hệ thống đƣợc xây dựng cho mục đích đo lƣờng và điều khiển) nên việc sử dụng chuẩn SPI trong truyền thông giữa vi xử lý và DAC là hoàn toàn hợp lý.

MicroBlaze Ethernet MAC ADC DAC LCD IF PCI Timers UART (RS-232) PLBv46 SPI SPI

Hình 19: Sơ đồ khối hệ vi xử lý đề xuất.

Mục đích xây dựng hệ vi xử lý là sau khi việc kết nối hệ thống hoàn thành, lõi vi xử lý MicroBlaze có thể điều khiển việc truyền dữ liệu nối tiếp hai chiều qua RS- 232 và điều khiển việc cung cấp dữ liệu số cho DAC để tín hiệu đầu ra là tín hiệu tƣơng tự với các dạng tín hiệu tùy theo bài toán ứng dụng. Sơ đồ khối hệ vi xử lý này đƣợc chỉ ra trong Hình 20.

Hình 20: Sơ đồ khối hệ vi xử lý thực nghiệm.

Chức năng của các khối trong hệ vi xử lý có thể đƣợc miêu tả ngắn gọn nhƣ sau:

- MicroBlaze là khối xử lý trung tâm có nhiệm vụ điều khiển mọi hoạt động của hệ vi xử lý. Ví dụ, MicroBlaze điều khiển truyền nhận dữ liệu nối tiếp hai chiều với bộ truyền thông RS-232, điều khiển cung cấp tín hiệu đầu vào số và điều khiển quá trình chuyển đổi số-tƣơng tự cho bộ chuyển đổi DAC.

PC MicroBlaze DAC UART (RS-232) PLBv46 SPI Timers

- Bộ chuyển đổi số-tƣơng tự DAC có nhiệm vụ chuyển đổi từ tín hiệu số do MicroBlaze cung cấp thành tín hiệu tƣơng tự tƣơng ứng.

- Khối giao tiếp ngoại vi nối tiếp SPI thực hiện nhiệm vụ chuyển đổi tín hiệu song song 32 bit từ hệ thống bus của hệ thống thành các tín hiệu nối tiếp đƣa đến các đầu vào tín hiệu của DAC. SPI chứa các bộ đệm truyền và nhận dữ liệu, các thanh ghi trạng thái, điều khiển và thanh ghi dịch.

- Bộ phát nhận không đồng bộ vạn năng UART (Universal Asynchronous Receiver/Transmitter) thực hiện truyền dữ liệu hai chiều giữa hệ vi xử lý với các hệ vi xử lý khác thông qua chuẩn truyền thông nối tiếp RS-232.

Lõi vi xử lý MicroBlaze đƣợc kết nối với các khối SPI, UART, Timers qua hệ thống bus PLBv46. Sự kết nối này gồm hai phần: Thứ nhất là phần kết nối giữa MicroBlaze và hệ thống bus PLB, tiếp đó là phần kết nối giữa hệ thống bus PLB và các khối ngoại vi RS232, SPI.

3.3. Thực thi thiết kế

3.3.1. Kết nối giữa MicroBlaze và hệ thống bus PLB

Lõi xử lý mềm MicroBlaze đƣợc kết nối với hệ thống bus PLB qua khối giao

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu và triển khai hệ vi xử lý trên cơ sở lõi xử lý MicroBlaze, thử nghiệm ứng dụng trên FPGA (Trang 45)

Tải bản đầy đủ (PDF)

(84 trang)