Lập trình kỹ thuật MIMO trên FPGA 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ế.
Trang 1đã 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ôngnghệ 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âydự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ó 4chương:
Chương 1: GIỚI THIỆU VỀ MIMO và FPGA Trong chương này em đi vàogiớ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ủaFPGA
Chương 2: NGÔN NGỮ VÀ MÔI TRƯỜNG LẬP TRÌNH CHO FPGA: giớithiệu khái quát về ngôn ngữ lập trình VHDL, Verilog và môi trường lập trình choFPGA 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ẦNMỀM BỔ TRỢ giới thiệu về kit FPGA Virtex 4 của Xilinx công cụ đã sử dụng trongquá 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ươngnà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ếtquả quan sát được trên giao động ký tại lối ra của thiết kế
Trang 2CHƯƠ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ângcao độ lợi thu, phát theo không gian ) Tuy vậy, hạn chế của kỹ thuật MIMO là chiphí 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ứctạ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 đâykhô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 saunày
Năm 1993, Arogyaswami Paulraj và Thomas Kailath đề xuất khái niệm hợp kênhkhô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 thuphát
S/P
S1 S2 S3 S4
S4,S3,S2,S1 (Các ký hiệu truyền)
Trang 3Năm 1998, lần đầu tiên trong lịch sử Bell Labs chứng minh thí nghiệm mô hìnhhợ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ápcho 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ậtWiFi 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
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ônggian, 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 đượcphá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ácluồ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ăngdung năng đáng kể trong trường hợp tỉ số SNR cao Số luồng không gian cực đại đúngbằ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 giankhô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ôngnhư 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ậtphân tập khai thác tính độc lập của fading trong hệ nhiều anten để nâng cao sự phântậ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ướckhi 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ợpngược lại
Trang 41.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ênhtruyề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ặcOFDMA 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íchnghi (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 trongchế độ một người dùng, hệ MIMO chỉ sử dụng nhiều anten Ví dụ cho xử lý phát tiêntiế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ậptrung vào mạng vô tuyến mắt cáo hay mạng vô tuyến ad – hoc Trong mạng ad – hocnhiề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 đặtnhư 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áiniệ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ùnglàm tăng đáng kể tốc độ dữ liệu và độ tin cậy kênh truyền, đang rất được quan tâmnghiê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ềnthô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ăngtá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ấtphứ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ình2):
•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ý
Trang 5Hì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ưngnế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ệnlogic thì FPGA không đạt đựợc mức độ tối ưu như những loại này, và hạn chế trongkhả 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úcmảng phần tử logic như PLA, PAL, CPLD thì FPGA ưu việt hơn các điểm: tác vụ táilậ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ácbiệ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ượnglớ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ìnhthiế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ướccủ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 Xilinxvà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ácphầ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
Trang 6nhữ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àocấ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ềunế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ơncá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ơnnhiề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ợpnhiề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 đảmbả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ìnhphầ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ớpnhữ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 ranhờ mật độ cổng logic lớn FPGA được ứng dụng cho những bài toán đòi hỏi khốilượ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
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ệmSLICE, một Slice tạo thành từ gồm 4 khối logic, số lượng các Slices thay đổi từ vàinghìn đến vài chục nghìn tùy theo loại FPGA
Look Up Table (LUT)
Flip- Flop Input
Trang 7Nế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ố đầuvà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ạpkhá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íchhợp thêm khác nhau, ví dụ để thiết kế những ứng dụng SoC, trong dòng Virtex 4,5 củaXilinx 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 DSPSlice 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 Xilinxchứ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ôngngừ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ạchtrở 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ápphâ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ànthế 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ôngnghệ 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ốngnhư dùng phương pháp tối thiểu hoá hàm Boolean hay dùng sơ đồ các phần tử khôngcò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ácphươ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àmBoolean, 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ântí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àmBoolean, 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ướcnó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áytí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ơ
Trang 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ềnthố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ùnghà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ứakhoả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ônngữ 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ácphươ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ácphươ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ứcnă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ầnthiế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ầncứng đều cho phép sử dụng biểu đồ trạng thái (finite-state-machine) cho các hệ thốngtuầ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ệcchuyển đổi từ các biểu đồ trạng thái và bảng chân lý sang mã ngôn ngữ mô phỏngphầ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 đượcFPGA
Trang 9CHƯƠ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
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àiné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ậptrì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ộtloại ngôn ngữ mô tả phần cứng được phát triển dùng cho chương trình VHSIC (VeryHigh Speed Itergrated Circuit) của bộ quốc phòng Mỹ Mục tiêu của việc phát triểnVHDL là có được một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất chophé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ênbản đầu tiên được công bố vào tháng 8-1985 Sau đó VHDL được đề xuất để tổ chứcIEEE 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àiliệ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 trongmộ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ộtphươ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ộtngô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ínhphủ 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
Trang 10- Thứ hai là khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế VHDLcho 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ậnlậ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ể đượcchuyể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ầncứ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ầncứ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ọimứ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ấpnhậ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ẩnVHDL 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ụngcông cụ thiết kế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL Cũng như mộtnhó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ốnglớ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ếtkế: 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êntrong 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ủaVHDL 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ínhiệ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ỗimộ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 VHDLcho 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, haycá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
Trang 11động và mô tả theo mô hình cấu trúc.
+ Mô tả kiến trúc theo mô hình hoạt động
Mô hình hoạt động mô tả các hoạt động của hệ thống (hệ thống đáp ứng với cáctín hiệu vào như thế nào và đưa ra kết quả gì ở đầu ra) dưới dạng các cấu trúc ngôn ngữ lập trình bậc cao Cấu trúc đó có thể là PROCESS, WAIT, IF, CASE, FOR-
LOOP…
+ Mô tả kiến trúc theo mô hình cấu trúc
Mô hình cấu trúc của một phần tử (hoặc hệ thống) có thể bao gồm nhiều cấpcấu trúc bắt đầu từ một cổng logic đơn giản đến xây dựng mô tả cho một hệ thốnghoàn thiện Thực chất của việc mô tả theo mô hình cấu trúc là mô tả các phần tử conbên trong hệ thống và sự kết nối của các phần tử con đó Như với ví dụ mô tả môhình cấu trúc một flip-flop RS gồm hai cổng NAND có thể mô tả cổng NAND đượcđịnh nghĩa tương tự như ví dụ với cổng NOT, sau đó mô tả sơ đồ móc nối các phần tửNAND tạo thành trigơ RS
+ Cấu trúc process
Process là khối cơ bản của việc mô tả theo hoạt động Process được
xét đến như là một chuỗi các hành động đơn trong suốt quá trình dịch
S
Trang 12End 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 tramộ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ểmtra 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ấpchươ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ànhphầ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 đắnthô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)
2.1.3 Giới thiệu khái quát về ngôn ngữ Verilog
Verilog HDL là một trong hai ngôn ngữ mô phỏng phần cứng thông dụng nhấtcùng với VHDL được dùng trong thiết kế IC Verilog HDL cho phép mô phỏng cácthiết kế dễ dàng, sửa chữa lỗi, hoặc thực nghiệm bằng những cấu trúc khác nhau Cácthiết kế được mô tả trong Verilog HDL là những kỹ thuật độc lập, dễ thiết kế, dễ tháo
gỡ và thường dễ đọc hơn ở dạng biểu đồ, đặc biệt là ở các mạch điện lớn
Verilog thường được dùng để mô tả thiết kế ở bốn dạng
Trang 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 khaibá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ạngI/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ácngõ 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ặcinitial
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ộtmodule Đó là các chỉ định thông thường bên ngoài khối always hoặc khối initial Cácchỉ đị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êntiế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ệnhgá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 đổibê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 đốitượng thực tế (instantiation) Các module đơn cử bên trong các module khác, và mỗidẫ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 địnhnghĩ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ênport 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
• 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ỉ ranhữ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
Trang 14đổ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ệnhthủ tục chỉ có thể được dùng trong những thủ tục.
Những chỉ định theo thủ tục:
Là những chỉ định dùng trong phạm vi thủ tục Verilog (khối always và initial) Chỉbiến reg và integers (hoặc chọn đơn bit/ nhóm bit của chúng hoặc kết nối thông tin) cóthể được đặt bên trái dấu ‘=’ trong thủ tục Bên phải của chỉ định là một biểu thức mà
có thể dùng bất cứ dạng toán tử nào
Delay trong chỉ định:
Trong chỉ định trễ ∆t là khoảng thời gian trải qua trước khi một lệnh được thực thi vàbên trái lệnh gán được tạo ra Với nhiều chỉ định trễ (intra-assignment delay), bên phảiđược định giá trị trực tiếp nhưng có một delay của ∆t trước khi kết quả được đặt bêntrá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 trongkhoảng thơi gian ∆t, thì không cho kết quả ở ngõ ra Delay không được hỗ trợ bởi cáccô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 docá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ồmthiế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 hayCPLD ISE có thể tham gia vào việc điều khiển mọi giai đoạn trong quy trình thiếtkế.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ử
Trang 15dụ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ácfile 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ặccá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ànhcô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
Trang 16Hình 7: Các lựa chọn tạo project với Virtex 4.
2.2.2.2 Tạo mã nguồn VHDL
Để 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…
Trang 17Từ đâ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>SimpleCounter
Để dùng lựa chọn Simple Counter ta chọn Edit > Use in File hoặc chọn nút UseTemplate 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:
Trang 18Chọ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 counter_tbw trong trường tên file rồi kick Next cho đến khi xuất hiện cửa sổ:
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
Trang 19Tạ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ạytrong 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
Chọn Assign Package Pins trong cửa sổ Process
Từ đây ta có thể gắn chân để có thể đưa thiết kế vào phần cứng thật Tùy từng dòng cụ thể mà ta đặt chân căn cứ vào bảng chân được cung cấp bởi nhà sản xuất.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
Trang 20CHƯƠNG 3: CÁC ĐẶC ĐIỂM CƠ BẢN CỦA VIRTEX 4 VÀ CÁC PHẦN
• 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
Trang 21Hình 12: Giao diện ngoài của XtremeDSP Development Kit Pro.
Hình 13: Giao diện phía trong và các thành phần của Virtex IV Pro.
3.1.2 Các thành phần chính của Virtex 4
Chíp FPGA (XC4VSX35-10FF668)
Các đặc điểm chính của XC4VSX35-10FF668:
- Rocket IO Transceiver Blocks: 8
- PowerPC Processor Blocks: 2
Trang 22Các bộ ADC
Module BenADDA DIME-II sử dụng trong XtremeDSP Development Kit Pro
có hai kênh vào tương tự, mỗi kênh có dữ liệu và tín hiệu điều khiển độc lập tớiFPGA.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 Clockcho 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).
Trang 23ADC 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-4CS144FPGA (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 105MHZ Đ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.
Trang 24Cá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ừ 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
Hình 18: Sơ đồ khối tiếp bộ DAC.
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ínhiệu LVPECL có thể được điều khiển bởi Virtex-II XC2V80-4CS144 FPGA (ClockFPGA) 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
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ớ
Đặc điểm chính của ZBT SRAM
Thời gian chu kỳ nhanh: 6ns, 7.5ns và 10ns
100% bus được tận dụng
Điều khiển qua giao diện tín hiệu tối thiểu
Có các chân điều khiển đọc/viết riêng
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