intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Abcdef_6 Abcdef_6 | Ngày: | Loại File: PDF | Số trang:51

260
lượt xem
98
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Máy hiển thị sóng hay còn gọi là máy dao động số có nhớ (DSO) là một thiết bị không thể thiếu trong đo lường điều khiển. Cùng với sự phát triển của khoa khọc công nghệ mà ngày nay chúng ta có những máy hiện sóng có tính năng rất phong phú và kích thước cũng được giảm xuống đáng kể, bớt cồng kềnh và đặc biệt giá thành lại hạ xuống rất nhiều. Ngày nay công nghệ sản xuất FPGA rất phát triển nên khóa luận này em xin trình bày về cách thiết kế một máy dao...

Chủ đề:
Lưu

Nội dung Text: 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

  1. 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
  2. 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 Ka ye và D.A George đ ề ra năm 1970 và W. van Etten năm 1975, 1976. Trong quá trình phát triển, kĩ thuật này không ngừng được cải tiến. Ở Việt Nam, do điều kiện kỹ thuật công nghệ còn khá xa với thế giới nên việc nghiên cứu cũng gặp nhiều khó khăn, đặc biệt là trong quá trình xây d ựng và test một hệ MIMO. Tuy nhiên, vài năm trở lại đây ở Việt Nam đã bắt đầu được tiếp cận với một công nghệ mới. Đó là công nghệ FPGA. Với công nghệ này thì việc xây d ựng và test một hệ MIMO không còn quá xa vời. Với kiến thức của sinh viên năm cuối khoa điện tử - viễn thông em đã quyết định nhận một đề tài khóa lu ận liên quan đến FPGA với tên gọi “Thiết kế bộ phát m ã Walsh cho h ệ đo kênh MIMO dùng công nghệ FPGA” với m ục đích từng bước xây dựng một hệ MIMO trong truyền thông vô tuyến. Nội dung của khóa luận gồm có 4 chương: Chương 1: GIỚI THIỆU VỀ MIMO và FPGA. Trong chương này em đi vào giới thiệu về hệ MIMO và những nét chính về FPGA như khái niệm và cấu trúc của FPGA. Chương 2: NGÔN NGỮ VÀ MÔI TRƯ ỜNG LẬP TRÌNH CHO FPGA: giới thiệu khái quát về ngôn ngữ lập trình VHDL, Verilog và môi trường lập trình cho FPGA của h ãng Xilinx đó là ISE. Chương 3: CÁC ĐẶC ĐIỂM CƠ BẢN CỦA KIT VIRTEX 4 VÀ CÁC PHẦN MỀM BỔ TRỢ giới thiệu về kit FPGA Virtex 4 của Xilinx công cụ đã sử dụng trong quá trình nghiên cứu, thực hiện đề tài và các ph ần mềm bổ trợ như MATLAB, FUSE, công cụ System Generator. Chương 4: THỰC HIỆN MÔ HÌNH THIẾT KẾ VỚI KIT VIRTEX 4. Chương này đưa ra cách thực hiện một sơ đồ thiết kế cụ thể bằng MATLAB cùng các công cụ sẵn có được cung cấp bởi Xilinx. Cuối cùng là kết quả thu được qua mô phỏng và kết quả quan sát được trên giao động ký tại lối ra của thiết kế. Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 1
  3. Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN CHƯƠNG 1: GIỚI THIỆU VỀ K Ĩ THUẬT MIMO VÀ FPGA 1.1. Giới thiệu về MIMO 1.1.1. Khái niệm Kỹ thuật MIMO (MIMO technique) trong lĩnh vực truyền thông là kỹ thuật sử dụng nhiều anten phát và nhiều anten thu để truyền dữ liệu. Kỹ thuật MIMO tận dụng sự phân tập (không gian, thời gian, mã hóa ...) nhằm nâng cao chất lượng tín hiệu, tốc độ dữ liệu ... (khác với khái niệm beam forming của smart aray antenna nhằm nâng cao độ lợi thu, phát theo không gian...). Tuy vậy, hạn chế của kỹ thuật MIMO là chi phí cho thiết bị cao hơn và giải thuật xử lý tín hiệu phức tạp hơn. Kỹ thuật MIMO ngày nay đang được ứng dụng rất rộng rãi: MIMO-Wifi, MIMO-UMTS ... nh ờ tính tối ưu trong việc sử dụng hiệu quả băng thông, tốc dộ dữ liệu cao, robust với kênh truyền fading ... Kỹ thuật MIMO tương đối đa dạng và phức tạp. S1 S/P S2 … S3 S4,S3,S2,S1 … (Các ký hiệu truyền) S4 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. Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 2
  4. 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 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 b iế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í h iệ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. Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 3
  5. Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN 1.1.4. Ứng dụng của MIMO Lợi ích chính của hệ MIMO là tăng đáng kể tốc độ dữ liệu và độ tin cậy của kênh truyền. Kĩ thuật hợp kênh không gian đòi hỏi độ phức tạp của bộ thu, do đó nó thường được kết hợp với kĩ thuật hợp kênh ph ân chia theo tần số trực giao (OFDM), hoặc OFDMA. Chu ẩn IEEE 802.16e kết hợp chặt chẽ với kĩ thuật MIMO – OFDMA và chuẩn IEEE 802.11n sử dụng MIMO – OFDM. Hệ MIMO cũng được sử dụng trong chuẩn di động 3GPP và 3GPP2 và đang được phát triển kĩ thuật truyền thông MIMO nâng cao như là kĩ thuật xuyên lớp, kĩ thu ật nhiều người dùng và ad – hoc trong MIMO. Xuyên lớp MIMO giải quyết các vấn đề xuyên lớp xảy ra trong hệ thống MIMO, do đó làm tăng hiệu quả sử dụng kênh. Kĩ thuật xuyên lớp này cũng làm tăng hiệu quả sử dụng kênh SISO. Các kĩ thuật xuyên lớp thư ờng gặp là điều chế và mã hoá thích nghi (AMC), liên kết thích nghi. MIMO nhiều ngư ời dùng có thể khai thác sự giao thoa công suất của nhiều người sử dụng như là một tài nguyên không gian cho kĩ thuật xử lý phát tiên tiến, còn trong ch ế độ một người dùng, h ệ MIMO chỉ sử dụng nhiều anten. Ví dụ cho xử lý phát tiên tiến của hệ MIMO nhiều người dùng là giao thoa liên quan đến mã trước. Ad – hoc MIMO là một kĩ thuật rất hữu dụng cho mạng tế bào tương lai, nó tập trung vào m ạng vô tuyến mắt cáo hay mạng vô tuyến ad – hoc. Trong mạng ad – hoc nhiều nút phát liên lạc với nhiều nút thu. Để có thể tối ưu dung năng của kênh Ad – hoc, khái niệm và kĩ thuật MIMO đ ược áp dụng cho các liên kết trong cụm nút thu và phát. Không giống với hệ anten trong hệ MIMO một người dùng, các nút này được đặt như một hạng phân bố. Để đạt được dung năng trong mạng này cần quản lý sự phân bố tài nguyên sóng vô tuyến hiệu quả như sự hoạt động đồng thời của các nút và khái niệm m ã trang nhiễm bẩn. Tóm lại, hệ MIMO với những kĩ thuật phân tập, mã trước và nhiều người dùng làm tăng đáng kể tốc độ dữ liệu và độ tin cậy k ênh truyền, đang rất đ ược quan tâm nghiên cứu phát triển hứa hẹn đêm lại cho chúng ta nhiều lợi ích hơn n ữa trong truyền thông vô tuyến. 1.2. Giới thiệu về FPGA 1.2.1. Khái niệm Field-programmable gate array (FPGA) là vi m ạch dùng cấu trúc mảng phần tử logic mà người dùng có th ể lập trình được. (Chữ field ở đ ây muốn chỉ đến khả năng tái lập trình “bên ngoài” của người sử dụng, không phụ thuộc vào dây chuyền sản xuất phức tạp của nh à máy bán dẫn). Vi mạch FPGA đư ợc cấu thành từ các bộ phận (hình 2 ): Các khối logic cơ bản lập trình được (logic block).  Hệ thống mạch liên kết lập trình được.  Khối vào/ra (I/O Pads).  Phần tử thiết kế sẵn khác như DSP slice, RAM, ROM, nhân vi xử lý...  Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 4
  6. Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN 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 h ay 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 n hư Synopsys, S ynp lify... Các gói ph ần mềm này có kh ả năng thực hiện tất cả các bước của toàn bộ quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên HDL (còn gọi là mã RTL). FPGA được thiết kế đầu tiên bởi Ross Freeman , người sáng lập công ty Xilinx vào năm 1984, kiến trúc mới của FPGA cho phép tính hợp số lượng tương đối lớn các phần tử bán dẫn vào một vi m ạch so với kiến trúc trước đó là CPLD. FPGA có kh ả năng chứa tới từ 100.000 đến hàng vài tỷ cổng logic, trong khi CPLD chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLA còn th ấp h ơn n ữa chỉ đạt vài nghìn đến 10.000. CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple programable devices, thuật ngữ chung chỉ chung chỉ PAL, PLA). SPLD thư ờng là một mảng logic AND/OR lập trình được có kích thước xác định và chứa một số lượng hạn chế các phần tử nhớ đồng bộ (clocked register). Cấu trúc này hạn chế khả năng thực hiện Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 5
  7. 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 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. Input Look Flip Up - Table Flop (LUT) 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. Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 6
  8. Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN Nếu nhìn cấu trúc tổng thể của mảng LUT thì ngoài 4 đầu vào kể trên còn hỗ trợ thêm 2 đầu vào bổ xung từ các khối logic phân bố trước và sau nó nâng tổng số đầu vào của LUT lên 6 chân. Cấu trúc này là nhằm tăng tốc các bộ số học logic. 1.2.3. Hệ thống mạch liên kết Khối chuyển mạch của FPGA là mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai ph ương ngang và đứng, tùy theo từng loại FPGA mà các đường kết nối được chia th ành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx có 3 lo ại kết nối: ngắn, dài và rất dài. Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được (programable switch), trong một khối chuyển mạch chứa một số lượng nút chuyển lập trình được đảm bảo cho các dạng liên kết phức tạp khác nhau. 1.2.4. Các phần tử tích hợp sẵn Ngoài các khối logic tùy theo các loại FPGA khác nhau mà có các phần tử tích hợp thêm khác nhau, ví dụ để thiết kế những ứng dụng SoC, trong dòng Virtex 4,5 của Xilinx có chứa nhân sử lý PowerPC, hay trong Atmel FPSLIC tích hợp nhân ARV…, hay cho những ứng dụng xử lý tín hiệu số DSP trong FPGA được tích hợp các DSP Slice là bộ nhân cộng tốc độ cao, thực hiện h àm A*B+C, ví dụ dòng Virtex của Xilinx chứa từ vài chục đến hàng trăm DSP slices với A, B, C 18-bit. Ngày n ay n gành công n ghệ 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 n gà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 n gô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 n gữ 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 h iệ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 h iệ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 b iể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 chu yể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 chu yể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ơ Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 7
  9. Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN đồ 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 n hấ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 th iế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 chu yể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 ằn g 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 b iể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 b iểu đồ trạng thái và bảng chân lý sang mã ngôn ngữ mô phỏng phần cứn g đượ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ế n gay 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 n gừ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 th iết kế thủ công mà không có sự trợ giúp cuả các loại máy tính hiện đ ại. Ngày nay, ngôn ngữ mô tả phần cứng HDL được dùng nhiều để thiết kế cho các thiết bị logic lập trình được PLD từ loại đ ơn giản đến các loại phức tạp như ma trận cổng lập trình được FPGA. Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 8
  10. 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 n gữ mô tả phần cứng được p há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 qu yế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 n gữ mô phỏng phần cứng tốt việc xem xét các tài liệu mô tả trở nên dễ dàng hơn vì bộ tài liệu đó có thể được thực thi để mô phỏng hoạt đ ộng của h ệ thống. Như th ế ta có th ể xem xét toàn bộ các phần tử của hệ thống hoạt động trong một mô hình thống nhất. VHDL đ ược phát triển như một ngôn ngữ độc lập không gắn với bất kỳ một phương pháp thiết kế, một bộ mô tả hay công ngh ệ ph ần cứng nào. Người thiết kế có thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi ch ỉ sử dụng một ngôn ngữ duy nh ất. Và khi đem so sánh với các ngôn ngữ mô phỏng phần cứng khác đã kể ra ở trên ta thấy VHDL có một số ưu điểm hơn hẳn các ngôn ngữ khác: - Thứ nhất là tính công cộng: VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ và hiện nay là m ột tiêu chu ẩn của IEEE. VHDL được sự hỗ trợ của nhiều nh à sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống. Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 9
  11. Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN - Thứ hai là khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế. VHDL cho phép thiết kế bằng nhiều phương pháp ví dụ phương pháp thiết kế từ trên xuống, hay từ dưới lên dựa vào các thư viện sẵn có. VHDL cũng hỗ trợ cho nhiều loại công cụ xây d ựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ, sử dụng ma trận lập trình được hay sử dụng mảng ngẫu nhiên. - Thứ ba là tính độc lập với công nghệ: VHDL ho àn toàn độc lập với công nghệ ch ế tạo phần cứng. Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng có thể được chuyển th ành các bản tổng hợp mạch khác nhau tuỳ thuộc công nghệ chế tạo phần cứng mới ra đời nó có thể đ ược áp dụng ngay cho các hệ thống đã thiết kế. - Thứ tư là kh ả năng mô tả mở rộng: VHDL cho phép mô tả hoạt động của phần cứng từ mức hệ thống số cho đến mức cổng. VHDL có khả năng mô tả hoạt động của hệ thống trên nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi mức. Như thế ta có thể mô phỏng một bản thiết kế bao gồm cả các hệ con được mô tả chi tiết. - Thứ năm là khả năng trao đổi kết quả: Vì VHDL là một tiêu chuẩn đư ợc chấp nhận, nên một mô h ình VHDL có thể chạy trên mọi bộ mô tả đáp ứng được tiêu chuẩn VHDL. Các kết quả mô tả hệ thống có thể đ ược trao đổi giữa các nh à thiết kế sử dụng công cụ thiết kế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL. Cũng như m ột nhóm thiết kế có thể trao đổi mô tả mức cao của các hệ thống con trong một hệ thống lớn (trong đó các hệ con đó được thiết kế độc lập). - Thứ sáu là kh ả năng hỗ trợ thiết kế mức lớn và kh ả năng sử dụng lại các thiết kế: VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể được sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người. Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chia sẻ thiết kế. Và nó cũng cho phép dùng lại các phần đ ã có sẵn. 2.1.2.2. Cấu trúc một mô hình hệ thống mô tả bằng VHDL Mục đích của phần n ày là nhằm giới thiệu sơ qua về cấu trúc khung cơ bản của VHDL khi mô tả cho một mô hình thiết kế thực. Thông thường một mô hình VHDL bao gồm ba phần: thực thể (entity), kiến trúc (architecture) và các cấu h ình. Đôi khi ta sử dụng các gói (packages) và mô hình kiểm tra hoạt động của hệ thống (testbench). + Thực thể (entity ) Đây là nơi chứa các khai báo thực thể (là các port giao tiếp giữa FPGA và các tín hiệu b ên ngoài các port này được sử dụng như là lớp vỏ củ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 ể. P hầ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ó h ai 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 n hiên một hệ thống có thể bao gồm cả mô tả theo mô h ình hoạt động và mô tả Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 10
  12. Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN 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ác tí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ấp cấ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ống hoà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ử con bê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 S B S S/B S B B B B B B Hình 4: Cấu trúc process S: Mô hình cấu trúc B: Mô hình ho ạt động S/B: Mô hình kết hợp Cấu trúc tổng quát [Process label] Process [(sensitive_list )] Process declarative part Begin Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 11
  13. 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 n gườ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 nh iệ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 h iệ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ể h iể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, n guồ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 n guồn dữ liệu và kiểm tra tính đúng đắn thông qua bộ quan sát. Testbench Entity Generics Data Source (stimuli Observer DUT Generator) 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: n guồ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ất cùng với VHDL được dùng trong thiết kế IC. Verilog HDL cho phép mô phỏng các thiế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ác thiế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 Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 12
  14. Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN  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 b it. 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 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
  15. 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. 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 d elay), 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ên 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 h iệ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ử Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 14
  16. 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 p roject đ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 d anh 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 15
  17. Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN Hì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… Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 16
  18. Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN 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: 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
  19. 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 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. Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 18
  20. Khoa §iÖn tö – ViÔn th«ng §HCN - §HQGHN 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. 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. Khãa luËn tèt nghiÖp §µo V¨n Qu©n – K49§B 19
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2