Phần mềm thiết kế ASIC lập trình được: - Thiết kế logic mức thấp đầu vào low-level design entry sử dụng VHDL: Bộ Quốc Phòng Mỹ The U.S.. Đối với một ASIC lập trình được thì một công ty
Trang 1MỞ ĐẦU
Trong những năm gần đây, kỹ thuật điện tử đã liên tục có những tiến bộ vượt bậc, đặc biệt là trong những kỹ thuật vi điện tử Khi kích thước và độ phức tạp của các hệ thống số ngày càng gia tăng, rất nhiều công cụ thiết kế được trợ giúp bởi máy tính đã được đưa vào quá trình thiết kế phần cứng Hỗ trợ mạnh mẽ cho phương pháp thiết kế này là những ngôn ngữ mô tả phần cứng HDL Nói đến HDL tức là chúng ta đã đề cập đến công nghệ thiết kế ASIC – hay còn gọi là IC chuyên dụng
Ở nước ta, do nhu cầu về công nghệ ASIC còn chưa cao trong khi đó việc mua sẵn các DSP đa năng không phải là điều khó khăn Tình hình sẽ hoàn toàn thay đổi trong tương lai khi nhu cầu về bảo mật, độc lập và tự chủ công nghệ điện tử - viễn thông phục vụ công cuộc công nghiệp hoá và hiện đại hoá đất nước tăng lên nhanh chóng Việc ứng dụng rộng rãi công nghệ ASIC trong tương lai gần sẽ là một điều
có thể dự đoán trước Do vậy, việc tìm hiểu về công nghệ ASIC để có thể làm chủ các ứng dụng trong công nghiệp là một việc làm hoàn toàn cần thiết Hơn thế nữa, những hiểu biết sâu sắc về các đặc tính kỹ thuật trong công nghệ ASIC không những chỉ có ý nghĩa riêng đối với các lĩnh vực Điện tử - Viễn thông, Công nghệ thông tin nói chung mà còn có ý nghĩa đặc biệt quan trọng trong lĩnh vực an ninh, quốc phòng
Công nghệ FPGA (Field-Programmable Gate Array) đã xuất hiện như một
giải pháp cơ bản cho vấn đề tranh thủ thời gian và chi phí ban đầu thấp Nó cho phép chế tạo ngay và giá thành sản phẩm thấp, tạo nên sức cạnh tranh lớn trên thị trường FPGA là một thiết bị cấu trúc logic có thể được người sử dụng lập trình trực tiếp mà không phải sử dụng bất kỳ một công cụ chế tạo mạch tích hợp nào FPGA được công ty Xilinx giới thiệu đầu tiên vào năm 1985 Hiện nay FPGA đã được nhiều công ty phát triển là AcTel, Altera, Plus Logic, AMD,…
Ở Việt Nam, trong một số năm gần đây, việc nghiên cứu về FPGA đã đạt được những thành tựu nhất định đặc biệt trong các lĩnh vực như xử lý tín hiệu Rađa, các
Trang 2lĩnh vực bảo mật điện thoai Trên một số diễn đàn, người ta đã giới thiệu rất nhiều
về FPGA, về công nghệ lập trình Ram tĩnh, cầu trì nghịch Với những người đã bỏ
ra khoảng thời gian không nhỏ để nghiên cứu về lĩnh vực này thì có thể những thông tin đó hoàn toàn đủ để hình dung ra vấn đề, xong những người đang có ý định tìm hiểu thì quả thực với những thông tin đó để hiểu ra được thì cũng lại phải mất một khoảng thời gian khá dài
Cuốn sách “ Tiếp cận lập trình cho FPGA từ Spartan -3 ” với mục đích
cung cấp những thông tin cần thiết nhất về công nghệ FPGA và đặc biệt cung cấp cho các đối tượng đang có nhu cầu tìm hiểu về công nghệ này có khả năng tiếp cận một cách nhanh chóng với cách thức lập trình cho một FPGA cụ thể Cuốn sách bao gồm 5 chương:
Chương I: Giới thiệu về công nghệ ASIC
Chương II: Giới thiệu một số công nghệ mới liên quan đến thiết kế ASIC hiện nay – Công nghệ FPGA
Chương III: Giới thiệu bo mạch Spartan-3 starter kid board và môi trường lập trình ISE 7.1
Chương IV: Sơ lược về ngôn ngữ VHDL
Chương V: Các bài toán thiết kế và giao tiếp
Trong đó người đọc có thể đọc lướt qua các chương I và II để tìm kiếm một vài thông tin mong muốn Chương III đặc biệt phải quan tâm vì đây là một FPGA cụ thể Chương IV giới thiệu sơ lược về ngôn ngữ VHDL, thực ra về ngôn ngữ VHDL
có rất nhiều sách đã đề cập tới Tuy vậy, chúng ta chỉ cần nắm lượng thông tin ở chương này sau đó đọc kỹ từng bài toán ở chương V sẽ giúp chúng ta có điều kiện hiểu rõ hơn về ngôn ngữ Chương V sẽ là các bài toán từ dễ đến khó, với 6 bài tập chúng ta hoàn toàn làm chủ đựơc bo mạch, và vì vậy, với các bài toán bất kì chỉ cần căn cứ vào thuật toán là chúng ta hoàn toàn có thể triển khai thực hiện được
Do trình độ còn hạn chế vì vậy không tránh khỏi những khiếm khuyết rất mong nhận được các ý kiến đóng góp từ người đọc Cuốn sách này có sử dụng khá nhiều chi tiết từ luận văn cao học của anh Lê Hải Triều – ĐHBK – Hà Nội
Trang 3CHƯƠNG I: CÔNG NGHỆ ASIC
1.1 Các hướng tiếp cận thiết kế ASIC
1.1.1 Các công nghệ lập trình thiết kế ASIC
Tóm tắt các công nghệ lập trình cho ASIC được trình bày trong bảng dưới đây
Bảng1.1 Các đặc tính công nghệ lập trình thiết kế ASIC
Công nghệ lập trình Tính
bay hơi
Có thể lập trình
Diện tích của ASIC
Điện trở (ohm)
Điện dung (pF) Các phần tử RAM tĩnh Có Trong
1.1.2 Thiết kế logic ASIC đầu vào (Logic Design Entry)
Mục đích của thiết kế đầu vào là mô tả một hệ thống vi điện tử dựa trên các
công cụ của hệ tự động thiết kế điện tử EDA (Electronic-Design Automation) Các
Trang 4hệ thống điện tử được xây dựng dựa trên các thành phần tĩnh, như là các IC TLL Thiết kế đầu vào đối với các hệ thống này chính là công việc vẽ các mạch và tổng hợp dạng giản đồ Giản đồ thể hiện các thành phần được kết nối với nhau như thế nào, đó chính là liên kết của một ASIC Phần này của quá trình thiết kế đầu vào được gọi là đầu vào giản đồ, hoặc là bắt giản đồ Một giản đồ mạch mô tả một ASIC giống như là một bản thiết kế cho một công trình xây dựng
Giản đồ mạch là một bản vẽ, là một khuôn dạng đơn giản để chúng ta có thể hiểu và sử dụng, nhưng các máy tính cần làm việc với các phiên bản ASCII hoặc các tệp nhị phân mà chúng ta gọi là netlist (đi dây) Đầu ra của công cụ thiết kế giản
đồ chính là một file netlist mà có chứa mô tả của tất cả các thành phần trong một bản thiết kế và các đường kết nối của chúng
Không phải tất cả các thông tin thiết kế có thể chuyển thành giản đồ mạch hoặc netlist, vì không phải tất cả các chức năng của một ASIC đều được mô tả qua thông tin kết nối Ví dụ, giả sử chúng ta sử dụng một ASIC lập trình được cho một vài chức năng logic ngẫu nhiên Một phần của ASIC có thể được thiết kế bằng cách
sử dụng ngôn ngữ lập trình dạng văn bản Trong trường hợp này thiết kế đầu vào cũng gồm có cả viết mã nguồn Vậy điều gì nếu một ASIC trong hệ thống của
chúng ta có chứa một PROM (Programmable Memory)? Phải chăng vi mã lệnh là
một phần của thiết kế đầu vào? Việc điều hành hệ thống của chúng ta chắc chắn là phụ thuộc vào chương trình chuẩn của PROM Vì vậy có lẽ mã lệnh PROM phải là một phần của thiết kế đầu vào Mặt khác không ai coi mã lệnh hệ điều hành đã được nạp vào RAM trên một ASIC là một phần của thiết kế đầu vào Rõ ràng là có nhiều dạng thiết kế đầu vào khác nhau Trong mỗi một trường hợp nó rất quan trọng để bảo đảm là bạn hoàn thành chỉ định cho hệ thống - không chỉ là xây dựng cấu trúc chính xác mà còn để bất kỳ ai cũng hiểu được là hệ thống làm việc như thế nào Thiết kế đầu vào là một trong những phần quan trọng nhất của công nghệ ASIC Cho đến hiện hay thì hầu hết các thiết kế đầu vào cho ASIC vẫn sử dụng phương pháp giản đồ đầu vào Do ASIC ngày càng trở nên phức tạp hơn, các phương pháp thiết kế đầu vào khác ngày càng trở nên phổ biến Các phương pháp
Trang 5thiết kế đầu vào đều có thể sử dụng phương pháp đồ hoạ, chẳng hạn là một giản đồ, hoặc các tệp dạng text dưới dạng ngôn ngữ lập trình Việc sử dụng ngôn ngữ mô tả
phần cứng HDL (Hardware Description Language) cho mục đích thiết kế đầu vào
cho phép chúng ta tạo ra các netlist trực tiếp bằng cách tổng hợp logic Chúng ta sẽ
đề cập đến các phương pháp thiết kế đầu vào mức thấp cùng với các ưu điểm cũng như nhược điểm của chúng trong mục 2.3
Thiết kế đầu vào bao gồm các thành phần thiết kế sau:
- Thiết kế thư viện ASIC
- Thiết kế thư viện các vi mạch ASIC lập trình được (Programmable ASIC)
- Thiết kế phần tử logic ASIC lập trình được
- Thiết kế phần tử vào/ra ASIC lập trình được
- Thiết kế phần tử kết nối ASIC lập trình được
Phần mềm thiết kế ASIC lập trình được:
- Thiết kế logic mức thấp đầu vào (low-level design entry) sử dụng VHDL: Bộ Quốc Phòng Mỹ (The U.S Department of Defence - DoD) đã
hỗ trợ việc phát triển ngôn ngữ VHDL (VHSIC Hardware Description Language) như một phần của chương trình quốc gia VHSIC (Very High- Speed IC) vào đầu thập kỷ 80
- Tổng hợp logic (logic synthesis): Tổng hợp logic cung cấp liên kết giữa
một tệp HDL (VHDL hoặc Verilog) và một netlist tương tự như cách mà một bộ biên dịch C cung cấp liên kết giữa mã lệnh chương trình C và ngôn ngữ máy
- Mô phỏng (simulation): Các kỹ sư đã quen với các hệ thống mẫu dùng để
kiểm tra sản phẩm thiết kế của họ, thương thường sử dụng một đế thử mạch mẫu, cho phép cắm các IC và các dây dẫn lên Đế thử mạch mẫu có thể thực hiện được khi có cho phép xây dựng hệ thống từ một vài IC TTL Tuy nhiên điều này là phi thực tế đối với thiết kế ASIC Do vậy hầu hết các
kỹ sư thiết kế ASIC đều sử dụng phương pháp mô phỏng tương đương thay cho mô hình đế thử mạch
Trang 6- Thử nghiệm mức logic (test): Các ASIC được thử nghiệm theo hai giai
đoạn trong quá trình sản xuất bằng cách sử dụng các phương pháp thử nghiệm sản xuất
1.1.3 Thiết kế vật lý (Physical Design)
Hình 1.1 biểu diễn một phần của sơ đồ thiết kế, đó là các bước thiết kế vật lý đối với một ASIC
Hình 1.1 Một phần của thiết kế ASIC gồm có phân chia hệ thống, lên sơ
đồ mặt bằng, sắp xếp các phần tử và các bước định tuyến đường kết nối
Đầu tiên chúng ta áp dụng việc phân chia hệ thống để chia một hệ thống vi điện tử thành các ASIC Trong phần lên sơ đồ mặt bằng chúng ta sẽ đánh giá kích thước và đặt các vị trí liên quan của các khối trong ASIC (đôi khi còn được gọi là
xếp chip - chip planning) Cùng thời điểm này chúng ta định vị khoảng trống cho
đường xung nhịp và nguồn và quyết định vị trí của cổng I/O Việc sắp xếp định nghĩa vị trí của các phần tử logic cùng với sự linh hoạt của các khối và khoảng trống dành cho việc nối các phần tử logic Việc sắp xếp đối với thiết kế ma trận
Trang 7cổng (gate-array) hoặc phần tử tiêu chuẩn (standard-cell) bố trí mỗi một phần tử
logic vào vị trí trong cùng một hàng Việc lên sơ đồ mặt bằng và sắp xếp phần tử đôi khi có thể sử dụng công cụ CAD Việc định tuyến thực hiện đường kết nối giữa các phần tử logic Việc định tuyến là một vấn đề rất khó và thường được phân chia thành các bước riêng biệt được gọi là định tuyến toàn cục và định tuyến cục bộ Định tuyến toàn cục xác định các kết nối giữa các phần tử logic đã đặt chỗ và các khối sẽ đặt chỗ ở đâu Còn định tuyến cục bộ là mức định tuyến cụ thể và chi tiết đến từng phần tử
1.1.4 Các công cụ CAD (CAD Tools)
Để phát triển một công cụ CAD cần thiết phải chuyển đổi mỗi một bước trong thiết kế vật lý thành các vấn đề có mục đích và định hướng rõ ràng Mục đích là những gì chúng ta cần phải thực hiện, còn định hướng là cách thực hiện mục đích
Ví dụ trong các bước thiết kế vật lý ASIC thì các mục đích và định hướng như sau:
Phân chia hệ thống (System partitioning):
- Mục đích: Phân chia một hệ thống thành một số các ASIC
- Định hướng: Tối thiểu hoá số lượng các kết nối ngoài giữa các ASIC Giữ cho mỗi ASIC nhỏ hơn kích thước cực đại
Lên sơ đồ mặt bằng (Floorplanning):
- Mục đích: Tính toán kích thước của tất cả các khối và sắp xếp vị trí của chúng
- Định hướng: Bảo đảm sự liên kết cao giữa các khối về mặt tự nhiên càng gần càng tốt
Sắp xếp các phần tử (Placement):
- Mục đích: Sắp xếp việc kết nối giữa các vùng và vị trí của tất cả các phần
tử logic cùng với các khối linh hoạt
- Định hướng: Tối thiểu hoá các vùng ASIC và mật độ kết nối
Định tuyến toàn cục (Global routing):
- Mục đích: Quyết định vị trí của tất cả các kết nối
- Định hướng: Tối thiểu hoá toàn bộ vùng kết nối được sử dụng
Trang 8Định tuyến chi tiết (Detailed routing):
- Mục đích: Hoàn thành định tuyến tất cả các kết nối trên chip
- Định hướng: Tối thiểu hoá tổng số độ dài kết nối được sử dụng
1.2 Thiết kế ASIC đầu vào (design entry)
1.2.1 Thiết kế thư viện ASIC
Thư viện phần tử là một phần chính trong thiết kế ASIC Đối với một ASIC lập trình được thì một công ty chuyên về PLD, FPGA cung cấp cho chúng ta một thư viện các phần tử lôgic dưới hình thức một bộ kit thiết kế, thường là chúng ta không có một sự lựa chọn nào và giá của nó nói chung khoảng vài nghìn đô la Đối với MGAs và CBICs chúng ta có ba lựa chọn : nhà cung cấp ASIC (công ty sẽ xây dựng ASIC cho chúng ta) sẽ cung cấp một thư viện phần tử, hoặc chúng ta có thể mua một thư viện phần tử từ một nhà cung cấp thư viện thứ ba, hoặc chúng ta có thể
tự xây dựng thư viện phần tử của chính mình
Sự lựa chọn đầu tiên, đó là sử dụng một thư viện ASIC của nhà cung cấp, yêu cầu chúng ta phải sử dụng một tập các công cụ thiết kế đã được cung cấp bởi nhà cung cấp ASIC để đưa vào và mô phỏng thiết kế của chúng ta Tức là chúng ta phải mua các công cụ và thư viện phần tử Một vài nhà cung cấp ASIC (đặc biệt cho MGAs) đã cung cấp các công cụ được phát triển theo yêu cầu
Thư viện của nhà cung cấp ASIC thông thường là một thư viện ảo - các phần
tử chỉ là các khối trống rỗng, nhưng nó bao gồm đủ thông tin để bố trí sơ đồ mạch Sau khi chúng ta hoàn thành việc bố trí sơ đồ mạch, chúng ta đưa ra netlist đến nhà cung cấp ASIC để họ bổ sung vào các phần tử ảo trước khi bắt đầu sản xuất chip cho chúng ta
Các lựa chọn thứ hai và ba yêu cầu chúng ta thực hiện một quyết định mua bán Nếu chúng ta hoàn thành việc thiết kế một ASIC sử dụng thư viện phần tử mà chúng ta mua, thì chúng ta đã sở hữu việc chế tạo chip được sử dụng để sản xuất ASIC của chính mình Những thư viện phần tử như vậy thường đắt (có thể lên đến vài trăm nghìn đô la) Tuy nhiên điều này có nghĩa rằng việc mua một thư viện đắt
có thể rẻ về lâu dài nếu chúng ta sản xuất nhiều hơn là các giải pháp khác
Trang 9Lựa chọn thứ ba sẽ phát triển một thư viện phần tử theo yêu cầu Nhiều công
ty máy tính và công ty điện tử lớn chọn phương án này Hầu hết thư viện phần tử thiết kế hiện nay vẫn tiếp tục được phát triển theo hình thức “yêu cầu” mặc dù thực
tế quá trình phát triển thư viện rất phức tạp và đắt
Tuy nhiên để tạo ra mỗi phần tử trong một thư viện phần tử ASIC phải bao gồm các yếu tố sau:
- Sơ đồ bố trí vật lý
- Mô hình hoạt động
- Mô hình Verilog/VHDL
- Mô hình tính toán thời gian chi tiết
- Chiến lược thử nghiệm, kiểm tra
Có hai loại ASIC lập trình được: Thiết bị logic lập trình được - PLD
(Programmable Logic Device) và Ma trận cổng lập trình được theo hàng - FPGA (Field-Programmable Gate Array) Việc phân biệt giữa hai loại ASIC này chưa
được chuẩn hoá Sự khác nhau thực tế chỉ là sự kế thừa của chúng PLDs bắt đầu từ những thiết bị nhỏ dùng để thể thay thế một một phần của họ IC TTL, và chúng đã được phát triển tương tự như người “anh em” FPGA của chúng, chỉ khác nhau về công nghệ chế tạo Trong mục này, chúng ta sẽ coi lại cả hai loại ASICs đều là các ASIC lập trình được
Một ASIC lập trình được chính một chip mà chúng ta, như một người thiết kế
hệ thống, có thể tự lập trình Chúng ta tiến hành thiết kế đầu vào và mô phỏng Tiếp theo, một phần mềm đặc biệt tạo ra một chuỗi các bit mô tả thêm mở rộng các kết nối theo yêu cầu để thực hiện thiết kế của chúng ta - gọi là tệp cấu hình Sau đó, chúng ta kết nối máy tính tới chip và lập trình cho chip đó tuân theo tệp cấu hình
Trang 10Tuy nhiên công nghệ lập trình có thể có hoặc có thể không lâu dài Do vậy chúng ta không thể xoá bỏ những lập trình trong các ASIC lập trình được một lần
Vì thế, ngày nay người ta thường sử dụng các loại PLD và FPGA có khả năng lập trình lại được
1.2.3 Các phần tử logic ASIC lập trình được
Tất cả các ASIC (hoặc PLD hoặc FPGAs) đều chứa một phần tử lôgic cơ bản
Đó là ba kiểu phần tử lôgic cơ bản khác nhau: (1) Bộ dồn kênh cơ sở; (2) Bảng sự thật cơ sở; (3) Phần tử logic ma trận lập trình được Việc lựa chọn giữa các phần tử
đó phụ thuộc vào công nghệ lập trình
1.2.4 Các phần tử vào/ra ASIC lập trình được
Tất cả ASICs lập trình được đều chứa một vài kiểu phần tử Vào/Ra (I/O) nào
đó Các phần tử Vào/Ra đó điều khiển mức lôgic tín hiệu vào - ra của chip, nhận và kiểm tra điều kiện của các đầu vào từ bên ngoài, cũng như bảo vệ tĩnh điện cho chip
Sau đây là các yêu cầu khác nhau của các loại phần tử Vào/Ra:
- Nguồn đầu ra DC: điều khiển trở kháng tải tại đầu ra DC hoặc tần số thấp (thấp hơn 1 MHz) Ví dụ các loại trở kháng tải như LED, rơ le, mô-tơ loại nhỏ…
- Nguồn đầu ra AC: điều khiển dung kháng tải tốc độ cao (lớn hơn 1 MHz) Ví
dụ dung kháng tải các chip logic khác, bus dữ liệu hoặc bus địa chỉ, cáp ruy băng
- Nguồn đầu vào DC: ví dụ các nguồn như chuyển mạch, cảm biến, hoặc các chip logic khác
- Nguồn đầu vào AC: ví dụ các nguồn như tín hiệu logic tốc độ cao (lớn hơn 1 MHz) từ các chip khác
- Nguồn tạo xung nhịp đầu vào: ví dụ là đồng hồ xung nhịp hệ thống hoặc các tín hiệu trên bus đồng bộ
- Nguồn cung cấp đầu vào: chúng ta cần cấp nguồn cho phần tử Vào/Ra và các phần tử lôgic bên trong chip, mà điện áp không bị sụt hoặc nhiễu Ngoài ra chúng ta
có thể cũng cần một nguồn cung cấp riêng biệt để lập trình cho chip
Trang 11Các tùy chọn đối với phần tử Vào/Ra là: sự khác nhau về mức độ của nguồn, tính tương thích với TTL, các đầu vào trực tiếp hoặc phải được điều chỉnh, các đầu
ra trực tiếp hoặc phải được điều chỉnh, phối hợp trở kháng, bảo vệ quá điện áp, điều khiển tốc độ tròn, và quét hạn chế
1.2.5 Các phần tử ASIC liên kết nối lập trình được
Tất cả ASIC đều chứa các phần tử liên kết nối lập trình được Cấu trúc và sự phức tạp của các phần tử liên kết nối phần lớn được xác định thông qua công nghệ lập trình và kiến trúc của các phần tử lôgic cơ bản Chất liệu mà chúng ta dùng để xây dựng các phần tử liên kết nối là hợp kim nhôm, loại hợp kim có thể chịu được xấp xỉ 50 mW/1 đơn vị diện tích và dung kháng là 0.2 pFcm-1 Các loại ASIC lập trình được đời đầu tiên được xây dựng sử dụng công nghệ hai lớp kim loại; còn các ASIC hiện nay sử dụng ba lớp kim loại hoặc nhiều hơn
1.2.6 Phần mềm thiết kế ASIC lập trình được
Có năm thành phần cấu thành một ASIC: (1) Công nghệ lập trình, (2) Phần tử lôgic cơ bản, (3) Phần tử Vào/Ra, (4) Phần tử liên kết nối, và (5) Phần mềm thiết kế cho phép chúng ta lập trình ASIC Phần mềm thiết kế thường là bị ràng buộc gần gũi hơn với kiến trúc PLD và FPGA hơn các kiểu ASICs khác
Đối với bất kỳ ASIC nào thì một nhà thiết kế cũng cần phần mềm thiết kế đầu vào, một thư viện phần tử, và phần mềm thiết kế vật lý Mỗi một nhà cung cấp ASIC thường bán các bộ kit thiết kế bao gồm tất cả phần mềm và phần cứng mà một người thiết kế cần đến Rất nhiều bộ kit thiết kế này sử dụng phần mềm thiết kế đầu vào của một công ty khác Thường thì người thiết kế mua luôn phần mềm đó từ
nhà cung cấp ASIC Phần mềm này được gọi là phần mềm OEM (Original Equipment Manufacturer) Tất cả các nhà cung cấp ASIC đều có phần mềm thiết kế
vật lý của riêng mình - vì các phần mềm thiết kế như vậy mới có thể phù hợp với các giải thuật tương ứng với kiến trúc họ
Giản đồ đầu vào không phải là phương pháp duy nhất thiết kế đầu vào cho các ASIC lập trình được Một số nhà thiết kế mô tả việc điều khiển lôgic và trạng thái máy dưới dạng các phương trình lôgic và giản đồ trạng thái Một giải pháp khác nữa
Trang 12cho thiết kế ASIC là sử dụng một trong số các ngôn ngữ mô tả phần cứng (HDL) dựa theo một số tiêu chuẩn Có hai dạng ngôn ngữ thông dụng Thứ nhất là các phần mềm được phát triển từ việc lập trình cho các ASIC loại PLD Đó là ABEL, CUPL, và PALASM, đó là các ngôn ngữ đơn giản và dễ học Các ngôn ngữ này rất mạng trong việc mô tả các máy trạng thái và tổ hợp lôgic Thứ hai là các ngôn ngữ HDL bao gồm VHDL và Verilog, đó là các ngôn ngữ bậc cao hơn và sử dụng phức tạp hơn nhưng chúng có khả năng mô tả hoàn chỉnh các ASICs và cả một hệ thống Sau khi hoàn thành thiết kế đầu vào và tạo ra một netlist, bước tiếp theo là việc
mô phỏng Có hai kiểu mô phỏng thường được sử dụng cho thiết kế ASIC Kiểu mô phỏng đầu tiên là mô phỏng lôgic theo hoạt động, chức năng, và mô phỏng thời gian Công cụ này có thể phát hiên bất kỳ lỗi thiết kế nào Người thiết kế cung cấp các tín hiệu đầu vào để mô phỏng và kiểm tra đầu ra theo yêu cầu
Kiểu mô phỏng thứ hai, là kiểu thường sử dụng nhất trong thiết kế ASIC, đó là một công cụ phân tích - tính toán thời gian Công cụ phân tích - tính toán thời gian
là một thiết bị mô phỏng tĩnh và bỏ qua việc cung cấp các tín hiệu đầu vào Thay vào đó công cụ phân tích - tính toán thời gian kiểm tra các đường giới hạn mà ở đó làm hạn chế tốc độ hoạt động - các đường tín hiệu gây ra độ trễ lớn
1.3 Thiết kế logic mức thấp đầu vào (low-level design entry)
1.3.1 Giản đồ đầu vào (Schematic Entry)
Giản đồ đầu vào là phương pháp phổ biến nhất của thiết kế đầu vào đối với các ASIC Các ngôn ngữ HDL đang thay thế cho các giản đồ đầu vào mức cổng thông thường, nhưng các công cụ đồ hoạ mới dựa trên các giản đồ đầu vào ngay nay cũng đang được sử dụng để tạo ra một số lượng lớn các mã nguồn HDL
Các giản đồ mạch được vẽ trên các sheet giản đồ Kích thước tiêu chuẩn của
các sheet giản đồ tuân theo tiêu chuẩn ANSI A-E (chủ yếu dùng ở Mỹ) và ISO A0 (chủ yếu dùng ở châu Âu) Như trên hình 2.2 thể hiện 2 hình giống cái “cái mai”
A4-và “cái xẻng”, đó là các biểu tượng đã được công nhận của các cổng AND, NAND,
OR và NOR
Trang 13Hình 1.2 IEEE khuyến nghị kích thước và các ký hiệu cho các cổng logic
(a) Cổng NAND; (b) Cổng OR-độc nhất
Hình 1.3 Các thuật ngữ được dùng trong các giản đồ mạch
Các công cụ vẽ giản đồ đầu vào cho thiết kế ASIC tương tự như thiết kế bo
mạch in PCB (Printed-Circuit Board) Trên một PCB thường chỉ có vài trăm thành
phần hoặc phần tử TTL hoặc các điện trở, tranzitor hoặc tụ điện, cuộn cảm Nếu chúng ta coi một cổng logic trên một ASIC tương đương với một thành phần trên
một PCB, thì một ASIC cỡ lớn chứa hàng trăm ngàn thành phần như vậy Do vậy
để vẽ toàn bộ các phần tử của một ASIC là điều không tưởng
1.3.1.1 Thiết kế theo thứ bậc (Hierarchical Design)
Việc thiết kế theo thứ bậc sẽ làm giảm kích thước và độ phức tạp của một giản
đồ đầu vào Một giản đồ điện tử có thể chứa các giản đồ con Các giản đồ con cũng
có thể chứa các giản đồ nhỏ hơn nữa
Việc lựa chọn để thiết kế theo thứ bậc là để có thể vẽ được tất cả các thành phần của một ASIC trên một giản đồ cực lớn không có thứ bậc dạng thiết kế phẳng Đối với một ASIC đời mới có chứa hàng ngàn hoặc nhiều hơn nữa các cổng logic
Trang 14bằng cách sử dụng thiết kế phẳng hoặc giản đồ phẳng là điều không thể thực hiện được Do vậy người ta phải phân cấp thiết kế cho các giản đồ thiết kế đầu vào
1.3.1.2 Thư viện phần tử (The Cell Library)
Các thành phần trong một giản đồ ASIC thường được chọn từ một thư viện các phần tử logic Các phẩn tử của thư viện cho tất cả các loại ASIC đôi khi còn
được biết đến như là các khối modul (module)
Hầu hết các công ty trong lĩnh vực ASIC đều cung cấp một thư viện các phần
tử với các cổng cơ bản được sử dụng trong giản đồ đầu vào
Có hai vấn đề cần đặt ra đối với các thư viện giản đồ ASIC là không có qui ước về đặt tên và không có tiêu chuẩn dành riêng cho hoạt động của phần tử
Trong thư viện các phần tử thì các cổng logic là các phần tử cơ bản, chẳng hạn như cổng NAND Trong một thiết kế phân cấp ASIC thì một phần tử có thể là một cổng NAND, một mạch flip-flop, một bộ nhân hoặc thậm chí có thể là một bộ vi xử
lý Chính vì vậy mà chúng ta thấy rằng các thuật ngữ về phần tử đều được chấp nhận một cách chung chung trong một giản đồ đầu vào nhiều khi gây ra sự lầm lẫn Thuật ngữ phần tử được dùng để biểu diễn cả các phần tử cơ bản và cả các giản đồ con Mặc dù chúng có khác nhau trên thực tế như chúng vẫn có mối liên quan gần gũi, và được chấp nhận dùng chung
1.3.1.3 Các tên gọi (Names)
Mỗi một phần tử, có thể là phần tử cơ bản hoặc không phải, khi được đặt vào một giản đồ thiết kế ASIC đều phải có tên Mỗi phần tử khi sử dụng đều dùng theo một tên duy nhất và không được trùng lặp trong giản đồ đầu vào mặc dù chúng có thể là bản sao chép của nhau từ cùng một thư viện
1.3.1.4 Các biểu tượng và ký hiệu trên giản đồ (Schematic Icons and Symbols)
Hầu hết các chương trình vẽ giản đồ đầu vào đều cho phép người thiết kế sử dụng các biểu tượng đặc biệt hoặc biểu tượng tự tạo Ngoài ra công cụ vẽ giản đồ đầu vào cũng thường tự động tạo ra biểu tượng cho các giản đồ con để dùng trong các giản đồ mức cao hơn Đây được gọi là các biểu tượng gốc hoặc ký hiệu gốc
Trang 15Các đường kết nối ngoài của giản đồ con được tự động gắn thêm biểu tượng, thường thường là một hình chữ nhật Ví dụ về các biểu tượng và ký hiệu đối với một phần tử có tên là DLAT được cho trong hình 2.4
Hình 1.4 Một phần tử và các giản đồ con của nó (a) Một thư viện giản đồ chứa các biểu tượng dành cho các phần tử cơ bản; (b) Một giản đồ con cho một phần tử DLAT, chứa tên của các phần tử cơ bản; (c) Biểu tượng cho phần tử
DLAT
1.3.1.5 Các đường nối (Nets)
Các giản đồ trên hình 2.4 có chứa cả các đường nối cục bộ và đường nối bên ngoài Như trên hình 2.4.b đường nối cục bộ là n1, nối giữa một phần tử AND có tên là and1 và một phần tử OR có tên là or1 Còn đường nối ngoài là đường nối giữa một phần tử với một đường nối khác, trên hình 2.4.b là n3
Để thuận tiện cho việc đặt tên các đường kết nối trong một giản đồ phân cấp người ta sử dụng tên tiền tố của phần tử để đặt tên cho đường nối Các ký tự đặc biệt (như ‘;’ ‘/’ ‘$’ ‘#’ ) không được dùng để đặt tên cho đường nối Tuy nhiên việc đặt tên thường là được thực hiện tự động thông qua công cụ vẽ giản đồ đầu vào Trong các ngôn ngữ HDL (VHDL và Verilog) có cách đặt tên cho đường nối rất chính xác và chặt chẽ đã được tiêu chuẩn trong các kiến trúc phân cấp
1.3.1.6 Các đầu nối (Connections)
Các phần tử có các đầu cuối (terminal) là các đầu vào hoặc đầu ra của phần tử
đó Các đầu cuối (terminal) còn được biết đến dưới các tên như các chân (pin), các đầu nối (connection), hoặc là các đầu tín hiệu (signal) Thuật ngữ chân (pin) được
sử dụng rất rộng rãi, tuy nhiên ở đây chúng ta chủ yếu sử dụng thuật ngữ đầu cuối
để tránh nhầm với thuật ngữ chân (pin) trong một ASIC đã đóng gói Ngoài ra thuật
Trang 16ngữ chân (pin) còn thường được dùng trong giản đồ đầu vào và chương trình định
tuyến đường nối chủ yếu cho các thiết kế PCB
Hình 1.5 Ví dụ về việc sử dụng bus để đơn giản hoá một giản đồ (a) Các đầu nối A, B, C; (b) Các đầu nối A, B, C và DQ0 - DQ7
1.3.2 Các ngôn ngữ thiết kế mức thấp (Low-level Design Languages)
Trong trường hợp thiết kế ASIC thì ngôn ngữ này rất quan trọng Có hai vấn cần đề cập đến là: việc thay đổi một giản đồ rất khó và vẫn chưa có tiêu chuẩn đối với các ký hiệu và thông tin giản đồ dùng để lưu trữ trong một netlist Điều này có nghĩa là chúng ta cần phải chuyển đổi từ thiết kế mức thấp mà bạn đã sử dụng thiết
kế PLD thành một hoặc nhiều thiết kế ASIC tương ứng Thông thường thì chúng ta nhập nhiều PLD thành một PLD đơn lớn hơn chính là ASIC Đó chính là ngôn ngữ thiết kế mức thấp để chuyển đổi và đọc hiểu từ các PLD sang khuôn dạng mà bạn
có thể sử dụng được trong các hệ thống thiết kế ASIC khác
Một số ngôn ngữ như sau:
- Ngôn ngữ ABEL: ABEL là một ngôn ngữ lập trình PLD từ các dữ liệu I/O
(Data I/O)
- Ngôn ngữ CUPL: CUPL là một ngôn ngữ thiết kế PLD từ các thiết bị logic
(Logical Devices)
Định dạng EDIF:
Đây là một tiêu chuẩn dùng để trao đổi thông tin giữa các công cụ EDA với
nhau đó là định dạng trao đổi lẫn nhau trong thiết kế điện tử - Electronic Design Interchange Format - EDIF Phiên bản hay được sử dụng nhất là EDIF 2 0 0 do EIA (Electronic Industries Association - Hiệp hội công nghiệp điện tử) phát hành có
Trang 17tên là Tiêu chuẩn ANSI/EIA 548-1988 - còn được gọi là EDIF 1988 Hiện nay đã
có phiên bản 3.0.0 và 4.0.0 Hầu hết các công ty trong lĩnh vực EDA đều hỗ trợ chuẩn EDIF Các công ty chuyên về ASIC - FPGA là Altera và Actel đều sử dụng EDIF như là khuôn dạng netlist của họ và Xilinx cũng đã thông báo họ cũng đã đề cập đến việc chuyển dần khuôn dạng XNF của họ sang khuôn dạng EDIF
1.4 Tổng hợp logic (Logic Synthesis)
Tổng hợp logic cung cấp một liên kết giữa HDL và netlist tương tự như cách một trình biên dịch C cung cấp liên kết giữa mã nguồn C và ngôn ngữ máy Tuy nhiên, việc so sánh song song như trên cung chỉ mang tính tương đối C được phát triển để sử dụng với các trình biên dịch, còn HDL thì không được phát triển để sử dụng với các công cụ tổng hợp logic Verilog thì được thiết kế như một ngôn ngữ
mô phỏng còn VHDL thì được thiết kế như một ngôn ngữ mô tả và dữ liệu Cả Verilog và VHDL đều được phát triển từ đầu thập niên 80, trước khi nó được giới thiệu như một phần mềm thương mại dùng để tổng hợp logic Do các ngôn ngữ HDL đó hiện nay được sử dụng vào mục đích không phải như đúng ý đồ ban đầu, nên hiện trạng của nó trong tổng hợp logic gần giống như các bộ biên dịch ngôn ngữ máy tính Do vậy tổng hợp logic buộc người thiết kế phải sử dụng một tập con của cả Verilog và VHDL Hiện nay, VHDL được sử dụng rộng rãi và chủ yếu ở Châu Âu, còn Verilog thì được dùng chính ở Mỹ và Nhật Việc này làm cho tổng hợp logic là một vấn đề rất khó Hiện trạng của các phần mềm tổng hợp giống như việc một người học ngoại ngữ nhưng năm năm sau mới sử dụng đến
Khi nói đến công cụ tổng hợp logic sử dụng HDL thì người ta thường nghĩ nó liên quan đến phần cứng hơn là việc tổng hợp logic sẽ thực hiện trên netlist Theo đánh giá của các chuyên gia “ASIC học” thì phải 5 năm nữa chúng ta mới hoàn thiện được quá trình tổng hợp logic như mong muốn
Người thiết kế sử dụng thiết kế đầu vào dạng text hoặc đồ hoạ để tạo ra mô hình hoạt động HDL không bao gồm bất kỳ tham chiếu nào đến các phần tử logic Các sơ đồ trạng thái, các mô tả đường dẫn dữ liệu đồ hoạ, các bảng sự thật, các mẫu RAM/ROM, và các giản đồ mức cổng (gate-level) có thể sử dụng cùng với một mô
Trang 18tả HDL Mỗi khi hoàn thành một mô hình hoạt động HDL, hai thành phần yêu cầu phải xử lý là: một bộ tổng hợp logic (bao gồm phần mềm và tài liệu đi kèm) và một thư viện phần tử (bao gồm các phần tử logic chẳng hạn như cổng NAND, AND ) được gọi là thư viện nguồn Hầu hết các công ty phần mềm tổng hợp chỉ cung cấp phần mềm Còn hầu hết các nhà cung cấp ASIC thì chỉ cung cấp các thư viện phần
tử
Mô hình hoạt động được mô phỏng để kiểm tra việc thiết kế theo tham số kỹ thuật còn sau đó bộ tổng hợp logic sẽ được sử dụng để tạo ra một netlist, một mô hình cấu trúc chỉ chứa tham chiếu đến các phần tử logic Hiện nay không có khuôn dạng tiêu chuẩn cho các netlist mà tổng hợp logic tạo ra, nhưng phổ biến nhất hiện nay người ta vẫn sử dụng khuôn dạng EDIF Một vài công cụ tổng hợp logic cũng
có thể tạo ra cấu trúc HDL (như Verilog và VHDL) Sau khi tổng hợp logic bản thiết kế được thực hiện mô phỏng lại để so sánh với việc mô phỏng hoạt động trước
đó Việc xếp lớp đối với bất kỳ ASIC nào đều có thể được tạo ra từ mô hình cấu trúc sinh ra thông qua quá trình tổng hợp logic
1.4.1 Ví dụ về tổng hợp logic
Trước hết chúng ta hãy tìm hiểu về một ví dụ của tổng hợp logic Ở đây các phần tử logic đều sử dụng công nghệ VLSI 1.0 m m ASIC đầu tiên được thiết kế bằng tay sử dụng các giản đồ đầu vào và một sổ tay dữ liệu ASIC thứ hai sử dụng Verilog cho thiết kế đầu vào và một bộ tổng hợp logic Bảng 2.2 so sánh kết quả của hai phương pháp trên Việc tổng hợp ASIC theo phương pháp thứ hai cho kết quả là ASIC nhỏ hơn 16% và tốc độ nhanh hơn 13% so với cách tổng hợp bằng tay
Chúng ta cùng tìm hiểu tại sao lại có vấn đề trên Hình 2.6 biểu diễn giản đồ một bộ so sánh và dồn kênh được thiết kế bằng tay Còn bên phải của hình 2.6 là mã nguồn cũng của bộ so sánh và dồn kênh có cùng chức năng Việc so sánh hai kết quả cho trong bảng 2.3 đã chỉ ra lý do của phương pháp thứ hai cho sản phẩm có kích thước nhỏ hơn, tốc độ nhanh hơn thậm chí còn sử dụng nhiều phần tử hơn
Trang 19Bảng1.2 So sánh thiết kế tổng hợp logic ASIC bằng tay và tổng hợp logic
sử dụng Verilog theo lý thuyết
dẫn/ns (1)
Số các phần tử logic tiêu chuẩn
Số tranzitor tiêu chuẩn
Bảng 1.3 So sánh thiết kế tổng hợp logic ASIC bằng tay và tổng hợp logic
sử dụng Verilog trên bộ so sánh và dồn kênh trong thực tế
dẫn/ns (1)
Số các phần tử logic tiêu chuẩn
Số tranzitor tiêu chuẩn
module comp_mux(a, b, outp);
if (ina <= inb) compare = ina;
else compare = inb;
end endfunction assign outp = compare(a, b);
endmodule
Hình 1.6 Thiết kế đầu vào bằng tay và sử dụng Verilog
Trang 201.4.2 VHDL và tổng hợp logic
Hầu hết các bộ tổng hợp logic bắt buộc chúng ta phải tuân theo một tập các qui tắc khi chúng ta sử dụng một hệ thống logic để bảo đảm là chúng ta tổng hợp tuân theo đúng như trong mô tả hoạt động của nó Tập các qui tắc để sử dụng theo tiêu chuẩn VHDL IEEE hệ thống 9 giá trị
- Chúng ta có thể sử dụng các giá trị logic tương ứng với các trạng thái ‘1’,
‘H’, ‘0’ và ‘L’ trong bất kỳ cách nào
- Một vài công cụ tổng hợp không chấp nhận trạng thái logic ‘U’ khởi động
- Chúng ta có thể sử dụng các trạng thái logic ‘Z’, ‘X’, ‘W’ và ‘-’ trong tín hiệu và các phép gán biến theo bất kỳ cách nào ‘Z’ được tổng hợp thành 3 trạng thái logic
- Các trạng thái ‘X’, ‘W’ và ‘-’ được xử lý như các giá trị không biết hoặc không quan tâm
Các giá trị ‘Z’, ‘X’, ‘W’ và có thể sử dụng trong các mệnh đề điều kiện chẳng hạn như so sánh trong các lệnh if hoặc case Tuy nhiên một vài công cụ tổng hợp sẽ
bỏ qua chúng và chỉ tuân theo quanh các bit ‘1’ và ‘0’ Do vậy, một thiết kế được tổng hợp có thể hoạt động khác với khi mô phỏng nếu một tác nhân kích thích sử dụng ‘Z’, ‘X’, ‘W’ hoặc ‘-’ Các đóng gói tổng hợp IEEE cung cấp một hàm dành riêng cho việc so sánh là STD_MATCH
Trong VHDL có các mô hình tổng hợp như sau:
- Khởi động và khởi động lại (Initialization and Reset)
- Tổ hợp Tổng hợp logic trong VHDL (Combinational Logic Synthesis in VHDL)
- Các bộ dồn kênh trong VHDL (Multiplexers in VHDL)
- Các bộ giải mã trong VHDL (Decoders in VHDL)
- Các bộ công trong VHDL (Adders in VHDL)
- Logic tuần tự trong VHDL (Sequential Logic in VHDL)
- Thuyết minh trong VHDL (Instantiation in VHDL)
Trang 21- Các thanh ghi dịch và tạo xung nhịp trong VHDL (Shift Registers and Clocking in VHDL)
- Các bộ cộng và hàm thuật toán (Adders and Arithmetic Functions)
- Các bộ cộng/trừ (Adder/Subtracter)
1.4.3 Tổng hợp bộ nhớ
Có nhiều phương pháp tổng hợp bộ nhớ:
- Sử dụng thành phần logic ngẫu nhiên flip-flop hoặc bộ chốt dữ liệu
- Sử dụng các tệp thanh ghi trong datapath
- Sử dụng các thành phần RAM tiêu chuẩn
bị phụ thuộc vào phần mềm và công nghệ ASIC mà chúng ta sử dụng
Phương pháp thứ ba sử dụng các thành phần tiêu chuẩn được các nhà sản xuất ASIC cung cấp kèm Phương pháp này rất hiệu quả nhưng phụ thuộc vào công nghệ của từng hãng sản xuất
Phương pháp cuối cùng, đó là sử dụng bộ biên dịch RAM, đây là phương pháp hiệu quả nhất Nó phụ thuộc vào khả năng của trình biên dịch cùng với công cụ tổng hợp
1.5 Mô phỏng (Simulation)
Thông thường chúng ta thường sử dụng các hệ thống mẫu để kiểm tra các thiết
kế của mình, mà thường là các đế thử (bread-board), sau đó lắp các IC và đấu dây
trên các đế thử đó Tuy nhiên cách làm này chỉ áp dụng đối với các mạch nhỏ có vài phần tử dạng TTL Trong thực tế, để thực hiện việc này đối với một ASIC thì sử
Trang 22dụng đế thử là điều không thể thực hiện được Do vậy, đối với thiết kế ASIC, chúng
ta phải dùng đến các phương pháp mô phỏng
1.5.1 Phân loại mô phỏng (Type of Simulation)
Có thể phân chia mô phỏng theo loại hoặc theo phương pháp:
- Mô phỏng hoạt động (Behavioral simulation)
- Mô phỏng chức năng (Functional simulation)
- Phân tích thời gian tĩnh (Static timing analysis)
- Mô phỏng mức cổng/logic (Gate-level/Logic simulation)
- Mô phỏng mức chuyển mạch (Switch-level simulation)
- Mô phỏng mức tranzitor hoặc mức mạch (Transistor-level or Circuit-level simulation)
Trên đây là thứ tự các mức độ mô phỏng từ cao xuống thấp, các mức này có
độ chính xác tăng dần đồng thời độ phức tạp và thời gian cũng tăng theo
Có nhiều cách để tạo ra một mô hình mô phỏng ảo cho một hệ thống Phương pháp thường dùng nhất là mô hình hoá các mô-đul lớn của hệ thống thành một khối
(giống như một hôp đen - black box) chỉ có các đầu vào và ra Đây chính là mô phỏng hoạt động (Behavioral simulation), chủ yếu là sử dụng ngôn ngữ VHDL và
Verilog
Mô phỏng chức năng (Functional simulation) sẽ bỏ qua thời gian hoạt động và
các trễ trong từng mô-đul mà thiết lập mức trễ với các giá trị cố định (ví dụ là 1ns chẳng hạn) Sau khi thực hiện mô phỏng hoạt động và chức năng hoàn thành, cho kết quả tốt thì người mới kiểm tra thời gian hoạt động của từng khối
Tại thời điểm này, hệ thống được phân chia thành các ASIC và việc mô phỏng thời gian được thực hiện trên từng ASIC độc lập Một trong các phương pháp mô
phỏng thời gian là sử dụng phương pháp phân tích thời gian tĩnh (Static timing analysis) trong trường hợp hoạt động tĩnh, sau đó tính toán thời gian trễ cho từng phần tử Phương pháp này được gọi là phân tích thời gian tĩnh (Static timing analysis) vì nó không đòi hỏi phải tạo ra một tập các phép thử nghiệm đối với các
ASIC lớn
Trang 23Tiếp theo là mô phỏng mức cổng/logic (Gate-level/Logic simulation) có thể
cũng được dùng để kiểm tra thời gian hoạt động của một ASIC Trong mô phỏng mức cổng/logic một cổng logic hoặc phần từ logic (NAND, NOR hoặc tương đương) được kiểm tra hoạt động giống như mô hình hộp đen theo các chức năng nhưng các giá trị tín hiệu đầu vào thay đổi được
Mô phỏng mức chuyển mạch (Switch-level simulation) cung cấp mức độ chính
xác về thời gian cao hơn mô phỏng mức cổng/logic nhưng không có khả năng sử dụng trễ của các phần tử logic làm tham số cho việc mô phỏng
Chính xác nhất và cũng phức tạp nhất, mất nhiều thời gian nhất là mô phỏng
mức tranzitor hoặc mức mạch (Transistor-level or Circuit-level simulation)
Phương pháp này yêu cầu các mô hình tranzitor cụ thể, mô tả điện áp phi tuyến và các tham số dòng cung cấp của chúng Mỗi phương pháp thường đi kèm với một công cụ phần mềm khác nhau Tuy nhiên có thể kết hợp một số phương pháp mô phỏng vào việc mô phỏng một ASIC
Tiếp theo chúng ta sẽ giới thiệu về một số yêu cầu về hệ thống logic và mô hình ứng dụng trong quá trình mô phỏng
1.5.2 Lựa chọn các hệ thống logic (Logic Systems)
Như chúng ta đã biết trong thực tế, các tín hiệu số là các mức điện áp (hoặc dòng) tương tự mà thay đổi liên tục như sự thay đổi của chúng Việc mô phỏng số giả sử là các tín hiệu số chỉ là một tập các giá trị logic (hoặc là các trạng thái logic)
từ một hệ thống logic Do vậy khi lựa chọn một hệ thống logic để mô phỏng rất quan trọng Nếu quá nhiều giá trị logic thì sẽ làm cho việc mô phỏng trở nên phức tạp và tốc độ bị chậm lại Nếu ít giá trị quá thì sẽ làm giảm độ chính xác của mô phỏng không phản ánh đúng hoạt động của phần cứng
Ví dụ về một hệ thống 4 giá trị logic cho trong bảng 1.4
Trang 24Bảng 1.4 Hệ thống 4 mức logic
X Không (zero) hoặc Một (one) Không rõ
Z Không (zero), Một (one) hoặc không có gì Trở kháng cao
1.5.3 Mô phỏng logic hoạt động như thế nào
Hầu hết các loại mô phỏng số đều sử dụng mô phỏng theo hoạt động sự kiện
(event-driven) Khi một nút mạch thay đổi giá trị theo thời gian, còn giá trị mới là
một tập được biết đến dứi dạng các sự kiện Sự kiện được lập lịch bằng cách đưa
chúng vào một hàng đợi sự kiện hoặc danh sách sự kiện Khi thời gian được chỉ
định đến, giá trị logic của nút được thay đổi Sự thay đổi tác động đến các phần tử
logic ở nút đó như một giá trị đầu vào Tất cả các phần tử logic bị tác động phải
được đánh giá, việc này để có thể thêm các sự kiện vào danh sách sự kiện Mô
phỏng bảo đảm việc kiểm tra thời gian hiện thời, bước thời gian và danh sách sự
kiện dùng để giữ các sự kiện sắp xảy ra Đối với mỗi một nút mạch thì mô phỏng
bảo đảm một bản ghi trạng thái logic và độ lớn của nguồn hoặc các nguồn cấp cho
nút Khi một nút thay đổi trạng thái logic thì sẽ gây ra một sự kiện
1.5.4 Các mô hình phần tử (Cell models)
Có nhiều loại mô hình phần tử khác nhau, đó là:
- Mô hình nguyên thuỷ, là mô hình sinh ra thông qua thư viện ASIC và mô
tả chức năng và đặc điểm của mỗi một phần tử logic (NAND, D flip-flop,
…) sử dụng các hàm nguyên thuỷ
- Mô hình VHDL và Verilog sinh ra thông qua thư viện ASIC từ các mô
hình nguyên thuỷ
Trang 25- Các mô hình độc quyền sinh ra thông qua các thư viện dùng để mô tả các phần tử logic nhỏ hoặc các chức năng lớn như các bộ vi xử lý
1.5.5 Các mô hình trễ (Delay models)
Mô hình trễ phần tử được dùng để tính toán khoảng trễ của phần tử logic
Chúng ta sử dụng thuật ngữ mô hình thời gian (timing model) để mô tả trễ bên ngoài các phần tử logic và mô hình trễ (Delay models) để mô tả trễ bên trong mỗi
phần tử logic Các thuật ngữ này hay được sử dụng lẫn lộn và không được chuẩn hoá, thực tế chúng có một số điểm khác nhau như sau:
- Trễ từ chân đến chân (pin-to-pin delay) là một khoảng trễ giữa một chân
đầu vào và một chân đầu ra của một phần tử logic
- Trễ chân (pin delay) là khoảng trễ dồn vào một chân cố định của một phần
tử logic (thường là một đầu vào)
- Trễ đường kết nối (net dalay) hoặc trễ đường dây (wire delay) là khoảng
trễ bên ngoài của một phần tử logic
Trang 26CHƯƠNG II: GIỚI THỆU MỘT SỐ CÔNG NGHỆ MỚI LIẾN QUAN ĐẾN THIẾT KẾ ASIC HIỆN NAY
2.1 Giới thiệu công nghệ FPGA
2.1.1 Giới thiệu FPGA
Như đã giới thiệu trong chương 1 trước về môi trường thiết kế phần cứng, phương pháp để thiết kế mạch và mối quan hệ hữu cơ giữa ngôn ngữ VHDL và phần cứng, trong mục này chỉ có ý định giới thiệu về các mạch phần cứng được xây dựng dựa trên cộng nghệ FPGA Đây là công nghệ tiên tiến đã được nghiên cứu rất nhiều và có ứng dụng rộng rãi trên thế giới
Công nghệ FPGA (Field-Programmable Gate Array) đã xuất hiện như một
giải pháp cơ bản cho vấn đề tranh thủ thời gian và chi phí ban đầu thấp Nó cho phép chế tạo ngay và giá thành sản phẩm thấp, tạo nên sức cạnh tranh lớn trên thị trường FPGA là một thiết bị cấu trúc logic có thể được người sử dụng lập trình trực tiếp mà không phải sử dụng bất kỳ một công cụ chế tạo mạch tích hợp nào
2.1.1.1 FPGA là gì?
FPGA được công ty Xilinx giới thiệu đầu tiên vào năm 1985 Hiện nay FPGA
đã được nhiều công ty phát triển là AcTel, Altera, Plus Logic, AMD,…
Giống như MPGA, một FPGA gồm một dãy các phần tử rời rạc có thể được kết nối với nhau theo một cách chung Và cũng giống như PLD, các kết nối giữa các phần tử có thể lập trình được Hình 2.1 giới thiệu về mô hình tổng quát của một FPGA Trong đó có các khối:
- Các khối logic (logic block): cấu trúc và nội dung của được gọi là kiến trúc
của nó Kiến trúc của khối logic có thể được thiết kế theo nhiều cách khác nhau Một số khối logic có thể chỉ là các cổng NAND 2 đầu vào, tuy nhiên cũng có thể nó
là một bộ dồn kênh (multiplexer) Trong một số loại FPGA các khối logic có thể có
cấu trúc hoàn toàn giống như PAL Hầu hết các khối logic chứa một số loại flip-flop
để hỗ trợ cho việc thực hiện các mạch tuần tự
Trang 27- Các nguồn tài nguyên kết nối: cấu trúc và nội dung của các nguồn kết nối
trong FPGA được gọi là kiến trúc routing (routing architecture) Kiến trúc routing
gồm các đoạn dây nối và các chuyển mạch lập trình được Các chuyển mạch lập trình được có thể có nhiều cấu tạo khác nhau Giống như khối logic, có nhiều cách
để thiết kế kiến trúc routing
Hình 2.1 Mô tả mô hình lý thuyết của một FPGA 2.1.1.2 Ứng dụng của FPGA
FPGA có thể sử dụng trong hầu hết các ứng dụng hiện đang dùng MPGA, PLD và các mạch tích hợp nhỏ
1 Các mạch tích hợp ứng dụng đặc biệt: FPGA là một phương tiện tổng quát nhất để thực hiện các mạch logic số Chúng đặc biệt thích hợp cho việc thực hiện các ASIC
2 Thiết kế mạch ngẫu nhiên: mạch logic ngẫu nhiên thường được thực hiện bằng PAL Nếu tốc độ của mạch không đòi hỏi khắt khe thì mạch có thể thực hiện thay thế bằng FPGA
Logic
Tài nguyên I/O Cell
Trang 283 Thay thế các chíp tich hợp nhỏ cho mạch ngẫu nhiên: các mạch hiện tại trong các sản phẩm thương mại thường chứa nhiều chíp SSI Trong nhiều trường hợp các chip này SSI này có thể được thay thế bằng FPGA và kết quả là giảm diện tích của bo mạch đi đáng kể
4 Chế tạo mẫu: FPGA rất lý tưởng cho các ứng dụng tạo sản phẩm mẫu Giá thành thực hiện thấp, thời gian ngắn chính là ưu điểm rất lớn của FPGA
5 Máy tính dựa trên FPGA: một loại máy tính mới có thể được chế tạo với các FPGA có thể tái lập trình ngay trên mạch FPGA Các máy này có một bo mạch chứa các FPGA với các chân nối với các chip lân cận giống như thông thường
6 Tái cấu hình phần cứng trực tuyến: FPGA cho phép có thể thay đổi theo ý muốn cấu trúc của một máy đang hoạt động Ứng dụng thích hợp nhất là những FPGA có chuyển mạch lập trình được
2.1.2 Các loại FPGA và công nghệ lập trình
Có nhiều cách thực hiện các phần tử lập trình, các công nghệ lập trình hiện
đang được sử dụng là RAM tĩnh, cầu chì ngịch (anti-fuse) EPROM tranzitor và
EEPROM tranzitor Mặc dù công nghệ lập trình khác nhau, tất cả các phần tử lập trình đều có chung tính chất chung là có thể cấu hình được trong một trong hai trạng thái ON hoặc OFF Các phần tử lập trình được dùng để thực hiện các kết nối lập trình được giữa các khối logic của FPGA, còn FPGA thông thường có thể hơn 100.000 phần tử lập trình Có thể tùy thuộc vào ứng dụng cụ thể và có các số lượng phần tử lập trình có thể có các đặc tính khác Về mặt chế tạo, các phần tử lập trình nếu có thể chế tạo theo công nghệ CMOS chuẩn là tốt nhất
2.1.2.1 Công nghệ lập trình dùng RAM tĩnh (SRAM)
Công nghệ lập trình dùng SRAM được sử dụng trong các FPGA của nhiều công ty như Xilinx Trong các FPGA này, các kết nối lập trình được làm bằng các tranzitor truyền (pass-transistor), các cổng cho phép truyền (pass-gate), hay các bộ dồn kênh (multiplexer), tất cả đều được điều khiển bằng các ô nhớ (cell) SRAM Các chip được thực hiện theo công nghệ SRAM có diện tích khá lớn, bởi vì cần ít nhất 5 tranzitor cho mỗi ô nhớ Ưu điểm chính của công nghệ này cho phép
Trang 29FPGA có thể tái cấu hình ngay trên mạch rất nhanh và nó có thể được chế tạo bằng công nghệ CMOS chuẩn
Hình 6.2 Công nghệ lập trình dùng SRAM 2.1.2.2 Công nghệ lập trình dùng cầu chì nghịch (anti-fuse)
Công nghệ lập trình dùng cầu chì nghịch (anti-fuse) được sử dụng trong các FPGA của Actel Tuy anti-fuse được sử dụng trong các loại FPGA này có cấu tạo khác nhau, nhưng chức năng của chúng là như nhau Một Anti-fuse bình thường sẽ
ở trạng thái trở kháng cao, nhưng có thể bị biến thành trạng thái điện trở thấp khi được lập trình ở điện thế cao
Anti-fuse của Actel được gọi là PLICE (Programmable Low-Impedance Circuit Element) Nó có cấu trúc hình chữ nhật gồm 3 lớp: lớp dưới cùng chứa silic
mang điện tích dương, lớp giữa là một lớp điện môi, lớp trên cùng là poly-silic
Hình 2.3 Công nghệ lập trình cầu chì nghịch anti-fuse PLICE của Actel
D©y nèi
D©y nèi D©y nèi
RAM Cell
MUX
RAM Cell
D©y nèi
D©y nèi
a Transistor truyÒn dÉn b Cæng transistor c Bé dån kªnh
Trang 30(b) Cấu trúc các lớp cầu chì nghịch: + Lớp điện môi ONO (Oxy-Nitơ-Oxy) cách điện chiều dày nhỏ hơn 10nm; + Lớp dưới mang điện tích dương; + Lớp trên
là Poly-Silic
(c) Một cầu chì nghịch nhìn từ phía trên xuống giống như một công tắc
Ưu điểm công nghệ cầu chì nghịch anti-fuse là diện tích của các chip rất nhỏ
so với các công nghệ khác Tuy nhiên bù lại cần phải có không gian lớn cho các tranzitor điện thế cao cần để giữ cho dòng và áp cao lúc lập trình Nhược điểm của công nghệ này là qui trình chế tạo chúng cần phải thay đổi so với qui trình chế tạo CMOS
2.1.2.3 Công nghệ lập trình dùng EPROM và EEPROM
Công nghệ lập trình dùng EPROM và EEPROM được sử dụng chủ yếu trong các FPGA của Altera Công nghệ này giống như sử dụng trong bộ nhớ EPROM Không giống như tranzitor COM, các tranzitor EPROM gồm hai cực, một cực treo (floating-gate) và một cực chọn (select-gate) Cực treo được đặt giữa cực chọn và kênh của tranzitor, nó được gọi như vậy vì nó không có kết nối điện đến bất kỳ mạch nào
Hình 2.4 Tranzitor dùng công nghệ lập trình EPROM và EEPROM
(a) Với điện áp lập trình cao (>12V) VPP cung cấp tới cực máng các điện tử có
đủ năng lượng để nhảy vào cổng treo gate 1; (b) Các điện tử ở cổng gate 1 tăng lên
ở điện áp giữ mà tạo cho các transistor khoá cho mức điện áp hoạt động bình thường; (c) Ánh sáng cực tím cung cấp năng lượng đủ để các phần tử ở cổng gate 1 nhảy về vị trí cũ cho phép transistor hoạt động bình thường
Trang 31Ưu điểm của tranzitor EPROM là chúng có thể tái lập trình mà không cần bộ nhớ bên ngoài Tuy nhiên không giống như SRAM, tranzitor EPROM không thể
được lập trình lại ngay trên bo mạch (in-circuit)
Phương pháp dùng EEPROM tương tự như công nghệ EPROM, chỉ khác là diện tích của tranzitor EEPROM chiếm diện tích gấp hai lần diện tích chíp so với tranzitor EPROM và cần nhiều nguồn điện thế hơn các loại khác
2.1.2.4 Tóm tắt các loại FPGA trên thị trường
Bảng 6.1 Tóm tắt các họ FPGA trên thị trường
Công ty Kiến trúc tổng quát Kiểu khối logic Công nghệ lập trình
Xilink Symmetrical Array Look-up Table Static RAM
QuickLogic Symmetrical Array Multiplexer-Based Anti-fuse
Algotronix Sea-of-gates Multiplexers &
2.1.2.5 Các loại FPGA và giới thiệu công nghệ lập trình
Có nhiều loại FPGA của các công ty khác nhau, tuy nhiên chúng có thể được chia thành 4 loại chính như sau (xem hình 2.2):
- Cấu trúc mảng đối xứng (symmetrical array)
- Cấu trúc hàng (row-based)
- Cấu trúc PLD phân cấp (hierachical PLD)
- Cấu trúc đa cổng (sea-of-gate)
Trang 322.2 Giới thiệu phương pháp thiết kế ASIP cho các hệ thống nhúng
Một thách thức mà nhiều người đã từng đề cập đến trong quá trình thiết kế bộ
xử lý để nhận được những kết quả tốt nhất có thể đối với phạm vi ứng dụng điển hình cuối cùng cần đạt được nói chung là mô tả theo những chuẩn đánh giá Việc thu được kết quả tốt nhất có thể lần lượt trở thành một sự thoả hiệpphức tạp giữa tính tổng quát của những bộ xử lý và đặc trưng vật lý của chúng Trong những năm
gần đây, các bộ vi xử lý có tập lệnh chuyên dụng - ASIP (Application-Specific Intruction-Set Processor) có sự phát triển đặc biệt trong ngành sản xuất chip đã và
đang được nghiên cứu Trong mục này, chỉ chủ yếu giới thiệu một kiểu kiến trúc và phương pháp luận được dùng để thiết kế ASIPs trong phạm vi các bộ điều khiển
2.2.1 Giới thiệu chung
Nhiều hệ thống nhúng bị hạn chế về ràng buộc đối với giá thành sản phẩm Giá biểu hiện theo hai đặc trưng chính : giá của chương trình nguồn và giá của bộ
xử lý Do vậy việc dung hoà giữa giá thành sản phẩm và chất lượng cũng như ứng dụng của sản phẩm rất dễ đối với các nhà thiết kế để có thể tìm ra giải pháp tốt nhất cho bộ xử lý tương ứng với việc thực hiện một ứng dụng trung bình và công suất tiêu thụ của nó Do vậy, phải chọn giải pháp sử dụng bộ đồng vi xử lý ASIC (co-procesor ASIC) hoặc là ứng dụng đó cần phải nâng cấp thành một bộ xử lý có khả năng hoạt động cao hơn với giá thành nói chung cao hơn
Nền công nghiệp bán dẫn nói chung chủ yếu nhằm vào các bộ xử lý mà được sản xuất cho một phạm vi ứng dụng đặc biệt như các chip DSP Các chip DSP thông thường là những bộ vi xử lý với những đặc tính và những kiến trúc đặc biệt chủ yếu phục vụ cho việc xử lý tín hiệu số Tuy nhiên, việc thiết kế chuyên biệt về các bộ xử lý không giải quyết được tất cả các vấn đề Còn những ứng dụng phù hợp với các đặc điểm riêng của một bộ xử lý, thì giá thành của bộ xử lý đó đắt hơn do chỉ được sản xuất theo đơn đặt hàng
Về mặt thuật ngữ nói chung, việc thiết kế ASIP chính là việc tạo ra một bộ vi
xử lý mới, với tập lệnh và kiến trúc được tùy biến cho phù hợp với một số những ứng dụng chuyên biệt
Trang 33Mục đích của chúng ta là có thể tối ưu hóa hiệu quả chương trình nguồn và khả năng hoạt động của một ứng dụng đã cho sao cho bảo đảm các yêu cầu sau:
- Hiệu quả hệ thống (giá thành, kích thước chương trình nguồn, khả năng thực hiện, và điện năng tiêu thụ) bảo đảm chấp nhận được cho các hệ thống nhúng
- Tuỳ biến theo yêu cầu khách hàng càng bản địa hoá càng tốt
- Giảm tối đa sự thay đổi môi trường phần mềm càng tốt (bảo đảm tính tương thích ngược của các phần mềm)
- Có thể linh hoạt thay đổi trong quá trình sản xuất (có thể tùy biến chương trình, mặt nạ lập trình được, …)
2.2.2 Công nghệ thiết kế ASIP
Công nghệ thiết kế ở đây là việc “tùy biến” một bộ xử lý hiện tại hơn là tổng hợp một bộ xử lý mới với một tập lệnh và kiến trúc mới đã được tối ưu hóa cho một nhóm các ứng dụng chuẩn dùng để đánh giá
2.2.2.1 Sơ đồ luồng thiết kế
Hình 2.5 Sơ đồ luồng thiết kế ASIP
Chương trình định dạng tập lệnh mới
Thiết kế theo phần mềm truyền thống
Quá trình gia công tạo tập lệnh mới
Tuỳ biến bộ vi xử lý với tập lệnh mới
Cập nhật phần mềm với tập lệnh
Trang 34Sơ đồ luồng thiết kế ASIP được cho trong hình 2.5 Việc thiết kế ban đầu sử
dụng những phần mềm cơ sở (firmware) theo các phương pháp truyền thống (Traditional Software Design), sau đó một chương trình định dạng tập lệnh mới (New Instruction Identification) sẽ gia công để tạo ra tập lệnh mới chuyên biệt Rồi
bộ xử lý đợc tùy biến thông qua việc bổ sung các lệnh chuyên biệt về ứng dụng
(Customize CPU) Cuối cùng, phần mềm cơ sở (firmware) được cập nhật để có thể
sử dụng được các lệnh mới
2.2.2.2 Định dạng tập lệnh mới
Tập lệnh mới nói chung có một trong số hai đặc trưng sau Chúng hoặc là một
tiến trình con trong phần mềm cơ sở (firmware) mà được sử dụng thường xuyên hoặc là một chuỗi các lệnh dùng chung trong ứng dụng Ví dụ về tiến trình con bao gồm các trình điều khiển thiết bị (device driver), các phần tử tính toán cơ bản, các
bộ hẹn giờ, và các hệ điều hành nguyên thuỷ Ví dụ chuỗi các lệnh thường dùng bao
gồm các lệnh dịch và cộng (shift-and-add) thường được sử dụng trong các bộ lọc
số, vòng qui không, bộ chuyển đổi kiểu dữ liệu (ADC hoặc DAC), dữ liệu định dạng đối với cổng Vào/Ra (I/O), kiểm tra tín hiệu
2.2.2.3 Kiến trúc bộ xử lý
Phương pháp thiết kế ở đây phụ thuộc vào kiến trúc bộ xử lý đã có cố định một tập lệnh và đường dẫn dữ liệu, tuy nhiên vẫn cho phép bổ sung các phần tử logic điều khiển và đường dẫn dữ liệu mới thông qua việc lập trình cho phần cứng Nhưng, việc này được hoàn thành mà không làm thay đổi kiến trúc của toàn bộ bộ
vi xử lý Hai phương pháp tuỳ biến thiết kế kiến trúc bộ xử lý được giới thiệu trong hình 2.6 và hình 2.7
Những kiến trúc này không làm ảnh hưởng đến bất kỳ vùng cấm nào trong khối giải mã lệnh, đường dẫn dữ liệu hoặc bus hệ thống Do vậy, các kiến trúc này phù hợp với đa số các bộ xử lý công nghiệp
Việc tính toán chuyên biệt cũng có thể được thực hiện trên một thiết bị ngoại
vi hoạt động thông qua khối logic lập trình được
Trang 35a Kiến trúc bộ giải mã tĩnh (Static decode Architecture)
Hình 2.6 Kiến trúc giải mã tĩnh (Static-Decode Architecture)
Kiểu kiến trúc này (hình 2.6) chỉ cho phép một tập các mã lệnh đã được xác định trước sẽ được sử dụng cho các lệnh mới, như vậy cần phải có một cấu trúc giải
mã lệnh hiệu quả Nếu có bất kỳ mã lệnh nào được nạp vào và giải mã, thì tín hiệu
start i dành cho mã lệnh i được kích hoạt Cùng lúc đó, bộ xử lý giao việc điều khiển
của các tín hiệu điều khiển đường dẫn dữ liệu đến khối logic lập trình được Khi nào
mã lệnh i hoàn thành, nó kích hoạt tín hiệu done i riêng, sau đó điều khiển ngược lại Các lệnh thực không truy nhập đến các khối chức năng được thực hiện thông qua khối logic lập trình được Kiến trúc này cho hiệu quả thực hiện tốt hơn, nhưng lại phải chi phí nhiều cho việc định vị trước số lệnh mới để có thể sử dụng khối logic lập trình được
b Kiến trúc bộ giải mã động (Dynamic decode Architecture)
Kiểu kiến trúc này (hình 2.7) linh hoạt hơn và cho phép các mã lệnh mới được định nghĩa trên cơ sở ứng dụng Việc giải mã các lệnh mới được thực hiện thông qua khối logic lập trình được Khi một lệnh như vậy được nạp vào, bộ xử lý không
thể giải mã lệnh đó, tiếp theo nó đưa ra một tín hiệu “bẫy” trap bằng việc gửi một
Khối giải mã lệnh lôgic
Các tín hiệu điều kiện và dữ liệu
Bus điều khiển
Trang 36tín hiệu đến khối logic lập trình được Nếu khối logic lập trình được có thể giải mã lệnh đó, thì sau đó lệnh đó được kích hoạt Nếu lệnh đó chưa được khối logic lập
trình được nhận dạng, thì nó kích hoạt một tín hiệu “bẫy” trap’ để hướng dẫn cho
khối giải mã lệnh lôgic cố định khởi động quá trình nhận dạng lệnh mới
Hình 2.7 Kiến trúc giải mã động (Dynamic-Decode Architecture)
2.2.2.4 Cập nhật phần mềm cơ sở
Mỗi một lần một lệnh mới được thực hiện trong bộ xử lý, thì phần mềm nhúng
cơ sở lại cần cập nhật sửa đổi để sử dụng lệnh mới này Tuỳ thuộc vào phương pháp trên phần mềm được sử dụng, có ba cách thực hiện việc cập nhật này
Thứ nhất, nếu phần mềm cơ sở là ngôn ngữ dạng đóng gói hoàn chỉnh hoặc các lệnh mới chỉ liên quan đến một phần của phần mềm cơ sở thì chỉ có phần mã lệnh đóng gói được thay đổi
Nếu phần mềm sử dụng một chương trình biên dịch ngôn ngữ bậc cao như C
và nếu các lệnh mới có thể áp dụng được vào các ứng dụng khác, thì sau đó các lệnh mới có thể được bổ sung vào chương trình biên dịch đó
Khối giải mã lệnh lôgic
Các tín hiệu điều kiện và dữ liệu
Bus điều khiển
trap'
Trang 37Khi các chương trình biên dịch được cập nhật lại trở thành các công cụ dùng chung, thì một bộ tham số về kiến trúc mới của bộ xử lý có thể được thêm vào chương trình biên dịch để trở thành khả dụng đối với các lệnh mới
2.2.3 Hướng phát triển của ASIP
Trên đây chỉ là một trong số nhiều phương pháp luận về đồng thiết kế và kiến trúc cho các ASIP ứng dụng trong các hệ thống nhúng Hiện nay còn có nhiều phương pháp khác nghiên cứu và thiết kế ASIP Việc tuỳ biến hoá tập lệnh của bộ
vi xử lý theo yêu cầu của từng ứng dụng phụ thuộc vào người thiết kế và do đơn đặt hàng
2.3 Đồng thiết kế phần cứng/phần mềm (Hardware/Software Co-Design)
Như chúng ta đã biết hầu hết các hệ thống điện tử ngày nay (cả hệ thống nhúng hoặc kết hợp một phần) đều có chứa một phần lớn các thành phần đã được số hoá, các phần cứng đó hoạt động được chính là nhờ vào các phần mềm ứng dụng đã được cài đặt sẵn Đồng thiết kế phần cứng/phần mềm chính là “sự gặp gỡ” mức hệ thống của phần cứng và phần mềm thông qua quá trình thiết kế
Hiện nay việc thiết kế phần cứng số đã có sự phát triển gần như tương đương với thiết kế phần mềm Các mạch phần cứng được mô tả bằng các ngôn ngữ lập trình hoặc ở dạng mô hình hoá bằng phần mềm, và như vậy chúng hoàn toàn phù hợp và hoạt động theo sự điều khiển của phần mềm Đôi khi người ta gọi là thiết kế phần cứng chuyên biệt Do vậy, việc thiết kế các hệ thống số đòi hỏi người thiết kế phải nắm rất vững cả phần cứng và phần mềm
Mục đích của mục này chỉ giới thiệu trong phạm vi hẹp về đồng thiết kế các
hệ thống phần cứng/phần mềm
Chúng ta chỉ đề cập đến các bước đồng thiết kế các hệ thống phần cứng/phần mềm mức cao (tức là chỉ nói đến thuần tuý về mặt công nghệ) Ở đây ta chỉ đề cập đến các vấn đề chung chứ không đi sâu về một vấn đề nào, nhằm làm sáng tỏ sự giống và khác nhau giữa các hệ thống số thiết kế kết hợp với các hệ thống tự nhiên khác Ta cũng đề cập đến các kỹ thuật tương tự nhau được áp dụng trong đồng thiết
kế các hệ thống phần cứng/phần mềm
Trang 38Đồng thiết kế các hệ thống phần cứng/phần mềm là bao gồm mô hình (modeling), ứng dụng (validation) và cách tiến hành (implementation) Mô hình xử
lý là các tham số kỹ thuật mang tính khái niệm và định nghĩa lại và sản phẩm là các
mô hình phần cứng và phần mềm ứng dụng xử lý là mức ứng dụng có thể được của riêng hệ thống đó sẽ làm việc như đã được thiết kế và cách tiến hành là độ tin cậy
về mặt vật lý của phần cứng (trong quá trình tổng hợp) và khả năng có thể làm việc tương ứng của phần mềm (trong quá trình biên dịch)
Khi đề cập đến các hệ thống nhúng các mẫu mô hình khác nhau và các chiến lược thì ta chỉ đề cập đến hoàn toàn phần cứng (ví dụ như ASIC) và/hoặc hoàn toàn phần mềm (phần mềm nhúng chạy trên nền card ISA) vì chúng là các hệ thống đồng thiết kế Do vậy tất cả các mô hình hệ thống nhúng đều có kiểu là thuần nhất (homogeneous) hoặc không thuần nhất (heterogeneous) Ngoài ra còn có mô hình ngôn ngữ (ví dụ như mô hình lập trình C chẳng hạn) hoặc các hình thức đồ hoạ được dùng để trình diễn cả phần cứng và phần mềm Vấn đề phân chia phần cứng/phần mềm có thể dựa vào các tìm từng phần của mô hình thực hiện tốt nhất trong phần cứng và tốt nhất trong phần mềm Việc phân chia này do người thiết kế thực hiện dựa trên mô hình ban đầu hoặc bằng các công cụ CAD
Khi sử dụng mô hình không thuần nhất, việc phân chia phần cứng và mềm thừng dựa vào mô hình của bản thân hệ thống, vì các thành phần phần cứng và phần mềm có thể được biểu diễn theo các ngôn ngữ tương ứng Vì dụ, phiên bản thứ nhất của một sản phẩm có thể có thêm thành phần phần mềm vì lý do thời gian để thương mại hoá và tính linh hoạt nhưng đến thế hệ tiếp theo của sản phẩm đó thì thành phần phần mềm đó có thể lại được thực hiện vì lý do giá thành sản phẩm ISA được mô hình hoá theo các mức khác nhau Tập lệnh cung cấp các thông tin cần thiết về kiến trúc, hỗ trợ cho việc phát triển cả phần cứng và phần mềm Việc tổ chức xử lý thường được mô tả trong ngôn ngữ đặc tả phần cứng HDL
(Hardware Description Language) đối với mục đích tổng hợp thiết kế phần cứng,
trong khi đó các mô hình bộ vi xử lý (ví dụ như mô hình các bus chức năng) lại thường sử dụng các phương pháp giả lập kết hợp
Trang 39Trong trường hợp cấu hình lại hệ thống, chúng ta cần phải chú ý phân chia giữa mô hình ứng dụng đích và mô hình chủ Nhiệm vụ đầu tiên thường phù hợp với hệ thống của người dùng, trong khi đó nhiệm vụ thứ hai tương ứng với mức phát triển hệ thống Do vậy, hai nhiệm vụ này thường khác nhau về yêu cầu kết hợp thiết kế
Do các hệ thống ngày càng trở nên phức tạp, việc ứng dụng là rất cần thiết để bảo đảm các chức năng làm việc chính xác và yêu cầu các mức hoạt động đúng theo
mô hình hoạt động của hệ thống Ngoài ra việc ứng dụng cũng ảnh hưởng đến sự hoạt động chính của hệ thống Sự hoạt động của các ứng dụng dựa trên sự phối hợp hoạt động giữa phần cứng và phần mềm Mặt khác các hệ thống điều khiển nhúng yêu cầu phải được phân chia các ứng dụng nhưng sự hoạt động kém hiệu quả cần phải được kiểm tra trong tất cả các điều kiện để bảo đảm độ an toàn cho hệ thống
Sự hoạt động của hệ thống phần cứng/phần mềm có thể giải quyết nhiều tiến trình con
2.3.1 Phân chia phần cứng/phần mềm
Việc phân chia hệ thống thành phần cứng và phần mềm là yêu cầu rất quan trọng vì nó là yêu tố đầu tiên ảnh hưởng đến đặc trưng giá thành/tính năng của việc thiết kế Do vậy, bất kỳ sự phân chia nào cũng phải tính đến các chi tiết của việc phân chia thành các khối phần cứng và phần mềm
Công thức của việc phân chia phần cứng và phần mềm tuan thủ theo nguyên tắc kết hợp thiết kế Trong trường hợp các hệ thống nhúng, việc phân chia phần cứng và phần mềm chính là việc phân chia về mặt vật lý các chức năng của hệ thống thành các ứng dụng đặc biệt dành cho phần cứng và phần mềm trên một hay nhiều bộ xử lý Có nhiều quan điểm phân chia cứng và mềm dựa trên các tiêu chí như kiến trúc hoặc mục đích sử dụng
Khi đề cập đến mục đích chung của hệ thống máy tính, thì việc phân chia hệ thống được thực hiện theo các chức năng logic, trong đó phần cứng được thiết kế hỗ trợ cho sự hoạt động của phần mềm Việc phân chia này thường tuân theo tập lệnh
Do vậy, việc lựa chọn lệnh ảnh hưởng đến việc tổ chức phần cứng và phần mềm
Trang 40Tuy nhiên khi cấu hình lại hệ thống thì việc phân chia phụ thuộc vào mức độ
ưu tiên Đối với các hệ thống chỉ có các chip kiểu FPGA, thì việc phân chia các chức năng hệ thống lại thành các thành phần tương ứng với công nghệ chế tạo [16]
1 Quan điểm phân chia theo kiến trúc: quan điểm này chủ yếu áp dụng trong
các hệ thống nhúng với các bộ xử lý hoạt động và các ứng dụng phần cứng, kiến trúc chung trong các hệ thống này là có thể tham số hoá như là một hệ đồng xử lý
đó là các bộ xử lý làm việc kết hợp với các phần cứng trong các ứng dụng đặc biệt Điển hình là các kiến trúc xử lý đồ hoạ 3-D với cết cấu phần cứng hỗ trợ riêng cho
kỹ thuật đồ hoạ
Giao diện phần cứng/phần mềm được định nghĩa kiểu kiến trúc thay đổi mà ảnh hưởng lớn đến việc phân chia này Chủ yếu nó sử dụng việc ánh xạ kiểu bộ nhớ thông qua bộ xử lý hoặc theo kiểu truyền dữ liệu
2 Phân chia theo mục đích: Các kiến trúc đồng xử lý thường được chọn để
cải thiện hiệu quả làm việc của hệ thống theo các thuật toán đặc biệt [5, 34] Do vậy, trong một vài quan điểm phân chia đưa ra cách phân chia ứng dụng theo tốc
độ Do sự độc lập của dữ liệu, trong một vài phạm vi ứng dụng thì tốc độ không phải là cách phân chia tốt Nên trong các ứng dụng thời gian thực có yêu cầu ngặt nghèo về mặt thời gian, việc phân chia này tỏ ra không hiệu quả
3 Các chiến lược phân chia: Một số quan niệm sai về cách thức phân chia đó
là theo cách thức sử dụng các công cụ CAD Thường thường việc xác định phần cứng đối lại với sự hoạt động của phần mềm theo các chức năng thi hành ở các mức
độ trừu tượng mà không phải là được mô hình hoá theo tham số hệ thống Do vậy
có hai quan điểm phân chia: đó là phân chia mờ và phân chia theo quan niệm kiến trúc
Dựa vào kiến trúc đã được biết rõ, người ta phân chia mức hệ thống theo các chức năng mô tả nhờ việc gán nhãn cho các chức năng của nó theo sự hoạt động của phần cứng hay phần mềm Giải pháp chính xác nhất cho vấn đề phân chia, thậm chí trong trường hợp đơn giản nhất, cũng đòi hỏi cách tính toán cực kỳ phức tạp Trong một nỗ lực để đưa ra mô hình toán học về vấn đề phân chia, thì công thức của mô