Nó giớithiệu, trình bày một qui trình thiết kế vi mạch hiệu quả và sáng sủa hiện nay và cácthiết kế của bộ tính toán số học được tạo ra từ chương trình là có ý nghĩa thực tiễn.Chúng có t
Trang 1VÕ MINH VINH
TỰ ĐỘNG HÓA VIỆC TẠO RA CÁC BỘ TÍNH TOÁN SỐ HỌC TRONG VIỆC PROTOTYPE VỚI CÔNG NGHỆ FPGA
Chuyên ngành KHOA HỌC MÁY TÍNH
LUẬN VĂN THẠC SĨ
TP HỒ CHÍ MINH, tháng 11 năm 2008
Trang 2CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Các bộ hướng dẫn khoa học : TS ĐINH ĐỨC ANH VŨ / Đại học Bách Khoa Tp.HCM
Cán bộ chấm nhận xét 1 : TS TRẦN VĂN HOÀI / Khoa KH & KT Máy tính, Đại học Bách Khoa Tp.HCM
Cán bộ chấm nhận xét 2 : TS NGUYỄN VŨ LƯU / Giám đốc kỹ thuật Cty TNHH ALTERA Việt Nam
Luận văn thạc sĩ được bảo vệ tại HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ
TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày 21 tháng 02 năm 2009
Trang 3TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
-
-Tp HCM, ngày tháng năm 2008
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: VÕ MINH VINH Phái: nam
Ngày, tháng, năm sinh: 21/08/1968 Nơi sinh: Tp Hồ Chí MinhChuyên ngành: Khoa Học Máy Tính MSHV: 00706732
I TÊN ĐỀ TÀI:
Tự động hóa việc tạo ra các bộ tính toán số học trong việc prototype với công nghệ FPGA
II NHIỆM VỤ VÀ NỘI DUNG:
Xây dựng chương trình tạo ra các bộ tính toán số học (adder, substractor, multiplier, divider) có cấu trúc, tham số và kích thước theo yêu cầu
Module tạo ra sử dụng hiệu quả tài nguyên FPGA Tham số đầu vào là kíchthước các toán hạng, cấu trúc bộ tính toán số học, Module tạo ra có thể lànetlist hoặc Verilog code có khả năng tổng hợp để có thể tích hợp vào các EDAtools
III NGÀY GIAO NHIỆM VỤ: 21/01/2008
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 30/11/2008
V CÁN BỘ HƯỚNG DẪN: TS ĐINH ĐỨC ANH VŨ
Trang 4LỜI CẢM ƠN
Trước tiên tôi xin được bày tỏ lòng biết ơn sâu sắc về sự giúp đỡ của
TS Đinh Đức Anh Vũ Trong suốt quá trình nghiên cứu và thực hiện luận văn, tôi luôn nhận được sự hướng dẫn tận tình của thầy.
Tôi xin chân thành cảm ơn các thầy cô trong Khoa Khoa Học và Kỹ Thuật Máy Tính đã giảng dạy trong suốt khóa học cao học giúp tôi mở rộng kiến thức và nâng cao trình độ chuyên môn.
Bên cạnh đó, tôi cảm ơn sự trợ giúp, động viên to lớn về mặt vật chất cũng như tinh thần của gia đình, người thân, bạn bè và đồng nghiệp.
Thành Phố Hồ Chí Minh, tháng 11 năm 2008
Võ Minh Vinh
Trang 5TÓM TẮT LUẬN VĂN THẠC SĨ
Mật độ và số lượng các cổng logic trong IC ngày càng cao và vượt qua mức độ khai thác sử dụng chúng Để có thể theo kịp, tận dụng được tốc độ phát triển của sự co rút hình học ngày càng nhỏ của vi mạch và đẩy nhanh thiết kế, rút ngắn đáng kể thời gian từ thiết kế ra thị trường của sản phẩm, giải pháp sử dụng FPGA choprototyping như là một giai đoạn quan trọng của phương pháp luận kiểm tra và thiết
kế vi mạch tự động ngày nay Giải pháp này hiệu quả vì làm giảm các rủi ro do chi phí phát triển thiết kế ngày càng tăng, giảm các rủi ro do đặc tính sản phẩm và sự chấp nhận của thị trường
Ngoài ra, các vật dụng, thiết bị quen thuộc hàng ngày có xu hướng được tích hợpthêm các khả năng thông minh, hoặc tự điều khiển, xử lý (như là các thiết bị nghenhạc MP3) Các chip IC xử lý được lắp vào chúng và các bộ tính toán số học làphần cốt lõi của các chip này
Luận văn nghiên cứu phương pháp thiết kế prototype với công nghệ FPGA trongthiết kế vi mạch tự động Đó là phương pháp thiết kế vi mạch semicustom trên cácFPGA ở các bước thiết kế mô tả cấp cao, mô tả chức năng và thực hiện tổng hợpcấp cao, tổng hợp logic, ánh xạ công nghệ và thiết kế vật lý trên FPGA
Mục tiêu của đề tài là xây dựng chương trình tạo ra các bộ tính toán số học (adder, substractor, multiplier, divider) có cấu trúc, tham số và kích thước theo yêu cầu Các module tạo ra phải đạt yêu cầu sử dụng hiệu quả tài nguyên FPGA Tham số đầu vào của chương trình là kích thước các toán hạng, cấu trúc bộ tính toán sốhọc, Module tạo ra có thể là các đặc tả dạng netlist hoặc Verilog code mà có khả năng tổng hợp để có thể tích hợp vào các EDA tools
Các thiết kế do chương trình tạo ra được biên dịch (tổng hợp) thành mạch và giả lậpkiểm tra chức năng trên các FPGA
Phương pháp chủ yếu bao gồm việc nghiên cứu và xây dựng một cách tự động cácđặc tả Verilog của các bộ tính toán số học mà xét đến nhiều kiểu cấu trúc khác nhau
và với nhiều tham số Các cấu trúc này có hiệu suất cao, tận dụng tốt tài nguyên,thời gian trễ thấp, độ mềm dẻo cao và sử dụng hợp lý các đặc trưng cấu trúc của các FPGA
Kết quả của luận văn rất có ý nghĩa cho những người thiết kế vi mạch Nó giớithiệu, trình bày một qui trình thiết kế vi mạch hiệu quả và sáng sủa hiện nay và cácthiết kế của bộ tính toán số học được tạo ra từ chương trình là có ý nghĩa thực tiễn.Chúng có thể được sử dụng làm các mô đun cho các ứng dụng quan trọng khác Các
bộ tính toán số học là bộ phận cốt lõi của các bộ vi xử lý
Trang 6MỤC LỤC
1 Đặt vấn đề
2 Mục tiêu của đề tài
1.1 Các kỹ thuật bán dẫn, nguyên tắc phân loại mạch 14
1.3 Vi mạch tích hợp chuyên dụng (ASIC) 14
1.5 Các loại thiết kế vi mạch & phương pháp luận thiết kế 171.6 Các pha trong việc chế tạo chip 18
2.3 Tóm tắt FPGA và complex PLD 262.4 FPGA làm việc như thế nào 262.5 Rapid Prototyping với Verilog và FPGA 29
3.1 Sử dụng ASIC prototyping để giảm các rủi ro [Ou05] 313.1.1 Các phạm vi rủi ro 323.1.2 Các lợi thế của ASIC Prototyping với FPGA 323.1.3 Các trở ngại trong quá khứ và các tiến bộ lớn khắc phục được 333.1.4 Phương pháp ba pha cho prototyping 333.2 Số học trên FPGA [CCL04] 343.2.1 Các thiết kế các bộ số học trên FPGA 343.2.2 Field-Programmable Gate Array (FPGA) 353.3 Prototyping trên PC với phần cứng lập trình [ON97] 35
Bộ cộng 2k-block 16-bit trên FPGA 363.4 Thực hiện bộ cộng digit-serial trên XC4000 FPGA 373.4.1 Số học digit-serial (Digit-Serial Arithmetic) 373.4.2 Các thực hiện bộ cộng/trừ trên FPGA 37
Trang 71.2.1 Khai triển truy hồi carry (carry recurrence) 451.2.2 Carry-lookahead đa mức 461.2.3 Latency của bộ cộng carry-lookahead đa mức 47
1.3 Parallel Prefix Networks 481.3.1 Kết hợp các tín hiệu khối g và p 48
1.3.3 Lập công thức bài toán Prefix Computation 491.3.4 Alternative Parallel Prefix Networks 491.3.5 Cấu trúc đệ qui Brent-Kung 50
1.3.6 Brent-Kung carry network (8-bit adder) 50
1.3.7 Kogge-Stone carry network (16-bit adder) 511.3.8 Speed-Cost Tradeoff trong các carry network 511.3.9 Carry Network là cần thiết cho bộ cộng nhanh 52
1.4 Các biến thể trong các bộ cộng nhanh 52
1.7.3 Phép cộng nhiều toán hạng sử dụng bộ cộng carry-save 60
1.7.4 Phép cộng nhiều toán hạng – Wallace tree và Dadda tree 60 1.7.5 Phép cộng nhiều số có dấu 621.8 Phép cộng trong hệ thống số bù 2 (nhắc lại) 621.8.1 Sự biểu diễn số bù 2 621.8.2 Phép cộng trong hệ thống số bù 2 63
Trang 81.8.3 Tại sao số bù 2 là lựa chọn phổ biến 631.8.4 Sự mở rộng phạm vi và độ chính xác trong số bù 2 63
2.1 Giải thuật nhân Shift/Add cơ số 2 642.2 Các bộ nhân phần cứng cơ bản 652.3 Phép nhân của các số có dấu 662.4 Giải thuật nhân Shift/Add cơ số r 68
1 Giới thiệu chương trình tạo các bộ tính toán số học 82
1.2 Các loại cấu trúc bộ cộng và bộ trừ 821.2.1 Các loại cấu trúc bộ cộng, bộ trừ và phạm vi kích thước 821.2.2 Giải thích các cổng và các tham số của bộ cộng, bộ trừ 831.3 Các loại cấu trúc bộ nhân và bộ chia 841.3.1 Các loại cấu trúc bộ nhân, bộ chia và phạm vi kích thước 841.3.2 Giải thích các cổng và các tham số của bộ nhân, bộ chia 841.4 Cơ chế hoạt động của chương trình tạo bộ tính toán số học 851.5 Chạy chương trình, giao diện và thao tác 85
2 Xây dựng view cấu trúc của các bộ tính toán số học 912.1 Bộ cộng cây nhiều toán hạng 91
2.4 Các xây dựng phát triển của bộ cộng 97
3 Verilog code, RTL view của các bộ tính toán số học 99
Trang 93.8 Bộ cộng Hybrid carry-lookahead / carry-select 1303.9 Bộ cộng Hybrid ripple-carry / carry-lookahead 1343.10 Bộ cộng cây 3 toán hạng không dấu 1413.11 Bộ cộng cây 3 toán hạng có dấu bù 2 1433.12 Bộ cộng cây 4/5/6/7 toán hạng không dấu 1443.13 Bộ cộng/trừ với các thanh ghi 1483.14 Bộ nhân mảng không dấu và có dấu bù 2 1493.15 Bộ nhân cây 9x9 không dấu và có dấu bù 2 1543.16 Bộ chia tuần tự (shift/subtract) không dấu restoring 1593.17 Các mô đun trích từ Altera (phụ lục) 161
4.2 Bộ cộng cây nhiều toán hạng 166
5 Kết quả tiết kiệm tài nguyên khi dùng tham số FPGA 168
3 Giới thiệu Quartus II cho người sử dụng Verilog 192
3.2 Setting window (cửa sổ cài đặt) 1953.3 Biên dịch & tạo netlist view 1963.4 Chạy giả lập (simulation) 196
Trang 10MỞ ĐẦU
Trang 111 Đặt vấn đề
Thiết kế vi mạch tự động là một lãnh vực mới mẻ, phát triển nhanh chóng, nhiều thách thức là mũi nhọn công nghệ cực kỳ chiến lược trong nền công nghiệp hiện đại của thế giới Sản phẩm IC có mặt trong hầu hết các vật dụng, thiết bị điện, điện tử Nó đóng vai trò chủ yếu trong sự phát triển công nghệ thông tin, truyền thông, đo lường, điều khiển tự động, hàng không, giao thông vận tải, Ngàynay, công nghệ mạch tích hợp ngày càng có những tiến bộ nhanh chóng trong việc nâng cao tốc độ hoạt động và mật độ cổng logic của thiết bị Độ tích hợp ngày càng cao, tạo ra nhiều cơ hội mới để tích hợp nhiều tính năng hơn, mạnh hơn, nhanh hơn vào trong thiết bị nhỏ hơn nhưng giá thành lại thấp hơn Kíchthước thiết bị càng bé, hiệu suất hoạt động càng cao và năng lượng tiêu thụ càngthấp
Mật độ và số lượng các cổng logic trong IC ngày càng cao và vượt qua mức độ khai thác sử dụng chúng Để có thể theo kịp, tận dụng được tốc độ phát triển của
sự co rút hình học ngày càng nhỏ của vi mạch và đẩy nhanh thiết kế, rút ngắn đáng kể thời gian từ thiết kế ra thị trường của sản phẩm, giải pháp sử dụng FPGA cho prototyping như là một giai đoạn quan trọng của phương pháp luận kiểm tra và thiết kế vi mạch tự động ngày nay Giải pháp này hiệu quả vì làmgiảm các rủi ro do chi phí phát triển thiết kế ngày càng tăng, giảm các rủi ro do đặc tính sản phẩm và sự chấp nhận của thị trường
Luận văn nghiên cứu phương pháp thiết kế prototype với công nghệ FPGA trongthiết kế vi mạch tự động Đồng thời xây dựng chương trình tạo ra các thiết kế của các bộ tính toán số học đang sử dụng hiện nay Chương trình này phải đáp ứng được trong một phạm vi rộng nhiều tham số đầu vào Các thiết kế do chương trình tạo ra sẽ được biên dịch thành mạch và giả lập kiểm tra chức năng trên các FPGA Phương pháp chủ yếu bao gồm việc nghiên cứu và xây dựng các đặc tả Verilog của các bộ tính toán số học với nhiều cấu trúc khác nhau Các cấu trúc này có hiệu suất cao, tận dụng tốt tài nguyên, thời gian trễ thấp, độ mềm dẻo cao và sử dụng hợp lý các đặc trưng cấu trúc của các FPGA
Kết quả của luận văn rất có ý nghĩa cho những người thiết kế vi mạch Vì nógiới thiệu, trình bày một qui trình thiết kế vi mạch hiệu quả và sáng sủa hiện nay
và các thiết kế của bộ tính toán số học được tạo ra từ chương trình là có ý nghĩathực tiễn Chúng có thể được sử dụng làm các mô đun cho các ứng dụng quantrọng khác Trong các bộ vi xử lý luôn xuất hiện các bộ tính toán số học
2 Mục tiêu của đề tài
Mục tiêu của đề tài là xây dựng chương trình tạo ra các bộ tính toán số học (adder, substractor, multiplier, divider) có cấu trúc, tham số và kích thước theo yêu cầu
Trang 12Các module tạo ra phải đạt yêu cầu sử dụng hiệu quả tài nguyên FPGA Tham số đầu vào của chương trình là kích thước các toán hạng, cấu trúc bộ tính toán số học, Module tạo ra có thể là các đặc tả dạng netlist hoặc Verilog code mà cókhả năng tổng hợp để có thể tích hợp vào các EDA tools.
Các công việc chủ yếu cụ thể như sau :
- Nghiên cứu qui trình thiết kế phần cứng và phương pháp prototyping FPGA
- Nghiên cứu và phân tích các cấu trúc của các bộ tính toán số học được sử dụng hiện nay
- Sử dụng ngôn ngữ mô tả phần cứng Verilog HDL để đặc tả các module tạo
ra các bộ tính toán số học và ứng dụng hiệu quả tài nguyên của FPGA
- Xây dựng chương trình tạo ra các thiết kế của các bộ tính toán số học dưới dạng Verilog HDL code với nhiều tham số khác nhau
- Sử dụng phần mềm QuartusII để prototyping các thiết kế vi mạch trên cácFPGA một cách mô phỏng (gồm các họ Cyclone, Stratix của Altera) để tạo
ra các sơ đồ netlist và chạy giả lập chức năng
Các kiến thức cần thiết :
- Ngôn ngữ mô tả phần cứng Verilog HDL
- Phần mềm thiết kế phần cứng Quartus II trên các FPGA
- Kiến trúc các họ FPGA của hãng Altera
Trang 13
-oOo-NHỮNG NGHIÊN CỨU LÝ THUYẾT
Trang 14KIỂU THIẾT KẾ PROTOTYPE VỚI FPGA
1 QUI TRÌNH THIẾT KẾ VI MẠCH
1.1 Các kỹ thuật bán dẫn, nguyên tắc phân loại mạch
- Các vi mạch điện tử khai thác các đặc tính của vật liệu bán dẫn Quá trìnhchế tạo rất phức tạp, sử dụng các loại vật liệu bán dẫn (Silicon, Gallium-Arsenide) Các họ kỹ thuật mạch chất nền silicon: CMOS (Complementary Metal Oxide Semiconductor), Bipolar, BiCMOS
- Mạch điện tử phân ra thành mạch analog (tương tự) và mạch digital (số).Mạch digital phân ra theo chế độ hoạt động: mạch đồng bộ và mạch không đồng bộ
- Vi mạch tích hợp chuyên dụng ASIC (Application Specific Integrated
Circuits)
- Kỹ thuật CAD đóng vai trò làm giảm thời gian thiết kế và tối ưu hoá chất lượng mạch
1.2 Các sản phẩm IC
- Processor: CPU, DSP, Controller
- Memory chip: RAM, ROM, EEPROM
- Analog: dùng trong truyền thông di động, xử lý âm thanh và hình ảnh video
- Programmable (có thể lập trình): PLA, FPGA
- Embedded system (hệ thống nhúng): sử dụng trong xe hơi, network card
- System-on-chip (SoC) (cả hệ thống trên một chip)
1.3 Vi mạch tích hợp chuyên dụng (ASIC)
ASIC (application-specific integrated circuit), là một thuật ngữ chỉ các vi mạch
tích hợp chuyên dụng
ASIC là một vi mạch được thiết kế dành cho một ứng dụng cụ thể ASIC ngày
nay được ứng dụng hầu như khắp mọi nơi, ví dụ như vi xử lý của điện thoại di động, hay chip xử lý trong các máy móc tự động, các phương tiện truyền thông,
xe cộ, tàu vũ trụ, các hệ thống xử lý, các dây chuyền công nghiệp
Đối lập với ASIC là các vi mạch tích hợp cho mục đích chung như 7400 series
và 4000 series những vi mạch này có thể liên kết để tạo ra nhiều ứng dụng khác nhau Ngoài ra vì tính tương đối của việc phân loại theo mục đích sử dụng màcòn có thêm khái niệm application specific standard product (ASSP) – thiết bị chuẩn cho ứng dụng đặc biệt, chỉ đến những vi mạch nằm giữa hai khái niệm ASIC và vi mạch tích hợp cho mục đích chung
ASIC được chế tạo trên miếng silicon tròn, mỏng có nhiều lớp (10 ~ 15 lớp), một nửa số lớp dùng cho việc xác định các transistor và các lớp còn lại xác định việc đi dây giữa các transistor (interconnect)
Trang 151.4 Phân loại ASIC
Full custom ASIC : Bao gồm một số logic cell đặc chế (customized) và tất cả
mask layer đặc chế
Công nghệ sản xuất ASIC đặc chế hoàn toàn bào hàm toàn bộ các quá trình
sản xuất IC, kể cả giai đoạn in khắc bán dẫn quang học (photo lithographic).
Ưu điểm của sản phẩm dạng này là tính tối ưu về diện tích, tăng hiệu suất làm việc của IC, khả năng tích hợp với các thiết bị tương tự hay các phần tử thiết kế sẵn khác Bù lại thì quy trình thiết kế tốn nhiều thời gian, đòi hỏi đầu
tư cơ sở vật chất tốn kém cũng như nhân lực với kỹ năng cao
Semi-custom ASIC : Tất cả logic cell được thiết kế sẵn (predesigned) và một số
mask layer đặc chế
+ Cell library
Nếu như thư viện logic thường được nhà sản xuất bán dẫn cung cấp miễn phí thì IP-core (intellectual property core) là các phần tử hoặc của nhà sản xuất hoặc của bên thứ ba cung cấp mà người dùng phải trả tiền, các phần thiết kế có thể tồn tại ở dạng “mềm” tức là chỉ có mã HDL mức cao, hay ở dạng “cứng” tức là toàn bộ sơ đồ thiết kế chi tiết trên một thư viện cụ thể vàsẵn sàng đưa trực tiếp vào quá trình sản xuất bán dẫn
Tương tự như phần mềm thì với phần cứng cũng xuất hiện cộng đồng mở,
là nơi xây dựng và phổ biến những IP-core miễn phí
Ví dụ về IP-cores như nhân của bộ vi xử lý, USB module, Ethernet, RAM, ROM…
+ Standard-cell-based ASIC
Thư viện phần tử logic chuẩn (standard cell library) là thư viện tất cả các phần tử cơ bản tạo thành vi mạch như logic AND, OR, XOR… kèm theocác thông số vật lý như thời gian trễ, điện cảm, điện dung… Thư viện nàyđược định dạng chuẩn cho phép các công cụ thiết kế có thể đọc, sau đó sẽ biên dịch bản thiết kế ra dạng mô tả chi tiết sử dụng các phần tử của thưviện chuẩn, gọi là netlist
Vào cuối thập niên 1980 thì những phần mềm thiết kế dạng như designcompiler của Synopsys được đưa vào sử dụng Sở dĩ có tên gọi compiler là
do phần mềm này làm việc về nguyên tắc không khác gì một trình biên dịch thông thường trên máy tính, thay vì mã viết bằng C, Pascal thì vi mạch được viết bằng HDL, còn thư viện phần tử logic đóng vai trò như tập lệnh của bộ vi xử lý
+ Gate-array-based ASIC
Sử dụng mảng logic (gate array) là một phương pháp thiết kế IC Ở đây
“gate” dùng như một đơn vị để đo khả năng chứa các phần tử logic của vi mạch bán dẫn
Một vi mạch dạng này cấu thành từ 2 ~ 5 lớp bán dẫn kim loại, các phần tử logic được phân bố đều trên các lớp này Ví dụ ma trận các phần tử OR,
Trang 16AND PAL, PLA, hay trong FPGA là các khối logic lập trình được Các phần tử logic chưa được kết nối với nhau, quá trình thiết kế bản chất là lập trình để kết nối giữa các phần tử logic.
Programmable ASIC : Tất cả logic cell được thiết kế sẵn và không có mask
layer đặc chế
Vi mạch lập trình dùng mảng logic là một khái niệm rộng bao hàm các thiết
bị như PLA, PAL, CPLD, FPGA
Ưu điểm của ASIC thiết kế theo kiểu này là chi phí sản xuất rẻ do vi mạch sản xuất hàng loạt và có cấu trúc tương tự như nhau Tính linh động của thiết kế phụ thuộc vào loại mảng logic được sử dụng Ví dụ vi mạch lập trình dùng PROM chỉ được lập trình một lần duy nhất trong khi với vi mạch dùng công nghệ EEROM hay FPGA thì có thể lập trình lại, FPGA còn chophép người thiết kế lập trình lại mà không cần công cụ đặc biệt nào
+ Programmable logic device (PLD)
+ Field-programmable gate array (FPGA)
Trang 171.5 Các loại thiết kế vi mạch & phương pháp luận thiết kế
- Dễ dàng phát triển các công cụ CAD cho thiết kế và tối ưu hoá cũng như giảm thời gian thiết kế
- Chất lượng giảm đi rất ít so với custom
Các phương pháp thiết kế semicustom
- Cell-based : Thiết kế dựa trên các cell.
o Standard cell : Các cell thực hiện chức năng cơ bản, ví dụ: and, or, flip
flop,
o Macro cell : Các cell mang tính tổng quát được tạo ra tự động, ví dụ: chương
trình tạo ra tự động cổng AND n ngõ nhập
- Array-based : Thiết kế dựa trên các array (mảng).
Prediffused : Chế tạo từ các wafer có sẵn site, chỉ nối kim loại giữa các site
Prewired : FPGA (Field Programmable Gate Array).
LUT (Look up table) có nhiều chức năng cơ bản, lập trình để xác định
chức năng, kết nối các LUT Dây có sẵn, dùng phần mềm để thiết kế
thành mạch, file.bin đưa vào LUT.
Có thể lập trình lại nhiều lần
Thích hợp với nghiệp dư hoặc các ứng dụng đặc thù
Hiệu suất FPGA không cao (do đi dây sẵn) Lập trình để kết nối phải đi theo các con đường có sẵn (thời gian truyền dẫn lâu)
Hiện nay FPGA chứa rất nhiều cổng, dung lượng rất lớn, hiệu suất cao
Trang 18Ví dụ thiết kế full custom (đặc chế hoàn toàn)
1.6 Các pha trong việc chế tạo chip
Gồm có các pha thiết kế, kiểm tra, sản xuất và đóng gói
1.7 Các bước thiết kế IC
Trang 19Tổng hợp cấp cao
1.8 Thiết kế full custom
- RTL Description (register-transfer-level) : Mức mơ tả các thanh ghi và sự di chuyển các vectơ thơng tin giữa các thanh ghi
- Sắp xếp lại và đi dây : Ràng buộc tối ưu về diện tích và latency
Sắp xếp lại và đi dây
1.9 Thiết kế ASIC
- HDL Programming (lập trình mơ tả phần cứng)
- Cell library : Thư viện các mơđun đã làm sẵn (định nghĩa tốt, đã kiểm tra), đẩy nhanh thời gian thiết kế, tập trung chất lượng các kết nối
Trang 20Thư viện chế tạo sẵn Sắp xếp lại và đi dây
1.10 Tối ưu hố mạch
Thường được kết hợp với tổng hợp
Địi hỏi sự chọn lọc số các lựa chọn riêng biệt trong mơ hình đã cho, với mục tiêu nâng cao một hay nhiều yếu tố các phẩm chất của thiết kế Gồm cĩ :
+ Hiệu suất
Thời gian yêu cầu xử lý một số thơng tin
Số lượng thơng tin cĩ thể được xử lý trong khoảng thời gian cho trước
Hiệu suất của mạch được tính tốn nhờ vào sự phân tích kiến trúc vàhành vi của mạch Hiệu suất của mạch logic tổ hợp được đo bằng thời
gian trễ lan truyền giữa input và output (propagation delay), dựa vào
critical path Hiệu suất của mạch tuần tự đồng bộ được đo bằng chu kỳ của nĩ (thời gian của clock nhanh nhất mà cĩ thể áp dụng vào mạch) Đối với mơ hình mức kiến trúc của mạch với sự thực hiện tuần tự đồng
bộ, hiệu suất được đo bằng latency (thời gian yêu cầu cho thực thi các
tác vụ) Tích số của thời gian chu kỳ và latency xác định tồn bộ thời
gian thực thi Trong việc thực thi pipeline của mạch đồng bộ, việc đo hiệu suất là tốc độ mà dữ liệu được sinh ra và được dùng hết
(throughput của mạch) Trong một mạch khơng pipeline, throughput
thì nhỏ hơn (hoặc bằng) nghịch đảo của tích số thời gian chu kỳ vàlatency
+ Diện tích
Diện tích được đo bằng tổng số các diện tích mạch thành phần
Các mạch nhỏ hơn, nhiều mạch hơn trên một wafer nên chi phí sản xuất thấp hơn
Trang 21 Diện tích chip lớn thì sản lượng chip giảm và chip lớn thì đóng gói đắt tiền hơn.
Thường các thành phần cơ bản của mạch số là các cổng logic và cácthanh ghi (register) mà diện tích của chúng được biết trước
+ Khả năng kiểm tra
Dễ kiểm tra chip sau khi sản xuất
Fault coverage : phần trăm lỗi của kiểu được cho mà có thể được dò tìmbằng tập các vector kiểm tra
Tối ưu hóa ở các mức trừu tượng
+ Kiến trúc (thuộc thuật toán): mã hoá dữ liệu, lập lịch tính toán (scheduling),
cân bằng thời gian trễ của các thành phần
+ Logic (mức cổng): giảm fan-out, điện dung, sự nhân đôi gate, sự chèn bộ
đệm
+ Hình học (thiết kế bố trí / vật lý): di chuyển các cell và gate sao cho đi dây ngắn nhất trên các tuyến then chốt (critical path) Các dòng tiếp giáp chia sẻ
điện năng hoặc nối đất
Trong đó việc tối ưu hóa ở mức kiến trúc sẽ mang lại hiệu quả nhiều nhất, kế tiếp là mức cổng
Tối ưu hóa thiết kế được xem như là cực tiểu hóa diện tích và cực đại hóa hiệu suất
1.11 Các mô hình mạch
Một mô hình mạch là một sự biểu diễn mà hiển thị các đặc tính thích đáng màkhông có các chi tiết kết hợp Các mô hình mạch có thể phân lớp theo thuật ngữ các mức trừu tượng và view
1.11.1 Mô hình các mức trừu tượng
- Mô hình mức kiến trúc: tập các tác vụ (tính toán hoặc truyền dữ liệu), mô
hình HDL, lược đồ dòng dữ liệu và điều khiển
- Mô hình mức logic: tập các hàm logic, các lược đồ chuyển trạng thái, các sơ
đồ mạch logic
- Mô hình mức hình học: tập các thực thể hình học, các sơ đồ tầng (floor-plan),
bản vẽ bố trí (layout)
Trang 221.11.2 Các view
- View hành vi: mô tả chức năng của mạch mà không quan tâm việc thực hiện
của nó
- View cấu trúc: mô tả mô hình như là một sự kết nối của các thành phần.
- View vật lý: quan hệ các đối tượng vật lý (ví dụ transistor) của thiết kế.
1.12 Sự tổng hợp (synthesis)
Tổng hợp là sự sinh ra mô hình mạch, bắt đầu từ mức ít chi tiết hơn
- Tổng hợp mức kiến trúc
Sinh ra view cấu trúc của mô hình mức kiến trúc
Xác định phép gán các chức năng mạch tới các tác vụ (các tài nguyên), sự liên kết chúng và định thời sự thực hiện của chúng
Là tổng hợp mức cao/cấu trúc
- Tổng hợp mức logic
Sinh ra view cấu trúc của mô hình
mức logic
Thao tác các chi tiết kỹ thuật logic
tạo ra các mô hình logic như là sự
liên kết với nhau các nguyên mẫu
Trang 231.12.1 Sự tổng hợp kiến trúc (architectural synthesis - AS)
- Mô hình hành vi mức kiến trúc (AS) có thể được trừu tượng như là tập các tác
vụ và các phụ thuộc
- AS đòi hỏi định danh các tài nguyên phần cứng mà có thể thực hiện các tác vụ, lập lịch (scheduling) thời gian thực thi của các tác vụ và kết dính chúng với các tài nguyên
- AS xác định mô hình cấu trúc của tuyến dữ liệu
(data-path) (như sự kết nối của các tài nguyên) và mô hình
mức logic của đơn vị điều khiển (control unit)
- Ví dụ view cấu trúc ở mức kiến trúc :
1.12.2 Sự tổng hợp logic (logic synthesis)
- Mô hình mức logic của mạch có thể được cung cấp bằng lược đồ chuyển trạng thái FSM, bằng sơ đồ mạch hoặc mô hình HDL tương đương Mô hình này cóthể do người thiết kế xác định hoặc được tổng hợp từ mô hình mức kiến trúc
- Các nhiệm vụ tổng hợp logic có thể khác nhau tuỳ theo bản chất của mạch (mạch tuần tự hay tổ hợp) và sự biểu diễn sự bắt đầu (ví dụ lược đồ trạng thái)
- Ví dụ sau thể hiện view hành vi và view cấu trúc của đơn vị điều khiển ở mức logic
Trang 242 PROTOTYPE VỚI CÔNG NGHỆ FPGA
Vì sự phức tạp của các chip tăng, người thiết kế đổi hướng về logic có thể lập trình
(programmable logic) cho prototyping, để kiểm tra hành vi chức năng [Quickturn
Design System 1994], [Maliniak 1996], [Whiny
1996] Thường các prototype này, tiết kiệm thời
gian, tiền bạc vì chúng tránh phí tổn và trì hoãn
của các công việc tại xưởng đúc silicon, không
nhanh bằng phần cứng sau cùng: tuy nhiên, các
cải thiện liên tục ở tốc độ xung clock và mật độ
mức cổng cho phép FPGA chiếm chổ các
standard gate array chip trong dãy các sản phẩm
[Bursky 1995a], [Bursky 1995b], [Bursky 1996]
Phần cứng có thể được nghiên cứu hoặc thử
nghiệm trước khi sản xuất qui mô thật sự [Kempa
and Rieger 1994]
Mục tiêu cơ bản của prototyping ASIC bằng FPGA là xác định rõ tính năng của
một thiết kế trước khi chuyển
thiết kế tới chế tạo Một cách
lý tưởng, giải pháp này có một
chút hoặc không ảnh hưởng
đến dòng thiết kế đối với thiết
kế ASIC Cái thứ nhất đạt
được bằng các công cụ thiết
kế FPGA của bên thứ ba cung
cấp Cái thứ hai yêu cầu khả
năng tiếp nhận RTL mà phù
hợp tốt với kiến trúc ASIC
được chọn và đưa nó vào
FPGA mà không có thay đổi
trình được làm trong field bởi
người sử dụng FPGA cho
phép người thiết kế biến thiết
SRAM configuration memory
FU FU
FU
FU FU
FU
Kieán truùc FPGA
Trang 25kế thành silicon làm việc, thực hiện rapid prototyping nhanh chóng
FPGA được phân biệt dựa trên cơ sở của một số đặc điểm: kiến trúc, số các cổng,
cơ cấu lập trình, tính chất biến đổi lập trình và sự mạnh mẽ của đơn vị chức năng/logic, foot-print, pinout, time-to-prototype, tốc độ, công suất và các nguồn tàinguyên cho sự liên kết Một số các thiết bị dùng bộ nhớ flash để cung cấp khả năng lập trình nhanh và ổn định
FPGA có một kiến trúc cố định mà được lập trình trong field cho ứng dụng riêngbiệt Kiến trúc tiêu biểu bao gồm mảng các đơn vị chức năng có thể lập trình được (functional unit - FU) Cùng với các nguồn tài nguyên cố định nhưng có thể lập trình kiến lập nên tuyến đường các tín hiệu và định cấu hình chức năng của thiết bị Đơn vị chức năng có các tài nguyên cho việc thực hiện mạch tổ hợp và tuần tự.FPGA không ổn định (volatile) được định cấu hình bằng chương trình gọi là bộ nhớ cấu hình (configuration memory) mà có thể được download và chứa trong bộ nhớ tĩnh CMOS Nội dung của các cell tĩnh tác động tới các tuyến điều khiển của các cổng truyền CMOS và các thiết bị khác để (1) lập trình chức năng cho các đơn vị chức năng, (2) các đặc tính được định cấu hình tuỳ ý (3) thiết lập liên kết giữa các đơn vị chức năng, (4) thiết lập các cổng input/output Chương trình cấu hình được download vào FPGA từ máy chủ (host machine) hoặc từ một on-board PROM Khithiết bị mất điện, chương trình trữ trong bộ nhớ bị mất Thiết bị phải được lập trìnhlại trước khi nó có thể được dùng lại
Tính không ổn định (volatility) của FPGA là con dao hai lưỡi – nó thể hiện sự cần thiết nạp lại chương trình trong tình huống mất điện, nhưng nó cũng cho phép một
sự thay đổi ứng dụng không giới hạn và được cấu hình lại trên cùng board mạch dưới sự điều khiển của một processor (khả năng lập trình lại thoải mái) Thời gian sản phẩm ra thị trường là then chốt và FPGA cung cấp một giải pháp nhanh Vàonăm 1998, Xilinx đã giới thiệu kỹ thuật Internet Reconfigurable Logic (IRL) Đây
là kỹ thuật download các áp dụng dựa trên Java từ Internet, cho phép các thiết kế để sửa đổi, mở rộng, nâng cấp, hoặc cấu hình lại các thiết bị trong field
2.2 Các kỹ thuật FPGA
Ba loại cơ bản FPGA : anti-fuse, EPROM, SRAM-based Dung lượng và tốc độ
các thành phần này tiếp tục tiến triển với các sự cải thiện phương pháp sản xuất màlàm co lại kích thước cực tiểu của các transistor cơ sở
Thiết bị anti-fuse được lập trình bằng việc áp dụng một điện áp tương đối cao giữa
hai nút để đánh thủng vật liệu điện môi Điều này khử việc cần bộ nhớ để giữ
chương trình, nhưng cấu hình viết một lần thì vĩnh cửu Khi anti-fuse được tạo
thành, con đường trở kháng thấp được tạo nên không thể thay đổi được giữa các đầu
cuối của thiết bị Ưu điểm của kỹ thuật này là trở kháng và điện dung ký sinh của
anti-fuse nhỏ hơn nhiều đối với các transmission gate và pass transistor, mà cung cấp tốc độ chuyển mạch cao hơn và timing delay có thể dự đoán được theo các tuyến lộ trình.
Trang 26Kỹ thuật EPROM và EEPROM-based sử dụng các floating gate đã được nạp điện,
được lập trình bằng điện thế cao Nó có thể được lập trình lại và ổn định volatile) Các thiết bị như thế có thể được lập trình off-line trong khi được nhúng vào hệ thống đích
(non-Kỹ thuật FPGA dựa trên SRAM sử dụng chủ yếu các CMOS transmission gate để
thiết lập quan hệ nối liền với nhau Trạng thái của các cổng được xác định bằng nội dung của bộ nhớ cấu hình SRAM
2.3 Tóm tắt FPGA và complex PLD
- Không có các lớp mặt nạ được đặc chế
- Phương pháp cho việc lập trình các logic cell cơ bản và liên kết với nhau
- Phần lõi là mảng các logic cell cơ bản được sắp xếp cân đối có thể được lập trình để thực hiện logic tổ hợp, tuần tự (flip-flop)
- Ma trận liên kết lập trình bao
quanh các logic cell cơ bản
- Các I/O cell lập trình bao quanh
phần lõi
- Thiết kế thay đổi hoàn toàn chỉ
trong vài giờ
Các FPGA giống như CPLD, tuy
nhiên thời gian trễ có thể dự đoán tốt
hơn do cấu trúc kết nối với nhau của
FPGA được xây dựng từ các logic-cell cơ bản, mỗi logic-cell cơ
bản là lookup table nhỏ (“LUT”), một D-flipflop và một 2-to-1
mux (để bypass flipflop nếu muốn)
LUT giống như RAM nhỏ và có 4 input, có thể thực hiện cổng
logic bất kỳ với 4-input
Kết nối nhau (interconnect)
Mỗi logic-cell có thể được nối với các logic-cell khác thông qua các tài nguyêninterconnect (các wire/mux được đặt xung quanh các logic-cell) Các dâyinterconnect cũng đi đến biên của thiết bị mà các I/O cell được thực hiện và được nối tới các pin của FPGA
Trang 27Các chuỗi carry / tuyến chuyên dụng (dedicated routing/carry chains)
Thêm vào các nguồn tài nguyên general-purepose interconnect, FPGA có các tuyến chuyên dụng ở giữa các logic cell kế nhau Kiểu phổ biến nhất của các tuyến chuyên dụng nhanh là các “carry chain” Các carry chain cho phép tạo các hàm số học (giống như counter và adder) hiệu quả (sử dụng low logic và tốc độ hoạt động cao)
Các kỹ thuật cũ (PAL/CPLD) không có các carry chain và cũng bị giới hạn khi yêucầu các tác vụ số học
RAM nội (internal RAM)
Thêm vào logic, tất cả các FPGA đời mới có các khối chuyên dụng RAM tĩnh được
bố trí ở giữa và được kiểm soát bởi các phần tử logic (logic element)
Trang 28Hoạt động RAM bên trong (internal RAM operation)
Có nhiều tham số ảnh hưởng đến hoạt động RAM Tham số chủ yếu là số các tác nhân mà có thể truy xuất RAM đồng thời
“single-port” RAM : chỉ có một tác nhân có thể đọc/ghi RAM
“dual-port” hoặc “quad-port” RAM : 2 hoặc 4 tác nhân có thể đọc/ghi Nhận
dữ liệu thông qua các clock domain (mỗi tác nhân có thể dùng clock khácnhau)
Để tìm ra có bao nhiêu tác nhân, đếm số các bus địa chỉ đi đến RAM Mỗi tác nhân
có một bus địa chỉ chuyên dụng và cũng có bus dữ liệu đọc và ghi
Ghi RAM thường được làm đồng bộ Đọc thường được làm đồng bộ nhưng có thể đôi khi được làm không đồng bộ
Blockram vs Distributed RAM
Có hai kiểu RAM nội bên trong FPGA : blockram và distributed RAM Kích thướccủa RAM thường xác định kiểu nào được dùng
Các khối RAM lớn là các blockram, là các diện tích (area) chuyên dụng trong FPGA Mỗi FPGA có một số giới hạn chúng và nếu không dùng, thìmất chúng (không thể được dùng cho bất kỳ RAM nào)
Các khối RAM nhỏ hoặc ở trong các blockram nhỏ hơn (Altera), hoặc ở trong “distributed RAM” (Xilinx) Distributed RAM cho phép dùng cácFPGA logic-cell như các RAM bé tí
Distributed RAM khá linh động trong sự phân bố RAM trong FPGA, nhưng khônghiệu quả diện tích (logic-cell trên thực tế có thể giữ rất ít RAM) Altera thích xây
Trang 29dựng các blockram có kích thước khác nhau xung quanh thiết bị (mà hiệu quả diện tích hơn, nhưng kém linh động) Cái nào tốt hơn là tùy thuộc vào ứng dụng FPGA.
Xung clock & tuyến toàn cục (clocks & global lines)
Thiết kế FPGA thường "synchronous" Nghĩa là, thiết kế dựa trên xung clock - mỗi clock (cạnh lên) cho phép D-flipflops nhận trạng thái mới
Trong thiết kế đồng bộ, chỉ có một clock điều khiển nhiều flipflop đồng thời Điều này gây ra sự định thời và các vấn đề điện tử bên trong FPGA Các nhà sản xuất FPGA cung cấp các dây nội đặc biệt gọi là “global routing” hoặc “global line” Chúng cho phép phân phối tín hiệu clock lên toàn bộ FPGA với độ lệch (skew) thấp (nghĩa là tín hiệu clock dường như đồng thời tới tất cả các flipflop)
Khi cấp một tín hiệu clock vào FPGA, không nên dùng bất kỳ FPGA pin nào, màdùng "dedicated input pin" Thường chỉ các input pin như thế mới có khả năng điều khiển global line Phần mềm FPGA có thể nhận biết về các dedicated input và sẽ gán tự động các xung clock tới chúng
Các phạm vi xung clock (clock domains)
FPGA có thể dùng các multiple clock (dùng multiple global lines và dedicated inputpins) Mỗi clock tạo thành một "clock domain" bên trong FPGA
Nếu cần gởi đi thông tin qua các clock domain khác nhau, cần xem xét đặc biệt
Cáp nạp FPGA
Người bán FPGA cung cấp nhiều phương pháp để "configure" (nghĩa là download)các thiết bị Một phương pháp dùng cáp mà kết nối PC với FPGA board Các cáp phổ biến nhất liên kết cổng song song của PC hoặc giao tiếp USB Các cáp này đôikhi được gọi là "JTAG cables" (vì chúng thường kết nối JTAG pin của FPGA)
Cấu hình FPGA
FPGA có thể ở 2 trạng thái: "configuration mode" hoặc "user mode" Khi FPGA bắt đầu sau khi có điện, nó ở phương thức cấu hình (configuration mode)
Cấu hình một FPGA nghĩa là nạp (download) dòng 0,1 vào trong nó thông qua một
số pin đặc biệt Một khi FPGA được cấu hình, nó trở thành "user-mode" và trở nênhoạt động, thực hiện theo "logic function"
Có 3 cách cổ điển để cấu hình FPGA :
Dùng cáp từ PC vào FPGA và chạy phần mềm để gởi dữ liệu qua sợi cáp
Dùng microcontroller trên board, với firmware phù hợp để gởi dữ liệu vàoFPGA
Dùng "boot-PROM" trên board, được nối tới FPGA, mà cấu hình FPGA tự động khi có điện
2.5 Rapid Prototyping với Verilog và FPGA
Kỹ thuật FPGA và các công cụ phần mềm hỗ trợ biến chúng thành mục tiêu thu hútcho rapid prototyping của thiết kế Mục tiêu của rapid prototyping là tạo nên
Trang 30prototyping hoạt động nhanh như có thể đế đáp ứng các điều kiện của thị trường vàcung cấp việc kiểm tra rộng hơn trong môi trường số đông.
Tổng hợp và bố trí, định tuyến (synthesis and place-and-route)
Lập trình thông qua cáp đặc biệt JTAG
Phần mềm của Altera có tên Quartus II Web Edition được dùng để thiết kế và thực hiện một mạch xác định bằng ngôn ngữ mô tả phần cứng Verilog Quartus II biêndịch (tổng hợp) thiết kế thành mạch trên FPGA và chạy giả lập kiểm tra chức năng
2.5.2 Lưu đồ FPGA CAD
Phần mềm CAD (Computer Aided Design) giúp dễ dàng thực hiện mạch logic trênchip FPGA Bao gồm các bước cơ bản sau :
Design Entry - mạch mong muốn được xác định bằng ngôn ngữ mô tả phần cứng,
như là Verilog hoặc VHDL
Synthesis – công cụ tổng hợp CAD tổng
hợp mạch thành netlist mà xác định các
phần tử logic (LE) cần thiết cho việc
thực hiện mạch và các liên kết giữa các
LE
Functional Simulation – Mạch tổng hợp
được kiểm tra để xác minh sự chính xác
chức năng, sự mô phỏng không xét đến
định thời
Fitting – Công cụ CAD Fitter xác định
các sắp xếp của các LE được xác định
trong netlist thành các LE trong chip
FPGA thực, nó cũng đi dây trong chip để
tạo các liên kết yêu cầu giữa các LE
Timing Analys – Thời gian trễ dọc theo
các tuyến khác nhau trong mạch đã được
lắp (fitted) được phân tích để biểu thị
hiệu suất mong đợi của mạch
Timing Simulation – Mạch được lắp
được kiểm tra để xác minh lại sự chính
xác chức năng và định thời
Programming and Configuration –
Mạch thiết kế được thực hiện trong chip
FPGA vật lý bằng lập trình cấu hình các chuyển mạch (switch) mà cấu hình các LE
và thiết lập các liên kết đi dây theo yêu cầu
Trang 313 Tổng quan các công trình có liên quan
3.1 Sử dụng ASIC prototyping để giảm các rủi ro [Ou05]
Các qui trình công nghệ chế tạo tiên tiến mở ra các cơ hội mới để tích hợp nhiều tính năng hơn vào trong thiết bị nhỏ hơn với giá thành thấp hơn Tuy nhiên, độ phức tạp thiết kế, thời gian phát triển và rủi ro thiết kế sẽ tăng lên Để làm giảm toàn bộ rủi ro, một phương pháp hiệu quả được ngày càng nhiều người thiết kế
áp dụng là sử dụng các FPGA để prototype các ASIC và sản phẩm ban đầu Với công cụ Design Compiler FPGA(tm) của Synopsys, một thiết kế có thể được tổng hợp và thực hiện trong một FPGA Một khi đã được kiểm tra, thiết kế sau
đó có thể được trực tiếp ánh xạ trở lại vào một ASIC cấu trúc hoặc được tổng hợp trở lại cho standard cell ASIC với cùng RTL, các ràng buộc và các script sử dụng Design Compiler(R) Vấn đề quan trọng là FPGA có thể được dùng làmgiảm nhẹ các rủi ro thiết kế và kinh doanh, dẫn tới việc tạo ra các ASIC cấu trúc hoặc các standard cell ASIC được thực hiện một cách có hiệu quả hơn
Các nhà sản xuất bán dẫn đã không ngừng nghiên cứu để chế tạo các vi mạch với hiệu suất và mật độ cao hơn Tiến bộ kỹ thuật này là lợi thế có ý nghĩa đáng
kể trong giá thành và tính năng, tuy nhiên kỹ thuật này cũng là con dao hai lưỡi Chi phí khởi điểm cho các qui trình công nghệ chế tạo mới nhất tiếp tục tăng, rốt cuộc chỉ có những sản phẩm có số lượng lớn nhất hoặc các thiết bị phức tạp nhất
mà tuyệt đối cần các qui trình công nghệ chế tạo mới nhất mới có thể đủ điều kiện thiết kế trong công nghệ xử lý mới nhất
Thực tế trong việc phát triến thiết bị, rủi ro phát sinh không chỉ ở vấn đề kỹ thuật mà còn từ các điều kiện thị trường mà khó lòng kiểm soát được
Có ba phạm vi rủi ro bao gồm rủi ro thiết kế kỹ thuật, các đặc tính sản phẩm và
sự chấp nhận của thị trường Việc sử dụng FPGA hỗ trợ ASIC prototyping làgiải pháp khả thi để giải quyết các rủi ro này Bằng việc sử dụng prototyping đểthẩm tra, người thiết kế
có thể tìm thấy lỗi sai
chức năng mà không
được tìm thấy trong lúc
giả lập nhưng chỉ có thể
được phát hiện trong khi
kiểm tra hệ thống đầy đủ
Khả năng này phát hiện
các lỗi sai trước khi đưa
thiết kế vào chế tạo, có
thể tiết kiệm hàng triệu
đô la Thêm vào đó, với
sự tổng hợp bằng công cụ
Design Compiler FPGA
và các ASIC cấu trúc sẵn có từ các nhà cung cấp khác nhau, một khi FPGA đã
Trang 32được kiểm tra, thời gian chuyển đến sản xuất được rút ngắn đi rất nhiều, vì thế rút ngắn thời gian tung ra thị trường và sản phẩm có giá thành thấp hơn.
3.1.1 Các phạm vi rủi ro
Các rủi ro thiết kế: Chi phí tăng của sự phát triển thiết kế.
Các đặc tính sản phẩm: Đặc biệt trong trường hợp thị trường mới hoặc mới nổi
lên, rất khó dự đoán các đặc tính nào sẽ là then chốt cho sự thành công của sản phẩm
Sự chấp nhận của thị trường: Rất khó dự đoán thế nào và khi nào thị trường sẽ
chấp nhận các sản phẩm và các công nghệ mới
3.1.2 Các lợi thế của ASIC Prototyping với FPGA
Để cực tiểu hoá các rủi ro nói trên, nhiều người thiết kế chuyển sang dùngFPGA và prototyping các ASIC Theo Dataquest, 41% các người thiết kế SoC dùng các FPGA prototype cho thiết kế ASIC Sau đây là một số lý do cho việc
sử dụng ASIC prototyping như một phần của phương pháp luận thiết kế :
Sự kiểm tra toàn diện (Comprehensive Verification) – Ngay cả với các
workstation nhanh nhất, sự giả lập thiết kế vẫn chậm chạp Để giả lập một vàigiây của một ASIC chuyển mạch gói (packet switch) nó có thể yêu cầu một năm chạy giả lập Người thiết kế không có nhiều thời gian để chạy giả lập nhưthế và do đó họ chọn một số điều kiện cụ thể để giả lập Không may, rất khó để kiểm tra toàn diện mà bao gồm mọi điều kiện riêng rẽ hoặc tình trạng mà thiết bị
có thể trải qua trong hệ thống Bằng việc sử dụng FPGA cho prototyping, người thiết kế có thể chạy thiết bị trong hệ thống để sử dụng nó trong tình trạng thế giới thực và xác định các thiếu sót thiết kế tiềm ẩn mà không thể được tìm ratrong lúc giả lập
Sự phát triển firmware - Sự phát triển phần mềm chiếm một phần lớn của toàn
bộ chu kỳ phát triển Sử dụng hệ thống prototype sẵn có cho sự phát triển phần mềm có thể giúp rút ngắn toàn bộ chu kỳ phát triển Nó có thể khắc phục chỗ sai sót, các vấn đề tương thích mà không thể được thực hiện bằng phần mềm Các điều chỉnh và thay đổi nhỏ trong thiết kế phần cứng/phần mềm là đơn giản vàkhả thi trong thiết bị có thể lập trình, nhưng rất đắt tiền để tìm ra sự cân bằng hợp lý các yếu tố và sự khảo sát hệ thống một khi đã tạo ra ASIC
Thực nghiệm (Field Testing) – Các hệ thống được dùng cho thực nghiệm có thể
giúp khắc phục các chỗ sai sót của hệ thống hoặc thiết bị mà không được tìm ratrong phòng thí nghiệm Các đặc tính và tính năng mới có thể được yêu cầu màkhông có trong đặc điểm kỹ thuật gốc FPGA prototype có thể được điều chỉnh nhanh chóng để hỗ trợ bất kỳ các điều chỉnh cần thiết nào mà không tốn nhiều chi phí kỹ thuật non-recurring hoặc các chu kỳ chế tạo lâu
Các lựa chọn sản xuất (Production Options) – Là có lợi khi quyết định chọn
dạng sản xuất hàng loạt nào vào cuối chu kỳ thiết kế Bằng việc sử dụng FPGA cho prototyping, ngưòi thiết kế có thể tập trung vào việc hoàn thành code thiết
Trang 33kế và người kinh doanh có thể quan sát các điều kiện thị trường và tạo quyết định sau cùng về việc làm thế nào để tiếp tục sản xuất Sự mềm dẻo này ở giaiđoạn cuối của chu kỳ thiết kế có thể tiết kiệm vài triệu đô la bằng việc tránh các lỗi đắt tiền về việc chọn sản xuất nào là tốt nhất.
Tùy vào sự chấp nhận thị trường và dự báo nhu cầu, có 3 lựa chọn cho sản xuất Một là sản xuất với FPGA, hai là ASIC cấu trúc và ba là standard cell ASIC
3.1.3 Các trở ngại trong quá khứ và các tiến bộ lớn khắc phục được
Việc sử dụng các FPGA cho ASIC prototyping có sự phát triển vững chắc, nhưng một số người thiết kế vẫn còn miễn cưỡng dùng phương pháp này Có haithan phiền lớn nhất là các FPGA không đủ qui mô để hỗ trợ ASIC gate count vàdòng thiết kế cho FPGA và ASIC thì không đủ tương thích (ví dụ, thiết kế RTL được mã hoá đặc biệt cho FPGA) Các tiến bộ trong công nghệ FPGA và cáccông cụ thiết kế đã giải quyết một số các băn khoăn này Các công nghệ được Synopsys giới thiệu đã có tiến bộ lớn trong việc xử lý các than phiền nói trên
Về mặt lịch sử, vấn đề đối với các thiết kế prototyping ASIC dùng FPGA là ở chổ các thiết kế ASIC quá lớn để khớp với một FPGA đơn Do đó các thiết kế này phải bị phân hoạch thành nhiều thiết bị và các board hệ thống phát triển cho prototyping phải được
thiết kế lại cho sản
xuất mỗi khi nhiều
FPGA được thay bằng
3.1.4 Phương pháp ba pha để prototyping
Prototyping là cần thiết để kiểm tra thiết kế và kiểm chứng nhu cầu Vì sản phẩm là cho người tiêu dùng sản phẩm, các đặc tính và các tính năng khác nhaucũng cần được khảo sát để xác định chúng có phải là khả thi hoặc là cần thiết cho sản xuất sau cùng Điều này chỉ có thể được làm trong thiết bị có thể lập trình Một khi hệ thống prototype được xây dựng, đội thiết kế cần hướng nổ lực làm standard cell ASIC để hạ chi phí sản phẩm xuống Điều này phải được làmthật nhanh để cạnh tranh trong một thị trường tiêu thụ nhạy cảm giá cả Vấn đề ở
Trang 34đây là làm thế nào để mang sản phẩm tới thị trường thật nhanh để chiếm được lợi nhuận cao trong lúc giới thiệu sản phẩm và củng cố sự chia sẻ thị trường trong khi chờ đợi standard cell ASIC đến Giải pháp tạm thời là chuyển thiết kế thành thiết bị ASIC cấu trúc HardCopy Sự chuyển đổi chi phí thấp này khônglàm giảm giá trị mục tiêu trong tương lai xa của người thiết kế, mà là để phát triển standard cell ASIC chi phí thấp
Pha 1 – FPGA : Làm cho thời gian tới prototype nhanh Sự giảm rủi ro kỹ thuật Pha 2 – ASIC cấu trúc HardCopy : Làm cho thời gian tới sản xuất nhanh Tiếp
cận các rủi ro thị trường Giảm chi phí vật liệu và các tài nguyên kỹ thuật
Pha 3 – Standard Cell ASIC : Giảm thêm nữa giá thành Sản xuất qui mô lớn.
3.2 Số học trên FPGA [CCL04]
3.2.1 Các thiết kế các bộ số học trên FPGA
Bộ cộng : Nhiều kiến trúc phần cứng được đề xuất trong quá khứ cho phép cộng
nhanh Chúng bao gồm các phép cộng lookahead, conditional sum, select và carry-skip [Kor02] Trong khi người thiết kế ASIC muốn có nhiều lựa chọn các kiến trúc của bộ cộng, phần lớn các FPGA hiện đại lại được thiết kế để
carry-hỗ trợ phép cộng ripple-carry nhanh Điều này có nghĩa là các kỹ thuật cộng
‘nhanh’ thì thực ra chậm hơn ripple-carry trong thực tế Lý do là, chúng ta giới hạn FPGA trong phép cộng ripple-carry Hình sau biểu thị một phần của Virtex
II ‘slice’ [Xil03], đơn vị logic cơ bản trong Virtex II FPGA Slice chứa hai 4LUT cơ bản, các multiplexer chuyên dụng và các cổng XOR Bằng cách sử dụng LUT để phát ra ‘carry propagate’ chọn tín hiệu của multiplexer, một bộ cộng 2-bit có thể được thực hiện trong phạm vi một slice đơn
Bộ nhân : Trong thiết
kế số học phần cứng,
thường phân ra hai
trường hợp của thiết
kế bộ nhân: khi một
toán hạng là hằng số,
và khi cả hai toán
hạng đều có thể thay
đổi Trong trường hợp
đầu, có nhiều cơ hội
cho việc giảm chi phí
Trang 35(shifted version) của input [Par99] Phép nhân tổng quát được thực hiện bằng việc cộng các tích số từng phần, và các bộ nhân tổng quát về bản chất khác nhau
về các phương pháp mà chúng tích luỹ các tích số từng phần Xilinx Virtex II slice chứa một cổng XOR chuyên dụng cho phép cộng và chứa một cổng AND chuyên dụng để tính toán các tích số từng phần, cho phép các 4LUT trong một slice được dùng cho sự tích luỹ của chúng
Có hai mặt hạn chế chính đối với việc thiết kế một mạch tích hợp ASIC cho ứng dụng DSP: tiền bạc và thời gian Sản phẩm ASIC tiên tiến là một quá trình rất đắt tiền, mà có thể chỉ được xem xét khi thị trường cho thiết bị này có thể đếm được trong hàng triệu đơn vị Ngoài ra, ASIC cần quá trình kiểm tra tiêu tốn rất
nhiều thời gian trước khi chế tạo Field-Programmable Gate Array (FPGA) là
thiết bị phần cứng có thể lập trình được Nó được sản xuất hàng loạt, và do đó cóthể được bán không đắt và tính lập trình của nó cho phép thử nghiệm ngay tại chổ FPGA có thể truy nguyên theo các gốc của nó từ các thiết bị logic có thể lập trình (PLD) như là PLA và PAL, mà có từ thập niên 1980 Về nguồn gốc, các thiết bị như thế dùng để thay thế các chuỗi logic rời rạc để cực tiểu hoá số các thiết bị rời rạc được dùng trên một mạch in Tuy nhiên mật độ của FPGA ngày nay cho phép một chip đơn thay thế vài triệu cổng [Xil03] Trong tình hìnhnày, việc sử dụng FPGA hay hơn ASIC cho việc trù liệu đã trở nên thực tế
Có một phạm vi các kiến trúc FPGA hiện đại bán giảm giá, gồm có vài phần tử
cơ bản Tất cả các kiến trúc như thế chứa 4-input lookup table (4LUT hoặc đơngiản là LUT) như là phần tử logic cơ bản Bằng việc cấu hình dữ liệu được chứa trong mỗi LUT nhỏ này, và bằng việc cấu hình con đường để liên kết chúng, mạch tổng quát có thể được thực hiện Có một khuynh hướng về phía các kiến trúc không đồng nhất: các thiết bị FPGA hiện đại như Xilinx Virtex cũng chứa các khối RAM được nhúng vào trong phạm vi mảng các LUT, Virtex II thêmcác khối bộ nhân rời rạc và Virtex II pro [Xil03] thêm các lõi bộ xử lý PowerPC
3.3 Prototyping trên PC với phần cứng lập trình [ON97]
Môi trường PC được dùng nhiều trong nhiều lĩnh vực ứng dụng, với vô số các công cụ phần mềm cho các người thiết kế điện tử, nhà sản xuất và nhà sư phạm Hiệu suất của các platform phần mềm tiêu chuẩn có thể bị vượt trội bởi các người phát triển sản xuất kết hợp phần cứng và phần mềm đặc chế giá thấp, như
là các bộ tăng tốc, các bộ đồng xử lý và các bộ xử lý trước (preprocessor) trong
PC Sự sẵn có các phần cứng tinh vi có thể lập trình nhưng không đắt tiền là yếu
tố chính trong thiết kế và xây dựng các đơn vị như thế Do đó khả năng để thiết
kế các hệ thống đặc chế đáng tin cậy, với hiệu quả mà dường như ngoài tầm tay cách đây không lâu, không còn đắt tiền và hiếm hoi nữa, mà là kỷ năng cơ bản
và sự cần thiết ngày càng tăng
Trang 36Ở đây mô tả phương pháp thiết kế và sử dụng cơ cấu phần cứng và phần mềm cho giao tiếp mềm dẻo và prototyping trên PC Phần cứng bao gồm card với phần cứng có thể lập trình là các FPGA Giao tiếp bao gồm DMA block transfer
và các interrupt, thư viện các macro phần cứng Các thủ tục phần mềm giúp lập trình FPGA và cho phép liên lạc giữa host PC và card ngoại vi (peripheral) Yêu cầu: PC-AT card đã được kiểm tra Thư viện các phần tử phần cứng có thể cấu hình có thể được lập trình vào FPGA Thư viện các thủ tục phần mềm cho việc truyền dữ liệu và điều khiển Hai thư viện cho phép input-output 8-bit, 16-bit tiêu chuẩn và truyền dữ liệu khối DMA và thông tin liên lạc interrupt giữa card và host PC Vì phần cứng có tính cấu hình lại ngay trong mạch, nên dễ dàng prototype các thiết kế điện tử: quá trình thử nghiệm nhanh và đáng tin cậy
Bộ cộng 2k-block 16-bit trên FPGA
Sơ đồ khối của bộ cộng 2k-block 16-bit [ON97]
Hình trên minh hoạ thiết kế đơn giản của coprocessor dùng card trong việc kết hợp với phần mềm ứng dụng Dùng bộ cộng 16-bit parallel [Lenk 1977], đựợc điều khiển bởi chương trình PC Tín hiệu START khởi động bởi phần mềm, bộ cộng carry out 2048 phép cộng 16-bit với dữ liệu được phân phối trong card RAM Các dữ liệu này được tổ chức trong các vị trí 4 address: các vị trí đầu vàthứ hai chứa toán hạng dữ liệu, các vị trí thứ ba và thứ tư chứa kết quả của phép cộng Dữ liệu được truyền từ bộ nhớ PC tới card và rồi các kết quả được gởi trở lại bằng việc sử dụng hoạt động I/O được lập trình hoặc DMA Thiết kế nàydùng 44CLB (42 flip-flop) và 52 I/O pin của FPGA#1 và 109CLB (65 flip-flop)
Trang 37và 58 I/O pin của FPGA#2 Tốc độ hoạt động của bộ cộng 16-bit có thể được điều khiển và không phụ thuộc vào tốc độ của PC processor.
3.4 Thực hiện bộ cộng digit-serial trên XC4000 FPGA
3.4.1 Số học digit-serial (Digit-Serial Arithmetic)
Các kiến trúc số học bit-serial xử lý một bit ở một thời điểm và thích hợp cho
các ứng dụng tốc độ thấp Các kiến trúc t-song song số học (t-parallelarithmetic) xử lý toàn bộ word của mẫu input trong một chu kỳ clock và là lýtưởng cho các ứng dụng tốc độ cao, nhưng chúng yêu cầu một lượng lớn phần
cứng Để tránh các bất lợi của bit-serial và bit-parallel, ý tưởng thực hiện
digit-serial được đề xuất.
Đó là sự kết hợp hiệu quả diện tích của kiến trúc bit-serial với hiệu quả thời gian của kiến trúc bit-parallel tương ứng thành chỉ một kiến trúc digit-serialhiệu quả diện tích và hiệu quả thời gian Nói cách khác, thiết kế số học digit-serial có diện tích nhỏ hơn các thiết kế số học bit-parallel tương đương và cóthroughput lớn hơn các thiết kế số học bit-serial tương đương
3.4.2 Các thực hiện bộ cộng/trừ trên FPGA
cùng với một carry bit trước đó và sinh ra digit
và một carry bit mới
- Hai toán hạng A và B cung cấp một digit ở một
thời điểm vào bộ cộng
- Carry-out (CO) từ bộ cộng digit-serial được
cung cấp trở lại vào bộ cộng toàn phần đầu tiên
trong chu kỳ clock tiếp theo, khi các digit kế
tiếp của input đi đến
- Bộ cộng digit-serial với N=1 tương ứng với bộ
cộng bit-serial
- Trong XC4000, bộ cộng bit-serial yêu cầu một
CLB để sinh ra tổng và tải carry vào FF
- Số lượng các CLB được yêu cầu là số lượng của
các bit trong word
Trang 38- Một bộ cộng digit-serial N = 2 dùng tất cả 3 LUT, 3 FF và 1 đơn vị fast-carrylogic.
e
Bộ trừ digit-serial
Để thực hiện phép trừ, chuyển cổng B input
thành dạng số bù 2 và logic 1 nạp vào carry in
khởi đầu (xem hình bên)
Bộ trừ digit-serial thực hiện trên XC4000
FPGA có :
Bộ cộng / bộ trừ digit-serial
Khi cổng Add input = 0, thì A + B
Khi cổng Add input = 1, thì A - B
Area = 1,
2
3Delay = 2
Trang 39Bộ cộng bit-level pipelined digit-serial
Bộ cộng digit-serial có một loop hồi tiếp của bit carry out vào bộ cộng toàn phần đầu tiên.Critical path trong bộ cộng digit-serial N=4thông thường là 4 độ trễ bộ cộng toàn phần Critical path tăng theo kích thước digit Bộ cộng bit-level pipelined digit-serial được thực hiện bằng việc sử dụng hai bộ cộng carry propagate (CPA), ở đây carry bit được sinh ra
từ CPA thứ nhất sẽ lan truyền về phía trước vàđược cộng với digit output kế tiếp khi sử dụng CPA thứ hai
Trang 40
-oOo-CÁC BỘ TÍNH TOÁN SỐ HỌC
1 BỘ CỘNG / BỘ TRỪ
- Phép cộng là một tác vụ then chốt (bản chất của nó và là một khối xây dựng)
- Phép trừ = sự phủ định + phép cộng
- Tăng tốc lan truyền carry (carry propagation) : lookahead, skip, select,
- Phép cộng hai toán hạng và nhiều toán hạng
1.1 Ripple-carry
Mục tiêu
Nghiên cứu thiết kế các bộ cộng ripple-carry, giải thích tại sao latency của chúng là
không thể chấp nhận, và đặt nền tảng cho các bộ cộng nhanh hơn
Các điểm nhấn mạnh
- Các bộ cộng toàn phần (full adder) là các khối xây dựng đa năng
- Chuỗi carry dài nhất trung bình : log2k bit
- Các bộ cộng nhanh không đồng bộ thì đơn giản
Bộ cộng bán phần 1-bit (single-bit half-adder HA) và bộ cộng toàn phần 1-bit(single-bit full adder FA) là các khối xây dựng đa năng mà được dùng trong việc tổng hợp các bộ cộng và nhiều loại khác của mạch số học
Ngõ vào : toán hạng bit x, y và carry-in cin (hoặc xi, yi, cicủa tầng i)
Ngõ ra : bit tổng s và carry-out cout (hoặc sivà ci+1của tầng i)