Do Altera đưa ra những FPGA mật độ cao hơn, nên kích thước của luồng bit cấu hình cũng tăng lên. Điều này dẫn đến những thiết kế đòi hỏi nhiều thiết bị cấu hình hơn để lưu trữ dữ liệu cấu hình và cấu hình những thiết bị này. Do đó, bộ nhớ flash có thể được sử dụng để lưu trữ dữ liệu cấu hình. Một bộ điều khiển được yêu cầu để đọc và ghi dữ liệu vào trong bộ nhớ và thực hiện cấu hình.
Bộ điều khiển bộ nhớ flash có thể giao tiếp với một máy tính hoặc với một bộ vi xử lý để nhận dữ liệu cấu hình thông qua một cổng song song. Bộ điều khiển tạo ra một chuỗi câu lệnh để lập trình cho bộ nhớ flash và xuất dữ liệu cấu hình đến thiết bị FPGAs.
Bộ điều khiển bộ nhớ flash hỗ trợ những lệnh khác nhau đó là các lệnh lập trình bộ nhớ flash và các lệnh cấu hình cho các FPGAs. Bộ điều khiển sẽ kiểm tra xem bộ nhớ flash đã được lập trình thành công sau khi bo mạch cấp nguồn hay chưa. Nếu bộ nhớ flash được lập trình thành công thì sau đó bộ điều khiển sẽ cấu hình cho các thiết bị FPGA. Nếu bộ nhớ flash không được lập trình thành công thì sau đó bộ điều khiển sẽ chờ các lệnh từ PC
hoặc bộ vi xử lý. Bộ thu giải mã các lệnh nó nhận được từ máy tính hoặc bộ vi xử lý để thực hiện một trong các nhiệm vụ: lập trình bộ nhớ flash hay cấu hình cho thiết bị FPGA. Sau khi một câu lệnh được thực hiện, bộ điều khiển sẽ trở về chế độ rỗi và đợi cho đến câu lệnh tiếp theo. Trạng thái làm việc của bộ đìều khiển được trình bày trên hình 2.23
2.2.5.1. Chức năng điều khiển bộ nhớ flash
Bộ điều khiển ghi một byte vào một vùng đặc biệt trong bộ nhớ khi nó lập trình cho bộ nhớ. Sau khi bật nguồn, bộ điều khiển sẽ kiểm tra vùng đặc biệt này trong bộ nhớ để kiểm tra xem byte này đã được ghi vào đó hay chưa. Nếu byte này đã được ghi, thì bộ nhớ flash có thể được lập trình và bộ điều khiển đi đến giai đoạn cấu hình cho thiết bị FPGA bằng việc đọc dữ liệu bên trong bộ nhớ flash. Nếu byte đó chưa được ghi vào trong vị trí đó trong bộ nhớ flash hoặc giá trị không xác định, bộ điều khiển sẽ đi vào trạng thái rỗi và đợi được lập trình từ bộ vi xử lý hoặc máy tính.
2.2.5.2. Nhận dữ liệu từ máy vi tính hay bộ vi xử lý
Máy tính hoặc bộ vi xử lý sử dụng cổng song song để giao tiếp với bộ điều khiển. Có hai loại tín hiệu trong kết nối này (xem hình 2.24), một tín hiệu đầu vào 3 bit từ máy tính hoặc bộ vi xử lý tới bộ điều khiển, và một tín hiệu đầu ra 2 bit từ bộ điều khiển tới máy tính hoặc bộ vi xử lý. Tín hiệu đầu vào bao gồm 3 tín hiệu sau:
•STB (Strobe signal): Tín hiệu xung mẫu từ máy tính hoặc bộ vi xử lý để chỉ rằng dữ liệu của máy tính hoặc bộ vi xử lý là hợp lệ.
•Data_mode: xác định bộ điều khiển trong chế độ câu lệnh hay chế độ dữ liệu. Khi Data_mode ở mức cao thì bộ điều khiển ở chế độ câu lệnh; khi Data_mode ở mức thấp thì bộ điều khiển ở chế độ dữ liệu.
• Data: ý nghĩa của tín hiệu này phụ thuộc vào chân data_mode. Nó có thể là dữ liệu cho chế độ câu lệnh hoặc cho chế độ dữ liệu.
Tín hiệu đầu ra gồm hai tín hiệu sau:
•ACK (Acknowledge): tín hiệu nhận biết là một tín hiệu bắt tay từ bộ điều khiển đến mays tính hoặc bộ vi xử lý.
• Conf_status: chỉ trạng thái cấu hình.
Hình 2.24 Dạng sóng nhận dữ liệu từ máy tính hoặc bộ vi xử lý
Bộ điều khiển nhận một bít dữ liệu hoặc một bit lệnh từ máy tính hoặc bộ vi xử lý trên cả sườn lên và sườn xuống của tín hiệu STB. Sau khi nhận
được dữ liệu này, bộ điều khiển sẽ gửi một tín hiệu xác nhận tới máy tính hoặc bộ vi xử lý để thiết lập trạng thái gửi bit dữ liệu tiếp theo. Tín hiệu ACK nên có cùng mức logic với tín hiệu STB vừa nhận được. Bằng việc không xác nhận ACK, bộ điều khiển có thể dừng quá trình truyền dữ liệu từ máy tính hoặc bộ vi xử lý.
Hình 2.25 thể hiện quan hệ giữa tín hiệu STB và ACK.
Hình 2.25 Dạngsónggửi tín hiệu xác nhận (ACK) tới PC hoặc bộ VXL. 2.3.5.3. Lập trình bộ nhớ Flash
Sau khi nhận một lệnh từ máy tính hoặc bộ vi xử lý, đầu tiên, bộ điều khiển xoá bộ nhớ flash và sau đó bắt đầu lập trình cho bộ nhớ flash. Cần một trạng thái máy riêng để tạo ra một chuỗi lệnh lập trình và độ rộng xung lập trình.
Trong khi lập trình bộ nhớ flash, bộ điều khiển phải kiểm tra một lệnh đã được nhận (data_mode = 1) hay chưa. Một lệnh xác định điểm kết thúc dữ liệu từ máy tính hoặc bộ vi xử lý, và bộ điều khiển sẽ thoát khỏi chế độ lập trình bộ nhớ flash và chuyển sang chế độ chờ (không làm gì).
Một trạng thái máy khác để đọc và xếp hàng byte dữ liệu từ bộ nhớ flash và tạo ra tín hiệu DCLK, DATA0. Bộ điều khiển giám sát những tín
hiệu tín hiệu CONF_DONE từ các FPGA để xác định khi nào thì cấu hình hoàn thành. Khi cấu hình xong bộ điều khiển thoát khỏi chế độ cấu hình và quay trở lại trạng thái chờ.
Hình 2.26 Cấu hình thiết bị sử dụng bộ nhớ ngoài.
Hình 2.27 thể hiện dạng sóng định thời cho sơ đồ cấu hình cho một thiết bị APEX II, APEX 20K, Mercury, ACEX 1K, FLEX 10K hoặc thiết bị FLEX 6000 sử dụng bộ nhớ ngoài và một bộ điều khiển bộ nhớ flash.
Hình 10.27 Dạng sóng định thời cho sơ đồ cấu hình sử dụng bộ nhớ ngoài
Như vậy qua nghiên cứu tìm hiểu các phương pháp cấu hình cho Altere FPGA, chúng ta nhận thấy phương pháp cấu hình PS là đơn giản nhất và dễ thực hiện, nhưng tốc độ chậm. Còn phương pháp PPS tuy tốc độ cấu hình có nhanh hơn trong chế độ PS nhưng cấu trúc phức tạp hơn. Nhưng hiện nay Altera đã đưa ra những FPGA có mật độ cao hơn, nên những thiết kế đòi hỏi kích thước lớn hơn nên cần có những bộ nhớ ngoài để lưu trữ những chương trình của người thiết kế. Vì vậy, trong chương 3 chúng ta sẽ nghiên cứu và thiết kế, kiểm tra và thử nghiệm đối với hai chế độ cấu hình PPS và PS, đồng thời sử dụng bộ nhớ flash để thực hiện cấu hình cho thiết bị FPGA FLEX 10K.
CHƯƠNG 3