Hệ thống ZynQ SoC

Hệ thống ZynQ SoC

 
Họ vi mạch Zynq-7000 là hệ thống SoC có khả năng lập trình toàn diện (cả phần cứng và phần mềm) đầu tiên trên thế giới. Trong mỗi một chip ZynQ-7000 đều đã tích hơp sẵn một hệ vi xử lý PS (Processing System) trên cơ sở bộ vi xử lý Cortex™-A9 lõi kép của hãng ARM và một kiến trúc logic khả trình PL (Programmable logic) sử dụng công nghệ 28nm của Xilinx. Một kiến trúc như vậy cung cấp cho người dùng một nền tảng phần cứng với hiệu năng xử lý và công suất
tiêu thụ tương đương một thiết kế ASIC, trong khi vẫn đảm bảo tính linh hoạt trong thay đổi thiết kế phần cứng của FPGA, và tính dễ dàng trong việc lập trình lại sản phẩm của bộ vi xử lý.
Cấu trúc này có thể được sử dụng theo một trong ba cách:
1.   PS được sử dụng độc lập với PL.
2.   Các lõi IP mềm có thể được tạo ra trong phần PL và kết nối
để mở rộng chức năng của PS. Chúng ta có thể sử dụng tổ hợp PS+PL để tạo ra các hệ thống SoC phức tạp và hiệu năng cao.
3. Tài nguyên logic trong PL có thể được thiết kế để hoạt động một cách độc lập với phần PS. Tuy nhiên PS hoặc JTAG phải được sử dụng để
lập trình PL. 
Hình 9. Sơ đồ khối chức năng của ZynQ-7000 [8].
Với các tài nguyên phần cứng sẵn có trên ZynQ, người sử dụng dễ dàng thực hiện phần cứng của hệ thống nhúng mong muốn trên ZynQ như chỉ ra trong Hình 10. Cho mục đích kiểm chứng mảng MUSRA chúng ta cần tạo ra một hệ thống SoC, trong đó phần điều khiển quá trình cấu hình cho MUSRA được thực hiện bởi bộ vi xử lý ARM Cortext-A9 trong khối PS, trong khi mảng MUSRA được thực hiện bởi các tài nguyên logic tái cấu hình trong khối PL.
Hình 10. Ánh xạ phần cứng của một hệ thống SoC nhúng lên ZynQ [8].

2.3.1.    Hệ vi xử lý PS

Tất cả các thiết bị ZynQ đều được tích hợp sẵn một hệ vi xử lý trên cơ sở bộ vi xử lý ARM Cortex-A9 lõi kép. Đây là một bộ xử lý được thực
hiện “cứng” như một thành phần đã được tối ưu và chuyên dụng trên thiết bị ZynQ. Bên cạnh đó hệ vi xử lý cũng được trang bị nhiều tài nguyên tính toán bổ trợ khác tạo thành đơn vị xử lý ứng dụng APU (Application Processing Unit) và nhiều giao diện ngoại vi, bộ nhớ cache, giao diện ghép nối bộ nhớ, mạng truyền thông, và mạch tạo tín hiệu đồng bộ clock (như được chỉ ra trong
Hình 11).
Sơ đồ khối chức năng của đơn vị APU được chỉ ra trong Hình 11. APU bao gồm hai lõi vi xử lý ARM Cortex-A9. Mỗi lõi xử lý đều được trang bị các đơn vị đồng xử lý đa phương tiện NEON, đơn vị xử lý dữ liệu dấu phẩy động (FPU: Floating Point Unit), đơn vị quản lý bộ nhớ (MMU: Memory Management Unit), bộ nhớ cache mức L1 cho cả dữ liệu và lệnh. APU cũng bao gồm một bộ nhớ cache L2 và bộ nhớ on-chip (On-Chip Memory: OCM) dùng chung cho cả hai lõi vi xử lý. Đơn vị điều khiển SCU (Snoop Control Unit) tạo thành cầu nối giữa các lõi xử lý và các bộ nhớ chia sẻ cũng như tới khối PL. SCU chịu trách nhiệm duy trì sự đồng bộ giữa bộ nhớ cache dữ liệu (L1(D) trong hình
Hình 11) và bộ nhớ cache L2, phân xử khi cả hai lõi xử lý ARM cùng muốn truy xuất tới cache L2.
 
