Đồ án tốt nghiệp Mục lục
Mục lục
Mục lục i
Thuật ngữ viết tắt iii
Danh mục hình vẽ vi
Danh mục bảng biểu viii
Lời nói đầu 1
CHƯƠNG 1: Tổng quan về FPGA 3
1.1. Mở đầu 3
1.2. Tổng quan về FPGA 3
1.3. Xilinx FPGAs 5
1.3.1 Virtex-II CLB 6
1.3.2 Virtex-II IOB 8
1.3.3 Virtex-II Clock Tiles 9
1.3.4. VirtexII Pro 10
1.4. VTsim 11
1.5. Các công trình liên quan tới VTsim: JHDL, JBits, JHDLBits và ADB 12
1.5.1 JHDL 13
1.5.2 Cơ bản về JBits và ADB 13
1.5.3 JHDLBits 14
1.6. Những cải tiến JHDLBits và JBits 15
1.7. Kết luận 17
CHƯƠNG 2: Ứng dụng FPGA trong tính toán ô 18
2.1. Mở đầu 18
2.2 Thiết kế mức cao tổng quát 18
2.3. MULTIPLE 21
2.4. SINGLE 23
2.5. BOOTH 25
2.6. BIT 28
2.8. Kết luận 30
CHƯƠNG 3: Ứng dụng FPGA trong 3G: W-CDMA 31
3.3.1. Bộ mã hóa TCC 52
3.3.1.1. Các tính năng 52
3.3.1.2. Ứng dụng 52
3.3.1.3 Mô tả tổng quan 52
3.3.1.4. Hoạt động đa kênh 59
3.3.2. Bộ giải mã TCC 67
3.3.2.1. Giới thiệu: 67
3.3.2.2. Đặc tính: 67
3.3.2.3. Ứng dụng 68
3.3.2.4. Mô tả chung 68
3.4. Kết luận 84
Kết luận 85
Tài liệu tham khảo 87
Phụ lục 88
1.Truyền nhiệt trong một ma trận với phần tử nhúng 88
2.Liên hệ giữa Matlab và FPGA 92
2.1. Tích hợp thuật toán Matlab vào trong thiết kế FPGA 92
2.2. Matlab một môi trường phát triển cho thiết kế FPGA 98
Lê Đức Thuận
ii
Đồ án tốt nghiệp Thuật ngữ viết tắt
Thuật ngữ viết tắt
A
ASIC Application Specific Intergrated
Circuit
Vi mạch tích hợp ứng dụng
API Application Programming Interface Giao diện lập trình ứng dụng
AHB Advanced High- Performance Bus Bus hiệu năng cao tăng cường
AMR Adaptive Multi Rate Bộ thích ứng đa tốc độ
ADB Alternate Wire Database Cơ sở dữ liệu dây thay thế
IOB Input/Output Block Khối vào ra
J
JHDL Java Hardware Desription language Ngôn ngữ mô tả phần cứng trên nền
Java
L
LUT Look Up Table Bảng dò tìm
LE Logical Element Phần tử logic
LM Logic Module Modun logic
M
MIMO Multi Input Multi Output Nhiều đầu vào nhiều đầu ra
MMSE Minimum-Mean-Square-Error Lỗi trung bình quân phương tối thiểu
MAI Multi-Access Interferences Nhiễu đa truy nhập
MUD Multi User Detection Bộ dò đa người dùng
O
OVSF Orthogonal Variable Spreading Factor Hệ số trải phổ khả biến trực giao
R
RTL Register Transfer Level Mức chuyển đổi thanh ghi
Lê Đức Thuận
iv
Đồ án tốt nghiệp Thuật ngữ viết tắt
RTR Run Time Reconfiguration Đặt lại cấu hình thực
RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên
ROM Read Only Memory Bộ nhớ chỉ đọc
S
SEU Single Event Upset Nhiễu biến cố đơn
P
PE Processing Elements Thành phần xử lý
PLD Programmable Logic Device Thiết bị logic khả lập trình
X
XHWIF The Xilinx Hardware Interface Giao diện phần cứng Xilinx
Hình 2.15: Cấu trúc ô cho kiến trúc MULTIPLE 23
Hình 2.16: Các phép toán luồng nóng phân vùng cho kiến trúc SINGLE 24
Hình 2.17: Các cấu trúc của bộ điều khiển và ô cho kiến trúc SINGLE 25
Hình 2.18: Phần cứng cho thuật toán Booth 26
Hình 2.19: Thuật toán Booth cho bộ nhân bù hai 26
Hình 2.20: Các phép tính luồng nóng cho kiến trúc BOOTH 27
Hình 2.21: Cấu trúc ô và bộ điều khiển cho kiến trúc BOOTH 28
Hình 2.22: Tuyến đầu tiên của kiến trúc BIT cho tính toán luồng nóng 29
Hình 2.23: Cấu trúc ô và bộ điều khiển cho kiến trúc BIT 30
Hình 3.24: Sự phức tạp của thiết bị và quá trình phát triển của FPGA 32
Hình 3.25: Bản thiết kế DSP ban đầu 32
Hình 3.26: Khối thực thi FPGA 33
Hình 3.27: Sơ đồ máy phát 3G 35
Hình 3.28: Sơ đồ máy thu 3G 35
Hình 3.29: Mô hình máy thu Rake 36
Hình 3.30: Sơ đồ khối bộ dò đa người dùng (CF-MUD) 37
Hình 3.31: Nguyên lý của khối lấy dấu (a) và khối tách sóng cho k người dùng (b).
40
Hình 3.32: Ước tính hiệu năng của phương pháp MUD 41
Hình 3.33: Kiến trúc phần cứng đơn giản hoá của CF-MUD 42
Hình 3.34: Ánh xạ CF-MUD lên phần tử xử lý và bộ nhớ trong 44
Hình 3.35: Tiến trình xử lý pipeline trong tiến trình xử lý lấy dấu 47
Hình 3.36: Chiến lược đường ống (pipeline) trong tiến trình xử lý tách 48
Hình 3.37: Mô hình FPGA với 64 kênh AMR 51
Hình 3.38: Các cổng vào ra bộ mã hóa TCC 53
Hình 3.39: Cấu trúc bên trongbộ mã hóa TCC 54
Hình 3.40: Cấu trúc TCC RSC 54
Hình 3.41: Thông lượng bộ đệm kép 60
Hình 3.42: Định thời đầu vào 61
Lê Đức Thuận
Bảng 3.9: Các nhu cầu tài nguyên và hiệu năng không có các cổng virtex-5 79
Bảng 3.10: Các nhu cầu tài nguyên và hiệu năng – các cổng virtex-5 79
Bảng 3.11: Góc trễ giải mã Turbo 83
Bảng 3.12: Thông lượng bộ giải mã Turbo (Mbits/s) 83
Lê Đức Thuận
viii
Đồ án tốt nghiệp Lời nói đầu
Lời nói đầu
Sự thành công của công nghệ kỹ thuật mới phụ thuộc rất nhiều vào khả năng tích hợp,
hội tụ của các giải thuật, các thuật toán đã được nghiên cứu cho các vi mạch vào thực tế.
Các hệ thống ngày càng tiến đến xu hướng hội tụ lại và trở nên mềm dẻo hơn, dễ dàng cấu
hình cũng như khả năng phối kết hợp với các hệ thống khác.
Trong những năm gần đây đòi hỏi về sử dụng các dịch vụ di động tốc độ cao, băng
thông lớn đang ngày càng tăng. Yêu cầu về tốc độ dữ liệu cao dẫn tới lớp vật lý trở nên
phức tạp hơn. Đã có rất nhiều mô hình được nghiên cứu và đưa và sử dụng thực tế như là
MIMO, quá trình xử lý tín hiệu số tiên tiến, các mô hình sửa lỗi trước tiên tiến (FEC)…
Rất nhiều chuẩn như là WCDMA (HSDPA), CDMA2000(1xEV-DO), Wi-MAX đã tích
hợp các mô hình này. Cùng với đó các thuật toán phức tạp cũng được đề nghị để cải tiến
hiệu năng của máy phát – thu. Mặc dù rất nhiều thuật toán đã được đề nghị nhưng không
phải thuật toán nào cũng được đưa vào sử dụng trong thực tế do độ phức tạp của thuật
toán và hạn chế về công nghệ. Hơn nữa, đối với các thiết bị di động thì các thuật toán này
phải có khả năng trong việc sử dụng tài nguyên, gọn nhẹ và tiêu thụ ít năng lượng.
FPGA cho phép cấu hình lại để thay đổi chức năng logic. Khả năng này cho phép nhà
thiết kế có thể thoải mái phát triển, dễ dàng thay đổi chức năng phần cứng giống như đang
thực hiện trên phần mềm.Thậm chí FPGA còn có thể tự động cấu hình để thực hiện các
chức năng khác nhau trong những khoảng thời gian khác nhau. Phù hợp cho việc triển
khai các thiết bị vô tuyến thông minh (Cognitive Radio System - CRS), vô tuyến định
nghĩa bằng phân mềm (Software – Defined Radio - SDR). Khả năng cho phép cấu hình
lại chức năng logic có thể ứng dụng trong nhiều kiểu hệ thống để cài đặt hệ thống tự khắc
phục lỗi, tạo hệ thống có thể được cấu hình cho nhiều môi trường hoạt động, hoặc cài đặt
Được sự quan tâm giúp đỡ chỉ bảo tận tình trong nghiên cứu và cung cấp tài liệu của
thầy giáo KS. Nguyễn Viết Đảm và ý kiến đóng góp của các thầy cô giáo trong bộ môn
vô tuyến cùng với sự cố gắng, nỗ lực của bản thân đồ án được hoàn thành với nội dung
được giao ở mức độ và phạm vi nhất định. Tuy nhiên do trình độ và thời gian có hạn, đồ
án chắc chắn không tránh khỏi những sai sót, kính mong các thầy cô giáo và các bạn sinh
viên chỉ bảo đóng góp ý kiến chỉnh sửa và định hướng nội dung cho hướng phát triển tiếp
theo.
Em xin chân thành cảm ơn thầy giáo KS. Nguyễn Viết Đảm đã tận tình giúp đỡ trong
thời gian học tập và làm đồ án tốt nghiệp.
Hà Nội, ngày… tháng… năm 2008
Người làm đồ án
SV. Lê Đức Thuận
Lê Đức Thuận
2
Đồ án tốt nghiệp Chương I – Tổng quan FPGA
CHƯƠNG 1: Tổng quan về FPGA
1.1. Mở đầu
Để đi đến việc trình bày ứng dụng FPGA trong thông tin vô tuyến cũng như 3G, cần
có cái nhìn tổng quan về FPGA, các ưu việt của nó cũng như khả năng ứng dụng của
FPGA. Muốn vậy, chương sẽ được tổ chức trình bày như sau:
• Tổng quan về FPGA.
• Xilinx FPGAs.
• VTsim.
• Các công trình liên quan tới VTsim: JHDL, JBits, JHDLBits và ADB.
• Những cải tiến JHDLBits và Jbits.
1.2. Tổng quan về FPGA
FPGAs xuất hiện lần đầu tiên vào giữa những năm 1980 nhằm mục đích thay thế
cho các mạch logic đa chip bằng giải pháp tự tái cấu hình đơn. FPGAs đã có những
phát triển mạnh, vượt lên trên vai trò thay thế cho vi mạch logic đa chip. Hiện nay,
các ứng dụng FPGA bao gồm: Xử lý tín hiệu và hình ảnh, tăng tốc đồ hoạ, nhận
có hai khối cơ bản bên trong khối logic: Phần tử nhớ và bộ tạo hàm. Phần tử nhớ giúp
cho các nhà thiết kế lưu trữ tạm thời dữ liệu cho đến khi đạt được điều kiện mong đợi.
Bộ tạo hàm có thể đặt cấu hình để tạo hàm bất kỳ cho đến số đầu vào của bộ tạo hàm.
Tuỳ thuộc vào cấu trúc, một số bộ tạo hàm có thể hoạt động ở các chế độ khác nhau
như bộ nhớ truy cập ngẫu nhiên (RAM), bộ nhớ chỉ đọc (ROM), hoặc một số chế độ
phức tạp hơn như thanh ghi thay đổi. FPGAs được đặt cấu hình thông qua một dòng
bits nạp trong thiết bị. Dòng bits là một file tạo ra bởi các nhà sản xuất FPGA, đặt cấu
hình cho các khối chuyển mạch, các khối logic và các mạch logic khác bên trong
FPGA.
FPGAs đã làm thay đổi ranh giới về điện tử kỹ thuật số khi cho phép nhà thiết kế
xây dựng từng mảng. Nhiều nhà thiết kế có thể nhanh chóng kiểm tra và xác nhận
chức năng của mỗi mảng trong hệ thống để bảo đảm chính xác nhiệm vụ của chúng
khi kết hợp với phần còn lại của hệ thống. Trong bối cảnh kỹ thuật thiết lập lại cấu
hình ngày càng được quan tâm nhiều hơn, FPGAs được thừa nhận là giải pháp khả thi
và kinh tế nhất. Cho dù thiết kế có thể đặt cấu hình là ổn định hay linh hoạt thì với
FPGAs, đều có thể thực hiện chu kỳ thiết kế nhanh chóng, linh hoạt, hiệu quả cao.
1.3. Xilinx FPGAs
Xilinx là công ty dẫn đầu trong thị trường FPGA, được thành lập năm 1984, sản
phẩm FPGA đầu tiên của họ được thương mại hoá năm 1985. Hiện nay, Xilinx hướng
cho họ sản phẩm Virtex-II FPGAs đến cấp thiết kế với mật độ và hiệu năng cao. Trong
đồ án này trình bày về mạch logic khả trình, Virtex-II FPGAs là loại FPGAs tiên tiến,
mang đến sự lựa chọn mật độ phong phú nhất trong lĩnh vực này, bao gồm mười một
loại thiết bị từ 40 ngàn đến tám triệu cổng hệ thống .
Virtex-II FPGA đã dành bộ nhân 18 bit x 18 bit, bộ cộng chuỗi bộ cộng nhớ nhanh
và số lượng lên tới 93,184 thanh ghi bên trong. Các thiết bị Virtex-II được phân vào
một ma trận tile đối xứng như đã mô tả trong phần trên. Sáu loại tile chính trong
Virtex-II là: Khối vào/ra (IOBs), Khối logic cho phép đặt cấu hình (CLBs), bộ nhân
phần cứng, SelectRAM khối 18Kbit và Mô-đun clock KTS (DCMs). Hình 1.3 minh
hoạ sơ đồ tile của Virtex-II FPGA.
Mỗi họ Virtex FPGA đều có một tập hợp các sản phẩm có thể lập trình lại lớn, bắt
SelectRAM đơn cổng và SelectRAM cổng kép. Một SelectRAM cổng đơn chỉ có một
địa chỉ cổng, trong khi SelectRAM cổng kép có một cổng dành cho việc ghi đồng bộ,
một cổng dành cho đọc không đồng bộ. Cổng thứ hai chuyên dùng cho việc đọc không
đồng bộ. Thiết lập cấu hình cổng kép cho phép đọc và ghi đồng thời trên cùng
SelectRAM. Mỗi CLB có thể đặt trong bảy cấu hình SelectRAM khác nhau như trong
bảng 1.1. Chế độ bộ tạo hàm ROM khá giống với chế độ SelectRAM đơn cổng. Một
LUT đơn có thể thực hiện một ROM 16x1 hoặc LUTs bội có thể xếp tầng cùng nhau
để tạo thành một ROM có độ dài tuỳ ý.
Bảng 1.1: Kích cỡ và loại SelectRAM
Loại SelectRAM Cỡ RAM
Đơn cổng 16 x 8 bit
Đơn cổng 32 x 4 bit
Đơn cổng 64 x 2 bit
Đơn cổng 128 x 1 bit
Cổng kép 16 x 4 bit
Cổng kép 32 x 2 bit
Cổng kép 64 x 1 bit
Lê Đức Thuận
7
Đồ án tốt nghiệp Chương I – Tổng quan FPGA
Hai phần tử nhớ trong một slice có thể thiết lập làm một flip flop loại D hoạt động
theo cạnh hoặc chốt nhạy mức. Với mỗi phần tử nhớ, có sáu chế độ hoạt động khác
nhau:
• Set và reset không đồng bộ (preset và clear/đặt
trước và xoá).
• Reset không đồng bộ (xoá).
• Set không đồng bộ (đặt trước).
• Reset đồng bộ.
• Set đồng bộ .
• Không set hoặc reset.
clock toàn cục có thể được sử dụng kết hợp với DCMs hoặc điều khiển trực tiếp từ bộ
đệm đầu vào clock.
Mỗi bộ đệm nhân clock toàn cục có thể đặt cấu hình là BUFG (bộ đệm tổng), một
BUFGCE (global buffer with clock enable - bộ đệm tổng có clock), hoặc là
BUFGMUX (bộ nhân lựa chọn clock) như minh hoạ trong Hình 1.6. Cấu hình đơn
giản và phổ biến nhất dành cho clock toàn cục là bộ đệm đơn giản (BUFG). Có thể lập
một clock cổng sử dụng cấu hình BUFGCE. Chế độ BUFMUX cho phép chuyển giữa
hai clock không đồng bộ riêng biệt hoặc đồng bộ và bảo đảm thời gian cao hoặc thấp
khi clock chuyển không bao giờ ngắn hơn thời gian cao hoặc thấp ngắn nhất.
Hình 1.6: Cấu hình bộ đệm clock toàn cục
Lê Đức Thuận
9
Đồ án tốt nghiệp Chương I – Tổng quan FPGA
1.3.4. VirtexII Pro
Giải pháp Platform FPGA VirtexII Pro được cho là một kỹ thuật silicon phức tạp
nhất và sản phẩm phần mềm trong công nghệ logic có thể lập trình lại được. Mục đích
trong phát triển Virtex-II pro FPGA đưa ra một kiến trúc vượt trội, và được xây dựng
lại từ đầu. Để đạt được điều này, các kỹ sư mạch và kiến trúc sư hệ thống từ IBM,
MindSpeed và Xilinx cùng phát triển những tính năng tiên tiến của FPGA. Các đội kỹ
sư từ các công ty phần mềm nhúng hàng đầu trên thế giới đã hợp tác để thiết kế.
Các tính năng họ Virtex-II Pro
• Có 5 họ chính với các ô logic 3168 tới 50832 và 216 tới 3888 Kb trên một
Khối RAM.
• Dựa trên kiến trúc nhúng IP Virtex-II.
• Khối thu phát nối tiếp tốc độ cao lên tới hàng Gigabit, tới hơn 16 thiết bị.
• Bộ xử lý nhúng, lên tới 4 thiết bị.
Điểm nổi bật nhất của họ Virtex-II Pro
Họ Virtex-II Pro bao gồm năm thành viên, bốn thành viên là 16RocketIO
TM
trên
mô hình kiến trúc độc lập, cho phép người dùng thay đổi chức năng của thiết kế. Bộ
công cụ tiêu biểu: Xilinx ISE với với bộ mô phỏng tuỳ chọn ModelSim và Altium’s
Nexar2004. Các dòng này dựa trên quan điểm cho rằng một thiết kế được xác nhận
chức năng sẽ làm việc với phần cứng đúng theo theo chủ định và dự kiến của người
dùng.
Nếu chức năng của thiết kế không hoạt động đúng trong phần cứng, có thể sẽ gây ra
một số vấn đề: FPGA bị lỗi, các công cụ thực thi có thể tính toán (inferred), đặt
(placed), và định tuyến logic sai khác so với chủ định, hoặc không phát hiện được lỗi
trong khâu kiểm tra.
VTsim cung cấp cho các kỹ sư thiết kế Virtex-II FPGA một hệ biến hoá (paradigm):
Mô phỏng luồng bits. Đầu vào cần thiết duy nhất của VTsim để hoạt động là dòng bits
hợp lệ, cho phép bộ mô phỏng hoạt động độc lập trong quá trình thiết kế. VTsim là
một bộ mô phỏng theo biến cố, cho đáp ứng tức thời, sử dụng bộ nhớ hiệu quả và hỗ
trợ miền clock bội. Vào khoảng thời gian thực hiện đồ án này, bộ mô phỏng bao phủ
xấp xỉ 90% thiết bị và mô hình hoá phần lớn logic thường dùng trong các mạch FPGA.
Bằng cách sử dụng một số kỹ thuật tối ưu, VTsim tăng hiệu năng hoạt động lên tới
9,000% . Cấu trúc API linh hoạt đã được phát triển để bảo đảm sự tương tác thuận lợi
và cho phép kết hợp các phần bổ sung trong tương lai.
VTsim được tích hợp vào trong bộ thiết kế JHDLBits, có sẵn trong
SourceForge.net, cho phép mô phỏng trong cả dòng JHDL và JBits, hoặc sử dụng như
một công cụ mô phỏng độc lập. Bằng cách sử dụng VTsim, một kỹ sư thiết kế có thể
truy cập và chỉnh sửa tất cả các giá trị nguồn trong FPGA ảo tại thời điểm bất kỳ, xem
tình trạng của các flip-flop và tra bảng, kiểm tra hoặc thay đổi giá trị trên dây định
tuyến. Để thực hiện các chức năng này, VTsim sử dụng hai công cụ bổ sung: JBits và
ADB. JBits là một API, chophép truy cập vào nguồn tài nguyên cấu hình trong một
Xilinx FPGA và được VTsim sử dụng cho thông tin cấu hình dòng bits và xử lý bit
dòng bits (bitstream bit-manipulation). ADB (Alternate wire DataBase – cơ sở dữ liệu
dây thay thế) là một công cụ hỗ trợ các dịch vụ định tuyến (routing) và tạo vết
(tracing), bao phủ hoàn toàn thiết bị, sử dụng bộ nhớ hiệu quả, và hỗ trợ Virtex,
Virtex-E, Virtex-II, and Virtex-II Pro FPGAs. Thông tin từ ADB được sử dụng để đặt
được mô trả trong hình 1.7.
VTsim dựa trên JBits để xử lý tất cả các thao tác dòng bits. Cần có kiến thức sơ bộ
về JBits để hiểu cách xử lý cấu hình và thao tác dòng bits. VTsim cung cấp thông tin
về định tuyến và thiết bị tuỳ thuộc vào ADB giống như một sơ đồ tile thiết bị và các vị
trí CLB. Thông tin định tuyến cấp bởi ADB được sử dụng để tạo ra một danh sách
mạng của các các kết nối bên trong. Ba phần dưới dây sẽ phác hoạ về JHDL, JBits và
Lê Đức Thuận
12
Đồ án tốt nghiệp Chương I – Tổng quan FPGA
ADB, và JHDLBits.
Hình 1.7: Cấu tạo của JHDL
1.5.1 JHDL
Các nhà nghiên cứu tại Đại học Brigham Young đã phát triển một bộ thiết kế FPGA
ngôn ngữ mô tả cấu trúc phần cứng trên nền Java (JHDL). Do tính chất dễ sử dụng,
hướng đối tượng, có khả năng văn bản hoá đựng sẵn, tiện dụng và có tập Giao diện đồ
hoạ người dùng (GUI) API đa dạng, tích hợp vào ngôn ngữ nên Java đã được lựa
chọn. JHDL chứa API đơn, cho phép nhà thiết kế tạo ra cả thiết kế mạch cố định hoặc
linh hoạt.
Bộ mô phỏng JHDL có khả năng chạy trong cả chế độ phần cứng và mô phỏng.
Trong chế độ mô phỏng, mọi giá trị của mạch được tính toán sơ bộ. Trong chế độ phần
cứng, bộ mô phỏng lấy các giá trị phần tử nhớ từ một FPGA kích hoạt, như là flip flop,
từ phần cứng vật lý và lan truyền giá trị qua tất cả các phần tử không nhớ, như là các
cổng và bộ cộng. Tuy nhiên, bộ mô phỏng này không phải là một mô hình hoàn chỉnh
của phần cứng do các giá trị phần tử không nhớ vẫn được mô phỏng sơ bộ. Thông qua
việc sử dụng JHDLBits, VTsim đã được tích hợp vào trong JHDL để đóng vai trò như
một bộ mô phỏng tại chỗ của phần cứng thực/actual hardware. Điều này cho phép nhà
thiết kế mô phỏng phần cứng bằng cách sử dụng các bộ mô phỏng thiết bị.
1.5.2 Cơ bản về JBits và ADB
JBits là một API trên nền Java trợ giúp cho việc truy cập nguồn cấu hình bất kỳ
trong họ Virtex FPGAs. Nguồn thiết bị có thể lập trình và thử khi chạy ngay cả khi
diện cho JHDLBits. Trong khi chạy file test, JHDLBits lấy ra tất cả các thông tin ban
đầu và nets từ thiết kế JHDL rồi chuyển các nets, hình gốc vào trong JBits Nets và
hình gốc. Sau khi chuyển nets và gốc, JHDLBits tạo ra các dòng bits đầu ra và có thể
Lê Đức Thuận
14
Đồ án tốt nghiệp Chương I – Tổng quan FPGA
thoát hoặc tạo đối tượng/tạo nấc VTsim cho các test thiết kế sau này.
Bộ mô phỏng JHDL cho phép người dùng mô phỏng hành vi các thiết kế trong phần
mềm hoặc từ các phần tử nhớ trong phần cứng, mô phỏng hành vi các phần tử còn lại.
JHDLBits hợp với VTsim vào dòng thiết kế bằng cách mở rộng bộ mô phỏng JHDL
để thêm mô hình mô phỏng bổ sung. Trong mô hình này, bộ mô phỏng JDHL tương
tác với bộ mô phỏng thiết bị thay vì phần cứng vật lý, cho phép người dùng đạt được
các chức năng của phần cứng mà không cần đến phần cứng FPGA. Sử dụng VTsim
trong bộ mô phỏng JHDL gặp phải các vấn đề về phần cứng riêng: Các phần tử không
nhớ vẫn mặc định được tính. Nếu kết quả mô phỏng khác với dự kiến, nhà thiết kế
không thể dò ra giá trị bên trong của FPGA thực ngoài các phần tử nhớ khác. Đây là
một vấn đề thể hiện sự vượt trội về tính năng của VTsim. Các phiên bản JHDLBits
trong tương lai sẽ cung cấp mô hình mô phỏng mới cho phép các nhà thiết kế lựa chọn
VTsim là bộ mô phỏng thay cho bộ mô phỏng JHDL chuẩn. Lựa chọn VTsim giúp cho
việc kiểm tra và thác tác tất cả các tài nguyên bên trong theo khung hoạt động JHDL
chuẩn.
1.6. Những cải tiến JHDLBits và JBits
Mặc dù JBits3 là một API đầy đủ chức năng, nhưng nó có thể thân thiện hơn với
người dùng nếu có năm thành phần quan trọng như sau: Một bộ mô phỏng thiết bị,
một thư viện gốc, một cấu trúc liên kết mạch, một bộ đặt và một bộ định tuyến. Việc
loại bỏ một bộ mô phỏng thiết bị gây trở ngại lớn đến sự phát triển thiết kế và xác
nhận các thiết kế FPGA sử dụng JBits, đặc biệt là các thiết kế RTR. Thiếu một thư
viện gốc sẽ giảm kết cấu mạch xuống mức thấp, tạo ra khó khăn trong việc mô phỏng
mạch bất kỳ có nhiều cổng. Thiếu kết cấu kết nối sẽ loại bỏ công cụ đơn giản của nhà
thiết kế để nối các mạch logic, và mở rộng trên các mô-đun đã được tạo ra. Không có
cỡ của mỗi gốc và sắp xếp gốc vào các vị trí xác địn trong FPGA. Trong mô hình bộ
đặt đơn giản, mỗi thành phần được đặt liền sau thành phần trước. Hiện nay, đang phát
triển một bộ đặt phức tạp hơn, thông minh hơn, cấu trúc theo bậc. Mặc dù đơn giản
nhưng bộ đặt là lựa chọn phù hợp cho các thiết kế không phụ thuộc nhiều vào nguồn
định thời hoặc định tuyến. Trong giai đoạn test JHDLBits, một thiết kế định tuyến
khá phức tạp đã thất bại do sắp xếp không tốt, tuy nhiên, các thiết kế này đã tận dụng
được gần 100% tài nguyên của FPGA.
JBits3 không có bộ định tuyến nhưng phiên bản này có giao diện bộ định được
thiết kế, cho phép người dùng tạo và plug-in bộ định tuyến riêng. Một bộ định tuyến
được thiết kế để hoạt động với JBits3 là ADB. ADB hỗ trợ Xilinx Virtex, Virtex-E,
Virtex-II, và Virtex-II Pro FPGAs. Không giống như JRoute, phiên bản trước của nó,
ADB bao phủ toàn bộ thiết bị và có kích cỡ gọn nhẹ hơn so với các dòng định tuyến
khác. Một hạn chế của ADB là nó không tạo ra các tuyến dựa trên thông tin định thời;
tuy nhiên sự đơn giản hoá này của ADB cho phép định tuyến rất nhanh. ADB tích
hợp trong bộ thiết kế mã nguồn mở JHDLBits.
Để bảo vệ FPGAs vật lý, VTsim được mở rộng sử dụng để xác nhận chức năng của
các dòng bits phát JHDLBits. Ví dụ, một vi mạch được mô phỏng trong JHDL trải
Lê Đức Thuận
16
Đồ án tốt nghiệp Chương I – Tổng quan FPGA
qua quá trình trích JHDLBits để tạo ra một dòng bits. Thiết kế tương tự JHDL cũng
được chạy qua các công cụ chủ yếu để tạo ra một dòng bits thứ hai. Mỗi dòng bits
được nạp riêng rẽ vào VTsim và phân tích kỹ lưỡng như trong Hình 1.9. Nếu chức
năng của hai dòng bits không khớp nhau, cần phải chỉnh sửa gốc JBits. Khi chức năng
của cả hai đã khớp nhau, gốc Jbits đã sẵn sàng để test trên phần cứng vật lý. Do đó,
VTsim được phát triển cùng với gốc JBits và các cải tiến để xác nhận cả các gốc mới
phát triển và bộ mô phỏng thiết bị.
Hình 1.9: Quá trình xác nhận dòng bits.
Với việc thiết kế các thành phần quan trọng này, có thể tạo ra các dòng bits JBits
mẫu bằng cách sử dụng các cải tiến trong mô hình cây JHDLBits. Tuy nhiên, không