MỤC LỤC
Mở đầu ............................................................................................................................. 1
CHƯƠNG 1 TỔNG QUAN VỀ FPGA VÀ NGÔN NGỮ VHDL ................................. 2
1.1. Giới thiệu về FPGA. ......................................................................................... 2
1.2. Kiến trúc chung của một FPGA ............................................................................. 3
1.3. Ngôn ngữ phần cứng HDL. ............................................................................... 5
CHƯƠNG 2 CÁC CÔNG CỤ THIẾT KẾ .................................................................. 14
2.1. Những đặc điểm cơ bản của XtremeDSP Development Kit-IV ........................ 14
2.2. Các phần mềm chuyên dụng................................................................................. 23
2.3. Quy trình thiết kế tổng quát .................................................................................. 29
CHƯƠNG 3 GIỚI THIỆU MÔ HÌNH SOFTWARE DEFINED RADIO CHO HỆ
ĐO THỬ KÊNH MIMO ............................................................................................... 32
3.1. Khái niệm MIMO ........................................................................................... 32
3.2. Lịch sử phát triển hệ MIMO ................................................................................. 33
3.3. Những ưu điểm của hệ MIMO ............................................................................. 33
3.4. Mô hình Software Defined Radio cho hệ đo thử kênh MIMO .......................... 37
CHƯƠNG 4 KẾT QUẢ THỰC NGHIỆM…………………………………………….40
4.1. Cơ sở lý thuyết………………………………………………………………………40
4.2. Mô hình thiết kế…………………………………………………………….………41
4.3. Kết quả mô phỏng trên MATLAB……………………………………………. 43
4.4. Kết quả thực nghiệm trên FPGA .......................................................................... 46
Kết luận ............................................................................................................................
Tài liệu tham khảo .......................................................... Error! Bookmark not defined.
VÀ NGÔN NGỮ VHDL
1.1. Giới thiệu về FPGA
FPGA là viết tắt của "Field Programmable Gate Array", 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, có thể thực hiện các tính năng
logic thông qua máy tính của mình với giá rẻ, và có thể xóa đi viết lại nhiều lần. Xilinx là
công ty đầu tiên bán ra FPGA và luôn chiếm thị phần lớn nhất. Ngoài ra còn có Alterna,
Lattice, Actel, QuickLogic. Nhiều nhà sản xuất hiện đang cung cấp rất nhiều cấu trúc và
phương pháp xử lý khác nhau. Vì vậy, việc chọn một cấu trúc và một phương pháp xử lý
để có thể đáp ứng được các yêu cầu về chức năng và độ ổn định, đối với một hệ thống
trong thực tế là vấn đề mang tính quyết định. Thiết bị logic lập trình được được phát minh
lần đầu vào cuối thập kỷ 1970 và ngay lập tức đã trở lên phổ biến trong ngành công
nghiệp bán dẫn. Ngoài khả năng lập trình đa dạng, công nghệ này còn có thời gian sản
xuất nhỏ nên có khả năng cạnh tranh thương mại rất lớn. Hơn nữa, việc thiết kế với nó
khá dễ dàng và nó có khả năng lập trình lại nhiều lần.
FPGA được thiết kế đầu tiêm 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 1 vi mạch so với kiến trúc trước đó là CPLD (Complex Programmable Logic
Device).Điểm tương đồng của CPLD và FPGA là ở chỗ chúng đều bao gồm một số lượng
tương đối lớn các phần tử logic khả trình. Tuy nhiên mật độ tích hợp thì khác nhau, mật
độ cổng logic của CPLD nằm trong khoảng từ vài nghìn đến hàng chục nghìn, trong khi
với FPGA thì mật độ tích hợp cỡ hàng chục nghìn cho đến vài triệu.
FPGA và CPLD có rất nhiều điểm khác biệt tuy nhiên kiến trúc là điểm khác biệt
chính giữa CPLD và FPGA. CPLD có kiến trúc giới hạn ở một mức độ nào đó, nó bao
gồm một hoặc nhiều dải logic “sum-of-products” khả trình và được cung cấp một số
tương đối nhỏ các thanh ghi được đồng bộ. Điều này làm cho CPLD trở nên không được
mềm dẻo lắm, nhưng bù lại trễ timing lại dễ dự đoán hơn và tốc độ kết nối logic cũng cao
hơn FPGA. Với FPGA, thì kiến trúc theo một cách khác trội hơn hẳn CPLD bởi vì FPGA
sử dụng các liên kết nối. Điều này không những tạo cho nó mềm dẻo hơn rất nhiều mà
còn làm tăng độ phức tạp trong thết kế.
Điểm khác biệt nữa giữa FPGA và CPLD là trong hầu hết chip FPGA đều có các
1.2.2. Hệ thống mạch liên kết
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.3. 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 xử 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 Slide 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.
1.3. Ngôn ngữ mô tả phần cứng (HDL)
Ngôn ngữ mô tả phần cứng (HDL) là ngôn ngữ lập trình phần mềm dùng để mô
hình họat động mong muốn của phần cứng. Có hai khía cạnh mà HDL tạo điều kiện để
mô tả phần cứng: mô hình hành vi trừu tượng và mô hình cấu trúc phần cứng.
Mô hình hành vi trừu tượng. Ngôn ngữ mô tả phần cứng tạo điều kiện dễ dàng cho
việc mô tả trừu tượng hành vi của phần cứng đối với các mục đích đặc tả (chỉ rõ chi tiết
kỹ thuật). Hành vi này không chỉ bị chi phối bới các khía cạnh cấu trúc hoặc thiết kế của ý
địh phần cứng.
Mô hình cấu trúc phần cứng. Cấu trúc phần cứng có khả năng được mô hình trong
ngôn ngữ mô tả phần cứng mà không cần quan tâm đến hành vi thiết kế.
Năm 1980 bộ Quốc phòng Mỹ (DOD) muốn thực hiện việc thiết kế mạch tự dẫn chứng,
muốn theo đuổi một hệ phương pháp thiết kế tổng quát và có thể sử dụng lại được với các
công nghệ mới. Rõ ràng đã có nhu cầu cho một ngôn ngữ lập trình chuẩn để mô tả chức
năng và cấu trúc của các mạch số đối với việc thiết kế vi mạch (IC). Sau đó DOD đã tài
trợ cho một dự án thuộc chương trình vi mạch có tốc độ rất cao VHSIC (very high speed
integrated circuit) để tạo ra ngôn ngữ mô tả phần cứng chuẩn. Kết quả là dự án này đã tạo
và mô phỏng công nghệ mới với một mức rất cao.
1.3.2. Cấu trúc một mô hình hệ thống sử dụng ngôn ngữ VHDL
VHDL là ngôn ngữ mô tả phần cứng do vậy mà nó có thể được sử dụng để làm mô
hình của một hệ thống số. Hệ thống số có thể đơn giản là các cổng logic hay phức tạp như
một hệ thống hoàn chỉnh. Các khối xây dựng nên ngôn ngữ VHDL gọi là các khối thiết
kế. Có 3 khối thiết kế chính:
- Khai báo Entity (Thực thể)
- Khai báo Architecture (Kiến trúc)
- Khai báo Configuration (Cấu hình)
- Đôi khi ta sử d ụn g các gói (Packages) và mô hình kiểm tra hoạt động của hệ
thống (Testbench).
a. Entity (Thực thể)
Khai báo thực thể trong VHDL là phần định nghĩa các chỉ tiêu phía ngoài của một
phần tử hay một hệ thống. Khai báo Entity là chỉ ra tên của Entity và liệt kê các cổng
vào/ra. Các cổng là các (dây) tín hiệu mà qua đó entity giao tiếp với môi trường bên
ngoài. Ví dụ, một mạch bán tổng được chỉ ra ở hình 8 :
Hình 1.3 Bộ bán tổng
Khai báo Entity như sau:
entity HALF-ADDER is
port ( A, B : in BIT;
SUM, CARRY : out BIT);
end HATF-ADDER;
Bộ bán cộng này gồm có hai đầu vào là A và B; và hai đầu ra là SUM và CARRY, BIT là
một kiểu cấu trúc ngôn ngữ được định nghĩa trước của FPGA
b. Architecture (Kiến trúc)
Phần thứ 2 trong mã nguồn VHDL là khai báo Architecture. Mỗi một khai báo Entity
đều phải đi kèm với ít nhất một Architecture tương ứng. Khai báo Architecture trong
chương trình phải kết hợp tên của Architecture và một Entity trong chương trình đó. Phần
SUM <= A xor B after 8ns;
CARRY <= A and B after 4ns;
End DATAFLOW;
Trong ví dụ này kiểu luồng dữ liệu sử dụng hai phép gán tín hiệu đồng thời (hoặc
gán nối tiếp). Trong phép gán cho tín hiệu thì ký hiệu gán là “<=”. Giá trị của biểu biểu
thức bên phải được gán cho tín hiệu bên phía tay trái. Một phép gán đồng thời được thực
hiện chỉ khi có bất kỳ tín hiệu trong biểu thức phía phải có sự thay đổi, tức là giá trị tín
hiệu thay đổi. Thông tin trễ cũng có thể được thêm vào phép gán bằng cách sử dụng mệnh
đề “after” .
Kiểu behavior
Kiểu behavior chỉ ra cách thức hoạt động của một entity như là một tập hợp lệnh
được thực hiện theo kiểu nối tiếp bằng cách sử dụng process. Chúng không chỉ ra rõ ràng
cấu trúc của entity mà chỉ ra chức năng của nó. Ví dụ sau xem xét kiểu behavior của bộ
bán tổng.
Architecture BEHAVIOR of HALF-ADDER is
Begin
Process (A,B)
Variable X,Y : BIT;
Begin
X:=A;
Y:=B;
SUM<=X xor Y;
CARRY <= X and Y;
End process;
End BEHAVIOR;
Một process cũng có một phần để khai báo (trước từ khóa “begin”) và một phần để
trình bày (giữa từ khóa “begin” và “process”). Các lệnh bên trong phần trình bày này
được thực hiện theo kiểu nối tiếp. Danh sách các tín hiệu được chỉ ra trong dấu ngoặc sau
từ khóa “process” tạo thành một danh sách “nhạy”. Tức là, khi có sự thay đổi của bất kỳ
giá trị nào trong danh sách này thì mới thực hiện các lệnh trong process. Tuy nhiên, tất cả
của Package chỉ rõ sự biến đổi quan hệ trong Package giống như trong Architecture.
VHDL là không giống như cách thực thi chương trình một cách tuần tự như chương
trình của PC, các lệnh của VHDL được thực hiện một cách đồng thời. Vì lí do này, người
ta thường gọi là “mã VHDL” chứ không gọi là “chương trình VHDL”. Trong VHDL, chỉ
các lệnh nằm trong PROCESS, FUNCTION hoặc PROCEDURE mới được thực thi một
cách tuần tự.
Như đã đề cập ở trên, một trong những ưu điểm của VHDL là nó cho phép tổng hợp
một mạch hay một hệ thống trong một thiết bị khả trình (như PLD hoặc FPGA) hoặc
trong một chip ASIC. Các bước thực hiện một project được chỉ ra trong hình 1.3.
Hình 1.4 Sơ đồ thiết kế VHDL
Thiết kế được bắt đầu bằng việc viết mã VHDL và lưu vào file có đuôi “.vhd” có
cùng tên với tên của ENTITY. Bước đầu tiên trong quá trình tổng hợp là biên dịch. Biên
dịch là quá trình chuyển từ ngôn ngữ VHDL bậc cao (mô tả mạch ở mức RTL – mức
chuyển thanh ghi) sang dạng danh sách kết nối (netlist) ở mức gate. Bước thứ hai là tối
ưu, được thực hiện trên danh sách kết nối mức gate để đạt được sự tối ưu về tốc độ hoặc
tối ưu về diện tích sắp đặt. Ở giai đoạn này, thiết kế có thể được mô phỏng. Cuối cùng
một phần mềm Place-và-route sẽ tạo ra sự sắp đặt (layout) vật lý cho một thiết bị
PLD/FPGA hoặc sẽ tạo ra mặt nạ (mask) cho chip ASIC.
e. Mô hình kiểm tra hoạt động (Testbench)
Một trong các nhiệm vụ rất quan trọng là kiểm tra bản mô tả thiết kế. Kiểm tra một
mô hình VHDL được thực hiện bằng cách quan sát hoạt động của nó trong khi mô phỏng
và các giá trị thu được có thể đem so sánh với yêu cầu thiết kế.Môi trường kiểm tra có thể
hiểu như một mạch kiểm tra ảo. Môi trường kiểm tra sinh ra các tác động lên bản thiết
kế và cho phép quan sát hoặc so sánh kết quả hoạt động của bản mô tả thiết kế. Thông
thường thì các bản mô tả đều cung cấp chương trình thử. Nhưng ta cũng có thể tự xây
dựng chương trình thử (testbench). Mạch thử thực chất là sự kết hợp của tổng hợp nhiều
thành phần. Nó gồm ba thành phần. Mô hình VHDL đã qua kiểm tra, nguồn dữ liệu và
bộ quan sát. Hoạt động của mô hình VHDL được kích thích bởi các nguồn dữ liệu và
kiểm tra tính đúng đắn thông qua bộ quan sát.
Module BenADDA DIME-II
• Chíp FPGA: XC4VSX35-10FF668
• Hai kênh DAC độc lập: AD6645 ADC (14-bits 105 MSPS)
• Hai kênh ADC độc lập: AD9772 DAC (14-bits 160 MSPS)
• Hỗ trợ clock ngoài, bộ dao động onboard và clock có thể lập trình
• Hai bộ nhớ SRAM (133MHz, 512Kx32 bits mỗi bên)
• Các LED hiển thị Hình 2.1. Giao diện ngoài của XtremeDSP Development Kit-IV
Hình 2.2. Bộ KIT sử dụng chuẩn kết nối MCX
Hình 2.3. Giao diện phía trong của XtremeDSP Development Kit-IV
2.1.2. Các thành phần chính của XtremeDSP Development Kit-IV
a. Chíp FPGA (XC4VSX35)
Các đặc điểm chính của XC4VSX35:
• Rocket IO Transceiver Blocks: 8
• PowerPC Processor Blocks: 2
• LogicCells
(2)
: 30,816
• Slices: 13,696
• Max DistrRAM (Kb): 428
• 18 X 18 Bit Multiplier Blocks: 136
• 18 Kb Blocks: 136
• Max Block RAM (Kb): 2,448
• DCMs: 8
• Maximum User I/ O Pads: 644
ra thông qua kết qua kết nối MCX.
Hình 2.5. Sơ đồ tín hiệu qua DAC cho dữ liệu ra tương tự
Các đặc điểm chính của DAC (AD9772A)
• Cung cấp DAC 14-bit
• Tốc độ dữ liệu lối ra tối đa 160MSPS
• Sử dụng clock LVPECL lối vào lấy từ Virtex-II XC2V80-4CS144 Clock FPGA
• Bộ nhân đồng hồ có vòng khóa pha trong
• Trở kháng lối ra 50 Ω thông qua chuẩn kết nối MCX.
DAC clock
Mỗi DAC có thể được clock trực tiếp , độc lập thông qua tín hiệu LVPECL.Tín
hiệu LVPECL có thể được điều khiển bởi Virtex-II XC2V80-4CS144 FPGA (Clock
FPGA).Một số các clock có thể sử dụng thông qua clock FPGA:
-Clock 105 MHZ on board bằng tinh thể
-Clock ngoài đưa vào thông qua chuẩn kết nối MCX
-Clock lập trình qua bộ dao động trên KIT
d. Bộ nhớ ZBT SRAM
Bộ KIT cung cấp 2 bộ nhớ độc lập ZBT SRAM .Mỗi bộ có thể cấu hình 512k x 32.Bộ
nhớ này có khả năng lưu dữ liệu trên board thông qua bus dữ liệu 32-bit tới mỗi bộ nhớ.