Hình 11. Sơ đồ khối của đơn vị xử lý ứng dụng APU [8].
Truyền thông giữa hệ PS với các thiết bị ngoại vi bên ngoài chip có thể thực hiện trực tiếp thông qua khối ghép nối MIO (Multiplexed Input/Output) gồm 54 chân. Một cách khác để kết nối PS với các ngoại vi bên ngoài là thông qua khối EMIO (Extended MIO). Khi sử dụng EMIO, các kết nối giữa PS và thiết bị ngoại vi được thực hiện trung gian qua khối PL. Cả hai khối MIO và EMIO được chỉ ra ở lề bên trái của Hình 9. Khối EMIO có thể được sử dụng khi yêu cầu kết nối giữa PS với ngoại vi bên ngoài vượt quá khả năng 54 chân của khối MIO hoặc như phương pháp ghép nối giữa khối PS với ngoại vi bên ngoài thông qua một khối IP trung gian thực hiện trong PL. Chức năng của EMIO sẽ được mô tả trong phần 2.3.3.
Các giao diện ghép nối I/O được cung cấp bởi PS bao gồm:
   2 giao diện SPI (Serial Peripheral Interface): cung cấp một phương thức truyền thông nối tiếp sử dụng 4 dây cho cả truyền và nhận;
   2 giao diện I2C: cung cấp một phương thức truyền thông nối tiếp sử dụng 2 dây cho cả truyền và nhận;
 2 giao diện CAN (Controller Area Network): chuẩn truyền thông nối tiếp được sử dụng phổ biến trong công nghiệp ô-tô;
2 giao diện UART (Universal Asynchronous Receiver Transmitter): giao diện truyền thông nối tiếp độ thấp thường được dùng để kết nối thiết bị đầu cuối với máy tính cho mục đích gỡ rối (debug);
   4 giao diện GPIO (General Purpose Input/Output): giao diện ghép nối song song 32-bit;
   2 Giao diệnSD: giao diện dùng ghép nối với SDcard
   2 giao diện USB (Universal Serial Bus): tương thích chuẩn USB 2.0
   2 Giao diện Ethernet: hỗ trợ tốc độ kết nối 10Mbps, 100Mbps và 1Gbps
 
Hình 12. Giao diện ghép nối MIO giữa hệ PS và các linh kiện bên ngoài [8].
 
Hình 13. Sơ đồ khối GPIO và mối liên hệ với MIO và EMIO [8].

2.3.2.   Tài nguyên logic khả trình PL  (Programmable logic)

  
(a)
(b)
Hình 14. Cấu trúc của khối logic tái cấu hình PL [8].

      Tài nguyên logic khả trình (tên tiếng Anh là Programmable Logic và được viết tắt là PL) bao gồm các kết cấu logic có khả năng tái cấu hình (Logic fabrics) và một số tài nguyên phần cứng chuyên dụng tương thích với chuẩn FPGA Artix-7 và Kintex-7 của Xilinx.

Các kết cấu logic khả tái cấu hình chủ yếu được chỉ ra trong Hình 14(a), bao gồm:

   Khối logic khả trình CLB (Configuration Logic Block): CLB là một nhóm nhỏ các phần tử logic được sắp xếp thành một mảng 2 chiều trên PL. Các CLB được kết nối với nhau thông qua mạng định tuyến khả trình. Mỗi CLB được đặt cạnh một ma trận chuyển mạch (switch matrix) và chứa 2 chứa 2 slices như được chỉ ra trong Hình 15.

Hình 15. Cấu trúc của CLB [8].
   Slice là một thành phần cấu thành lên CLB. Mỗi Slice lại được tạo thành từ một tập các tài nguyên phần cứng cho việc thực hiện các mạch logic tuần tự và logic tổ hợp. Trong kiến trúc của ZynQ, như chỉ ra trong Hình 15 mỗi Slice bao gồm 4 bảng LUT, 8 Flip-Flops và các tài nguyên logic khác.
   Bảng LUT (Lookup Table): LUT là tài nguyên phần cứng cá khả năng thực hiện (i) các hàm logic 6 biến; (ii) các khối nhớ ROM (Read only Memory) nhỏ; (iii) các khối nhớ RAM (Random Access Memory); hay (iv) các thanh ghi dịch. Các LUTs có thể được kết hợp với nhau để thực hiện các hàm logic, bộ nhớ, thanh ghi dịch có kích thước lớn hơn.
   Flip-Flop (FF): một phần tử mạch tuần tự thực hiện chức năng của một thanh ghi một bit với chức năng reset.
   Ma trận chuyển mạch (Switch Matrix) – đặt cạnh mỗi CLB là một ma trận chuyển mạch cung cấp chức năng định tuyến linh hoạt cho việc tạo ra các kết nối (i) giữa các phần tử trong một CLB; và từ khối CLB đến các tài nguyên khác trong PL.
  Các khối vào/ra IOB (Input/Output Blocks) – Các khối IOB cung cấp giao diện ghép nối giữa phần PL với các chân vật lý của chip ZynQ, quan đó cho phép các mạch điện bên trong ZynQ thông tin với mạch điện ngoài chip. Mỗi IOB có thể điều khiển một tín hiệu vào hoặc ra 1 bit. Các IOB thường được đặt ở ngoại biên của chip. ZynQ cũng cung cấp 2 khối phần cứng chức năng đặc biệt như chỉ ra trong Hình 14(b), bao gồm:
  Block RAMs hướng tới các ứng dụng có yêu cầu bộ nhớ lớn
   DSP48E1 cung cấp các phép tính số học tốc độ cao hướng tới các ứng dụng xử lý DSP

