Tải bản đầy đủ (.docx) (4 trang)

GIỚI THIỆU VỀ NGÔN NGỮ VHDL VÀ FPGA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (102.91 KB, 4 trang )

1. GIỚI THIỆU VỀ NGÔN NGỮ VHDL VÀ FPGA
1.1 NGÔN NGỮ VHDL
VHDL là một ngôn ngữ mô tả phần cứng (hardware description language), mô tả hành
vi của mạch điện hoặc hệ thống, từ đó mạch điện vật lý hoặc hệ thống có thể được thực thi.
VHDL là viết tắt của VHSIC Hardware Description Language. Bản thân VHSIC là viết tắt
của Very High Speed Integrated Circuits (mạch tích hợp tốc độ cao), lần đầu tiên được sáng lập
bởi United State Department of Defense trong những năm 80, sau đó tạo ra VHDL. Phiên bản
đầu tiên là VHDL 87, lần nâng cấp sau đó có tên là HDL 93. VHDL là ngôn ngữ mô tả phần cứng
nguyên gốc đầu tiên được chuẩn hóa bởi Institue of Electrical and Electronics Engineers (IEEE),
tới chuẩn IEEE 1076. Trong IEEE 1164, có một chuẩn được thêm vào là giới thiệu hệ thống
logic đa giá trị (multi-valued logic system).
Động cơ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL là một ngôn ngữ
độc lập chuẩn của các nhà công nghệ, các nhà phân phối do đó chúng có khả năng portable và
kế thừa cao (reusable). Hai ứng dụng trực tiếp chính của VHDL là trong mảng các thiết bị logic
lập trình được (Programmable Logic Devices) (bao gồm CPLDs – Complex Programmable Logic
Devices và FPGAs – Field Programmable Gate Arrays). Mỗi khi mã nguồn VHDL được viết, chúng
có thể được dùng để thực thi mạch điện trong các thiết bị lập trình được (từ Altera, Xilinx,
Almel, ..) hoặc có thể gửi đến các xưởng chế tạo các chíp ASIC. Hiện này, rất nhiều các chip
thương mại phức tạp (ví dụ như các microcontrollers ) được thiết kế dựa trên cách tiếp cận
này.
Một điều chú ý về VHDL là trái ngược với các chương trình máy tính thông thường
được thực hiện tuần tự thì các câu lệnh được thực hiện song song (concurrent). Vì lí do đó, nên
VHDL thường được coi là một mã nguồn hơn là một chương trình. Trong VHDL chỉ có các câu
lệnh đặt trong PROCESS, FUNCTION, hay PROCEDURE được thực thi tuần tự.
Một trong những tiện ích lớn của VHDL là cho phép tổng hợp mạch điện hoặc hệ thống
trong thiết bị khả lập trình (programmable devide) (PLD hoặc FPGA) hoặc trong một hệ ASIC.
1.2 FPGA
FPGA (Field Programable Gate Arrays) là một thiết bị bán dẫn bao gồm các khối logic
lập trình được gọi là "Logic Block", và các kết nối khả trình. Các khối logic có thể được lập trình
để thực hiện các chức năng của các khối logic cơ bản như AND, XOR, hoặc các chức năng kết
hợp phức tạp hơn như decoder hoặc các phép tính toán học. Trong hầu hết các kiến trúc FPGA,


