ĐỒ ÁN CƠ SỞ
Nghiên cứu VGA và xây dựng
ứng dụng trên kit UP2
GIỚI THIỆU ĐỀ TÀI
Đề tài này trình bày về thiết kế hệ thống xử lý ảnh Video trên FPGA
(Cyclone II) bao gồm các thành phần: Thu nhận và số hóa tín hiệu Video Analog,
xử lý ảnh Video số, hiển thị lên VGA.
Trong đề tài này ngoài Cyclone II các thành phần tích hợp trên Kit DE2 mà
ta sẽ sử dụng là: Chip mã hóa tín hiệu Video Analog ADV7181B, SDRAM
IS42S16400 để lưu trữ và xuất frame ảnh hợp lý, cổng VGA (chip ADV7123) để
hiển thị ảnh lên màn hình.
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à
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:
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.
2. CHÍP MÃ HÓA TÍN HIỆU VIDEO ADV7181B
2.1 CHỨC NĂNG VÀ DẠNG DỮ LIỆU NGÕ RA
Nguồn ảnh cần xử lý là tín hiệu analog video do DVD plalyer xuất ra. Kết
nối ngõ ra TV-Out composite của DVD Player với cổng TV-In trên Kit DE2 thì bộ
ADV7181B sẽ số hóa tín hiệu này sang chuẩn ITU - RTBT 656 là chuỗi các frame
ảnh. Mỗi điểm trong frame ảnh thu về được biểu diễn dưới dạng I(x,y) trong đó x,y
là tọa độ của pixel trên frame và I là mức xám tương ứng của pixel đó. Như vậy 1
frame ảnh thu được sẽ đươc biểu diễn dưới dạng một ma trận 2 chiều 720 x 525
với 720 là số pixel trên 1 hàng, 525 là số hàng trong 1 frame.
Chuẩn Video ITU – RBT601:
Chuẩn ITU – RBT 610/656 định nghĩa một thiết kế cho việc mã hóa một
khung bao gồm 525 (hoặc 625) line tín hiệu video tương tự thành dạng số, truyền
tín hiệu với xung clock 27MHz. Một single horizontal line có cấu trúc:
EAV BLANKING
SAV Active Video Data
EAV, BLANKING và SAV đều là các trường (field) phân biệt để đồng bộ
dữ liệu được truyền.
EAV và SAV đều là các trường 4 byte:
EAV: cho biết điểm kết thúc của Active Video Data trong line hiện hành
cũng như là điểm bắt đầu của line tiếp theo.
SAV: báo hiệu điểm bắt đầu của Active Video Data trong line hiện hành.
FFh 00h 00h XY
Byte thứ tư XY chứa thông tin về trường được truyền, tình trạng của khoảng
trống (field blanking) theo chiều dọc (Vertical) hoặc của dòng trống (line blanking)
theo chiều ngang (horizontal):
-
digital field blanking
Field 1 Start
(V=1)
Finish
(V=0)
Field 2 Start
(V=1)
Finish
Line 624 Line 1
Line 23 Line 20
Line 311 Line 264
Line 336 Line 283 (V=0)
V
-
digital field identification
Field 1 F=0
Field 2 F=1
Line 1 Line 4
Line 313 Line 266
Cách đặt giá trị các bit F,V theo trường (Field 1 hoặc 2) và tính hiệu dụng
(Active or Blanking) sẽ được hiểu rõ hơn qua bảng mô tả một frame gồm 525
………
Các trường SAV và EAV: mỗi trường dài 4 byte
Vậy trong hệ thống 525 line thì một Horizontal line sẽ bao gồm 1716 byte.
2.2 GIAO THỨC CÀI ĐẶT I2C
ADV7181B hỗ trợ một giao diện kết nối 2 dây tuần tự “a-wire serial
interface” I2C. Hai ngõ vào : dữ liệu tuần tự SDA, xung clock tuần tự SCLK mang
thông tin giữa ADV7181B với bộ điều khiển hệ thống I2C. Mỗi thiết bị tới (Slave)
sẽ được nhận ra bởi một địa chỉ duy nhất.
Các chân I2C của ADV7181B cho phép người dùng cài đặt, cấu hình bộ mã
hóa và đọc ngược lại dữ liệu VBI (vertical blank interval) bắt được. ADV7181B có
4 địa chỉ Slave cho tất cả thao tác đọc và ghi phụ thuộc vào mức logic của chân
ALSB. ALSB điều khiển bit 1 của địa chỉ Slave (Slave_address[1] ) bởi việc thay
đổi chân này có thể điều khiển được cả 2 bộ ADV7181B mà không có sự xung đột
và trở về trạng thái IDE.
Nếu các địa chỉ con tự động tăng dần rồi vượt quá giới hạn địa chỉ con cao
nhất:
Nếu đang đọc thì những giá trị chứa đựng trong thanh ghi có địa chỉ con
cao nhất sẽ được tiếp tục đọc cho đến khi Master phát 1 NACK (SDK không bị
đưa xuống mức thấp trong toàn bộ chu ky thứ 9) để chỉ rằng việc đọc kết thúc.
Nếu đang ghi thì những giá trị của byte không phù hợp sẽ không được load