2.3.3.    Giao diện ghép nối giữa PS và PL

a)     Giao diện ghép nối AXI

Giao diện ghép nối giữa PS và PL cho phép người sử dụng có thể xây dựng các hệ thống phức hợp bằng cách ghép nối hệ thống vi xử lý
PS với các lõi IP phần cứng chuyên dụng được thực thi trên PL. Thành phần then chốt tạo nên giao diện ghép nối giữa PS và PL là chuẩn AXI. Phiên bản cao nhất của AXI là AXI4 là một phần của chuẩn AMBA 3.0 do hang ARM đề xuất. ZynQ sử dụng 9 giao diện ghép nối AXI cho mục địch kết nối PS với PL như chỉ ra trong
Hình 16, trong đó:
     Interconnect (liên kết nối): là một chuyển mạch dùng để quản lý và điều hướng luồng thông tin giữa các giao diện AXI. Có một vài liên kết nối bên trong PS, một vài trong số chúng được ghép nối trực tiếp với PL (như chỉ ra trong Hình 16), mộ số khác chỉ dùng bên trong PS.
     Interface (giao diện ghép nối): là một kết nối điểm – điểm dùng để truyền dữ liệu, địa chỉ và các tín hiệu bắt tay giữa các thiết bị chủ (master: thiết bị có quyền điều khiển bus và khởi tạo một giao dịch truyền thông) với các thiết bị khách (slave client: đáp ứng lại các yêu cầu của master) bên trong hệ thống.
Hình 16 chỉ ra có 3 liên kết nối chính: Memory Interconnection, Master Interconnection, Slave Interconnection. Mỗi liên kết nối này được kết nối bên trong với liên kết nối trung tâm (không được ra trong hình). Bảng mô tả các giao diện ghép nối (tương ứng với các mũi tên trong Hình 16).
Bảng  1: Các giao diệ ghép nối giữa PS và PL [8].
 
+ General Purpose AXI – giao diện AXI đa chức năng là một bus dữ liệu 32 bit phù hợp cho các ứng dụng truyền thông tốc độ thấp và trung bình giữa PS và PL. Giao diên thực hiện truyền thông trực tiếp không sử dụng bộ đệm. Tổng công có 4 giao diện AXI_GP, trong đó PS làm chủ 2 cái, PL làm chủ 2 cái còn lại.
+ Accelerator Cohenrency Port – một kết nối không đồng bộ giữa PL và SCU bên trong APU, có độ rộng bus là 64 bit. Cổng này được sử dụng để đạt được tính kết hợp giữa bộ nhớ cache trong APU với PL. PL
đóng vai trò thiết bị chủ của kết nối này.
+ High performance Ports – Bốn giao diện ghép nối AXI hiệu năng cao có chứa các bộ đệm FIFO để cung cấp các thao tác đọc viết theo kiểu “loạt”, hỗ trợ truyền thông tốc độ cao giữa PL và các bộ nhớ bên trong PS. Độ rộng dữ liệu là 32 hoặc 64 bit. PL đóng vai trò thiết bị chủ của cả bốn cổng này. Mỗi bus được tạo bởi một tập hợp các tín hiệu và các giao dịch truyền thông được thực hiện theo các giao thực được định nghĩa trong chuẩn AXI4.
Hình
16. Giao diện ghép nối AXI [8].

b)   Giao diện EMIO

Một vài kết nối từ PS có thể được định tuyến thông qua PL tới các ngoại vi ngoài chip thông qua giao diện EMIO (Extended MIO). EMIO chỉ hỗ trợ một phần các giao diện ghép nối của MIO. Các kết nối của MIO được sắp xếp thành 2 bank 32 bit. Các giao diện ghép nối được định tuyến qua EMIO trong một vài trường hợp có thể kết nối trực tiếp với các chân bên ngoài của PL. Trong chế độ làm việc này, EMIO có thể cung cấp 64 kết nối vào/ra. Một lựa chọn sử dụng khác của EMIO là ghép nối PS với khối ngoại vi bên trong PL. Hình 17 mô tả cá hai chế độ làm việc đó.
  
Hình 17. Giao diện ghép nối EMIO giữa PS và PL [8].

Trả lời