Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
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ế.
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
1
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
S2
S3
S4
…
…
S4,S3,S2,S1
(Các ký hiệu truyền)
2
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
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
đượ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).
đạ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
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
5
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
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
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
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.
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
8
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
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
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ủ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ệ
Begin
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
S
S
B
SS/BS
B B B B B B
11
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
….
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)
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.
Hình 5: Sơ đồ khối của Testbench
Trong đó: DUT: (device under test) mô hình VHDL cần kiểm tra.
Observer: khối quan sát kết quả.
Data source: nguồn dữ liệu (khối tạo ra các tín hiệu kích thích).
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
Những khai báo module là những khuôn mẫu mà nó được tạo nên từ các đối
tượng thực tế (instantiation). Các module đơn cử bên trong các module khác, và mỗi
dẫn chứng tạo một đối tượng độc nhất từ khuôn mẫu. Ngoại trừ đó là module mức trên
là những dẫn chứng từ chính chúng. Các port của module ví dụ phải thỏa những định
nghĩa trong khuôn mẫu. Đây là mặt lý thuyết: bằng tên, sử dụng dấu chấm (.) ”.tên
port khuôn mẫu (tên của wire kết nối đến port)”. Bằng vị trí, đặt những port ở những
vị trí giống nhau trong danh sách port của cả khuôn mẫu lẫn instance.
BEHAVIORAL
Verilog có 4 mức khuôn mẫu:
• Chuyển mạch.
• Cổng.
• Mức tràn dữ liệu.
• Hành vi hoặc thủ tục được đề cập ở bên dưới.
Các lệnh thủ tục Verilog được dùng tạo một mẫu thiết kế ở mức cao hơn. Chúng chỉ ra
những cách thức mạnh của vệc làm ra những thiết kế phức tạp. Tuy nhiên, những thay
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
13
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
đổi nhỏ n phương pháp mã hóa có thể gây ra biến đổi lớn trong phần cứng. Các lệnh
thủ tục chỉ có thể được dùng trong những thủ tục.
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ử
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
14
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
dụng các công cụ thực hiện thiết kế. Ngoài ra người dùng còn có thể can thiệp vào các
file hay tài liệu có liên quan đến project đang thiết kế.
Giao diện phần mềm ISE
Hình 6: Giao diện phần mềm ISE
Cửa sổ nguồn
Cửa sổ này bao gồm các file nguồn của 1 project (gồm các file được viết hoặc
các file có sẵn được đưa vào project). Trong cửa sổ này có một danh sách mà qua đó
người dùng có thể chọn các file nguồn cho các mục đích thiết kế cụ thể như tổng hợp,
thực thi hay mô phỏng.
Cửa sổ xử lí
Cửa sổ này cho ta biết các thiết kế đã sẵn sàng để chạy (bao gồm cả mô phỏng
và thực thi) hay chưa (ví dụ khi bạn muốn chạy một thiết kế trong file nguồn đã chọn).
Để chạy một thiết kế, ta click đúp vào thiết kế đó, khi thiết kế đã được thực thi thành
công, một dấu tích xanh sẽ xuất hiện bên cạnh thiết kế đó. Khi chạy một thiết kế, ISE
sẽ tự động chạy các thiết kế nhỏ hỗ trợ cho thiết kế đó.
2.2.2. Các bước để tạo ra một thiết kế với ISE
2.2.2.1. Tạo một Project
Chọn File > New Project…xuất hiện thuật sĩ tạo Project mới.
Gõ tên Project trong trường Project Name field.
Chọn đến thư mục muốn chứa Project rồi chọn Next.
Chú ý rằng HDL phải được lựa chọn từ danh sách Top-Level Source Type, các
thông số khác chọn như trong hình 7.
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
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:
entity counter is
Port ( Clock : in STD_LOGIC;
Direction : in STD_LOGIC;
c : out STD_LOGIC_VECTOR (3 downto 0));
end counter;
architecture Behavioral of counter is
begin
process (Clock)
begin
if Clock='1' and Clock'event then
if Direction ='1' then
c <= c + 1;
else
c <= c - 1;
end if;
end if;
end process;
end Behavioral;
2.2.2.3. Mô phỏng
Ta có thể dùng chức năng mô phỏng của ISE để kiểm tra chức năng của thiết kế vừa
được tạo ra:
Tạo dạng sóng muốn kiểm tra ta làm như sau:
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
17
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Chọn file Counter từ cửa sổ Source.
Tạo một test bench từ Project > New Source.
Trong cửa sổ New Source Wizard chọn Test Bench WaveForm và gõ từ bàn phím
Kết thúc bước này ta có thể đưa thiết kế vào phần cứng và quan sát trên các lối vào ra
của phần cứng bằng những thiết bị hỗ trợ quan sát như giao động ký hay đèn LED.
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
19
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
CHƯƠNG 3: CÁC ĐẶC ĐIỂM CƠ BẢN CỦA VIRTEX 4 VÀ CÁC PHẦN
MỀM HỖ TRỢ
3.1. Những đặc điểm cơ bản của XtremeDSP Development Kit Pro (Virtex IV)
3.1.1. Giới thiệu chung
Là công ty đầu tiên nghiên cứu ra FPGA, Xilinx luôn là một hãng đi đầu trong
việc nghiên cứu và cho ra những dòng sản phẩm hỗ trợ cho giáo dục cũng như các bộ
Kit chuyên dụng sử dụng trong nhiều ứng dụng cụ thể. The XtremeDSP Development
Kit là bộ Kit có khả năng cung cấp một nền tảng phát triển cao cho Công Nghệ FPGA.
Đâ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.
FPGA.Hai ADC (AD6645) cho phép thực hiện hai thiết lập dữ liệu với độ rộng 14 bit.
Tín hiệu đưa vào ADC và tín hiệu ra thông qua chuẩn kết nối MCX. Sơ đồ khối thể
hiện kết nối giữa các bộ ADC được thể hiện như hình 14. Với kit Virtex 4 hay một số
dòng kit của Xilinx có hỗ trợ XC2V80-4CS114 có nhiệm vụ điều khiển xung Clock
cho ADC. Như vậy, ta có thể lựa chọn được tốc độ lấy mẫu phù hợp với yêu cầu thiết
kế với từng bài toán cụ thể.
Hình 14: Sơ đồ tín hiệu qua ADC vào FPGA.
Các đặc điểm chính của khối ADC (AD6645)
• 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).
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
22
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
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ó
Sử dụng tín hiệu điều khiển, địa chỉ thanh ghi, dữ liệu vào ra, có thể thiết lập
được clock.
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
24
Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN
Cho phép dữ liệu vào ra thông thường.
Có mode tuyến tính hoặc ghép xen.
Hình 19: Sơ đồ ZBT SRAM.
ZBT SRAM Clocking
Hai bộ nhớ ZBT SRAM trên bộ KIT có thể được gõ nhịp độc lập thông qua việc
chèn thêm tín hiệu xung nhịp phản hồi. Mỗi bộ nhớ có một tín hiệu có thể được hiệu
chỉnh trong FPGA đảm bảo cho xung nhịp giữa ZBT SRAM và chân phản hồi có xung
nhịp cùng nhau với độ sai khác nhỏ nhất. Quá trính này đảm bảo cho logic trong được
khóa pha với dữ liệu đưa vào.
Bảng1: Ký hiệu chân của ZBT SRAM clocking.
Vào ra số
Một số đặc điểm vào ra của bộ KIT:
• Một đầu bus 14 chân trên bo mạch chủ. Nó cho phép 12 kết nối trực tiếp hai
chiều tới FPGA với hai chân nối đất.
• Một đầu bus 34 chân hiệu chỉnh trên bo mạch chủ. Nó cho phép 28 kết nối trực
tiếp hai chiều tới chip FPGA. Các phần còn lại cho các kết nối 3,3V, nối đất và 'không
được nối'.
• Hai đầu vào ra 2 chân cung cấp 2 kết nối hai chiều tới chip FPGA.
Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B
25