Báo cáo tốt nghiệp: Thiết kế bộ phát mã Walsh cho hệ đo kênh MIMO dùng công nghệ FPGA doc - Pdf 19


TRƯỜNG …………………
KHOA………………………
[\[\

BÁO CÁO TỐT NGHIỆP

Đề tài:

Thiết kế bộ phát mã Walsh
cho hệ đo kênh MIMO
dùng công nghệ 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
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

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.

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

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

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

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

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

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ủa kiến trúc thiết kế) và có
thể bao gồm các tùy chọn “generic” là khai báo chung có thể dễ dàng sửa đổi khi cần.
+ Kiến trúc (architecture)
Phần thứ hai trong mô hình VHDL là khai báo kiến trúc của chương trình. Mỗi
một khai báo thực thể đều phải đi kèm với ít nhất một kiến trúc tương ứng. VHDL
cho phép tạo ra hơn một kiến trúc cho một thực thể. Phần khai báo kiến trúc có thể
bao gồm các khai báo về các tín hiệu bên trong, các phần tử bên trong hệ thống, hay
các hàm và thủ tục mô tả hoạt động của hệ thống. Tên của kiến trúc là nhãn được đặt
tuỳ theo người xử dụng. Có hai cách mô tả kiến trúc của một phần tử (hoặc hệ thống)
đó là mô hình hoạt động (Behaviour) hay mô tả theo mô hình cấu trúc (Structure).
Tuy nhiên một hệ thống có thể bao gồm cả mô tả theo mô hình hoạt động và mô tả
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
11

theo mô hình cấu trúc.


B

S

S/B

S

B

B

B

B

B

B

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
12

….
End process
Trong đó các phần đặt trong dấu [ ] thì có thể có hoặc không.
- process_label: (nhãn lệnh) là tuỳ thuộc người lập trình đặt tên
- sensitivity_list: Danh sách các yếu tố kích thích hoạt động.
+ Môi trường kiểm tra (testbench)

Generics

Testbench Entity
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
13

 Thuật toán (một số lệnh giống ngôn ngữ C như: if, case, for,while…).
 Chuyển đổi thanh ghi (kết nối bằng các biểu thức Boolean).
 Các cổng kết nối (cổng: OR, AND, NOT…).
 Chuyển mạch (BJT, MOSFET).
Ngôn ngữ này cũng chỉ rõ cách thức kết nối, điều khiển vào/ra trong mô phỏng.
Khai báo module
Một module là bản thiết kế chủ yếu tồn tại trong Verilog. Dòng đầu tiên của khai
báo module chỉ rõ danh sách tên và port (các đối số). Những dòng kế tiếp chỉ rõ dạng
I/O (input, output, hoặc inout) và chiều rộng của mỗi port. Mặc định chiều rộng port là
1 bit.
Sau đó, những biến port phải được khai báo wire, wand, …, reg. Mặc định là
wire. Những ngõ vào đặc trưng là wire khi dữ liệu được chốt bean ngoài module. Các
ngõ ra là dạng reg nếu những tín hiệu của chúng được chứa trong khối always hoặc
initial.
Chỉ thị liên tiếp
Các chỉ định liên tiếp được dùng để gán một giá trị lên trên một wire trong một
module. Đó là các chỉ định thông thường bên ngoài khối always hoặc khối initial. Các
chỉ định liên tiếp được thực hiện với một lệnh gán (assign) rõ ràng hoặc bằng sự chỉ
định một giá trị đến một wire trong lúc khai báo. Chú ý rằng, các lệnh chỉ định liên
tiếp thì tồn tại và được chạy liên tục trong suốt quá trình mô phỏng. Thứ tự các lệnh
gán không quan trọng. Mọi thay đổi bên phải của bất cứ ngõ vào sẽ lập tức thay đổi
bên trái của các ngõ ra.
Module instantiations

trái lệnh gán. Nếu thêm một quá trình thay đổi nữa cạnh bên phải tín hiệu trong
khoảng thơi gian ∆t, thì không cho kết quả ở ngõ ra. Delay không được hỗ trợ bởi các
công cụ.
Cấu trúc chương trình dùng ngôn ngữ Verilog
// Khai báo module
Module tên chương trình (tên biến I/O); // tên chương trình trùng tên file.v.
Input [msb:lsb] biến;
Output [msb:lsb] biến;
Reg [msb:lsb] biến reg;
Wire [msb: lsb] biến wire;

// Khai báo khối always, hoặc khối initial.
… các lệnh …
2.2. Môi trường lập trình cho FPGA
Hiện nay, có nhiều nhà cung cấp sản phẩm FPGA trên thị trường như Altera,
Xilinx, Actel… Sản phẩm của môi nhà cung cấp lại có những ưu, nhược điểm riêng do
các hãng đều sản xuất theo công nghệ riêng của mình. Chính vì vậy mỗi hãng lại đưa
ra một sản phẩm phần mềm riêng đi kèm làm môi trường thiết kế và nạp cho chip
FPGA của hãng đó như của Altera là Quartus II, Actel có Actel Libero còn Xilinx có
ISE. Trong khóa luận này em chỉ xin giới thiệu về ISE – phần mềm hỗ trợ cho Kit
Virtex 4 của Xilinx mà em đã sử dụng để thực hiện khóa luận này.
2.2.1. ISE
Hệ thống phần mềm ISE của Xilinx là một môi trường thiết kế tích hợp bao gồm
thiết kế chương trình, mô phỏng và thực hiện các thiết kế trên các thiết bị FPGA hay
CPLD. ISE có thể tham gia vào việc điều khiển mọi giai đoạn trong quy trình thiết
kế.Thông qua giao diện của ISE, người dùng có thể can thiệp vào các thiết kế 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
15


Để tạo ra file mã nguồn VHDL cho Project ta làm như sau:
Chọn New Source trong New Project Wizard.
Chọn kiểu mã nguồn VHDL Module.
Gõ từ bàn phím tên của file mã nguồn là counter (ví dụ là tạo ra mã nguồn cho
counter).
Quan sát thấy rằng hô kiểm tra Add to project được lựa chọn.
Kích Next.
Khai báo các cổng cho bộ counter bằng cách điền các thông tin như hình dưới
đây:

Hình 8: Khai báo các cổng cho một ví dụ tạo một counter 4 bit.
Kich Next cho tới khi kết thúc và một file VHDL được tạo ra với các khai báo
ban đầu là các cổng in, out…
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
17

Từ đây ta có thể viết mã nguồn VHDL cho bộ counter nhưng ta cũng có thể lấy
counter trong ví dụ có sẵn của ISE. Để sử dụng ví dụ này ta làm như sau:
Mở ví dụ bằng cách: Edit > Language Template…
Dùng biểu tượng “+” duyệt đến mã nguồn của ví dụ như sau: VHDL >
Synthesis Constructs >Coding Examples>Counters>Binary>Up/Down Couter>Simple
Counter.
Để dùng lựa chọn Simple Counter ta chọn Edit > Use in File hoặc chọn nút Use
Template in File trên Toolbar.
Đóng cửa sổ Language Template.
Như vậy mã VHDL trong ví dụ đã được chèn vào file mã nguồn mà ta muốn tạo.
Để chương trình này có thể chạy đúng được ta phải quan sát và sửa lại một số
chỗ cho phù hợp với khai báo ban đầu. Đó là những vị trí mà chương trình đã đánh dấu
trong dấu “< >” để cuối cùng ta được file mã nguồn có nội dung như sau:


Hình 9: Thiết lập các tham số mô phỏng.
Đặt các thông số như hình 9 và kích Finish:
Để chạy mô phỏng ta thiết lập các thông số như khoảng thời gian đếm tiến, thời gian
đếm lùi bằng cách kích chuột vào vị trí mà ta muốn cho kết thúc đếm tiến khi đó dạng
xung bắt đầu từ đó sẽ ở vị trí logic 0 và bắt đầu đếm lùi. Ta có thể tùy chọn các khoảng
đếm tiến hoặc lùi theo ý muốn.

Hình 10: Thiết lập thời gian đếm tiến, lùi cho counter.
Sau đó đóng cửa sổ này lại và chuyển sang bước mô phỏng.
Mô phỏng
Tại cửa sổ Source ta chọn Behavioral Simulation và chọn counter_tbw.
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
19

Tại cửa sổ Process ta kích chuột vào dấu “+” rồi kích đúp vào Generate Expected
Simulation Results để thực hiện mô phỏng. Ta được kết quả như sau:

Hình 11: Kết quả mô phỏng của counter.
2.2.2.4. Tạo ràng buộc thời gian
Bước này sẽ tạo ra ràng buộc về thời gian, là thời gian mà ta ràng buộc khi chạy
trong FPGA.
Chọn Synthesis/Implementatorn.
Chọn file nguồn counter HDL.
Kích vào dấu “+” ở User Constraints và chọn Create Timing Constraints.
Sau bước này sẽ tạo ra cho bạn file.UCF và ta có thể thiết lập các thông số theo
tính toán mà thiết kế sẽ phải đáp ứng.
2.2.2.5. Gán chân
Chọn file nguồn là counter trên cửa sổ Source.

Đây là một công cụ rất mạnh được sử dụng trong nhiều ứng dụng đặc biệt là các ứng
dụng về DSP. Virtex 4 có hai bộ ADC và hai bộ DAC với độ phân giải là 14 bit với
tốc độ xung nhịp cao cho phép người dùng có thể lập trình và xử lý cho nhiều ứng
dụng không chỉ riêng trong DSP như các ứng dụng Software Defined Radio, 3G
Wireless, Networking, HDTV hoặc hình ảnh Video. Bộ KIT có chứa một bo mạch chủ
nối với một module nằm trên một board màu xanh. Bo mạch chủ được gọi là
BenONE-Kit Motherboard và module trên được gọi là BenADDA DIME-II module.
BenONE-Kit là một đế dùng để gắn lên đó các module hỗ trợ cho các tính năng khác.
Dưới đây là một số hỗ trợ của BenONE-Kit:
• Hỗ trợ cho module BenADDA DIME-II.
• Hỗ trợ giao diện USB hoặc 3.3V/5V PCI.
• Hỗ trợ giao diện PCI 3.3V/5V 32 bit/33-MHz và giao diện USB 1.1.
• Các LED hiên thị.
• Mạch tạo cấu hình JTAG.
• Các chân cắm nối trực tiếp với người dùng có thể lập trình được (FPGA I/O).
• 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 160MSPS).
• 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ị.
Dưới đây là một số hình ảnh mô tả về Kit Virtex 4.
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
21Hình 12: Giao diện ngoài của XtremeDSP Development Kit Pro.


