Hình 2.1 Cấu trúc chung của chơng trình VHDL Hình 2.2 Quan hệ giữa các đơn vị thiết kế Hình 3.1 Trình tự thiết kế với FPGA Hình 3.2 Sơ đồ khối của modul Hình 3.3 Kit XSA- 100 Hình 3.4 G
LịCH Sử PHáT TRIểN CủA VI MạCH Số LậP TRìNH
Before the advent of Programmable Logic Devices (PLDs), traditional digital logic design relied on the integration of multiple TTL (Transistor-Transistor Logic) MSI (Medium Scale Integrated) and SSI (Small Scale Integrated) chips to achieve desired logic functions Designers would consult datasheets to understand the technical specifications before selecting the necessary chips for their design requirements This approach posed challenges, particularly in troubleshooting, as the use of numerous chips on a single board complicated repair processes.
Vào năm 1975, công ty SIGNETICS đã ra mắt vi mạch số lập trình không có bộ nhớ đầu tiên 82S100 (nay là PLS100), được gọi là mảng logic lập trình trường (Field Programmable Logic Array), với Napoleon Cavlan được coi là cha đẻ của mạch logic lập trình Cavlan, lúc bấy giờ là nhà quản lý ứng dụng PLA của Signetics, đã nhận ra rằng việc sử dụng PLA là phương pháp tối ưu để thiết kế và điều chỉnh hệ thống số Đồng thời, công ty Harris cũng đã giới thiệu PROM và trình bày triển vọng ứng dụng của nó trong một số mạch logic.
National Semiconductor developed a programmable mask for the Programmable Logic Array (PLA), which consists of a programmable AND array combined with a programmable OR array This design enables the implementation of various combinations of products of sums.
Cavian đã thuyết phục các nhà quản lý của công ty Signetics đưa dự án PLA vào sản xuất bằng cách kết hợp công nghệ PROM với nguyên tắc cầu chì, sử dụng 10 hàm logic tiêu chuẩn.
Vi mạch PLA 82S100 là vi mạch đầu tiên thuộc họ IFL (Integrated Fuse Logic) với 28 chân Cấu trúc của PLA bao gồm một mảng AND lập trình và một mảng OR lập trình, cho phép thực hiện các tổ hợp logic phức tạp từ các tích số đơn giản.
Vào năm 1977, Signetics đã giới thiệu vi mạch FPGA (Field Programmable Gate Array) 82S103, với cấu trúc mảng AND đơn và ngõ vào lập trình được, cho phép thực hiện các hàm logic cơ bản như AND, OR, NAND, NOR và INVERT FPGA này còn tích hợp Flip-Flop để thực hiện các trạng thái của hàm tuần tự Đồng thời, Signetics cũng ra mắt chương trình biên dịch AMAZE (Automated Map and Zap Equations) nhằm hỗ trợ cho các vi mạch của họ Các công ty chế tạo PLD khác cũng đã phát triển phần mềm hỗ trợ tương tự cho sản phẩm của mình.
Vào năm 1983, công ty AMD (Advance Micro Devices) đã giới thiệu vi mạch PAL22V10, đánh dấu sự cải tiến trong kỹ thuật logic lập trình Vi mạch này nổi bật với 10 ngõ vào linh động của các cổng PLD, cho phép tổ hợp với thanh ghi ở ngõ ra hoặc một ngõ vào Cổng đệm ngõ ra ba trạng thái được điều khiển bởi một tích số riêng, cho phép vận hành hai chiều Đặc biệt, tất cả thanh ghi đều được reset tự động khi tắt hoặc mở, và mỗi thanh ghi có khả năng “đặt trước”, hỗ trợ cho việc kiểm tra sau này.
Với sự ra mắt thường xuyên của các vi mạch mới trên thị trường, việc sử dụng phần mềm hỗ trợ trong quá trình làm việc với PLD trở nên cần thiết để đạt hiệu quả tối ưu Vào tháng 9/1983, Công ty Assisted Technology đã đáp ứng nhu cầu này.
Vào năm 1984, phiên bản 1.01a của chương trình biên dịch PLD mang tên CUPL (Universal Compiler for Programmable) đã được ra mắt, hỗ trợ cho 29 loại vi mạch và thu hút sự chú ý của nhiều công ty chế tạo Công ty Data I/O, một trong những nhà chế tạo vi mạch lập trình lớn nhất thế giới, đã quyết định phát triển phần mềm riêng cho mình Cùng năm đó, Data I/O giới thiệu ABEL (Advanced Boolean Expression Language), một chương trình biên dịch PLD tương tự như CUPL nhưng được tiếp thị mạnh mẽ, giúp ABEL nhanh chóng được các nhà thiết kế chấp nhận và cạnh tranh với CUPL trên thị trường.
Vào tháng 7 năm 1984, công ty Altera đã ra mắt vi mạch EP300, sử dụng công nghệ CMOS của EPROM Vi mạch này nổi bật với đặc tính tiêu thụ điện năng thấp, khả năng xóa bằng tia cực tím và một số tính năng mở rộng khác.
Năm 1985, công ty Lattice Semiconductor giới thiệu họ PLD mới mang tên GAL (Generic Array Logic) Sử dụng công nghệ CMOS của EEPROM, GAL có đặc tính kỹ thuật nổi bật như công suất thấp và khả năng lập trình nhiều lần, với thời gian xóa khoảng vài giây bằng điện áp Vi mạch đầu tiên trong họ GAL, GAL16V8, có khả năng thay thế hoạt động của PAL trong cùng loại vi mạch.
Vào năm 1985, công ty Xilinx giới thiệu họ sản phẩm mới mang tên LCA (Logic Call Array), bao gồm ba phần: ma trận khối logic, khối vào ra, và mạng đường dữ liệu nối gián tiếp Điểm nổi bật của LCA là nó là PLD đầu tiên sử dụng tế bào RAM động cho chức năng logic, cho phép khách hàng kiểm tra chương trình của vi mạch Tuy nhiên, do tính chất dễ xóa của LCA, cấu hình cần được lưu trữ ở bộ nhớ ngoài, điều này hạn chế khả năng sử dụng trong các trường hợp yêu cầu khởi động ngay lập tức Để hỗ trợ thiết kế, LCA đi kèm với chương trình soạn thảo XACT và bộ mô phỏng, giúp việc sửa lỗi trở nên dễ dàng hơ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
Vi mạch 501 sử dụng công nghệ lưỡng cực và được đóng vỏ 52 chân Năm 1986, công ty ExMicroelectronic đã giới thiệu dòng sản phẩm ERASIC (Erasable Application Specific 7C) với công nghệ EEPROM CMOS Vi mạch đầu tiên trong dòng sản phẩm này là XL78C00, có dạng 24 chân, đặc biệt là khả năng thay thế chức năng cho PAL và EPLA cùng loại (không tính đến tốc độ), đi kèm với phần mềm hỗ trợ ERASIC.
Vào năm 1986, công ty Signetics đã đổi tên họ IFL thành PLS (Programmable Logic From Signetics), ví dụ như 82S100 trở thành PLS100 và 82S157 thành PLS157 Hai năm sau, công ty Actel cải tiến vi mạch LCA, cho phép hoạt động mà không cần bộ nhớ ngoài Đồng thời, Gazelle Microcircuit công bố công nghệ GaAs (Gallium Arsenide), mang lại tốc độ và hiệu suất cao hơn cho các vi mạch dựa trên công nghệ silicon, giúp chúng hoạt động nhanh hơn với mức tiêu tán công suất trung bình.
Cấu trúc của thiết bị logic có thể lập trình đợc (Programmable Logic Architecture: PLA)
Cấu trúc của thiết bị logic có thể lập trình được PLA bao gồm các cổng AND, cổng OR và bộ đảo, được kết nối thông qua các chuyển mạch lập trình Trong PLA, các đầu vào và bộ đảo được dẫn đến dãy AND bằng các dây nối ngang, trong khi các dây nối dọc cung cấp tín hiệu vào cho các cổng AND Các cổng AND nhận tín hiệu qua các điểm nối, ví dụ, cổng AND bên trái nhận giá trị A và C, trong khi cổng AND bên phải nhận giá trị AB.
Dãy OR có chức năng tơng tự với dãy AND
Các dây nối ngang trong dãy OR nhận kết quả từ các cổng AND, được kết nối với các dây dọc là đầu ra của các cổng AND Những kết quả này sau đó được đưa vào đầu vào của các cổng OR Kết quả cuối cùng là tổng hợp các tích có thể được tạo ra tại từng đầu ra của PLA.
Các nhà thiết kế cũng đã đa ra một cấu trúc đơn giản hơn gọi là logic dãy có thể lập trình
Các mảng OR đợc cố định bởi các cổng
Cổng AND và cổng OR cho phép lập trình để tạo ra bất kỳ sản phẩm logic tổ hợp nào Hơn nữa, đầu ra hồi tiếp của PAL từ đầu vào dãy AND được sử dụng để xây dựng các hàm logic.
Các mạch PLA và PAL rất hiệu quả cho logic tổ hợp, nhưng không thể sử dụng cho logic tuần tự mà không cần thêm các Flip Flops bên ngoài.
Flip-Flops đợc ghép vào PAL thì mạch đợc gọi là thiết bị logic giản đơn lập trình đợc (SPLD: Simple Programmable Logic Devices) nh hình vẽ 1.3
Trong hình vẽ, các bộ dồn kênh (Multiplexer) được kết hợp với từng đầu ra để lựa chọn giữa Flip-Flop hoặc tổ hợp Các Flip-Flop, Multiplexer, cổng AND, cổng OR điều khiển từng đầu ra, được coi như một tế bào lớn (macrocell) Các model SPLD có nhiều cấu trúc mạch có thể lập trình với nhiều phương án lựa chọn, nhằm tối ưu hóa lợi ích của chip.
Các mạch PLA, PAL và SPLD được lắp đặt trên bảng mạch in (PCB) và kết nối với nhau cũng như các linh kiện khác Một lỗi nhỏ trên bảng mạch có thể yêu cầu thay thế các thiết bị logic lập trình được, trong khi lỗi lớn chỉ có thể được khắc phục bằng cách thay đổi cách kết nối giữa các chip.
To address this issue, designers have integrated several SPLDs into a single IC, resulting in the creation of Complex Programmable Logic Devices (CPLDs).
Trong FPGA, khèi x©y dựng cơ bản của FPGA là bảng tìm kiếm (LUT:
Bảng Lookup Table (LUT) tương tự như một bảng AND có thể lập trình Khi nhận các tổ hợp nhị phân đầu vào, các bit nhớ trong bộ nhớ sẽ cho ra kết quả Kết quả sẽ là 1 chỉ khi tất cả các đầu vào của LUT đều là 1.
Một bảng LUT điển hình có chỉ 4 đầu vào và một bộ nhớ nhỏ chứa 16 bit Tổ hợp nhị phân đầu vào (ví dụ
0101) sẽ hợp với địa chỉ của 1 bit nhớ riêng và tạo ra giá trị đầu ra của nó là 0 nh hình vẽ 1.4
Bất cứ hàm logic 4 đầu vào nào đều có thể xây dựng bằng cách lập trình bộ nhớ LUT với các bit thích hợp.
Những u thế của thiết kế đợc trợ giúp của máy tính và logic có thể lập trình (Computer Aided Design -
Chúng ta có thể xây dựng mạch số với hàng trăm cổng logic bằng cách sử dụng các mạch tổ hợp cỡ nhỏ (SSI) và cỡ vừa (MSI) Các IC (Integrated Circuit) được gắn lên bảng chân cắm và kết nối với nhau qua dây hoặc thông qua bảng mạch in (PCB) để đáp ứng các yêu cầu thiết kế.
Hình 1.4 : Một bảng LUT 4 đầu vào
- 16 - thiết kế Trong nhiều trờng hợp có những sai sót xảy ra hoặc một số khó khăn xảy ra nh:
Tốn nhiều thời gian thiết kế, lắp ráp, cắt, nối dây, xử lý các sai sót do thiết kế, lắp ráp có thể xảy ra
Các loại IC cần thiết không phải lúc nào cũng dễ dàng tìm thấy hoặc có giá thành hợp lý Việc mở rộng và thay đổi thiết kế trở nên khó khăn và phức tạp, vì cần phải điều chỉnh lại toàn bộ quy trình thiết kế.
Quá trình thiết kế mạch số bắt đầu bằng việc xây dựng bảng chân lý dựa trên các yêu cầu kỹ thuật đã đề ra, điều này sẽ ảnh hưởng đến việc lựa chọn dụng cụ và thiết bị Đối với các mạch tổ hợp, cần kiểm tra và tối thiểu hóa bảng chân lý để chuyển đổi thành mạch logic hiệu quả, từ đó xác định hiệu quả hoạt động của mạch.
1 Đa ra các yêu cầu kỹ thuật
2 Xác định các đầu vào, đầu ra
3 Lập bảng chân lý (Truth – Table)
4 Chuyển thành phơng trình Boolean
5 Thiết kế dùng các cổng
Hình 1.5 : Qui trình thiết kế xây dựng một mạch số
Các mạch tuần tự bao gồm thông tin trạng thái, và việc tạo bảng chuyển đổi trạng thái cùng với việc gán trạng thái là rất quan trọng Tuy nhiên, việc thực hiện các bước này một cách thủ công dễ dẫn đến lỗi Hơn nữa, các mô phỏng hoạt động của mạch thường không đầy đủ, có thể gây ra lỗi nghiêm trọng, làm cho mạch hoạt động không hoàn thiện.
Các nhà thiết kế mạch logic bắt đầu quy trình bằng cách mô tả bảng chân lý hoặc sơ đồ chuyển đổi trạng thái Sau đó, các chi tiết của mạch logic sẽ được xác định thông qua một chương trình tổng hợp logic Hoạt động của mạch logic được kiểm tra bằng chương trình mô phỏng; nếu mô phỏng chính xác, các cổng và dây nối sẽ được vẽ vào IC với các dãy cổng logic có thể lập trình Các chương trình phần mềm quyết định cách kết nối các cổng trong thiết bị để xây dựng mạch logic theo yêu cầu.
Hiện nay, máy tính không cần phải đắt tiền và phần mềm CAD giúp chúng ta thiết kế các mạch số một cách dễ dàng, giảm bớt công việc vất vả Điều này cho phép chúng ta tập trung vào việc phát triển linh kiện cho thiết kế logic Chúng ta có thể viết chương trình logic bằng ngôn ngữ mô tả phần cứng (HDL) thông qua Text Editor hoặc Schematic Editor HDL và Schematic được chương trình CAD dịch để tạo ra các mạch logic chi tiết, thực hiện các chức năng đã được xác định Một chương trình mô phỏng mạch trên PC đảm bảo mạch hoạt động chính xác, và sau đó bản thiết kế được nạp vào vi mạch số lập trình được.
Nh vậy sử dụng các chơng trình CAD và thiết bị lập trình đợc cho phÐp:
Xây dựng thiết kế nhanh hơn bởi vì đã tối thiểu hóa các công việc nh nèi d©y
Tránh đợc các lỗi lắp đặt
Các bản thiết kế đợc lu giữ dới dạng Electronics files và có thể gọi ra khi nào cần
Có thể thí nghiệm trên nhiều loại chips mà không cần sự có mặt của chúng bởi một th viện đầy đủ sẵn có
Tránh hoặc dễ dàng sửa lỗi thiết kế nếu có
Dành thời gian cho việc thiết kế các dự án lớn hơn là cần thiết, vì nhiều thủ tục phức tạp được thực hiện tự động, từ bước 4 đến bước 7 như minh họa trong hình 1.5.
Dãy các cổng logic lập trình đợc theo trờng (FPGA: Field Programmable Gate Array)
Giới thiệu
FPGA đã trở thành một phần quan trọng trong thiết kế hệ thống số, với nhiều nhà cung cấp cung cấp các cấu trúc và quy trình thiết kế đa dạng FPGA không chỉ có cấu trúc tương tự như PAL hay các linh kiện lập trình khác, mà còn gần gũi với cấu trúc gate ASIC, khiến chúng trở thành lựa chọn lý tưởng cho việc prototyping ASIC và các ứng dụng sử dụng ASIC Chẳng hạn, FPGA có thể được sử dụng trong các thiết kế cần đưa ra thị trường nhanh chóng mà không lo về chi phí, và sau đó có thể chuyển sang ASIC khi sản lượng tăng, dẫn đến giảm chi phí.
Cấu trúc của FPGA
Mỗi nhà cung cấp FPGA có cấu trúc FPGA riêng, nhng tổng quát chúng là biến thể của cấu trúc nh hình 1.6
- 19 - Để cho thuận tiện, các phần sau đợc trình bày dựa trên sản phẩm dòng Spartan của Xilinx
FPGA có hai loại phần tử lập trình đợc là static RAM và Anti- fuse
1.4.2.1 Mô tả chức năng logic (Logic Functional Description)
FPGA là một thiết bị bao gồm nhiều CLB (Configurable Logic Blocks) được sắp xếp trong một ma trận với các kênh kết nối Tín hiệu đầu vào và đầu ra được xử lý thông qua việc cấu hình các khối IOB (Input/Output Blocks) xung quanh các CLB và các kênh kết nối này.
CLBs cung cấp giao diện giữa các chân và các đờng dây tín hiệu bên trong
Các kênh kết nối cung cấp các đờng đi để kết nối giữa các đầu vào và đầu ra của các CLB và các IOB
Chức năng của mỗi khối logic trong FPGA được cấu hình theo yêu cầu thông qua chương trình các tế bào nhớ tĩnh bên trong Các giá trị được lưu trữ trong các tế bào nhớ này xác định các chức năng logic và kết nối giữa chúng.
1.4.2.2.Các khối logic có thể cấu hình đợc (CLBs: Configurable Logic Blocks)
Hình 1.6: Cấu trúc chung của FPGA
Các CLB trong FPGA thực hiện hầu hết các chức năng logic, với nguyên tắc hoạt động được minh họa trong sơ đồ hình 1.7 Mỗi CLB bao gồm ba bảng Look up (LUT) dùng để tạo hàm, hai flip flop và hai nhóm tín hiệu điều khiển các bộ chọn kênh.
Hai bộ nhớ 16x1 của các bảng "look-up" (F-LUT và G-LUT) được sử dụng để tạo ra các hàm logic 4 đầu vào, cho phép thực hiện nhiều chức năng logic khác nhau của các hàm Boole, độc lập với bốn tín hiệu đầu vào (F1-F4 hoặc G1-G4) Việc sử dụng bộ nhớ LUT đảm bảo rằng độ trễ truyền dẫn không bị ảnh hưởng bởi chức năng mà nó thực hiện.
Bộ tạo hàm thứ 3 (H LUT) với 3 đầu vào có khả năng thực hiện các chức năng của hàm Boole cho 3 đầu vào Trong số đó, hai đầu vào được điều khiển bởi các bộ chọn kênh lập trình Các đầu vào này có thể được kết nối từ các đầu ra của F-LUT hoặc G-LUT, hoặc từ các đầu vào của CLB Đầu vào thứ 3 luôn được đưa vào.
Hình 1.7 : Một CLB điển hình của FPGA dòng Spartan II
CLB có 21 đầu vào, cho phép thực hiện các chức năng từ tổ hợp 9 đầu vào, bao gồm bộ kiểm tra chẵn lẻ Ba bộ LUT trong CLB có thể được kết hợp để định nghĩa các hàm Boole cho 5 đầu vào.
Mỗi câu lạc bộ bao gồm 2 flip-flop, có khả năng hoạt động như thanh ghi để lưu trữ các đầu ra từ bộ tạo hàm Các flip-flop cùng với bộ tạo hàm có thể được sử dụng độc lập, như thể hiện trong hình 1.9.
Hình 1.9 : Sơ đồ khối chức năng của Flip-Flop trong CLB
Hình 1.8: Bộ tạo hàm 5 đầu vào
Đầu vào DIN của CLB có thể được sử dụng như một đầu vào trực tiếp cho một trong hai flip-flop H1 cũng có khả năng được đưa tới một trong hai flip-flop thông qua H LUT với độ trễ nhỏ bổ sung.
Both flip-flops share a common clock signal (CK), an enable signal (EC), and Set/Reset (SR) inputs Additionally, the internal operations of both flip-flops are controlled by a Global Initialization Signal (GSR).
Các thành phần trong CLB của Spartan II có thể được cấu hình như một bộ chốt, với hai bộ chốt chia sẻ xung nhịp (K) và các đầu vào tín hiệu xung nhịp cho phép EC.
Mỗi flip-flop có thể được kích hoạt bởi sườn dương hoặc sườn âm của xung nhịp, với đường xung nhịp trong CLB được sử dụng chung cho cả hai flip-flop Tuy nhiên, xung nhịp có thể được đảo riêng cho từng flip-flop Trong thiết kế tự động, có thể thêm một số bộ đảo trên đường xung nhịp.
Xung nhịp cho phép (EC) có mức tích cực cao và được sử dụng chung cho cả hai flip-flop trong một CLB Nếu một trong hai flip-flop bị hủy kết nối, tín hiệu EC sẽ mặc định ở trạng thái tích cực, khiến EC không thể đảo trong CLB Xung nhịp cho phép EC cần phải được đồng bộ với xung nhịp và phải đáp ứng yêu cầu về thời gian thiết lập và giữ cho thiết bị.
Đường Set/Reset (SR) là tín hiệu cận đồng bộ mức cao, điều khiển flip flop với cấu hình tùy chọn cho phép thiết lập trạng thái set và reset cho mỗi flip flop Cấu hình này không chỉ xác định trạng thái của flip-flop mà còn ảnh hưởng đến tác dụng của xung GSR trong trạng thái hoạt động bình thường, cũng như tác động của xung trên đường SR của CLB Đường SR được sử dụng chung cho cả hai flip flop.
Nếu SR không được sử dụng riêng cho flip flop, thì trạng thái Set/Reset của flip flop sẽ mặc định ở trạng thái không tích cực Trong CLB, SR không thể bị đảo.
Kiểm soát luồng tín hiệu ở CLB
Các đầu vào H LUT không chỉ điều khiển các bộ chọn kênh mà còn nhận tín hiệu kiểm soát luồng Các tín hiệu được chọn sẽ được đưa tới các đầu vào của flip-flop và kết hợp với các đầu ra CLB (X và Y).
Các tín hiệu điều khiển
Các kênh kết nối
Tất cả các kênh kết nối bên trong được cấu trúc từ các đoạn dây nối với khả năng lập trình tiếp điểm và ma trận chuyển mạch, cho phép thực hiện các kết nối mong muốn Cấu trúc phân cấp ma trận của các kênh kết nối hỗ trợ việc kết nối tự động Hình 1.14 mô tả các kênh kết nối có trong các thiết bị Spartan.
Phần mềm thực hiện tự động gán các tài nguyên cho phù hợp dựa trên mật độ và thời gian các yêu cầu kết nối
Các kênh kết nối đợc mô tả nh sau:
Các kênh kết nối ở CLB chạy dọc theo mỗi hàng và mỗi cột của mảng CLB
Các kết nối ở IOB có dạng một vòng chạy xung quanh bên ngoài của mảng CLB Nó kết nối I/O với các kênh kết nối CLB
Kết nối chung là thiết kế dành cho các mạng chủ, nhằm phân phối xung nhịp với độ trễ và độ lệch tối thiểu.
1.4.3.1 Các kênh kết nối CLB
Các kênh kết nối xung quanh CLB được phân loại thành ba kiểu: nối đơn, nối đôi và nối dây dài Mỗi kiểu kết nối này đều có vai trò quan trọng trong cấu trúc mạng, với các kênh định tuyến ngang và dọc được kiểm soát thông qua một ma trận chuyển mạch chương trình (PSM) Hình 1.14 minh họa các kênh định đường cơ bản, bao gồm nối đơn, nối đôi, nối dây dài, cùng với PSM và CLB Giao diện kết nối cơ bản thể hiện giao diện PSM trong kênh kết nối thông.
Giao diện CLB cho phép phân chia các tín hiệu đầu vào một cách linh hoạt trong bốn chiều lớn nhất Cấu trúc mạng tổng quát được thiết kế đối xứng và đồng đều.
Trong một CLB, các đầu vào, đầu ra và bộ quản lý chức năng có thể thay đổi vị trí một cách linh hoạt cho đến khi tắc nghẽn được giải quyết, dẫn đến trạng thái vận hành cân bằng Các tín hiệu bị loại trừ khi khóa (K) ở đầu vào và CIN/COUT.
Hình 1.14 : Sơ đồ khối chung của các kênh kết nối trong CLB
Đầu vào K được dành riêng cho tất cả các đường ngang, bao gồm 4 dây đơn đầu dài, trong khi các tín hiệu CIN/COUT của CLB được kết nối qua giao diện Việc kết nối này không ảnh hưởng đến cấu trúc kết nối tổng thể Các tín hiệu đầu ra từ CLB có khả năng điều khiển cả hai kênh dọc và ngang.
Các đường dây ngang và dọc, đơn và đôi giao nhau trong một hộp được chứa đựng trong một ma trận chuyển mạch chương trình Mỗi PSM bao gồm chương trình có thể lập trình được thông qua transistor, giúp thiết lập kết nối giữa các đường nh.
Khi đưa một tín hiệu đơn vào ma trận chuyển mạch, tín hiệu này có thể được định hướng tới một dây đơn ở các hướng trên, trái, dưới, hoặc các tổ hợp khác, tùy thuộc vào tổng số nhánh cần thiết Một tín hiệu có chiều dài đơn cũng có thể được định hướng tới một đường có chiều dài kép tại một hoặc tất cả ba mép khác nhau của ma trận chuyển vị có thể lập trình.
Các đờng dây nối đơn:
Các đường chiều dài đơn tạo ra kết nối linh hoạt và nhanh chóng giữa các khối kề cận Có tổng cộng 8 đường đơn dài dọc và 8 đường đơn dài ngang được tích hợp với từng CLB Những đường này được kết nối với ma trận chuyển mạch, mà ma trận này được định vị cụ thể trong từng hàng và cột của CLB.
Các đờng dây nối đôi:
H×nh 1.15: Ma trËn kÕt nèi
Đường dài đôi gồm các đoạn kim loại dài gấp đôi dây đơn, chạy qua hai CLB trước khi vào một PSM Các đoạn này được gộp trong một cặp xoắn, với PSM được đảo luân phiên qua từng đường trong các hàng và cột của CLB.
Có 4 đờng đôi ngang và bốn đờng đôi dọc đợc kết nối với từng CLB Các đờng này cung cấp sự định đờng tín hiệu nhanh hơn vợt khoảng cách trung gian, trong khi duy trì sự định đờng mềm dẻo
Các đờng dây nối dài
Các đường dây nối dài có cấu trúc lưới, bao gồm các đoạn dây dẫn kim loại kết nối theo chiều ngang hoặc chiều dọc Chúng thường được sử dụng cho các đầu ra cao, mạng tín hiệu đồng bộ thời gian, hoặc các mạng phân bố với khoảng cách dài.
Mỗi dây nối dài trong series Spartan đều được trang bị một bộ chuyển mạch độc lập có thể lập trình tại trung tâm Bộ chuyển mạch này cho phép phân chia thành hai kênh dẫn độc lập, mỗi kênh chiếm một nửa chiều rộng hoặc chiều cao của mảng.
Thiết bị Spartan được trang bị tuyến dây VersaRing xung quanh vòng I/O, cho phép khả năng trao đổi chân và thiết kế lại mà không làm ảnh hưởng đến mạch VersaRing bao gồm 8 đường đôi và 4 đường đơn, mang lại sự linh hoạt trong kết nối.
Mạng kết nối tổng thể và các bộ đệm
Spartan thiết kế các mạng tổng thể với xung clock phân tán và tín hiệu điều khiển chính xác, đảm bảo sai số tối thiểu Mỗi cột có 4 đường dây nối ngang được điều khiển từ các bộ đệm tổng thể riêng biệt, cùng với các dây nối theo chiều dọc tạo thành các kết nối nội bộ Các đường dây này có thể được truy cập từ bất kỳ 8 mạch 3 trạng thái tổng thể nào.
- 32 - chân clock của từng CLB và IOB cũng có thể bắt nguồn từ vị trí kết nối bên trong
Hình 1.16 : Phân bố mạng tổng thể của Spartan
Ngôn ngữ mô tả phần cứng VHDL (Very High Speed Intergrated Circuit Hardware
Với sự phát triển nhanh chóng của các thiết bị logic lập trình (PLD), ngôn ngữ mô tả phần cứng (HDL) như VHDL, Verilog HDL, ABEL HDL, State Machine Editor và Schematic Editor ngày càng trở nên phổ biến.
Cấu trúc của một chơng trình VHDL
Cấu trúc của một chơng trình VHDL đợc minh hoạ nh hình 2.1
Các đơn vị thiết kế là các thành phần chính của mô tả VHDL, bao gồm các đơn vị sau:
Khai th viện sử dụng
Kiến trúc của thực thÓ(Architecture )
Các tiến trình(process) Các lệnh tuần tự
Hình 2.1: Cấu trúc chung của chơng trình VHDL
Một thiết kế có thể bao gồm một vài package, khai báo entity, architecture, configuration Quan hệ giữa 4 đơn vị thiết kế này đợc minh hoạ trên hình 2.2.
Các đơn vị thiết kế trong VHDL
Gãi (Package)
Gói có mục đích chính là tổ chức các phần tử dùng chung, được chia sẻ giữa hai hoặc nhiều đơn vị thiết kế Nó hoạt động như một miền lưu trữ chung, cho phép lưu trữ dữ liệu dùng chung giữa các thực thể khác nhau.
Hình 2.2: Quan hệ giữa các đơn vị thiết kế
Một gói gồm hai phần: Phần khai báo gói và phần thân gói
Phần khai báo gói mô tả giao diện của gói và có cấu trúc cú pháp nh sau:
Package < tên của gói)> is
{ các khai báo thuộc gói} end ;
Các khai báo thuộc gói có thể là:
-Khai báo kiểu, kiểu con, tín hiệu, hằng, biệt danh
-Khai báo thành phần, chơng trình con
-Và có thể chứa các gói khác
The package declaration for data types includes a subtype for address defined as a bit_vector ranging from 24 downto 0, and a subtype for data defined as a bit_vector from 15 downto 0 It also specifies a constant named vector_table_loc of the address subtype Additionally, the package features two functions: one that converts data to an integer, named data_to_int, and another that converts an integer back to data, called int_to_data.
Phần thân của gói xác định hành vi của gói và phải có tên trùng với khai báo gói Cấu trúc mô tả phần thân gói được quy định rõ ràng.
Package body < tên của gói)> is
{ các khai báo trong thân gói} end ;
Ví dụ về thân của gói:
The package body `data_types` defines a constant `vector_table_loc` with an address value of X"FFFF00" It includes a function `data_to_int` that converts a data type to an integer, and another function `int_to_data` that converts an integer back to a data type.
Thùc thÓ (Entity)
Một thực thể VHDL bao gồm tên, các cổng và thông tin liên quan, là thành phần cơ bản trong thiết kế Mọi thiết kế đều được xây dựng bằng cách sử dụng một hoặc nhiều thực thể.
Ví dụ đơn giản của một thực thể:
Entity mux is port ( a, b, c, d : in bit; s0, s1 : in bit; x, : out bit); end mux;
Từ khoá "entity" chỉ điểm khởi đầu cho một phát biểu thực thể Thực thể có tên là mux, bao gồm 7 cổng, trong đó có 6 cổng hoạt động ở chế độ đầu vào (in) và 1 cổng ở chế độ đầu ra (out), với dữ liệu được định dạng dưới dạng bit.
Thực thể mô tả cách giao tiếp với thế giới bên ngoài, chỉ ra số port, hướng và kiểu của các port Bên trong thực thể, có thể chứa thêm nhiều thông tin khác để cung cấp cái nhìn sâu hơn về cấu trúc và chức năng của nó.
KiÕn tróc (Architecture)
Mỗi khai báo thực thể trong VHDL cần có ít nhất một kiến trúc tương ứng, cho phép khai báo nhiều kiến trúc cho cùng một thực thể Kiến trúc có thể bao gồm các khai báo về tín hiệu nội bộ, các phần tử của hệ thống, cũng như các hàm và thủ tục mô tả hoạt động của hệ thống Có hai phương pháp mô tả kiến trúc: mô hình hoạt động và mô hình cấu trúc, và một hệ thống có thể kết hợp cả hai mô tả này Cú pháp mô tả kiến trúc được quy định rõ ràng trong VHDL.
Architecture tên kiến trúc of tên thực thể is
{ phần khai báo của kiến trúc}
{Các kết cấu thực hiện đồng thời} end {tên cấu trúc}
2.3.3.1.Mô tả kiến trúc theo mô hình hoạt động
Mô hình hoạt động của hệ thống mô tả cách thức hệ thống phản ứng với các tín hiệu đầu vào và tạo ra kết quả đầu ra thông qua các câu lệnh trong ngôn ngữ lập trình bậc cao như PROCESS, WAIT, IF, CASE, và FOR-LOOP Chẳng hạn, kiến trúc của cổng NAND có thể được diễn tả bằng mô hình hoạt động tương ứng.
Architecture behaviour of nand is
Kiến trúc của phần tử NAND bao gồm một lệnh gán tín hiệu, thể hiện chức năng của nó Lệnh này được thực thi khi một trong hai cổng a hoặc b thay đổi trạng thái.
- 42 - đổi giá trị Và câu lệnh gán có độ trễ, tức là tín hiệu ở bên vế trái sẽ thay đổi tơng ứng sau thời gian trễ
2.3.3.2.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 hệ thống có thể bao gồm nhiều cấp độ, bắt đầu từ cổng logic đơn giản cho đến mô tả hoàn chỉnh của hệ thống Việc mô tả theo mô hình cấu trúc chủ yếu tập trung vào các phần tử con bên trong hệ thống và mối liên kết giữa chúng Ví dụ, mô hình cấu trúc của flip flop RS có thể được xây dựng từ hai cổng NAND.
CÊu h×nh (Configuration)
Khai báo cấu hình tương tự như việc liệt kê các phần của bản thiết kế, cho phép chỉ ra kiến trúc nào được gắn với thực thể cụ thể Điều này có nghĩa là
Cú pháp mô tả của cấu hình:
Configuration tên cấu hình of tên thực thể is
{ phần khai báo của cấu hình} for đặc tả của khối
{các phần tử của cấu hình} end for;
Ví dụ về khai báo cấu hình
The configuration muxcon1 of the multiplexer (mux) defines the netlist for components U1 and U2 as inverters, utilizing the entity WORK.myinv(version1) For components U3, U4, U5, and U6, the configuration specifies the use of AND gates through the entity WORK.myand(version1) Additionally, component U7 is designated as an OR gate, using the entity WORK.myor(version1) This structured approach outlines the distinct functionalities of each component within the mux configuration.
Các kiểu dữ liệu trong VHDL
Các đối tợng dữ liệu
Các tín hiệu đóng vai trò quan trọng trong việc kết nối các thực thể, giúp hình thành các mô hình Chúng là phương tiện thiết yếu để truyền tải thông tin dữ liệu một cách hiệu quả.
Các tín hiệu trong hệ thống có thể được khai báo ở ba phần chính: phần khai báo thực thể, khai báo kiến trúc và khai báo gói Mỗi khai báo tín hiệu sẽ có một dạng cụ thể để đảm bảo sự rõ ràng và chính xác trong việc truyền tải thông tin giữa các thực thể.
Signal tên tín hiệu {, tên tín hiệu}: kiểu tín hiệu[:= giá trị khởi tạo];
Ví dụ về khai báo tín hiệu: architecture dataflow my_circuit of is signal d,e bit; begin
concurrent statements tied together with signals d h