Nhận thấy ngơn ngữ VHDL là ngơn ngữ mơ tả phần cứng vi mạch tốc độ rất cao, được sử dụng rộng rãi trong các trường Đại Học và đã được IEEE chuẩn hĩa, là ngơn ngữ cung cấp mơi trường giao
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
ĐỀ TÀI NCKH CẤP SINH VIÊN
THIẾT KẾ MẠCH QUANG BÁO DÙNG CÔNG NGHỆ FPGA
S 0 9
S KC 0 0 1 9 3 3
Trang 2Bộ Giáo Dục Và Đào Tạo Trường Đại Học Sư Phạm Kỹ Thuật TP.HCM
Phòng Nghiên Cứu Khoa Học
GVHD : ĐẬU TRỌNG HIỂN SVTT : Nguyễn Thanh Nghĩa
MSSV : 02101081 Nguyễn Vũ Duy Tân MSSV : 02101114
TP Hồ Chí Minh Tháng 12/2006
Trang 3
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
TP HCM ngày …… tháng …… năm 2006
Đậu Trọng Hiển
Trang 4
NHẬN XÉT CỦA HỘI ĐỒNG NGHIỆM THU
TP HCM ngày …… tháng …… năm 2006 Thay mặt hội đồng
Trang 5
LỜI CẢM ƠN
Trước tiên chúng em xin chân thành cảm ơn thầy ĐẬU TRỌNG HIỂN đã tận tình giúp đỡ cho chúng em trong suốt quá trình nghiên cứu để cĩ được kết quả ngày hơm nay
Chúng em cũng xin chân thành cảm ơn quý thầy cơ trong khoa điện tử đã dạy dỗ chúng em cĩ được những kiến thức cho quá trình nghiên cứu cũng như trang bị kiến thức cho cuộc sống sau này
Cảm ơn thầy cơ phịng quản lý khoa học và quan hệ quốc tế và ban lãnh đạo trường Đại Học Sư Phạm Kỹ thuật, đã tạo điều kiện cho chúng em cĩ được một đợt nghiên cứu khoa học bổ ích
Cuối cùng xin cảm ơn gia đình, bạn bè những người luơn ủng hộ
và giúp đỡ cho chúng em thực hiện quá trình nghiên cứu
Nhĩm thực hiện
Nguyễn Thanh Nghĩa
Nguyễn Vũ Duy Tân
Trang 6PHẦN I: ĐẶT VẤN ĐỀ
I ĐỐI TƯỢNG NGHIÊN CỨU
Việc nghiên cứu khoa học giúp ta tìm ra cái mới Cái mới ở đây không những mang tính chủ quan của người nghiên cứu mà còn mang tính khách quan đối với xã hội Nghiên cứu khoa học phải nhằm mục đích phục vụ xã hội, đáp ứng yêu cầu thực tiễn
Hoạt động nghiên cứu khoa học muốn đạt kết quả tốt phải hội đủ các yếu tố:
Phương tiện, phương pháp, cơ sở vật chất, máy móc thiết bị, hình thức tổ chức Các yếu tố này có mối quan hệ hữu cơ và phù hợp với đối tượng nghiên cứu
Đối tượng nghiên cứu của nhĩm thực hiện là: nghiên cứu về cơng nghệ sản xuất chip FPGA và ngơn ngữ mơ tả phần cứng VHDL
Đồng thời ứng dụng cơng nghệ FPGA vào thiết kế mạch quang báo Cụ thể
là điều khiển hiển thị mạch LCD (Liquid Crystal Display)
II TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC
Trong nước: đối với nước ta thì cơng nghệ này cũng vẫn cịn là mới mẻ Khơng những chúng ta chưa sử dụng được cơng nghệ mà ngay cả những ứng dụng của cộng nghệ này (đĩ là những chip vi mạch) chúng ta cũng chưa được sử dụng rộng rãi Đặc biệt là các bạn sinh viên đại học cũng cịn lạ lẫm với những linh kiện này
Ngồi nước: đối với các nước thì cơng nghệ này đã được ứng dụng một cách rộng rãi Hầu như các trường đại học đều được học cũng như nghiên cứu về cơng nghệ cũng như các sản phẩm của nĩ
Trang 7PHẦN II: GIẢI QUYẾT VẤN ĐỀ
I) MỤC ĐÍCH CỦA ĐỀ TÀI
Ngày nay, khoa học kỹ thuật của nhân loại đã và đang phát triển một cách vượt bật Trong đĩ, kỹ thuật về sản xuất vi mạch số cũng như sản xuất chip đã đạt đến mức tinh vi Và con người cần cĩ những cơng nghệ mới hơn nữa để tiếp tục cho quá trình phát triển đĩ
Trước tình hình đĩ, nhiều cơng cụ thiết kế được trợ giúp bởi máy tính
(CAD – Computer Aided Design) được đưa vào quá trình thiết kế phần cứng
Phương pháp thiết kế trên giấy được thay bằng cách thiết kế trên máy tính, cĩ thể kiểm tra và cĩ các cơng cụ tạo ra phần cứng tự động Hỗ trợ mạnh mẽ cho phương
pháp thiết kế này là những ngơn ngữ mơ tả phần cứng (HDLs – Hardware
Description Languages) Mặc dù khái niệm khơng mới, nhưng ứng dụng rộng rãi
của chúng trong thiết kế hệ thống số mới chỉ gần thập kỷ nay Dựa vào HDLs, cơng
cụ trợ giúp hệ thống số mới đã phát triển và đang giúp ích cho nhiều người thiết kế phần cứng Cĩ rất nhiều ngơn ngữ HDL như ABEL, AHL (A Hardware Language), CDL (Computer Design Language), IDL (Interative Design Language), ISPS, CONLAN… Trong các HDL thì nổi tiếng nhất là VHDL và Verilog
Nhận thấy ngơn ngữ VHDL là ngơn ngữ mơ tả phần cứng vi mạch tốc độ rất cao, được sử dụng rộng rãi trong các trường Đại Học và đã được IEEE chuẩn hĩa, là ngơn ngữ cung cấp mơi trường giao tiếp chung, giúp ích rất nhiều cho việc
thiết kế phần cứng nên nhĩm quyết định chọn đề tài với tên gọi là “Thiết kế mạch
quang báo dùng cơng nghệ FPGA”
Đề tài nhằm mục đích ứng dụng những cơng nghệ mơ tả phần cứng hiện đại của thế giới đang sử dụng mà nước ta chưa được áp dụng nhiều
Đồng thời đây cũng là tài liệu cũng như tiền đề để cho các bạn sinh viên cĩ điều kiện tìm hiểu và học tập
II) PHƯƠNG PHÁP NGHIÊN CỨU
1 Tham khảo tài liệu: nhĩm tham các nguồn tài liệu cĩ liên quan tới cơng nghệ FPGA cũng như tài liệu viết về ngơn ngữ VHDL Đồng thời cũng tham khảo một số tài liệu về các mạch quang báo để phục vụ cho mục đích nghiên cứu của mình Các nguồn tài liệu được tham khảo ở các sách
và tài liệu từ internet
2 Thực nghiệm: kết nối chíp sử dụng cơng nghệ FPGA với mạch quang báo LCD và viết chương trình điều khiển hiển thị cho mạch
Trang 8III) NỘI DUNG
A CƠNG NGHỆ FPGA
Người ta thường đo kích thước IC bằng sớ cởng logic hoặc số transisto trong IC
Thí dụ: IC 100K cổng có nghĩa là IC nầy chứa 100 000 cởng NAND 2 ngõ vào
Các IC:
Loại SSI (Small Scale Integration : tích hợp cỡ nhỏ ): chứa mơ ̣t sớ cởng logic (1
đến 10), thường là các cởng đơn giản (NAND, AND, NOT)
Loại MSI (Medium Scale Integration: tích hợp cỡ trung bình): các bộ đếm và các hàm logic chức năng lớn hơn
Loại LSI (Large Scale Integration : tích hợp cỡ lớn ): tích hợp các hàm logic lớn hơn nhiều, như vi xử lí đầu tiên
Loại VLSI (Very Large Scale Integration: tích hợp cỡ rất lớn ): các vi xử lí 64 bit với bơ ̣ nhớ cache và các đơn vi ̣ sớ ho ̣c dấu chấm đơ ̣ng (trên 1 triê ̣u transisto trên chip)
Mơ ̣t sớ IC logic sớ đã thành các linh kiê ̣n chuẩn , người ta có thể cho ̣n từ các catalog và các sở tay của các hãng IC
Với sự xuát hiê ̣n của VLSI những năm 1980, các kỹ sư đã bắt đầu nhận thấy đươ ̣c những thuâ ̣n lợi viê ̣c thiết kế IC theo nhu cầu của mình hoă ̣c cho mơ ̣t hê ̣ thớng hoă ̣c cho mơ ̣t ứng du ̣ng đă ̣c biê ̣t thì tiê ̣n lợi hơn nhiều so với các IC chuẩn
Các IC mới này đã được đưa đến thuật ngữ mớ i ASIC (Application Specific IC:
IC chuyên du ̣ng)
1.1 SƢ̣ PHÁT TRIỂN CỦA CÁC IC LẬP TRÌNH:
Các th iết bi ̣ lâ ̣p trình được đóng vai trò quan tro ̣ng lâu dài trong thiết kế các phần cứng sớ Chúng là các chip đa dụng cĩ thể được cấu hình theo nhiều cách cho nhiều ứng du ̣ng
Vào năm 1975, cơng ty SIGNETICS đã giới thiê ̣u vi ma ̣ ch sớ lâ ̣p trình khơng
cĩ bộ nhớ đầu tiên 82S100 (hiê ̣n nay là PLS 100) gọi là mảng logic lập trình trường FPLA (Field Programmable Logic Array ) Napoleon Cavlan, ngườ i đươ ̣c go ̣i là cha đẻ của ma ̣ch logic lâ ̣p trình , lúc bấy giờ là nh à quản lý những ứng dụng PLA của Signetics đã thực sự hiểu rằng sử du ̣ng PLA là phương pháp tớt hơn để thiết kế và thay đởi hê ̣ thớng sớ Trong khi đó , cơng ty Harris đã sớm giới thiê ̣u PROM (Programmable read – Only Memory) PROM là thiết bi ̣ lâ ̣p trình chỉ được mơ ̣t lần gờm mơ ̣t dãy các ơ nhớ chỉ đo ̣c PROM có thể thực hiê ̣n bất kỳ hàm logic theo bảng sự thâ ̣t nào bằng cách sử du ̣ng các đường đi ̣a chỉ như các ngõ nhâ ̣p và ngõ xuất được xác định bằng nơ ̣i dung các bit nhớ
Cĩ hai loại PROM cơ bản, mơ ̣t loa ̣i chỉ có thể được lâ ̣p trình bởi nhà sản xuất
và một loại cĩ thể được lập trình bởi người dùng Loại thứ nhất được gọi là mask
-programmable và loại thứ hai đư ợc gọi là field - -programmable Khi sản xuất các chip logic, hiệu suất tớc đơ ̣ cao có thể đa ̣t đươc với các chip mask -programmable vì các kết nối bên trong thiết bị được thực hiện bằng phần cứng khi sản xuất Ngươ ̣c la ̣i các kết nới của field-programmable luơn cần đến mơ ̣t sớ loa ̣i chuyển ma ̣ch lâ ̣p trình đươ ̣c và vì vâ ̣y châ ̣m hơn kết nới cứng Tuy nhiên, thiết bi ̣ field-programmable chứa đựng các ưu điểm có giá tri ̣ hơn sự ha ̣n chế về tớc đơ ̣
Trang 9 Các chip field-programmable rẻ lơn các chip mask -programmable khi sản
xuất với số lượng nhỏ
Các chip field -programmable có thể được lâ ̣p trình tức thì trong vài phút , trong khi các chip mask -programmable khi sản xuất phải mất hàng tuần hoă ̣ c hàng tháng
Programmable Read - Only Memory) cung cấp một ưu điểm : cả hai có thể được xoá
và lập trình lại nhiều lần
Mô ̣t thiết bi ̣ được lâ ̣p trình được khác được thiết kế đă ̣c biê ̣t để hiê ̣n thực các mạch Logic là PLD ( Programmable Logic Device ) Mô ̣t PLD thông thường gồm
mô ̣t dãy các cổng AND được nối với mô ̣t dãy các cổng OR Công ty National Semiconductor đã chế ta ̣o mă ̣t na ̣ lâ ̣p trình cho PLA , cấu ta ̣o của nó gồm mô ̣t mảng AND lâ ̣p trình kèm với mảng OR lâ ̣p trình , cho phép thực hiê ̣n tổ hợp tổng các tích số của hàm logic tiêu chuẩn Bằng cách kết h ợp công nghệ PROM sử dụng nguyên tắc cầu chì với khái niê ̣m PLA , Cavian đã thuyết phu ̣c được các nhà quản lý công ty Signetics để đưa dự án PLA vào sản xuất
(Intergrated Fuse Logic ) có hình dạng 28 chân Cấu trú c của PLA gồm mô ̣t mảng AND lâ ̣p trình và mô ̣t mảng OR lâ ̣p trình , nó cho phép thực hiện tổ hợp logic tổng của các tích số đơn giản
Kỹ sư John Martin Birkner là một người quan tâm đến PLA , vì ông ấy hiểu rằng nhiều phương pháp thiết kế logic được ho ̣c trong trường thì không áp du ̣ng được nhiều trong công viê ̣c hiê ̣n ta ̣i Do đó, vào năm 1975 ông đến công ty Monolithic Memories (MMI), đây là công ty chế tạo PROM và các vi mạch logic tiêu chuẩn Vì
vâ ̣y, Birkner có điều kiê ̣n hơn trong viê ̣c tìm hiểu PLA và công nhâ ̣n những ưu điểm của mạch logic lập trình nhưng đồng thời ông cũng nhận ra khuyết điểm của PLA là
có hai mảng lập t rình Sau đó, Birkner đã đưa ra khái niê ̣m mới về vi ma ̣ch số lâ ̣p trình, vi ma ̣ch này cũng tương tự PLA nhưng thay vì có hai mảng lâ ̣p trình thì PAL (Programmable Array Logic ) chỉ có một mảng AND lập trình và theo sau là mảng
OR được giữ cố đi ̣nh (không lâ ̣p trình ) Như vâ ̣y mỗi cổng OR sẽ có mô ̣t tích số cố
đi ̣nh được nối với ng õ vào của nó , do vâ ̣y sẽ giảm được kích thước của vi ma ̣ch và cho phép tín hiê ̣u được truyền nhanh hơn trong khi vẫn cho ph ép thực hiện các tổ
hơ ̣p logic PAL được đóng vỏ 20 chân Sau mô ̣t thời gian thuyết phu ̣c các nhà quản lý của công ty MMI thấy rõ những lợi điểm của PAL và đồng ý sản xuất Vi mạch đầu tiên thuô ̣c ho ̣ PAL được phổ biến là PA L 16L8, PAL 16R4, PAL 16R6, PAL 16R8 Các vi mạch này có thời gian truyền trì hoãn 35ns Mỗi vi mạch có 8 ngõ ra
và 16 ngõ vào, trong đó ký tự L trong ký hiê ̣u của vi ma ̣ch biểu thi ̣ 8 tổ hợp ngõ ra tác động ở mức thấp, ký tự R cho biết có 4, 6 hay 8 thanh ghi ở ngõ ra tương ứng
Sau mô ̣t thời gian khởi đầu châ ̣m , cuối cùng PAL đã được thiết kế trong hê ̣ thống thực Những công ty máy tính mini đã nhâ ̣n thấy được ưu điểm của PAL là cho phép ho ̣ giảm số board cần thiết để thực hiê ̣n tốt những yêu cầu thiết kế , công ty
Trang 10là lớp liên kết kim loại phù hợp yêu cầu thiết kế của khách hàng Những chi tiết này
có nhiều lợi ích gồm mang lại những kết quả tốt và kiểm tra dễ dàng hơn Đồng thời khách hàng cũng được lợi hơn bởi không phải quan tâm đến lập trình và kiểm tra các chi tiết Điều này đã mang la ̣i sự c ải tiến về phương pháp chế tạo PAL , và được sự chấp nhâ ̣n của thi ̣ trường Vào năm 1978, MMI đã xuất bản sách hướng dẫn PAL đầu tiên Đó là mô ̣t bước khởi đầu để PAL mở rô ̣ng thế giới của những người thiết kế ma ̣ch logic
Cả hai loại PLD trên cho phép thực hiện các mạch Logic có tốc độ cao , tuy nhiên cấu trúc đơn giản của chúng chỉ cho phép thực hiên các ma ̣ch logic nhỏ
Loại thiết bị lập trình được tổng quát nhất gồm một dãy các phần tử rời ra ̣c có thể đươ ̣c kết nối với nhau theo mô tả của người sử du ̣ng Loại thiết bị này được gọi là
Mask Programmable Gate Arrays (MPGA).Các MPGA phổ biến nhất gồm các
hàng transistor có thể được kết nối để hiện thực các mạ ch logic Các kết nối do người dùng đi ̣nh nghĩa này có thể có trong cả các hàng và các cô ̣t Ưu điểm chính của MPGA so với PLD là nó cung cấp một cấu trúc tổng quát cho phép hiện thực các mạch logic lớn hơn Vì cấu trúc kết nối của chúng có thể mở rô ̣ng cùng với số lươ ̣ng logic
Field Programmable Gate Arrays (FPGA) đã kết hơ ̣p khả năng lâ ̣p trình của PLD và cấu trúc kết nối có thể mở rô ̣ng của MPGA Do đó các thiết bi ̣ lâ ̣p trình loa ̣i này có mật độ logic cao hơn Giống như MPGA, mô ̣t FPGA gồm mô ̣t dãy các phần tử rời ra ̣c có thể được kết nối với nhau theo mô ̣t cách chung Giống như PLA , các kết nối giữa các phần tử là có thể lâ ̣p trình được FPGA được giới thiệu đầu tiên bởi công ty Xilinx năm 1985 Kể từ đó, có nhiều loại FPGA đã được nhiều công ty phát triển: Actel, Altera, Plessey, Plus Logic, Advanced Micro Devices (AMD), Quick Logic, Conncurent Logic, Crosspoin Solutions
Năm 1985, mô ̣t ho ̣ PLD mới được công ty Lattice Semiconductor giới thiê ̣u là
đă ̣c tính kỹ thuâ ̣t như công suất thấp , có thể lập trình nhiều lần ( xóa bằng điện áp với thời g ian xóa khoảng vài giây ) Vi ma ̣ch đầu tiên của ho ̣ GAL được kí hiê ̣u là GAL16V8 có khả năng thay thế hoạt động của PAL (đối vớ i vi ma ̣ch cùng loa ̣i) Ngày càng nhiều công ty tham gia vào thị trường PLD để tạo ra những vi mạch
đă ̣c biê ̣t và sử du ̣ng nhiều công nghê ̣ chế ta ̣o khác nhau Vào năm 1985, công ty Xilin ta ̣o ra mô ̣t ho ̣ mới là LCA (Logic Call Array) Cấu trúc của LCA có 3 đoa ̣n:
mô ̣t ma trâ ̣n của khối logic được bao quanh là khối vào ra và mô ̣ t ma ̣ng đường dữ liê ̣u nối gián tiếp Đặc biệt của LCA là PLD đầu tiên sử dụng tế bào RAM động cho chức năng logic Ưu điểm của cấu trúc này là khách hàng có thể kiểm tra được chương trình của vi ma ̣ch , do bản chất dễ xóa của LCA, nên cần phải lưu trữ cấu hình của LCA ở bộ nhớ ngoài Vì vậy, LCA không đươ ̣c sử du ̣ng ở những trường
hơ ̣p đòi hỏi sự hoa ̣t đô ̣ng ngay lâ ̣p tức khi khởi đô ̣ng máy Đi kèm với LCA là chương trình soa ̣n thảo XACT và bô ̣ mô phỏng giúp cho viê ̣c sửa lỗi cho những thiết kế trên LCA đươ ̣c thuâ ̣n tiê ̣n
Năm 1985, công ty Signetics với mô ̣t khái niê ̣m mới là PML (Programmable Macro Logic) Vi mạch PML đầu tiên của Signetics PMLS 501, vi ma ̣ch này sử du ̣ng công nghê ̣ lưỡng cực, và được đóng vỏ 52 chân
Vào năm 1986, công ty ExMicroelectronic giới thiê ̣u ho ̣ ERASIC (Erasable Application Specific 7C) sử du ̣ng công nghê ̣ EEPROM CMOS Vi ma ̣ch đầu tiên là XL78C00 có dạng 24 chân và điều đă ̣c biê ̣t là XL78C00 có thể thay thế chức năng
Trang 11cho PAL và EPLA cùng loa ̣i (không tính đến tốc đô ̣ ), đi kèm là mô ̣t phần mềm hỗ trơ ̣ ERASIC
Vào năm 1986, công ty Signetics quyết đi ̣nh thay đổi ho ̣ IFL thành ho ̣ PLS (Programmable Logic From Signetics) Ví dụ như từ 82S100 thành PLS 100, từ 82S157 thành PLS157 Sau đó 2 năm, công ty Actel đã cải tiến khuyết điểm ho ̣ LCA
là vi mạch có thể hoạt động không nhất thiết phải có bộ nhớ ngoài Đồng thời công
ty Gazelle Microcircuit đã công bố phát minh công nghê ̣ GaAs (Gallium Arsenide) Đặc điểm của công nghệ này là cải tiến tốc độ , công suất của các vi ma ̣ch trên nền tảng là công nghệ silicon , cho phép vi ma ̣ch làm viê ̣c với tốc đô ̣ nhanh hơn công suất tiêu tán khi ở mức trung bình
Ứng dụng đầu tiên của công nghệ GaAs được công ty Gazelle đưa ra là phiên bản của PAL 22V10 Ưu điểm của ma ̣ch này là cho phép vi ma ̣ch GaAs có thể tương hơ ̣p với các vi ma ̣ch TTL, do đó công nghê ̣ GaAS đã được ứng du ̣ng rô ̣ng rãi Sau mô ̣t thời gian cải tiến không ngừng , những PLD thế hê ̣ sau đã được ứng du ̣ng
rô ̣ng rãi trong kỹ thuâ ̣t phần cứng , nó trở thành công cụ cần thiết cho những kỹ sư thiết kế
1.2 CÁC CÔNG NGHỆ LẬP TRÌNH :
1 Phản cầu chì:
Một phản cầu chì (antifuse) là sự đối lập với cầu chì bình thường, bình thường một phản cầu chì là một mạch hở cho đến khi ta buột một dòng điện lập trình đi ngang qua (khoảng 5 mA) Trong một phản cầu chì đa silic- khuếch tán, mật
độ dòng điện lớn gây nên một tiêu tán công suất lớn trên một diện tích nhỏ làm chảy chất điện môi cách điện mỏng giữa các điện cực đa silicvà khuếch tán, tạo thành một liên kết có tính điện trở, vĩnh cửu, mỏng (đường kính khoảng 2nm)
2 RAM tĩnh (SRAM):
Công nghê ̣ lập trình SRAM được sử dụng trong FPGA của nhiều công ty như Algotronix, Concurrent Logic, Plessey Semiconductors, Xilinx Trong các FPGA này, các kết nối lập trình được làm bằng các transistor truyền (pass transistor), các cổng cho phé p truyền (pass gate ), hay các bô ̣ dồn kênh (multiplexer), tất cả đều đươ ̣c điều khiển bằng các ô nhớ (cell) SRAM
Trong trường hợp pass transistor và pass gate ở trên , SRAM cell điều khiển cổng truyền ON hoă ̣c OFF Khi OFF giữa hai dây nối với pass gate sẽ có mô ̣t trở kháng rất cao Khi ON nó sẽ tạo ra một trở kháng thấp kết nối giữa hai dây nối Đối với bộ dồn kênh, SRAM cell điều khiển ngõ nhâ ̣p nào của multiplexer sẽ được kết nối với ngõ ra của nó Cách này thường dùng để kết nối tuỳ chọn từ một hay nhiều ngõ nhập của một khối logic Trong các FPGA sử du ̣ng công nghê ̣ lâ ̣p trình SRAM , các logic block có thể được kết nối với nhau qua cách kết hợp cả multiplexer và pass gate Vì SRAM là bô ̣ nhớ bay hơi , các FPGA này phải được tái cấu hình mỗi khi cấp nguồn cho chip Điều này có nghĩa là hê ̣ thống sử du ̣ng các chip này phải có mô ̣t số cơ chế lưu trữ thường trực cho các bit của RAM cell , chẳng ha ̣n ROM hay đĩa từ Các bit của RAM cell có thể được nạp vào FPGA một cách tuần tự hay định địa chỉ như một phần tử của mảng (theo cách thông thường của mô ̣t RAM)
Các chip được thực hiện theo công nghệ SRAM có diện tích k há lớn, bởi vì
Trang 123 Công nghệ EPROM và EEPROM:
Công nghê ̣ lâ ̣p trình EPROM được sử du ̣ng trong các FPGA của Altera Corp
và Plus Logic Công nghê ̣ này giống như sử du ̣ng trong bô ̣ nhớ EPROM Không giống MOS transistor đơn giản, mô ̣t EPROM transistor gồm hai cổng, mô ̣t cổng treo (floating-gate) và một cổng chọn (select-gate) Cổng treo được đă ̣t giữa cổng cho ̣n
và kênh của transistor , nó được gọi như thế vì nó không có kết nối điện đến bất kỳ mạch nào
Ở trạng thái bình thường không được lập trình , không có điê ̣n tích giữa cổng treo và transistor có thể được chuyển sang tra ̣ng thái ON mô ̣t cách bình thường bằng cổng cho ̣n Khi transistor được lâ ̣p trình bằng mô ̣t dòng đ iê ̣n lớn cha ̣y giữa nguồn và kênh, một điê ̣n tích được giữ la ̣i ở cổng treo Điê ̣n tích này làm cho transistor chuyển sang tra ̣ng thái OFF Bằng cách này EPROM transistor có thể có chức năng của mô ̣t phần tử lâ ̣p trình được Mô ̣t EPROM transistor có thể được tái lâ ̣p trình bằng cách huỷ bỏ lớp điện tích được giữ lại ở cổng treo (phơi dưới ánh sáng cực tím sẽ kích
hoạt các electron chuyển từ cổng vào chất nền của transistor )
EPROM transistor đươ ̣c sử du ̣ng trong FPGA treo cách khác với SRAM và anti-fuse Thay vì dùng cho lâ ̣p trình kết nối 2 dây, EPROM transistor đươ ̣c sử du ̣ng
để “kéo xuống” các ngõ nhập của logic block
Mô ̣t ưu điểm của EPROM transistor là chúng có thể tá i lâ ̣p trình mà không cần bô ̣ nhớ bên ngoài Tuy nhiên không giống SRAM , EPROM transistor không thể đươ ̣c tái lâ ̣p trình ngay trên bo ma ̣ch (in-circuit)
Phương pháp dùng EEPROM (được sử du ̣ng trong các FPGA của Advanced
tốn gấp đôi diê ̣n tích chip so với EPROM transistor và cần nhiều nguồn điê ̣n thế (để tái lập trình) mà các loại khác không cần
1.3 CẤU TRÚC FPGA
Cấu trúc cơ bản nhất của FPGA bao gồm các khối logic có thể lập trình được
và các kênh dẫn Kiến trúc tổng quát của Xilinx FPGA được mô tả như sau :
Trang 13Cấu trúc tổng quát FPGA của Xilinx
Cấu trúc FPGA gồm mô ̣t mảng hai chiều các khối lâ ̣p trình được go ̣i là Configurable Logic Block (CLBs) vớ i các kênh routing (routing channel ) ngang giữa các hàng block và các kênh do ̣c giữa các cô ̣t Các nguồn tài nguyên có thể lập trình được điều khiển bởi các SRAM cell Xilinx có 3 họ FPGA là XC2000, XC3000
và XC4000 tương ứng với các thiết bi ̣ ở các thế hê ̣ thứ nhất , thứ hai và thứ ba Bảng sau cho biết khả năng logic của từng ho ̣ qua số CLB và mô ̣t lượng cổng AND 3 ngõ nhâ ̣p tương đương
Dung lươ ̣ng phần tử của Xilinx FPGA
XC2000 CLB gồm một bả ng tìm kiếm (look-up table) có 4 ngõ nhập và một
D flip-flop Bảng tìm kiếm có thể dùng để tạo ra hàm 4 biến bất kỳ hay 2 hàm 3 biến bất kỳ Cả hai ngõ xuất của CLB có thể dùng kết hợp hoặc chỉ dùng một ngõ xuất
Logic Block Lập trình đư ợc
Kênh routing ngang Kênh
routing dọc
Trang 14Kiến trú c routing của XC 2000 sử du ̣ng 3 loại nguồn routing: kết nối trực tiếp (Direct interconnect), kết nối đa dụng (General Purpose interconnect) và các dây nối dài (long lines) Các kết nối trực tiếp cung cấp các kết nối từ ngõ ra của mô ̣t CLB đến các CLB bên phải , trên và dưới kề nó Các kết nối đa dụng cung cấp các kết nối mở rô ̣ng tới nhiều CLB qua các đoa ̣n dây nối (wiring segment) ngang và do ̣c tới 4 đoa ̣n trên mô ̣t hàng và 5 đoa ̣n trên mô ̣t cô ̣t Mỗi đoa ̣n dây chỉ có thể mở rô ̣ng theo chiều rô ̣ng hoă ̣c chiều dài của mô ̣t CLB , nhưng có thể ta ̣o ra các dây nối dài hơn vì mỗi ma trâ ̣n chuyển ma ̣ch (swich matrix) chứa mô ̣t số chuyển ma ̣ch routing có thể nối với các đoa ̣n dây th eo cả 4 hướng Lưu ý các kết nối bằng kết nối đa du ̣ng có thời gian trễ đáng kể vì nó phải truyền qua mô ̣t chuyển ma ̣ch routing ở mỗi ma trâ ̣n chuyển ma ̣ch Các kết nối cần nối nhiều CLB với yêu cầu độ lệch thời gian thấp có thể sử du ̣ng các dây nối dài chỉ đi qua nhiều nhất mô ̣t chuyển ma ̣ch routing để mở
rô ̣ng chiều dài hay chiều rô ̣ng của FPGA
Multiplexer có thể lâ ̣p trình bởi người dùng
Trang 15Kiến trúc routing của XC 3000 (tương tự XC 2000) gồm kết nối trực tiếp , kết nối đa du ̣ng và các dây nối dài Mỗi nguồn routing đều được tăng cường : kết nối trực tiếp có thể nối đến các CLB bên trái kề nó , kết nối đa du ̣ng có thêm mô ̣t đoa ̣n dây phu ̣ trên mỗi hàng và có nhiều dây nối dài hơn
XC3000 cũng có các ma trận chuyển mạch tương tự như XC 2000
Trang 16 Xilinx XC4000 :
XC 4000 có nhiều đặc tính tăng cườ ng hơn so với các thế hê ̣ trước
CLB sử du ̣ng cách sắp xếp hai tầng các bảng tìm kiếm ta ̣o nên khả năng logic lớn hơn so với CLB trong XC 3000 Nó có thể hiện thực hai hàm 4 biến đô ̣c lâ ̣p hay bất kỳ hàm 5 biến nào, hoă ̣c hàm 4 biến kết hợp với hàm 5 biến lên đến 9 biến CLB
có 2 ngõ ra có thể sử dụng kết hợp hoặc riêng rẽ
Kiến trúc routing của XC 4000 khác rõ so với các Xilinx FPGA trước , sự khác biệt rõ ràng nhất là sự thay thế cá c kết nối trực tiếp và kết nối đa du ̣ng bằng hai nguồn tài nguyên routing mới go ̣i là các dây tru ̣c đơn (Single-length Lines) và các dây tru ̣c đôi (Double-length Lines ) Các dây trục đơn được dùng cho các kết nối không đòi hỏi nghiêm ngă ̣t về thời gian giữ châ ̣m
Hình 2.9 : Trục dây đơn XC4000
Trang 17- Có nhiều đoạn dây nối hơn trong XC4000 (gấp đôi so vớ i XC3000)
- Hầu hết chân củ a CLB có thể kết nối với phần lớn các đoa ̣n d ây nối làm tăng khả năng kết nối hơn XC3000
- Mỗi đoạn dây nối đi vào mô ̣t chuyển ma ̣ch chỉ có thể nối đến 3 đoa ̣n dây khác , bằng mô ̣t nửa so với XC3000
Các dây trục đôi tương tự như các dây trục đơn , ngoại trừ chúng chỉ đi qua
mô ̣t nửa số ma trâ ̣n chuyển ma ̣ch Điều này làm giảm thời gian trễ routing cần thiết cho các kết nối không phù hợp với các dây nối dài Long Line có đô ̣ lê ̣ch thời gian thấp
Trục dây đôi và dây nối dài XC4000
Actel FPGA:
Kiến trúc cơ bản của Actel FPGA tương tự MPGA , gồm các hàng những khối
lâ ̣p trình được go ̣i là Logic Modules (LMs), với các kênh routing ngang giữa các hàng Mỗi chuyển ma ̣ch kết dẫn trong các FPGA này được hiê ̣ n thực bằng anti -fuse PLICE Actel có hai thế hê ̣ FPGA là Act-1 và Act-2 với dung lươ ̣ng logic cho ở bảng sau:
Dung lươ ̣ng phần tử của Actel FPGA
Trang 18Cấu trúc tổng quát của Actel FPGAs
Act-1 LM như ở hình dưới cho thấy cấu trúc rất khác so với Xilin FPGA Cụ thể trong khi Xilinx sử du ̣ng CLB lớn , phức ta ̣p, Actel chủ trương sử du ̣ng các LM đơn giản và nhỏ
Act-1 Logic Module
Act-1 LM dựa trên cấu hình các multiplexer , nó có thể hiện thực bất kì hàm 2 biến nào, hầu hết các hàm 3 biến, mô ̣t số hàm 4 biến và lên đến 702 hàm logic
Kiến trúc kết dẫn của Act -1 sử du ̣ng 4 loại nguồn tài n guyên kết dẫn phân biê ̣t: các đoạn nhập (Input segment), các đoạn xuất (Output segment), các rãnh xung clock (Clock track) và các đoạn dây nối (Wiring segment) Các đoạn nhập nối 4 ngõ nhâ ̣p của LM vào các đoa ̣n dây nối nằm bên trên LM và 4 ngõ nhập vào bên dưới , các đoạn xuất nối ngõ xuất của LM đến nhiều kênh cả phím bên trên và bên dưới module Các đoạn dây nối gồm các kim loại thẳng có chiều dài khác nhau có thể đươ ̣c nối với nhau qua anti-fuse để tạo thành những dây nối dài hơn Act-1 cung cấp
22 rãnh đoạn dây nối trong mỗi kênh kết dẫn và 13 rãnh dọc nằm trực tiếp bên mỗi
cô ̣t LM Các rãnh xung clock là những dây dẫn đặc biệt có độ trễ thấp được sử dụng cho các tín hiệu phải đến nhiều LM với độ lệch thấp nhất
Trang 19Kiến trúc kết nối có thể lâ ̣p trình của Act-1
Act-2 là thế hệ tăng cường của Act -1, chứ a 2 khối lâ ̣p trình được go ̣i là C (Combitional) module C module rất giống Act-1 LM, mặc dù có phức ta ̣p hơn mô ̣t chút, trong khi C module đươ ̣c tối ưu hoá để hiê ̣n thực các phần tử tuần tự (flip-flop)
Kiến trúc kết dẫn của Act -2 cũng tương tự như Act -1 Nó cũng có 4 loại tài nguyên kết dẫn nhưng số rãnh được tăng lên đến 36 trong mỗi loa ̣i kênh kết dẫn và
15 trong mỗi cột
Actera FPGA:
Actera FPGA khác đáng kể so với các loa ̣i đã kể bởi vì chúng có cấu trúc nhóm phân cấp của các PLD Tuy nhiên , chúng là FPGA vì chúng s ử dụng một mảng hai chiều các khối lập trình được và một số cấu trúc routing lập trình được , chúng hiện thực nhiều mức logic và chúng có thể lập trình được bởi người dùng
Kiến trúc cơ bản của Actera FPGA dựa trên công nghệ lâ ̣p trình EFROM minh họa trên hình dưới đây:
Trang 20Kiến tru ́ c tổng quát của Altera FPGAs : MAX7000
Interconnect Array (PIA) Dung lượng logic của hai thế hê ̣ Alte ra FPGA được cho trong bảng sau Ở đây, chúng ta sẽ xét loại FPM5000
Dung lươ ̣ng phần tử của Altera FPGA
Trang 21Bên ca ̣nh các macrocell , mỗi LAB còn có mô ̣t loa ̣i block khác go ̣i là bô ̣ mở
rô ̣ng đường dây tí ch (expander produet terms ) Số macrocell trong mỗi LAB thay đổi tuỳ theo loa ̣i Altera EPGA Mỗi macrocell gồm 3 cổng AND nối vào mô ̣t cổng
OR, nối tiếp đến cổng XOR và mô ̣t flip -flop Cổng XOR ta ̣o ra output của macrocell
và có thể được nhận một cách tuỳ chọn
Các ng õ nhâ ̣p của macrocell được xem như các cổng AND 1 ngõ nhập vì chúng được tạo ra như các cổng AND nối dây (wired-AND đươ ̣c go ̣i là p -term) của các tín hiệu được nối từ bên trái của hình vẽ Đường tích có thể là 1 tín hiệu trong PIA hay là từ bô ̣ mở rô ̣ng đường dây tích của LAB hoă ̣c ngõ xuất bất kì của
macrocell nào Các tín hiệu ở dạng thực hoặc bù , nghĩa là phép đảo có thể lập trình đươ ̣c (programmable inversion) Với mô hình này , chức năng của LAB giống như PLD, nhưng có đường dây tích ít hơn trên mỗi thanh ghi (thường có ít nhất 8 đường dây tích trên mỗi thanh ghi PLD ) Altera cho rằng điều này sẽ làm LAB hiê ̣u quả hơn bởi vì hầu hết các hàm logic không cần có số đường dây tích lớn như trong PLD
và LAB hỗ trợ mở rộng chức năng bằng bộ nhớ rộng đường dây tích
Altera Macrocell
Mỗi bô ̣ mở rô ̣ng đường dây tích gồm nhiều đường dây được đảo và nối trở lại macrocell và chính nó Điều này cho phép hiê ̣n thực các hàm logic rất lớn vì bất kì macrocell nào cũng có thể sử du ̣ng các đường dây tích mở rô ̣ng này
Trang 22Bô ̣ mở rô ̣ng đường dây tích Altera
Mức thứ hai của cấu trúc tr úc phân cấp cung cấp các kết nối giữa các LAB thông qua PIA Một PIA gồm có nhiều đoa ̣n dây nối dài cha ̣y bên ca ̣nh mỗi LAB PIA cung cấp toàn bô ̣ các kết nối vì mỗi ngõ nhâ ̣p của LAB nào mà không bi ̣ ràng buô ̣c gì
1.4 Quá trình ca ̀i đă ̣t :
Người thiết kế muốn ta ̣o ra FPGAs tốt phải sử du ̣ng hê ̣ thống CAD
(Computer Aided Design ) Hình biểu diễn các bước trong hệ thống CAD tiêu biểu
để tạo ra một mạch FPGA
Hê ̣ thống CAD tiêu biểu cho FPGAs
Trang 23Điểm bắt đầu cho quá trình thiết kế là ma ̣ch logic ban đầu cần thiết kế Bước này đòi hỏi một sơ đồ biểu diễn mạch hay một mô tả VHDL hoặc đặc tả các biểu thức Boolean Từ các ngõ vào ban đầu, mô tả mạch được chuyển thành dạng chuẩn như là các biểu thức Boolean Các biểu thức Boolean sau đó được xử lý bằng công
cụ tối ưu logic, chúng rút gọn các biểu thức Mục đích là biến đổi các biểu thức này
để tối ưu về diện tích hay tốc độ của mạch cuối cùng Cả hai yêu cầu về diện tích và tốc đô ̣ cùng có thể cùng đă ̣t ra Tiếp theo các biểu thức Boolean đã tối ưu được truyền tới ma ̣ch logic block của FPGA thông qua chương trình ánh xa ̣ công ngh ệ (technology mapping ) Bộ ánh xa ̣ cố gắng tối thiểu số khối được dùng , tức là tối ưu diê ̣n tích hoă ̣c có thể được tối ưu số lượng tầng logic block hoă ̣c giảm đường dẫn tức tối ưu về giữ châ ̣m Khi ánh xa ̣ ma ̣ch vào các lo gic block, cần phải quyết đi ̣nh đă ̣t mỗi khối ở đâu trong dãy FPGAs Chương trình Placement được sử du ̣ng để giải quyết vấn đề này Các giải thuật Placement đặc thù cố định cố gắng tối thiểu tổng số
đô ̣ dài các dây nối yêu cầu để tạo ra kết quả
Bước cuối cùng trong hê ̣ thống CAD được thực hiê ̣n bằng phần mềm routing , chúng ấn định các đoạn dây FPGA và chọn các chuyển mạch có thể lập trình phù
hơ ̣p với các kết nối logic block Phần mềm routing phải thực hiê ̣n 100% các kết nối yêu cầu, nếu không thì ma ̣ch không thể thiết kế được trong mô ̣t FPGA Hơn nữa cần phải routing cho giữ chậm lan truyền ở các kết nối là tối thiểu
Sau khi thực hiê ̣n thành công các bước Placem ent và routing , ngõ ra của hệ thống CAD đươ ̣c na ̣p vào đơn vi ̣ lâ ̣p trình ta ̣o ra chip FPGA cuối cùng Toàn bộ quá trình cài đặt mạch trong FPGA mất khoảng vài phút đến một giờ , phụ thuộc vào loại FPGA đang dùng
Trang 24B NGÔN NGỮ VHDL:
1 Sự ra đời ngôn ngữ VHDL
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 và ngày càng phát triển, từ các mạch đơn giản cho đến các mạch số, các vi mạch tích hợ p, các chip vi mạch siêu nhỏ , sự đòi hỏi về kiến trúc mạch trở nên phức tạp hơn, các phương pháp phân tích thiết kế và mô hình hoá mạch số kiểu truyền thống trở nên không còn phù hợp nữa Thay vào đó các phương pháp thiết kế
hệ thống số sử dụng các ngôn ngữ mô phỏng phần cứng (HDL _ Hardware Description Language) đã và đ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 hiện nay
VHDL (Very hight speed integrated circuit Hardware Description Language) là một trong các ngôn ngữ mô tả phần cứ ng được sử dụng rộng rải hiê ̣n nay VHDL là ngôn ngữ mô tả phần cứng cho các vi mạch tích hợp có tốc độ cao, là
mô ̣t loại ngôn ngữ phần cứng được phát triển dùng cho chương trình VHSIC (Very hight speed integrated circuit) của bộ quốc phòng Mỹ Mục tiêu của việc nghiên cứu và phát triển là tạo ra 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, hiệu quả hơn, và nhanh chóng đưa các hệ thống đó vào ứng dụng
Tháng 7 năm 1983, 3 công ty nổ i tiếng Internetic, IBM, Texas Instruments bắt tay vào nghiên cứu VHDL Sau một thời gian làm viê ̣c, phiên bản đầu tiên của ngôn ngữ VHDL được công bố vào tháng 8 năm 1985
Vào nă m 1986 VHDL đươ ̣c công nhận như một chuẩn IEEE Nó đã qua một số cuộc kiểm nghiệm và thay đổi cho đế n khi được công nhận như mô ̣t chuẩn IEEE 1076 vào tháng 12 năm 1987
VHDL đươ ̣c nghiên cứu phát triển nhằm giải quyết việc phát triển, thay đổi
và xây dựng các hệ thống điện tử số Với một ngôn ngữ phần cứng tố t việc xây dựng các hệ thống điện tử số có tính linh hoạt, phứ c tạp trở nên dễ dàng hơn Việc
mô tả hệ thống số bằng ngôn ngữ cho phép xem xét, kiểm tra toàn bộ hoạt động củ a
hệ thống trong một mô hình thống nhất
2 Các thuật ngữ của VHDL:
Một số thuật ngữ được sử dụng trong VHDL mà ta gặp trong quá trình làm việc Đây là các khối xây dựng sẵn cơ bản của VHDL được sử dụng hầu hết trong các mô tả trong VHDL
Thực thể (Entity): tất cả các thiết kế đều được biểu diễn dưới dạng các
thực thể Một thực thể là một khối xây dựng sẵn cơ bản nhất trong một thiết kế Mức cao nhất của thực thể là mức đỉnh (top – level – entity) Nếu thiết kế có thứ bậc, mô tả mức đỉnh (top – level – description) sẽ có các mô tả mức thấp hơn chứa bên trong Những mô tả mức thấp hơn này sẽ là các thực thể mức thấp hơn chứa trong các thực thể mức đỉnh
Trong VHDL thì thực thể dùng để là khai báo các cổng input _ out put của component và tên của nó
Kiến trúc (architecture): tất cả các thực thể có thể được mô phỏng đều có
một mô tả kiến trúc Kiến trúc mô tả hành vi của thực thể Một thực thể đơn có thể
có nhiều kiến trúc Kiến trúc có thể ở mức hành vi (behavioral) cũng có thể ở mức cấu trúc (structaral description)
Trang 25Cấu hình (configuration statement): được sử dụng để làm kết một thể
hiện thành phần với một cặp thực thể - kiến trúc Một cấu hình có thể được khảo sát giống như một danh sách các phần (parts list) của một thiếc kế Cấu hình mô tả hành vi nào sử dụng trong mỗi thực thể, giống như danh sách các phần mô tả phần nào sử dụng cho mỗi phần trong thiết kế
Gói (packege): một gói là một tập hợp các chương trình con (subprogram)
và các kiểu dữ liệu phổ biến được sử dụng trong một thiếc kế Ta hiểu một gói như
là một hộp công cụ chứa nhiều công cụ được sử dụng để xây dựng các thiết kế
Driver: đây là một nguồn trên một tín hiệu Nếu một tín hiệu được kích bởi
hai nguồn, khi cả hai nguồn đều tích cực, tín hiệu này sẽ có hai driver (Driver có thể hiểu là mạch kích hay trình kích)
Bus: bus là thuật ngữ thường làm nghĩ đến một nhóm các tín hiệu hoặc một
phương pháp truyền thông cụ thể được sử dụng trong thiết kế phần cứng Trong VHDL, một bus là một loại tín hiệu đặc biệt ở trạng thái tắt
Thuộc tính (attribute) là dữ liệu được gắn cho các đối tượng (object) hoặc
dữ liệu tiền định nghĩa liên quan đến các đối tượng trong VHDL Các thí dụ là khả năng kích dòng của một mạch đệm hoặc nhiệt độ hoạt động cực đại của linh kiện
Generic: generic là thuật ngữ của VHDL dùng cho một thông số, thông số
này chuyển thông tin đến một thực thể Thí dụ, nếu một thực thể là một mô hình ở mức cổng có trì hoãn tăng (rise delay) và trì hoãn giảm (fall delay), các giá trị (hay trị số) của các trì hoãn tăng và giảm này có thể được chuyển vào trong thực thể bằng các generic
Quá trình (process): một quá trình là một đơn vị thực thi cơ bản trong
VHDL Tất cả các thao tác được thực hiện trong khi mô phỏng một mô tả VHDL đều được chia nhỏ trong một hoặc nhiều quá trình
Từ khóa ENTITY mang ý nghĩa đây là nơi bắt đầu của một phát biểu thực thể Trong các mô tả được trình bày xuyên suốt chương này, các từ khóa của ngôn ngữ và các kiểu được cung cấp bởi gói STANDARD được trình bày ở dạng chữ hoa Chẳng hạn ở ví dụ trên, các từ khóa là: ENTITY, IS, PORT, IN, OUT, … Kiểu
Trang 26Thực thể mô tả giao diện với thế giới bên ngoài Thực thể chỉ ra số port, hướng của các port và kiểu của các port Nhiều thông tin hơn nữa có thể có thể được đặt vào bên trong thực thể nhưng thực thể này cho ta nền tảng, nhờ vào đó ta có thể xây dựng các thí dụ phức tạp hơn
2.2 Kiến trúc (architecture):
Kiến trúc đi ̣nh nghĩa cho thực thể compoment mô tả cấu trúc hoặc hành vi của
nó Kiến trúc mô tả chức năng cơ bản của thực thể và chứa các phát biểu mô hình hành vi của thực thể Một kiến trúc luôn liên kết với một thực thể và mô tả với hành
vi của thực thể đó
Thí dụ khai báo architecture của entity cổng and
ARCHITECTURE and2ngovao OF and IS
BEGIN
c <= a and b END and2ngovao;
Từ khóa ARCHITECTURE có nghĩa là phát biểu này mô tả một kiến trúc
của một thực thể Tên của kiến trúc này là and2ngovao Thực thể mà kiến trúc đang
mô tả có tên là and
Lý do cho kết nối giữa kiến trúc và thực thể là một thực thể có thể có nhiều kiến trúc mô tả hành vi của thực thể Thí dụ một kiến trúc có thể là mô tả ở mức hành vi (behavioral description) và kiến trúc khác có thể là mô tả ở mức cấu trúc (structaral description)
Miền ở giữa từ khóa ARCHITECTURE và từ khóa BEGIN là miền mà các tín hiệu cục bộ (local signal) và các thành phần (component) được khai báo để sử
dụng sau này Trong thí dụ kế tín hiệu trunggian được khai báo làm tín hiệu cục bộ
Khai báo các đường tín hiệu (Signal Declaration):
Các đường tín hiệu được dùng để kết nối các mô đun con la ̣i với nhau trong quá trình thiết kế
Ví dụ:
ARCHITECTURE andcodem OF and IS
SIGNAL trunggian : std_logic;
2.3 Phát biểu khối (Block)
Mô ̣t mô đun con trong thân một cấu trúc có thể được mô tả như một khối Khối là đơn vị của một cấu trúc mô đun Một khối kết nối đến khối khác bằng port hay bằng các đường tín hiệu (Signal)
Các khối là cơ chế phân chia hệ thống bên trong VHDL cho phép người thiết kế về mặt logic gom thành nhóm các miền của mô hình Một phát biểu trong một kiến trúc có thể được chia thành một số miền logic riêng rẽ Chẳng hạn như nếu
Trang 27ta đang thiết kế một CPU, một khối khác có thể là ALU, khối khác có thể là một dãi thanh ghi và khối khác là mạch dịch bit
Một khối biểu diễn một miền độc lập của mô hình Mỗi khối có thể khai báo tín hiệu cục bộ, các kiểu, các hằng, … Một đối tượng bất kỳ có thể được khai báo trong phần khai báo kiến trúc sẽ có thể được khai báo trong phần khai báo khối Sau đây là một ví dụ:
PORT (clk, interrupt: IN std_logic;
addr : OUT tw32; data : INOUT tw32);
END cpu;
ARCHITECTURE cpu_blk OF cpu IS
SIGNAL ibus, dbus : tw32;
BEGIN
ALU : BLOCK
SIGNAL qbus : tw32;
BEGIN
alu behavior statements
END BLOCK ALU;
reg1 behavior statements
END BLOCK REG1;
more REG8 statements
END BLOCK REG8;
END cpu_plk;
Thực thể cpu là khai báo thực thể ngoài cùng của mô hình này (đây không phải là một mô hình hoàn chỉnh mà chỉ là một tập con) Thực thể cpu khai báo 4 port được sử dụng làm giao diện của mô hình Tất cả các port này đều nhận biết được đối với khối bất kỳ được khai báo trong một kiến trúc của thực thể này Các
Trang 28trúc có thể tham chiếu các tín hiệu này Một khối mức thấp bất kỳ có thể tham chiếu các tín hiệu mức cao hơn nhưng các khối mức cao hơn không không thể tham chiếu các tín hiệu cục bộ của các khối mức thấp hơn
3 Phép gán tín hiệu đồng thời:
Trong một kiến trúc VHDL, không có sự sắp xếp thứ tự nào cho các phát biểu gán Thứ tự thực thi được chỉ ra bởi các sự kiên xuất hiện (hay xảy ra) trên các tín hiệu mà các phát biểu gán bị ảnh hưởng
Ta khảo sát một phát biểu gán sau:
Select <= 0 when s0 = “0” and s1 = “0” else
1 when s0 = “1” and s1 = “0” else
2 when s0 = “0” and s1 = “1” else 3;
Phép gán tín hiệu được nhận biết bởi ký hiệu <= Tín hiệu select sẽ nhận một giá trị hằng số gán cho mình dựa trên các giá trị của s0 và s1 Phát biểu này được thực thi mỗi khi tín hiệu s0 hoặc s1 có một sự kiên xuất hiện một sự kiện trên một tín hiệu là sự thay đổi của tín hiệu này Phát biểu gán tín hiệu được nói rằng bị ảnh hưởng bởi thay đổi trên tín hiệu nào đó khi tín hiệu này ở bên phải của ký hiệu
<= Phát biểu gán tín hiệu này bị ảnh hưởng bởi s0 và s1
Định thời sự kiện:
Ví dụ:
X <= a after 5ns when select = 0 else
b after 5ns when select = 1 else
c after 5ns when select = 2 else
d after 5ns;
Phép gán cho tín hiệu x không xảy ra ngay lập tức Mỗi giá trị trong các giá được gán cho tín hiệu x đều chứa mệnh đề AFTER Cơ chế dùng để trì hoãn giá trị mới được gọi là định thời sự kiện (event scheduling) Với việc gán cho port x một giá trị mới, một sự kiện đã được trì hoãn 5ns chứa giá trị mới cho tín hiệu x khi sự kiện đến hạn sau 5ns tín hiệu x nhận giá trị mới
sơ cấp Các thư viện là tập hợp của các đơn vị thiết kế sơ cấp và đơn vị thiết kế thứ cấp một thiết kế thường chứa một hoặc nhiều thư viện các đơn vị thiết kế
4.1 Mô tả hành vi
Mô tả chức năng và đi ̣nh thì của phần cứng đô ̣c lâ ̣p với bất kỳ cài đă ̣t cu ̣ thể nào Mô hình có thể c ó nhiều cấp trừu tượng ho á tuỳ theo viê ̣c chia nhỏ đi ̣nh thì và
có kiểu dữ liệu dùng trong mô tả chức năng
Trong nhiều trường hợp mô tả cấu trúc trở nên không thích hợp , mô ̣t trong những trường hợp này là các mô đun cấp dưới của các mô tả cấu trúc Ví dụ chúng
ta đang thiết kế mô ̣t hê ̣ thống số sử du ̣ng các vi ma ̣ch tổ hợp ( IC ) mua từ thị
Trang 29trường Chúng ta không cần mô tả cấu trúc bên trong của các vi mạc h tổ hợp, trong trường hợp này thì sự mô tả các chức năng thực hiê ̣n bởi các vi ma ̣h tổ hợp được chú trọng mà không c ần mô tả cấu trúc bên trong Sự mô tả như thế được go ̣i là mô
tả chức năng (Function Description) hay mô tả hành vi (Behavoural Description)
Hình: Mô tả hành vi
Để minh hoạ cho mô tả này, giả sử rằng chức năng của thực thể F trong hình trên là cổng EX_OR Sự mô tả hành vi của F là
Phát biểu quá trình:
Phát biểu quá trình chứa một số phần Phần đầu tiên được gọi là danh sách
độ nhạy; phần thứ hai được gọi là phần khai báo quá trình và phần thứ ba gọi là phần phát biểu
ELSIF s0 = “1” and s1 = “0” then Sel :=1;
ELSIF s0 = “0” and s1 = “1” then Sel :=2;
else Sel :=3;
Trang 30Miền khai báo quá trình:
Phần khai báo quá trình chứa miền ở giữa nơi kết thúc danh sách độ nhạy và
từ khóa BEGIN Trong thí dụ trên phần khai báo chứa một khai báo biến, khai báo
biến cục bộ sel Biến này được sử dụng cục bộ để chứa các giá trị được tính dựa
Phát biểu tuần tự:
Phát biểu này được thực thi tuần tự Một khi phát biểu được thực thi, kiển tra
kế của phát biểu IF không được thực hiện Mỗi khi một kiểm tra thành công, không
có kiểm tra nào khác được thực hiện nữa Phát biểu IF đã được hoàn tất và lúc này
phát biểu CASE sẽ được thực thi Phát biểu CASE sẽ đánh giá giá trị của sel đã
được tính trước đây bởi phát biểu IF và kế đến thực thi phát biểu tương thích, phù hợp với giá trị của sel
4.2 Mô ta ̉ cấu trúc (structure description)
Mô ̣t hê ̣ thống số có thể được mô tả như là mô ̣t mô đun với các ng õ vào (Input) và các ngõ ra (Output) Hình trên mô tả một thực thể F là một mô đun có hai ngõ vào A, B và mô ̣t ngõ ra Y, thuâ ̣t ngữ VHDL có thể b iểu diễn mô đun F bằng chỉ thị entity và ngõ vào và ngõ ra là các port
Một trong những cách mô tả các chức năng củ a các môđun là mô tả da ̣ng các chương trình con (sub môđun ) Mỗi sub môđun có 1 chỉ thị Instance của mô ̣t thực thể (entity) và port của các thực thể được kết nối bằng cách sử du ̣ng các đường tín hiệu (Signal)
Hình: Mô tả cấu trúc
Hình này mô tả mô ̣t thực thể F có thể bao gồm của các thực thể nhỏ như G,
I, H Hình thức mô tả như thế được gọi là mô tả cấu trúc(Structure Description)
Trang 314.3 Mô ta ̉ các sƣ̣ kiê ̣n riêng biê ̣t theo thời gian
Cấu trúc và hành vi của các mô đun đã được xác đi ̣nh r õ Nó có thể được
mô phỏng bởi viê ̣c chấp hàn h các mô tả hành vi của nó Điều này được thực hiê ̣n bằng cách thực hiê ̣n mô phỏng từng bư ớc riêng biê ̣t theo thời gian Ở mô ̣t vài thời điểm mô phỏng, các mô đun ng õ vào có thể được tác động bởi sự thay đổi giá trị trên các port ng õ vào Các mô đun phản ứng lại bằng cách thực hiện các lệnh củ a các mô tả hành vi của nó , hoă ̣c các chương trì nh, giá trị mới được đă ̣t trên các ng õ tín hiệu đươ ̣c kết nối với port out sau mô ̣t lượng thời gian mô phỏng
Quá trình này được gọi là quá trình l ập trình trao đổi tín hiệu Nếu giá tri ̣ tín hiệu mới khác với giá trị trước đó thì xem như m ột sự kiện xuất hiện và các mô đun khác có ngõ vào input kết nối với các đường tín hiê ̣u này được kích hoa ̣t
Quá trình mô phỏng được bắt đầu với giá trị khởi đầu , sau đó là qu á trình xử lý bởi viê ̣c lâ ̣p la ̣i hai tra ̣ng thái của chu kỳ mô phỏng Tất cả các giá trị được đặt bởi các giá tri ̣ ban đầu và thời gian mô phỏng được set về 0 Và mỗi sự thay đổi ở ngõ ra được lâ ̣p trình sau mô ̣t khoảng thời gian
5 Các kiểu đối tƣợng (Object type) trong VHDL
Kiểu tín hiệu (signal)
Kiểu tín hiệu được sử dụng để kết nối các thực thể lại với nhau để tạo ra một module Signal là phương thức truyền các tín hiệu động giữa các thực thể với nhau
Kiểu signal được khai báo như sau:
Hoă ̣c trong đoạn khai báo cấu trúc và khai báo của package
Ví dụ khai báo kiểu signal:
SIGNAL ground : std_logic := „0‟;
FUNCTION magic_function ( a : IN bus_type) RETURN
bus_type;
END sigdecl;
USE WORK.sigdecl.ALL;
Trang 32Kiểu biến (variable)
Các biến số dùng trong VHDL không tạo ra bất kỳ phần cứng nào, các biến lưu trữ giá trị tạm thời của các tín hiệu Kiểu biến được khai báo như sau:
VARIABLE variable_name {, variable_name{: variable_type[:=value]
Theo sau từ khoá variable là một hoặc nhiề u tên biế n Các tên biế n cách nhau bằng dấu „,‟ Mỗi tên biế n sẽ tạo ra một biến mới Variable_type sẽ xác định kiểu dữ liệu cho biến
Ví dụ khai báo biến như sau:
VARIABLE state : std_logic;
VARIABLE delay : time;
Trang 33Các tên hằ ng cách nhau bằng dấu „;‟ Các giá trị (value ) của hằng là tuỳ ý, kiểu hằng có quy định giống kiểu tín hiệu
Hằng có thể sử dụng trong toàn thực thể nếu hằng được khai báo trong khối khai báo của thực thể, hoặc nó có thể được sử dụng trong toàn package nếu nó được khai báo trong đoạn khai báo của package
6 Các kiểu dữ liệu (data type) trong VHDL
a Kiểu số nguyên (integer)
Kiểu nguyên được phát biểu như vùng con của kiểu tổng quát đã cài đặt sẵn
và các giới hạn phải được khai báo, phụ thuộc vào công cụ mà ta đang sử dụng, nó
sử dụng một số lớ n các mạch logic để cài đặt cho kiểu số nguyên
Ví dụ khai báo cho kiểu số nguyên:
TYPE lengh IS range 0 t0 1000
( khai báo kiểu số nguyên có dãy trong khoảng từ 0 đến 1000 )
TYPE byte IS range -127 to 127
(khai báo kiểu byte có giá trị trong khoảng -127 đến 127)
TYPE my_integer is range -2147483647 to 2147483647
Số bit yêu cầ u để biểu diễn giá trị nguyên sẽ được tính toán từ khoảng này Trong nhiều trường hợp nếu số nguyên là âm, được mã hoá như một vector bit bù hai.Các bit của giá trị kiể u nguyên không thể truy nhập trực tiếp, không cho phép thao tác trên vị trí các bit này Chức năng đặc biệt chuyển đổi một số nguyên thành vector bit được định nghĩa và tạo bởi các khối cung cấ p trong môi trường công cụ tổng hợp
b Kiểu số thực (real type)
Kiểu số thực được sử dụng để khai báo các đố i tượng có giá trị thuộc kiểu số thực Chúng có thể được sử dụng để mô tả các giá trị vượt ra ngoài giới hạn của kiểu số nguyên
Ví dụ:
Trang 34a <= 1; error 2
a <= -1.0E10; Ok 3
a <= 1.5E-20; Ok 4
END test;
c Kiểu liê ̣t kê (enumerated type):
Kiểu liệt kê là một công cụ hổ trợ đắc lực cho quá trình thiết kế bằng ngôn ngữ VHDL
Người thiết cho các quá trình hoạt động riêng biê ̣t Các giá trị này có thể được xác định bằng các chữ số riêng
0: giá trị logic 0 hoặc false
1: giá trị logic 1 hoặc true
Ví dụ:
TYPE color IS (red,yellow,blue,green,orange);
Trong ví du ̣, kiểu color được xác định các giá trị red, yellow
Mỗi giá trị trong kiể u được xác định là duy nhấ t Mỗi giá trị có một vị trí duy nhất được xác định trong kiểu
Kiểu liệt kê được định nghĩa bằng cách cho danh sách toàn bộ giá trị của chúng Mỗi thành phần của danh sách này có thể là danh hiệu khác với tên dành riêng hoặc là các ký tự số cụ thể („0‟, hay „1‟);
TYPE std_logic IS („U‟,‟X‟,‟0‟,‟1‟,‟Z‟,‟W‟,‟L‟,‟H‟)
SIGNAL S :std_logic;
TYPE state_type IS (halt, ready, run, error )
VARIABLE state :state_type ;
TYPE code_type IS (nul,‟0‟,‟1‟);
FUNCTION code (c : IN integer) RETURN code_type
Trong ví dụ trên định nghĩa của cả hai kiểu std_logic và code_type bao gồm các số „1‟, ‟0‟ được gọi là quá tải (overload) VHDL cho phép trùng các giá trị như vậy và chương trình biên dịch có thể tự nhận ra các kiểu số cụ thể Tuy nhiên, để giải quyết các lệnh khai báo không rõ ràng yêu cầu sử dụng biểu thức tiêu chuẩn là TYPE_NAME „(EXPRESSION)‟ Các tiêu chuẩ n này đươ ̣c các công cụ tổng hợp công nhận và không có bất kỳ phần cứng bổ sung nào Các thông tin nà y chỉ sử dụng tại mức biên dịch để giúp đỡ chương trình biên dịch
Kiểu std_logic và kiểu state_type là hai kiểu liệt kê, tuy nhiên mức độ trừu tượng của state cao hơn của std_logic và do đó state cần được mã hoá
Sự tổng hợp tạo ra kiểu liệt kê dưới dạng mã hoá, không có sự thống nhất cho mã hoá các kiểu liệt kê Thông thường các giá trị liệt kê được mã hoá mặc định vào trong các vector bit mà chiều dài của nó là số bit tối thiểu yêu cầu để mã hoá số
Trang 35lượng giá trị liệt kê Phương pháp này được áp dụng cho kiểu liệt kê đã định nghĩa BOOLEAN, trong đó giá trị FALSE được mã hoá là giá trị „0‟, TRUE được mã hoá
là giá trị „1‟ Cách giải quyế t này không được chọn lựa có hệ thống Đặc biệt khi kiểu liệt kê được dùng để định nghĩa trạng thái của máy trạng thái giới hạn Trong trường hợp đó một cách mã hoá khác phải được lựa chọn để tối ưu hoá kết quả
na; nano amps
ua = 1000 na; micro amps
ma = 1000 ua; milli amps
a = 1000 ma; amps
END UNITS;
Viê ̣c xác định kiểu dữ liệu được bắt đầ u với câu lệnh khai báo tên kiể u (current) và vùng của kiểu (0 to 1000000000), các khai báo đầu tiên được thực hiện trong đoạn UNITS Trong ví du ̣ trên đơ n vị chính của UNITS là na Sau khi đơn vị chính của UNITS được khai báo các đơn thể khác cũng được xác định
Kiểu vật lý được xác định trước
Trong VHDL có kiểu vật lý được xác định trước là thời gian (time)
e Kiểu ma ̉ ng nhiều chiều
Kiểu mảng nhiều chiều được VHDL hổ trợ để định nghĩa một tập chỉ số Tuy nhiên chỉ có dãy một chiều được công cu ̣ tổng hợp hổ trợ Để khắc phục nhược điểm này người ta khai báo hai kiểu mảng một chiều thay vì khai báo 1 kiểu mảng hai chiều
Ví dụ:
TYPE word IS ARRAY (31 downto 0 ) of BIT ;
TYPE ram IS ARRAY (1023 downto 0) of WORD ;