• Cung cấp ADC 14-bit, kiểu mã bù 2.
• Tốc độ lấy mẫu 105MSPS.
• Trở kháng vào 50 Ω cho tín hiệu tỷ lệ hay lối vào thay đổi vi phân.
• Bộ lọc bậc 3 ở lối vào.
• Clock ADC có thể thay đổi được.

Hình 15: Sơ đồ khối của bộ ADC (AD6645).
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
23

ADC clock
Mỗi ADC có thể được thiết lập clock trực tiếp bằng tín hiệu LVPECL một cách
độc lập. Tín hiệu LVPECL có thể được điều khiển bằng Virtex-II XC2V80-4CS144
FPGA (Clock FPGA). Một số các clock có thể dùng trong 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.
Chú ý rằng bộ ADC (AD6645) chỉ có thể hỗ trợ clock vào lớn nhất lên tới 105
MHZ. Điều này rất quan trọng nếu muốn sử dụng một trong các clock DIME (Ví dụ
như CLKA, CLKB, CLKC), vì những clock có thể lớn hơn 105 MHz.

Hình 16: Sơ đồ của ADC clock.
Các bộ DAC (AD9772A)
Module BenADDA DIME-II sử dụng trong XtremeDSP Development Kit Pro có
hai kênh lối ra tương tự, mỗi kênh có dữ liệu và tín hiệu điều khiển độc lâp tới FPGA.
Hai bộ DAC (AD9772A) cung cấp hai đường dữ liệu mỗi đường 14 bit. Tín hiệu vào
và tín hiệu ra thông qua kết qủa kết nối MCX.

Hình 17: Sơ đồ giao tiếp bộ DAC với GPGA.

Trích đoạn Thực hiện chương trình trên Kit Virte x4 và kết quả thu được
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status