Kĩ thuật MIMO xuất hiện rất sớm từ những năm 70 do A.R Ka ye và D.A
George đề ra năm 1970 và W. van Etten năm 1975, 1976. Trong quá trình phát triển,
kĩ thuật này không ngừng được cải tiến. Ở Việt Nam, do điều kiện kỹ thuật công nghệ
còn khá xa với thế giới nên việc nghiên cứu cũng gặp nhiều khó khăn, đặc biệt là trong
quá trình xây dựng và test một hệ MIMO. Tuy nhiên, vài năm trở lại đây ở Việt Nam
đã bắt đầu được tiếp cận với một công nghệ mới. Đó là công nghệ FPGA. Với công
nghệ này thì việc xây dựng và test một hệ MIMO không còn quá xa vời.
Với kiến thức của sinh viên năm cuối khoa điện tử - viễn thông em đã quy ết
định nhận một đề tài khóa luận liên quan đến FPGA với tên gọi “Thiết kế bộ phát mã
Walsh cho hệ đo kênh MIMO dùng công nghệ FPGA” với mục đích từng bước xây
dựng một hệ MIMO trong truyền thông vô tuyến. Nội dung của khóa luận gồm có 4
chương:
Chương 1: GIỚI THIỆU VỀ MIMO và FPGA. Trong chương này em đi vào
giới thiệu về hệ MIMO và những nét chính về FPGA như khái niệm và cấu trúc của
FPGA.
Chương 2: NGÔN NGỮ VÀ MÔI TRƯỜNG LẬP TRÌNH CHO FPGA: giới
thiệu khái quát về ngôn ngữ lập trình VHDL, Verilog và môi trường lập trình cho
FPGA của hãng Xilinx đó là ISE.
Chương 3: CÁC ĐẶC ĐIỂM CƠ BẢN CỦA KIT VIRTEX 4 VÀ CÁC PHẦN
MỀM BỔ TRỢ giới thiệu về kit FPGA Virtex 4 của Xilinx công cụ đã sử dụng trong
quá trình nghiên cứu, thực hiện đề tài và các phần mềm bổ trợ như MATLAB, FUSE,
công cụ System Generator.
Chương 4: THỰC HIỆN MÔ HÌNH THIẾT KẾ VỚI KIT VIRTEX 4. Chương
này đưa ra cách thực hiện một sơ đồ thiết kế cụ thể bằng MATLAB cùng các công cụ
sẵn có được cung cấp bởi Xilinx. Cuối cùng là kết quả thu được qua mô phỏng và kết
quả quan sát được trên giao động ký tại lối ra của thiết kế
51 trang |
Chia sẻ: luyenbuizn | Lượt xem: 953 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Thiết kế bộ phát mã Walsh cho hệ đo kênh MIMO dùng công nghệ FPGA, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 1
MỞ ĐẦU
Kĩ thuật MIMO xuất hiện rất sớm từ những năm 70 do A.R Kaye và D.A
George đề ra năm 1970 và W. van Etten năm 1975, 1976. Trong quá trình phát triển,
kĩ thuật này không ngừng được cải tiến. Ở Việt Nam, do điều kiện kỹ thuật công nghệ
còn khá xa với thế giới nên việc nghiên cứu cũng gặp nhiều khó khăn, đặc biệt là trong
quá trình xây dựng và test một hệ MIMO. Tuy nhiên, vài năm trở lại đây ở Việt Nam
đã bắt đầu được tiếp cận với một công nghệ mới. Đó là công nghệ FPGA. Với công
nghệ này thì việc xây dựng và test một hệ MIMO không còn quá xa vời.
Với kiến thức của sinh viên năm cuối khoa điện tử - viễn thông em đã quyết
định nhận một đề tài khóa luận liên quan đến FPGA với tên gọi “Thiết kế bộ phát mã
Walsh cho hệ đo kênh MIMO dùng công nghệ FPGA” với mục đích từng bước xây
dựng một hệ MIMO trong truyền thông vô tuyến. Nội dung của khóa luận gồm có 4
chương:
Chương 1: GIỚI THIỆU VỀ MIMO và FPGA. Trong chương này em đi vào
giới thiệu về hệ MIMO và những nét chính về FPGA như khái niệm và cấu trúc của
FPGA.
Chương 2: NGÔN NGỮ VÀ MÔI TRƯỜNG LẬP TRÌNH CHO FPGA: giới
thiệu khái quát về ngôn ngữ lập trình VHDL, Verilog và môi trường lập trình cho
FPGA của hãng Xilinx đó là ISE.
Chương 3: CÁC ĐẶC ĐIỂM CƠ BẢN CỦA KIT VIRTEX 4 VÀ CÁC PHẦN
MỀM BỔ TRỢ giới thiệu về kit FPGA Virtex 4 của Xilinx công cụ đã sử dụng trong
quá trình nghiên cứu, thực hiện đề tài và các phần mềm bổ trợ như MATLAB, FUSE,
công cụ System Generator.
Chương 4: THỰC HIỆN MÔ HÌNH THIẾT KẾ VỚI KIT VIRTEX 4. Chương
này đưa ra cách thực hiện một sơ đồ thiết kế cụ thể bằng MATLAB cùng các công cụ
sẵn có được cung cấp bởi Xilinx. Cuối cùng là kết quả thu được qua mô phỏng và kết
quả quan sát được trên giao động ký tại lối ra của thiết kế.
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 2
CHƯƠNG 1: GIỚI THIỆU VỀ KĨ THUẬT MIMO VÀ FPGA
1.1. Giới thiệu về MIMO
1.1.1. Khái niệm
Kỹ thuật MIMO (MIMO technique) trong lĩnh vực truyền thông là kỹ thuật sử
dụng nhiều anten phát và nhiều anten thu để truyền dữ liệu. Kỹ thuật MIMO tận dụng
sự phân tập (không gian, thời gian, mã hóa ...) nhằm nâng cao chất lượng tín hiệu, tốc
độ dữ liệu ... (khác với khái niệm beam forming của smart aray antenna nhằm nâng
cao độ lợi thu, phát theo không gian...). Tuy vậy, hạn chế của kỹ thuật MIMO là chi
phí cho thiết bị cao hơn và giải thuật xử lý tín hiệu phức tạp hơn.
Kỹ thuật MIMO ngày nay đang được ứng dụng rất rộng rãi: MIMO-Wifi,
MIMO-UMTS ... nhờ tính tối ưu trong việc sử dụng hiệu quả băng thông, tốc dộ dữ
liệu cao, robust với kênh truyền fading ... Kỹ thuật MIMO tương đối đa dạng và phức
tạp.
Hình 1: Mô hình một hệ MIMO 4x4.
1.1.2. Lịch sử phát triển
Kĩ thuật MIMO với những ưu điểm đầy đủ của nó chỉ mới xuất hiện cách đây
không lâu, nhưng những khái niệm sơ khai về hệ MIMO đã xuất hiện rất sớm từ những
năm 70 do A.R Kaye và D.A George đề ra năm 1970, và W. van Etten năm 1975,
1976.
Giữa thập niên tám mươi, Jack Winters và Jack Salz làm việc tại Bell Labs đã
đưa ra những ứng dụng dùng kĩ thuật tạo búp sóng - được sử dụng trong hệ MIMO sau
này.
Năm 1993, Arogyaswami Paulraj và Thomas Kailath đề xuất khái niệm hợp kênh
không gian sử dụng hệ MIMO.
Năm 1996, Greg Raleigh và Gerard J.Foschini đưa ra phương pháp mới sử dụng
kĩ thuật MIMO dựa trên việc biểu diễn dung năng như hàm phụ thuộc vào số anten thu
phát.
S/P
S1
S2
S3
S4
…
…
S4,S3,S2,S1
(Các ký hiệu truyền)
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 3
Năm 1998, lần đầu tiên trong lịch sử Bell Labs chứng minh thí nghiệm mô hình
hợp kênh không gian (SM).
Năm 2001, sản phẩm thương mại đầu tiên sử dụng công nghệ MIMO – OFDMA
được đưa ra thị trường bởi hiệp hội Iospan Wireless Inc. Sản phẩm này hỗ trợ cả mã
phân tập và hợp kênh không gian.
Năm 2006, một số công ty viễn thông lớn (Beceem Communicatios, Samsung,
Runcom Technology …) tập trung phát triển kĩ thuật MIMO – OFDMA làm giải pháp
cho chuẩn di động băng rộng WIMAX IEEE 802.16e. Cũng trong năm 2006 một số
công ty (Broadcom, Intel …) phát triển kĩ thuật MIMO – OFDM chuẩn bị cho kĩ thuật
WiFi theo chuẩn IEEE 802.11n.
Trong tương lai kĩ thuật MIMO vẫn còn rất quan trọng trong hệ 4G, và vẫn đang
được nhiều nhà nghiên cứu quan tâm phát triển.
1.1.3. Phân loại
MIMO có thể chia thành 3 mảng chính: Mã trước (Precoding), hợp kênh không
gian – SM, và mã phân tập.
Mã trước là cách tạo búp sóng nhiều lớp. Trong cách tạo búp sóng đơn lớp mỗi
anten phát sẽ phát các tín hiệu giống nhau với các trọng số pha thích hợp để cực đại
công suất tại đầu thu. Kết quả tà tạo búp sóng làm tăng hệ số công suất thông qua cấu
trúc tổng hợp, và làm giảm hiệu ứng fading do đa đường. Nếu môi trường không có
tán xạ thì cách tạo búp sóng này rất có hiệu quả. Nhưng thật không may những hệ
thống trong thực tế đều không như vậy. Khi sử dụng nhiều anten nhận thì bên phát
không thể tạo búp sóng để cực đại tín hiệu trên tất cả các anten nhận. Khi đó mã trước
cần được sử dụng. Trong kĩ thuật này, nhiều luồng tín hiệu độc lập được phát đồng
thời từ các anten phát với các trọng số thích hợp sao cho thông lượng tại bộ thu cực
đại. Mã trước yêu cầu bên phát phải biết thông tin trạng thái kênh (CSI).
Hợp kênh không gian: yêu cầu cấu hình anten phù hợp. Trong hợp kênh không
gian, tín hiệu tốc độ cao được chia thành nhiều luồng tốc độ thấp hơn, mỗi luồng được
phát bởi một anten khác nhau trên cùng một băng tần. Nếu các luồng tín hiệu này đến
bộ thu có sự khác biệt kí hiệu không gian thích hợp thì bộ thu có thể tách biệt các
luồng này, tạo thành các kênh song song. Hợp kênh không gian rất hữu hiệu làm tăng
dung năng đáng kể trong trường hợp tỉ số SNR cao. Số luồng không gian cực đại đúng
bằng hoặc nhỏ hơn số anten nhở nhất ở bên phát và bên thu. Hợp kênh không gian
không yêu cầu bên phát phải biết kênh.
Mã phân tập là kĩ thuật khi bên phát không biết thông tin trạng thái kênh. Không
như kĩ thuật SM, mã phân tập chỉ phát đi một luồng tín hiệu được mã hoá theo kĩ thuật
được gọi là mã không – thời gian. Các anten phát tín hiệu mã hoá trực giao. Kĩ thuật
phân tập khai thác tính độc lập của fading trong hệ nhiều anten để nâng cao sự phân
tập của tín hiệu. Vì bên phát không biết kênh nên mã phân tập không tạo búp sóng.
Trong thực tế người ta có thể kết hợp kĩ thuật hợp kênh không gian với mã trước
khi bên phát biết trạng thái kênh, hoặc kết hợp với mã phân tập trong trường hợp
ngược lại.
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 4
1.1.4. Ứng dụng của MIMO
Lợi ích chính của hệ MIMO là tăng đáng kể tốc độ dữ liệu và độ tin cậy của kênh
truyền. Kĩ thuật hợp kênh không gian đòi hỏi độ phức tạp của bộ thu, do đó nó thường
được kết hợp với kĩ thuật hợp kênh phân chia theo tần số trực giao (OFDM), hoặc
OFDMA. Chuẩn IEEE 802.16e kết hợp chặt chẽ với kĩ thuật MIMO – OFDMA và
chuẩn IEEE 802.11n sử dụng MIMO – OFDM.
Hệ MIMO cũng được sử dụng trong chuẩn di động 3GPP và 3GPP2 và đang
được phát triển kĩ thuật truyền thông MIMO nâng cao như là kĩ thuật xuyên lớp, kĩ
thuật nhiều người dùng và ad – hoc trong MIMO.
Xuyên lớp MIMO giải quyết các vấn đề xuyên lớp xảy ra trong hệ thống MIMO,
do đó làm tăng hiệu quả sử dụng kênh. Kĩ thuật xuyên lớp này cũng làm tăng hiệu quả
sử dụng kênh SISO. Các kĩ thuật xuyên lớp thường gặp là điều chế và mã hoá thích
nghi (AMC), liên kết thích nghi.
MIMO nhiều người dùng có thể khai thác sự giao thoa công suất của nhiều người
sử dụng như là một tài nguyên không gian cho kĩ thuật xử lý phát tiên tiến, còn trong
chế độ một người dùng, hệ MIMO chỉ sử dụng nhiều anten. Ví dụ cho xử lý phát tiên
tiến của hệ MIMO nhiều người dùng là giao thoa liên quan đến mã trước.
Ad – hoc MIMO là một kĩ thuật rất hữu dụng cho mạng tế bào tương lai, nó tập
trung vào mạng vô tuyến mắt cáo hay mạng vô tuyến ad – hoc. Trong mạng ad – hoc
nhiều nút phát liên lạc với nhiều nút thu. Để có thể tối ưu dung năng của kênh Ad –
hoc, khái niệm và kĩ thuật MIMO được áp dụng cho các liên kết trong cụm nút thu và
phát. Không giống với hệ anten trong hệ MIMO một người dùng, các nút này được đặt
như một hạng phân bố. Để đạt được dung năng trong mạng này cần quản lý sự phân bố
tài nguyên sóng vô tuyến hiệu quả như sự hoạt động đồng thời của các nút và khái
niệm mã trang nhiễm bẩn.
Tóm lại, hệ MIMO với những kĩ thuật phân tập, mã trước và nhiều người dùng
làm tăng đáng kể tốc độ dữ liệu và độ tin cậy kênh truyền, đang rất được quan tâm
nghiên cứu phát triển hứa hẹn đêm lại cho chúng ta nhiều lợi ích hơn nữa trong truyền
thông vô tuyến.
1.2. Giới thiệu về FPGA
1.2.1. Khái niệm
Field-programmable gate array (FPGA) là vi mạch dùng cấu trúc mảng phần
tử logic mà người dùng có thể lập trình được. (Chữ field ở đây muốn chỉ đến khả năng
tái lập trình “bên ngoài” của người sử dụng, không phụ thuộc vào dây chuyền sản xuất
phức tạp của nhà máy bán dẫn). Vi mạch FPGA được cấu thành từ các bộ phận (hình
2):
Các khối logic cơ bản lập trình được (logic block).
Hệ thống mạch liên kết lập trình được.
Khối vào/ra (I/O Pads).
Phần tử thiết kế sẵn khác như DSP slice, RAM, ROM, nhân vi xử lý...
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 5
Hình 2: Cấu trúc cơ bản của FPGA
FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng ASIC, nhưng
nếu so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế trên thư viện
logic thì FPGA không đạt đựợc mức độ tối ưu như những loại này, và hạn chế trong
khả năng thực hiện những tác vụ đặc biệt phức tạp, tuy vậy FPGA ưu việt hơn ở chỗ
có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết kế đơn giản do vậy chi phí
giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng.
Còn nếu so sánh với các dạng vi mạch bán dẫn lập trình được dùng cấu trúc
mảng phần tử logic như PLA, PAL, CPLD thì FPGA ưu việt hơn các điểm: tác vụ tái
lập trình của FPGA thực hiện đơn giản hơn; khả năng lập trình linh động hơn; và khác
biệt quan trọng nhất là kiến trúc của FPGA cho phép nó có khả năng chứa khối lượng
lớn cổng logic (logic gate), so với các vi mạch bán dẫn lập trình được có trước nó.
Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ mô
tả phần cứng HDL như VHDL, Verilog, AHDL, các hãng sản xuất FPGA lớn như
Xilinx, Altera thường cung cấp các gói phần mềm và thiết bị phụ trợ cho quá trình
thiết kế, cũng có một số các hãng thứ ba cung cấp các gói phần mềm kiểu này như
Synopsys, Synplify... Các gói phần mềm này có khả năng thực hiện tất cả các bước
của toàn bộ quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên HDL (còn gọi là
mã RTL).
FPGA được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công ty Xilinx
vào năm 1984, kiến trúc mới của FPGA cho phép tính hợp số lượng tương đối lớn các
phần tử bán dẫn vào một vi mạch so với kiến trúc trước đó là CPLD. FPGA có khả
năng chứa tới từ 100.000 đến hàng vài tỷ cổng logic, trong khi CPLD chỉ chứa từ
10.000 đến 100.000 cổng logic; con số này đối với PAL, PLA còn thấp hơn nữa chỉ
đạt vài nghìn đến 10.000.
CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple programable
devices, thuật ngữ chung chỉ chung chỉ PAL, PLA). SPLD thường là một mảng logic
AND/OR lập trình được có kích thước xác định và chứa một số lượng hạn chế các
phần tử nhớ đồng bộ (clocked register). Cấu trúc này hạn chế khả năng thực hiện
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 6
những hàm phức tạp và thông thường hiệu suất làm việc của vi mạch phụ thuộc vào
cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán.
Kiến trúc của FPGA là kiến trúc mảng các khối logic, khối logic, nhỏ hơn nhiều
nếu đem so sánh với một khối SPLD, ưu điểm này giúp FPGA có thể chứa nhiều hơn
các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử logic và hệ
thống mạch kết nối, để đạt được mục đích này thì kiến trúc của FPGA phức tạp hơn
nhiều so với CPLD.
Một điểm khác biệt với CPLD là trong những FPGA hiện đại được tích hợp
nhiều những bộ logic số học đã sơ bộ tối ưu hóa, hỗ trợ RAM, ROM, tốc độ cao, hay
các bộ nhân cộng (multication and accumulation, MAC), thuật ngữ tiếng Anh là DSP
slice dùng cho những ứng dụng xử lý tín hiệu số DSP.
Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại còn hộ trợ
tái cấu trúc cục bộ, tức là khả năng tái cấu trúc một bộ phận riêng lẻ trong khi vẫn đảm
bảo hoạt động bình thường cho các bộ phận khác.
1.2.2. Ứng dụng
Ứng dụng của FPGA bao gồm: xử lý tín hiệu số DSP, các hệ thống hàng không,
vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ thống điều
khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình
phần cứng máy tính...
Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết lớp
những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính, ngoài ra
nhờ mật độ cổng logic lớn FPGA được ứng dụng cho những bài toán đòi hỏi khối
lượng tính toán lớn và dùng trong các hệ thống làm việc theo thời gian thực.
Khối logic
Phần tử chính của FPGA là các khối logic (logic blocks). Khối logic được cấu
thành từ LUT và một phần tử nhớ đồng bộ flip-flop, LUT (Look up table) là khối logic
có thể thực hiện bất kì hàm logic nào từ 4 đầu vào, kết quả của hàm này tùy vào mục
đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần tử nhớ flip-flop.
Hình 3: Khối logic trong FPGA
Trong tài liệu hướng dẫn của các dòng FPGA của Xilinx còn sử dụng khái niệm
SLICE, một Slice tạo thành từ gồm 4 khối logic, số lượng các Slices thay đổi từ vài
nghìn đến vài chục nghìn tùy theo loại FPGA.
Look
Up
Table
(LUT)
Flip
-
Flop
Input
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 7
Nếu nhìn cấu trúc tổng thể của mảng LUT thì ngoài 4 đầu vào kể trên còn hỗ trợ
thêm 2 đầu vào bổ xung từ các khối logic phân bố trước và sau nó nâng tổng số đầu
vào của LUT lên 6 chân. Cấu trúc này là nhằm tăng tốc các bộ số học logic.
1.2.3. Hệ thống mạch liên kết
Khối chuyển mạch của FPGA là mạng liên kết trong FPGA được cấu thành từ
các đường kết nối theo hai phương ngang và đứng, tùy theo từng loại FPGA mà các
đường kết nối được chia thành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx có
3 loại kết nối: ngắn, dài và rất dài. Các đường kết nối được nối với nhau thông qua các
khối chuyển mạch lập trình được (programable switch), trong một khối chuyển mạch
chứa một số lượng nút chuyển lập trình được đảm bảo cho các dạng liên kết phức tạp
khác nhau.
1.2.4. Các phần tử tích hợp sẵn
Ngoài các khối logic tùy theo các loại FPGA khác nhau mà có các phần tử tích
hợp thêm khác nhau, ví dụ để thiết kế những ứng dụng SoC, trong dòng Virtex 4,5 của
Xilinx có chứa nhân sử lý PowerPC, hay trong Atmel FPSLIC tích hợp nhân ARV…,
hay cho những ứng dụng xử lý tín hiệu số DSP trong FPGA được tích hợp các DSP
Slice là bộ nhân cộng tốc độ cao, thực hiện hàm A*B+C, ví dụ dòng Virtex của Xilinx
chứa từ vài chục đến hàng trăm DSP slices với A, B, C 18-bit.
Ngày nay ngành công nghệ chế tạo phần cứng luôn có những đột phá không
ngừng. Từ các mạch điện đơn giản đến các mạch số, mạch tích hợp, kiến trúc mạch
trở nên ngày một phức tạp hơn. Nhờ những ưu điểm hơn hẳn so với các phương pháp
phân tích, mô hình hoá, thiết kế mạch số kiểu truyền thống mà phương pháp sử
dụng các ngôn ngữ mô phỏng phần cứng (HDL - Hardware Description Languages)
đang trở thành một phương pháp thiết kế các hệ thống điện tử số phổ biến trên toàn
thế giới. Trong khóa luận này em xin giới thiệu hai loại ngôn ngữ mô phỏng phần cứng
đó là VHDL (Very high speed intergrated circuit Hardware Description Language) và
Verilog là hai ngôn ngữ chủ yếu được sử dụng để mô phỏng phần cứng trong công
nghệ CPLD, FPGA, ASIC…
Những ưu điểm của phương pháp thiết kế hệ thống số bằng ngôn ngữ
mô phỏng phần cứng (HDL).
Ngày nay, các mạch tích hợp ngày càng thực hiện được nhiều chức năng do đó
mà vấn đề thiết kế mạch càng trở nên phức tạp. Những phương pháp truyền thống
như dùng phương pháp tối thiểu hoá hàm Boolean hay dùng sơ đồ các phần tử không
còn đáp ứng được các yêu cầu đặt ra khi thiết kế. Nhược điểm lớn nhất của các
phương pháp này là chúng chỉ mô tả được hệ thống dưới dạng mạng nối các phần tử
với nhau. Người thiết kế cần phải đi qua hai bước thực hiện hoàn toàn thủ công: đó
là chuyển từ các yêu cầu về chức năng của hệ thống sang biểu diễn theo dạng hàm
Boolean, sau các bước tối thiểu hoá hàm này ta lại phải chuyển từ hàm Boolean sang
sơ đồ mạch của hệ thống. Cũng tương tự khi phân tích một hệ thống người phân
tích cần phải phân tích sơ đồ mạch của hệ thống, rồi chuyển nó thành các hàm
Boolean, sau đó mới lập lại các chức năng, hoạt động của hệ thống. Tất cả các bước
nói trên hoàn toàn phải thực hiện thủ công không có bất kỳ sự trợ giúp nào của máy
tính. Người thiết kế chỉ có thể sử dụng máy tính làm công cụ hỗ trợ trong việc vẽ sơ
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 8
đồ mạch của hệ thống và chuyển từ sơ đồ mạch sang công cụ tổng hợp mạch vật lý
dùng công cụ Synthesis. Một nhược điểm khác nữa của phương pháp thiết kế truyền
thống là sự giới hạn về độ phức tạp của hệ thống được thiết kế. Phương pháp dùng
hàm Boolean chỉ có thể dùng để thiết kế hệ thống lớn nhất biểu diễn bởi vài trăm hàm.
Còn phương pháp dựa trên sơ đồ chỉ có thể dùng để thiết kế hệ thống lớn nhất chứa
khoảng vài nghìn phần tử.
Phương pháp thiết kế, thử nghiệm, phân tích các hệ thống số sử dụng các ngôn
ngữ mô tả phần cứng nổi bật lên với các ưu điểm hơn hẳn và sẽ dần thay thế các
phương pháp truyền thống. Sự ra đời của ngôn ngữ mô phỏng phần cứng đã giải quyết
được rất nhiều nhược điểm lớn của các phương pháp thiết kế trước đây: Nếu các
phương pháp cũ đòi hỏi phải chuyển đổi từ mô tả hệ thống (các chỉ tiêu về chức
năng) sang tập hợp các hàm logic bằng tay thì bước chuyển đó hoàn toàn không cần
thiết khi dùng HDL. Hầu hết các công cụ thiết kế dùng ngôn ngữ mô phỏng phần
cứng đều cho phép sử dụng biểu đồ trạng thái (finite-state-machine) cho các hệ thống
tuần tự cũng như cho phép sử dụng bảng chân lý cho hệ thống tổng hợp. Việc
chuyển đổi từ các biểu đồ trạng thái và bảng chân lý sang mã ngôn ngữ mô phỏng
phần cứng được thực hiện hoàn toàn tự động.
Nhờ tính dễ kiểm tra thử nghiệm hệ thống trong suốt quá trình thiết kế mà
người thiết kế có thể dễ dàng phát hiện các lỗi thiết kế ngay từ những giai đoạn đầu,
giai đoạn chưa đưa vào sản xuất thử, do đó tiết kiệm được lượng chi phí đáng kể bởi
từ ý tưởng thiết kế đến tạo ra sản phẩm đúng như mong muốn là một việc rất khó
tránh khỏi những khó khăn, thất bại.
Khi mọi lĩnh vực của khoa học đều phát triển không ngừng thì sự phức tạp của
hệ thống điện tử cũng ngày một tăng theo và gần như không thể tiến hành thiết kế thủ
công mà không có sự trợ giúp cuả các loại máy tính hiện đại. Ngày nay, ngôn ngữ
mô tả phần cứng HDL được dùng nhiều để thiết kế cho các thiết bị logic lập trình
được PLD từ loại đơn giản đến các loại phức tạp như ma trận cổng lập trình được
FPGA.
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 9
CHƯƠNG 2: NGÔN NGỮ VÀ MÔI TRƯỜNG LẬP TRÌNH CHO FPGA
2.1. Ngôn ngữ lập trình cho FPGA
2.1.1 Giới thiệu
Có nhiều ngôn ngữ có thể lập trình cho FPGA như VHDL, Verilog, C… Mỗi
ngôn ngữ lại có ưu nhược điểm riêng. Ví dụ như Verilog là ngôn ngữ được phát triển
và sử dụng chủ yếu ở Mỹ. Đây là một ngôn ngữ rất gần với C, chính vì vậy sẽ rất
thuận tiện cho ai đó đã quen lập trình với ngôn ngữ C. Tuy nhiên, ở châu Âu thì người
ta lại quen dùng VHDL hơn. Ưu điểm của ngôn ngữ này là người làm việc với nó sẽ
có cái nhìn rất thấu đáo về phần cứng. Trong chương này em xin được giới thiệu chủ
yếu về về ngôn ngữ VHDL – ngôn ngữ mà em đã tìm hiểu trong quá trình học tập và
làm thực nghiệm với FPGA trên phòng SIS (Smart Integrated Systems) và đưa ra vài
nét giới thiệu khái quát về Verilog cũng là một ngôn ngữ rất thông dụng đối với lập
trình FPGA hiện nay.
2.1.2. Ngôn ngữ VHDL
2.1.2.1. Khái niệm
VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao, là một
loại ngôn ngữ mô tả phần cứng được phát triển dùng cho chương trình VHSIC (Very
High Speed Itergrated Circuit) của bộ quốc phòng Mỹ. Mục tiêu của việc phát triển
VHDL là có được một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất cho
phép thử nghiệm các hệ thống số nhanh hơn cũng như cho phép dễ dàng đưa các hệ
thống đó vào ứng dụng trong thực tế. Ngôn ngữ VHDL được ba công ty Intermetics,
IBM và Texas Instruments bắt đầu nghiên cứu phát triển vào tháng 7 năm 1983. Phiên
bản đầu tiên được công bố vào tháng 8-1985. Sau đó VHDL được đề xuất để tổ chức
IEEE xem xét thành một tiêu chuẩn chung. Năm 1987 đã đưa ra tiêu chuẩn về VHDL
(tiêu chuẩn IEEE-1076-1987).
VHDL được phát triển để giải quyết các khó khăn trong việc phát triển, thay đổi
và lập tài liệu cho các hệ thống số. Như ta đã biết, một hệ thống số có rất nhiều tài liệu
mô tả. Để có thể vận hành bảo trì sửa chữa một hệ thống ta cần tìm hiểu kỹ lưỡng tài
liệu đó. Với một ngôn ngữ mô phỏng phần cứng tốt việc xem xét các tài liệu mô tả trở
nên dễ dàng hơn vì bộ tài liệu đó có thể được thực thi để mô phỏng hoạt động của hệ
thống. Như thế ta có thể xem xét toàn bộ các phần tử của hệ thống hoạt động trong một
mô hình thống nhất.
VHDL được phát triển như một ngôn ngữ độc lập không gắn với bất kỳ một
phương pháp thiết kế, một bộ mô tả hay công nghệ phần cứng nào. Người thiết kế
có thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi chỉ sử dụng một ngôn
ngữ duy nhất. Và khi đem so sánh với các ngôn ngữ mô phỏng phần cứng khác đã kể
ra ở trên ta thấy VHDL có một số ưu điểm hơn hẳn các ngôn ngữ khác:
- Thứ nhất là tính công cộng: VHDL được phát triển dưới sự bảo trợ của chính
phủ Mỹ và hiện nay là một tiêu chuẩn của IEEE. VHDL được sự hỗ trợ của nhiều nhà
sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống.
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 10
- Thứ hai là khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế. VHDL
cho phép thiết kế bằng nhiều phương pháp ví dụ phương pháp thiết kế từ trên xuống,
hay từ dưới lên dựa vào các thư viện sẵn có. VHDL cũng hỗ trợ cho nhiều loại công cụ
xây dựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ, sử dụng ma trận
lập trình được hay sử dụng mảng ngẫu nhiên.
- Thứ ba là tính độc lập với công nghệ: VHDL hoàn toàn độc lập với công nghệ
chế tạo phần cứng. Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng có thể được
chuyển thành các bản tổng hợp mạch khác nhau tuỳ thuộc công nghệ chế tạo phần
cứng mới ra đời nó có thể được áp dụng ngay cho các hệ thống đã thiết kế.
- Thứ tư là khả năng mô tả mở rộng: VHDL cho phép mô tả hoạt động của phần
cứng từ mức hệ thống số cho đến mức cổng. VHDL có khả năng mô tả hoạt động của
hệ thống trên nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi
mức. Như thế ta có thể mô phỏng một bản thiết kế bao gồm cả các hệ con được mô tả
chi tiết.
- Thứ năm là khả năng trao đổi kết quả: Vì VHDL là một tiêu chuẩn được chấp
nhận, nên một mô hình VHDL có thể chạy trên mọi bộ mô tả đáp ứng được tiêu chuẩn
VHDL. Các kết quả mô tả hệ thống có thể được trao đổi giữa các nhà thiết kế sử dụng
công cụ thiết kế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL. Cũng như một
nhóm thiết kế có thể trao đổi mô tả mức cao của các hệ thống con trong một hệ thống
lớn (trong đó các hệ con đó được thiết kế độc lập).
- Thứ sáu là khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết
kế: VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể được
sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người. Bên
trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chia sẻ
thiết kế. Và nó cũng cho phép dùng lại các phần đã có sẵn.
2.1.2.2. Cấu trúc một mô hình hệ thống mô tả bằng VHDL
Mục đích của phần này là nhằm giới thiệu sơ qua về cấu trúc khung cơ bản của
VHDL khi mô tả cho một mô hình thiết kế thực. Thông thường một mô hình VHDL
bao gồm ba phần: thực thể (entity), kiến trúc (architecture) và các cấu hình. Đôi khi ta
sử dụng các gói (packages) và mô hình kiểm tra hoạt động của hệ thống (testbench).
+ Thực thể (entity)
Đây là nơi chứa các khai báo thực thể (là các port giao tiếp giữa FPGA và các tín
hiệu bên ngoài các port này được sử dụng như là lớp vỏ
Các file đính kèm theo tài liệu này:
- ki_thuat_mimo_va_fpga_3391.pdf