các khối logic cũng bao gồm cả các phần tử nhớ. Đó có thể là các Flip-Flop hoặc những bộ nhớ
hoàn chỉnh hơn.
Các kết nối khả trình cho phép các khối logic có thể nối với nhau theo thiết kế của người
xây dựng hệ thống, giống như một bảng mạch khả trình.
Một số kiến trúc FPGA hiện nay còn có thể cho phép cấu hình lại từng phần (partial re-
configuration). Có nghĩa là cho phép một phần của thiết kế được cấu hình lại trong khi những
thiết kế khác vẫn tiếp tục hoạt động.
Một ưu điểm khác của FPGA, là người thiết kế có thể tích hợp vào đó các bộ xử lý mềm
(soft processor) hay vi xử lý tích hợp (embedded processor). Các vi xử lý này có thể được thiết kế
như các khối logic thông thường, mà mã nguồn do các hãng cung cấp, thực thi các lệnh theo
chương trình được nạp riêng biệt, và có các ngoại vi được thiết kế linh động ( khối giao tiếp
UART, vào/ra đa chức năng GPIO, thernet...). Các vi xử lý này cũng có thể được lập trình lại (re-
configurable computing) ngay trong khi đang chạy.
FPGA được ứng dụng điển hình trong các lĩnh vực như: xử lý tín hiệu số, xử lý ảnh, thị
giác máy, nhận dạng giọng nói, mã hóa, mô phỏng (emulation)...FPGA đặc biệt mạnh trong các
lĩnh vực hoặc ứng dụng mà kiến trúc của nó yêu cầu một lượng rất lớn xử lý song song, đặc biết
là mã hóa và giải mã. FPGA cũng được sử dụng trong những ứng dụng cần thực thi các thuật
toán như FFT, nhân chập (convolution), thay thế cho vi xử lý.
Hiện nay công nghệ FPGA đang được sản xuất và hỗ trợ phần mềm bởi các hãng như:
Xilinx, Altera, Actel, Atmel... Trong đó Xilinx và Altera là 2 hãng hàng đầu. Xilinx cung cấp phần
mềm miễn phí trên nền Windows, Linux, trong khi Altera cung cấp những công cụ miễn phí trên
nền Windows, Linux và Solaris.
1.2.1 KIẾN TRÚC FPGA
Hình 1.1: kiến trúc FPGA
Mỗi nhà sản xuất FPGA có riêng cấu trúc FPGA, nhưng nhìn chung cấu trúc được thể
hiện giống như trong hình bên trên. Cấu trúc FPGA bao gồm có configuration logic blocks
(CLBs), configurable I/O blocks (IOB), và programmable interconnect. Và tất nhiên, chúng có
mạch clock để truyền tín hiệu clock tới các logic block, và thêm vào đó có các logic resources
như ALUs, memory và có thể có cả decoders. Các phần tử lập trình được của FPGA có 2 dạng cơ
bản là các RAM tĩnh (Static RAM) và anti - fuses.

Configurable I/O Blocks:
Configurable Logic Blocks (CLBs) bao gồm các Look-Up Tables (LUTs) rất linh động có
chức năng thực thi các logic và các phần tử nhớ dùng như là các flip-flop hoặc các chốt (latch).
CLB thực hiện phần lớn các chức năng logic như là lưu trữ dữ liệu,..
Configurable I/O Blocks:
Input/Output Blocks (IOBs) điều khiển dòng dữ liệu giữa các chân vào ra I/O và các
logic bên trong của FPGA. Nó bao gồm có các bộ đệm vào và ra với 3 trạng thái và điều khiển
ngõ ra dạng open collector. Phần lớn là có trở kéo lên ở ngõ ra và thỉnh thoảng lại có trở kéo
xuống.IOBs hỗ trợ luồng dữ liệu 2 chiều (bidirectional data flow) và hoạt động logic 3 trạng
thái (3 state). Hỗ trợ phần lớn các chuẩn tín hiệu, bao gồm một vài chuẩn tốc độ cao, như
Double Data-Rate (DDR).
Programmable Interconnect:
Interconnect ở FPGA khác xa so với ở CPLD, tuy nhiên lại giống với của gate array ASIC. Có một
line dài được dùng để nối các CLBs quan trọng mà chúng lại ở cách xa nhau mà không gây ra
quá nhiều trễ. Chúng có thể được dùng như là các bus ở trong chip. Có các line ngắn được dùng
để liên kết các CLBs riêng rẽ nhưng đặt gần nhau. Và cũng thường có vài ma trận chuyển đổi
(switch matrices), giống như trong CPLD, nối giữa các line dài và ngắn lại với nhau theo một số
cách đặc biệt. Các chuyển đổi lập trình được (Programmable switches) bên trong chip cho phép
kết nối giữa CLBs tới các interconnect line và giữa interconnect line với các line khác và với
switch matrix. Các bộ đệm 3 trạng thái được dùng để kết nối phần lớn các CLBs với các line dài
(long line), tạo nên các bus. Các long line đặc biệt, gọi là các line clock toàn cục (global clock
lines), được thiết kế đặc biệt cho trở kháng thấp và nhờ đó mà thời gian lan truyền nhanh hơn.
Chúng được kết nối với các bộ đệm clock và với mỗi phần tử được clock trong mỗi CLB. Đó là
cách mà clock có thể phân phối bên trong FPGA.
Mạch đồng hồ (Clock Circuitry):
Các khối vào ra với bộ đệm clock high drive gọi là các clock driver, nằm rải rác xung
quanh chip. Các bộ đệm này được nối với các chân clock vào và lái các tín hiệu clock vào các
đường clock toàn cục (global clock line) như mô tả ở bên trên. Các đường clock được thiết kế
sao cho thời gian thời gian lệch nhỏ nhất và thời gian lan truyền nhanh. Thiết kế đồng bộ là yêu
cầu bắt buộc với FPGA, từ khi độ lệch tuyệt đối và trễ không được bảo đảm. Chỉ khi dùng các tín

hiệu clock từ các bộ đệm clock thì thời gian trễ tương đối và thời gian lệch mới được đảm bảo.

×