Đồ án cơ sở giới thiệu về ngôn ngữ VHDL và FPGA
Trang 1GIỚ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.
Trang 21 GI I THI U V NGÔN NG VHDL VÀ FPGA ỚI THIỆU VỀ NGÔN NGỮ VHDL VÀ FPGA ỆU VỀ NGÔN NGỮ VHDL VÀ FPGA Ề NGÔN NGỮ VHDL VÀ FPGA Ữ VHDL VÀ FPGA 1.1NGÔN NG VHDLỮ VHDL VÀ FPGA
VHDL là m t ngôn ng mô t ph n c ng (hardware descriptionột ngôn ngữ mô tả phần cứng (hardware description ữ mô tả phần cứng (hardware description ả phần cứng (hardware description ần cứng (hardware description ứ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ả phần cứng (hardware description ủa mạch điện hoặc hệ thống, từ đó mạch điện vật ạch điện hoặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật ừ đó mạch điện vật ạch điện hoặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ật lý hoặc hệ thống, từ đó mạch điện vậtc h th ng có thện hoặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật ể được thực thi.c th c thi.ực thi.
VHDL là viết t t c a VHSIC Hardware Description Language B n thânắt của VHSIC Hardware Description Language Bản thân ủa mạch điện hoặc hệ thống, từ đó mạch điện vật ả phần cứng (hardware description VHSIC là viết t t c a Very High Speed Integrated Circuits (m ch tích h p t cắt của VHSIC Hardware Description Language Bản thân ủa mạch điện hoặc hệ thống, từ đó mạch điện vật ạch điện hoặc hệ thống, từ đó mạch điện vật ợc thực thi ống, từ đó mạch điện vật đột ngôn ngữ mô tả phần cứng (hardware description cao), l n đ u tiên đần cứng (hardware description ần cứng (hardware description ược thực thi.c sáng l p b i United State Department of Defenseật ở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ữ mô tả phần cứng (hardware description ạch điện hoặc hệ thống, từ đó mạch điện vật ả phần cứng (hardware description ần cứng (hardware description ần cứng (hardware description ấp sau đó có tên là HDL 93 VHDL là ngôn ng mô t ph n c ngữ mô tả phần cứng (hardware description ả phần cứng (hardware description ần cứng (hardware description ứng (hardware description nguyên g c đ uống, từ đó mạch điện vật ần cứng (hardware description tiên được thực thi.c chu n hóa b i Institue of Electrical and Electronicsẩn hóa bởi Institue of Electrical and Electronics ởi United State Department of Defense Engineers (IEEE), t i chu n IEEE 1076 Trong IEEE 1164, có m t chu n đới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ẩn hóa bởi Institue of Electrical and Electronics ột ngôn ngữ mô tả phần cứng (hardware description ẩn hóa bởi Institue of Electrical and Electronics ược thực thi.c thêm vào là gi iới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được thi u h th ng logic đa giá tr (multi-valued logic system).ện hoặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật ị (multi-valued logic system).
Đ ng c thúc đ y c b n khi dùng VHDL (hay dùng Verilog) là VHDL làột ngôn ngữ mô tả phần cứng (hardware description ơ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL là ẩn hóa bởi Institue of Electrical and Electronics ơ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL là ả phần cứng (hardware description 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 đóột ngôn ngữ mô tả phần cứng (hardware description ữ mô tả phần cứng (hardware description ột ngôn ngữ mô tả phần cứng (hardware description ật ẩn hóa bởi Institue of Electrical and Electronics ủa mạch điện hoặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật chúng có kh năng portable và kả phần cứng (hardware description ế th a cao (reusable) Hai ng d ng tr c tiừ đó mạch điện vật ứng (hardware description ụng trực ti ực thi ếp chính c a VHDL là trong m ng các thiủa mạch điện hoặc hệ thống, từ đó mạch điện vật ả phần cứng (hardware description ết b logic l p trình đị (multi-valued logic system) ật ược thực thi.c (Programmable Logic Devices) (bao g m CPLDs – Complex Programmable Logic Devices vàồm CPLDs – Complex Programmable Logic Devices và FPGAs – Field Programmable Gate Arrays) M i khi mã ngu n VHDL đỗi khi mã nguồn VHDL được vi ồm CPLDs – Complex Programmable Logic Devices và ược thực thi.c viết, chúng có th để ược thực thi.c dùng đ th c thi m ch đi n trong các thiể ực thi ạch điện hoặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ết b l p trình đị (multi-valued logic system) ật ược thực thi.c (t Altera, Xilinx, Almel, ) ho c có th g i đừ đó mạch điện vật ặc hệ thống, từ đó mạch điện vật ể ửi đ ến các xưởi United State Department of Defenseng chế t o các chíp ASIC.ạch điện hoặc hệ thống, từ đó mạch điện vật Hi n này, r t nhiện hoặc hệ thống, từ đó mạch điện vật ấp ều các chip thươ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL làng m i ph c t p (ví d nh cácạch điện hoặc hệ thống, từ đó mạch điện vật ứng (hardware description ạch điện hoặc hệ thống, từ đó mạch điện vật ụng trực ti ư microcontrollers ) được thực thi.c thiết kế d a trên cách tiực thi ếp c n này.ật
M t điột ngôn ngữ mô tả phần cứng (hardware description ều chú ý về VHDL là trái ngược thực thi.c v i các chới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ươ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL làng trình máy tính thông thư ng được thực thi.c th c hi n tu n t thì các câu l nh đực thi ện hoặc hệ thống, từ đó mạch điện vật ần cứng (hardware description ực thi ện hoặc hệ thống, từ đó mạch điện vật ược thực thi.c th c hi n song songực thi ện hoặc hệ thống, từ đó mạch điện vật (concurrent) Vì lí do đó, nên VHDL thư ng được thực thi.c coi là m t mã ngu n h n làột ngôn ngữ mô tả phần cứng (hardware description ồm CPLDs – Complex Programmable Logic Devices và ơ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL là m t chột ngôn ngữ mô tả phần cứng (hardware description ươ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL làng trình Trong VHDL ch có các câu l nh đ t trongỉ có các câu lệnh đặt trong ện hoặc hệ thống, từ đó mạch điện vật ặc hệ thống, từ đó mạch điện vật PROCESS, FUNCTION, hay PROCEDURE được thực thi.c th c thi tu n t ực thi ần cứng (hardware description ực thi.
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ột ngôn ngữ mô tả phần cứng (hardware description ữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ủa mạch điện hoặc hệ thống, từ đó mạch điện vật ổng hợp mạch điện ợc thực thi ạch điện hoặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ho c h th ng trong thiặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật ết b kh l p trình (programmable devide) (PLD ho cị (multi-valued logic system) ả phần cứng (hardware description ật ặc hệ thống, từ đó mạch điện vật FPGA) ho cặc hệ thống, từ đó mạch điện vật trong m t h ASIC.ột ngôn ngữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật
1.2 FPGA
Trang 3FPGA (Field Programable Gate Arrays) là m t thiột ngôn ngữ mô tả phần cứng (hardware description ết b bán d n bao g mị (multi-valued logic system) ẫn bao gồm ồm CPLDs – Complex Programmable Logic Devices và các kh i logic l p trình đống, từ đó mạch điện vật ật ược thực thi.c g i là "Logic Block", và các kọi là "Logic Block", và các k ết n i kh trình Cácống, từ đó mạch điện vật ả phần cứng (hardware description kh i logic có th đống, từ đó mạch điện vật ể ược thực thi ậtc l p trình đ th c hi n các ch c năng c a các kh i logicể ực thi ện hoặc hệ thống, từ đó mạch điện vật ứng (hardware description ủa mạch điện hoặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật c b n nh AND, XOR, ho c các ch c năng kơ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL là ả phần cứng (hardware description ư ặc hệ thống, từ đó mạch điện vật ứng (hardware description ết h p ph c t p h n nh decoderợc thực thi ứng (hardware description ạch điện hoặc hệ thống, từ đó mạch điện vật ơ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL là ư ho c các phép tính toán h c Trong h u hặc hệ thống, từ đó mạch điện vật ọi là "Logic Block", và các k ần cứng (hardware description ết các kiến trúc FPGA, các kh i logicống, từ đó mạch điện vật 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ồm CPLDs – Complex Programmable Logic Devices và ả phần cứng (hardware description ần cứng (hardware description ửi đ ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ể ặc hệ thống, từ đó mạch điện vật ữ mô tả phần cứng (hardware description ột ngôn ngữ mô tả phần cứng (hardware description ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được hoàn ch nh h n.ỉ có các câu lệnh đặt trong ơ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL là
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 ống, từ đó mạch điện vật ả phần cứng (hardware description ống, từ đó mạch điện vật ể ống, từ đó mạch điện vật ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được thiết kế c a ngủa mạch điện hoặc hệ thống, từ đó mạch điện vật ư i xây d ng h th ng, gi ng nh m t b ng m ch kh trình.ực thi ện hoặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật ống, từ đó mạch điện vật ư ột ngôn ngữ mô tả phần cứng (hardware description ả phần cứng (hardware description ạch điện hoặc hệ thống, từ đó mạch điện vật ả phần cứng (hardware description
M t s kiột ngôn ngữ mô tả phần cứng (hardware description ống, từ đó mạch điện vật ến trúc FPGA hi n nay còn có th cho phép c u hình l i t ngện hoặc hệ thống, từ đó mạch điện vật ể ấp ạch điện hoặc hệ thống, từ đó mạch điện vật ừ đó mạch điện vật ph n (partial re-configuration) Có nghĩa là cho phép m t ph n c a thiần cứng (hardware description ột ngôn ngữ mô tả phần cứng (hardware description ần cứng (hardware description ủa mạch điện hoặc hệ thống, từ đó mạch điện vật ết kế được thực thi ấpc c u hình l i trong khi nh ng thiạch điện hoặc hệ thống, từ đó mạch điện vật ữ mô tả phần cứng (hardware description ết kế khác v n tiẫn bao gồm ếp t c ho t đ ng.ụng trực ti ạch điện hoặc hệ thống, từ đó mạch điện vật ột ngôn ngữ mô tả phần cứng (hardware description
M t u đi m khác c a FPGA, là ngột ngôn ngữ mô tả phần cứng (hardware description ư ể ủa mạch điện hoặc hệ thống, từ đó mạch điện vật ư i thiết kế có th tích h p vào đó cácể ợc thực thi b x lý một ngôn ngữ mô tả phần cứng (hardware description ửi đ ềm (soft processor) hay vi x lý tích h p (embedded processor) Cácửi đ ợc thực thi vi x lý này có th đửi đ ể ược thực thi.c thiết kế nh các kh i logic thông thư ống, từ đó mạch điện vật ư ng, mà mã ngu nồm CPLDs – Complex Programmable Logic Devices và do các hãng cung c p, th c thi các l nh theo chấp ực thi ện hoặc hệ thống, từ đó mạch điện vật ươ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL làng trình được thực thi.c n p riêng bi t,ạch điện hoặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật và có các ngo i vi đạch điện hoặc hệ thống, từ đó mạch điện vật ược thực thi.c thiết kế linh đ ng ( kh i giao tiột ngôn ngữ mô tả phần cứng (hardware description ống, từ đó mạch điện vật ếp UART, vào/ra đa ch cứng (hardware description năng GPIO, thernet ) Các vi x lý này cũng có th đửi đ ể ược thực thi.c l p trình l i (re-ật ạch điện hoặc hệ thống, từ đó mạch điện vật configurable computing) ngay trong khi đang ch y.ạch điện hoặc hệ thống, từ đó mạch điện vật
FPGA được thực thi ứng (hardware descriptionc ng d ng đi n hình trong các lĩnh v c nh : x lý tín hi u s ,ụng trực ti ể ực thi ư ửi đ ện hoặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật x lý nh, th giác máy, nh n d ng gi ng nói, mã hóa, mô ph ngửi đ ả phần cứng (hardware description ị (multi-valued logic system) ật ạch điện hoặc hệ thống, từ đó mạch điện vật ọi là "Logic Block", và các k ỏng (emulation) FPGA đ c bi t m nh trong các lĩnh v c ho c ng d ng mà kiặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ạch điện hoặc hệ thống, từ đó mạch điện vật ực thi ặc hệ thống, từ đó mạch điện vật ứng (hardware description ụng trực ti ến trúc c a nó yêu c u m t lủa mạch điện hoặc hệ thống, từ đó mạch điện vật ần cứng (hardware description ột ngôn ngữ mô tả phần cứng (hardware description ược thực thi.ng r t l n x lý song song, đ c biấp ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ửi đ ặc hệ thống, từ đó mạch điện vật ết là mã hóa và gi i mã FPGA cũng đả phần cứng (hardware description ược thực thi ửi đ ụng trực tic s d ng trong nh ng ng d ng c n th c thi cácữ mô tả phần cứng (hardware description ứng (hardware description ụng trực ti ần cứng (hardware description ực thi thu tật toán nh FFT, nhân ch pư ật (convolution), thay thế cho vi x lý.ửi đ
Hi n nay công ngh FPGA đang đện hoặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ược thực thi ả phần cứng (hardware descriptionc s n xu t và h tr ph n mấp ỗi khi mã nguồn VHDL được vi ợc thực thi ần cứng (hardware description ềm b iởi United State Department of Defense 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ần cứng (hardware description ấp ần cứng (hardware description ềm mi n phí trên nễ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ấp ữ mô tả phần cứng (hardware description ụng trực ti ễn phí trên n ền Windows, Linux và Solaris.
1.2.1 KI N TRÚC FPGAẾN TRÚC FPGA
Trang 4Hình 1.1: ki n trúc FPGAế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ỗi khi mã nguồn VHDL được vi ả phần cứng (hardware description ấp ấp ư ấp trúc được thực thi.c th hi n gi ng nh trong hình bên trên C u trúc FPGA bao g m cóể ện hoặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật ư ấp ồm CPLDs – Complex Programmable Logic Devices và configuration logic blocks (CLBs), configurable I/O blocks (IOB), và programmable interconnect Và t t nhiên, chúng có m ch clock đ truyấp ạch điện hoặc hệ thống, từ đó mạch điện vật ể ền tín hi u clock t i các logic block, và thêm vào đó có các logic resources nh ALUs,ện hoặc hệ thống, từ đó mạch điện vật ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ư memory và có th có c decoders Các ph n t l p trình để ả phần cứng (hardware description ần cứng (hardware description ửi đ ật ược thực thi.c c a FPGA có 2ủa mạch điện hoặc hệ thống, từ đó mạch điện vật d ng c b n là các RAM tĩnh (Static RAM) và anti - fuses.ạch điện hoặc hệ thống, từ đó mạch điện vật ơ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL là ả phần cứng (hardware description
Configurable I/O Blocks:
Configurable Logic Blocks (CLBs) bao g m các Look-Up Tables (LUTs) r tồm CPLDs – Complex Programmable Logic Devices và ấp 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ột ngôn ngữ mô tả phần cứng (hardware description ứng (hardware description ực thi ần cứng (hardware description ửi đ ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn đượ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ặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật ực thi ện hoặc hệ thống, từ đó mạch điện vật ần cứng (hardware description ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ứng (hardware description ư là l u tr d li u, ư ữ mô tả phần cứng (hardware description ữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật
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ể ữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật ữ mô tả phần cứng (hardware description 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ủa mạch điện hoặc hệ thống, từ đó mạch điện vật ồm CPLDs – Complex Programmable Logic Devices và ột ngôn ngữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được tr ng thái và điạch điện hoặc hệ thống, từ đó mạch điện vật ều khi n ngõ ra d ng open collector Ph n l n là có tr kéo lên ể ạch điện hoặc hệ thống, từ đó mạch điện vật ần cứng (hardware description ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ởi United State Department of Defense ởi United State Department of Defense
Trang 5ngõ ra và th nh tho ng l i có tr kéo xu ng.IOBs h tr lu ng d li u 2 chiỉ có các câu lệnh đặt trong ả phần cứng (hardware description ạch điện hoặc hệ thống, từ đó mạch điện vật ởi United State Department of Defense ống, từ đó mạch điện vật ỗi khi mã nguồn VHDL được vi ợc thực thi ồm CPLDs – Complex Programmable Logic Devices và ữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật ều (bidirectional data flow) và ho t đ ng logic 3 tr ng thái (3 state) H tr ph nạch điện hoặc hệ thống, từ đó mạch điện vật ột ngôn ngữ mô tả phần cứng (hardware description ạch điện hoặc hệ thống, từ đó mạch điện vật ỗi khi mã nguồn VHDL được vi ợc thực thi ần cứng (hardware description 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-ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ẩn hóa bởi Institue of Electrical and Electronics ện hoặc hệ thống, từ đó mạch điện vật ồm CPLDs – Complex Programmable Logic Devices và ột ngôn ngữ mô tả phần cứng (hardware description ẩn hóa bởi Institue of Electrical and Electronics ống, từ đó mạch điện vật ột ngôn ngữ mô tả phần cứng (hardware description ư 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ởi United State Department of Defense ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ởi United State Department of Defense ạch điện hoặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ủa mạch điện hoặc hệ thống, từ đó mạch điện vật array ASIC Có m t line dài đột ngôn ngữ mô tả phần cứng (hardware description ược thực thi.c dùng đ n i các CLBs quan tr ng mà chúng l iể ống, từ đó mạch điện vật ọi là "Logic Block", và các k ạch điện hoặc hệ thống, từ đó mạch điện vật
cách xa nhau mà không gây ra quá nhi
ởi United State Department of Defense ều tr Chúng có th đễn phí trên n ể ược thực thi.c dùng nh làư các bus trong chip Có các line ng n đởi United State Department of Defense ắt của VHSIC Hardware Description Language Bản thân ược thực thi.c dùng đ liên kể ết các CLBs riêng rẽ nh ng đ t g n nhau Và cũng thư ặc hệ thống, từ đó mạch điện vật ần cứng (hardware description ư ng có vài ma tr n chuy n đ i (switchật ể ổng hợp mạch điện matrices), gi ng nh trong CPLD, n i gi a các line dài và ng n l i v i nhau theoống, từ đó mạch điện vật ư ống, từ đó mạch điện vật ữ mô tả phần cứng (hardware description ắt của VHSIC Hardware Description Language Bản thân ạch điện hoặc hệ thống, từ đó mạch điện vật ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được m t s cách đ c bi t Các chuy n đ i l p trình đột ngôn ngữ mô tả phần cứng (hardware description ống, từ đó mạch điện vật ặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ể ổng hợp mạch điện ật ược thực thi.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ống, từ đó mạch điện vật ữ mô tả phần cứng (hardware description ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ữ mô tả phần cứng (hardware description interconnect line v i các line khác và v i switch matrix Các b đ m 3 tr ng tháiới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ột ngôn ngữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật ạch điện hoặc hệ thống, từ đó mạch điện vật được thực thi.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ống, từ đó mạch điện vật ần cứng (hardware description ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ạch điện hoặc hệ thống, từ đó mạch điện vật bus Các long line đ c bi t, g i là các line clock toàn c c (global clock lines), đặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ọi là "Logic Block", và các k ụng trực ti ược thực thi.c thiết kế đ c bi t cho tr kháng th p và nh đó mà th i gian lan truyặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ởi United State Department of Defense ấp ền nhanh h n Chúng đơ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL là ược thực thi.c kết n i v i các b đ m clock và v i m i ph n t đống, từ đó mạch điện vật ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ột ngôn ngữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ỗi khi mã nguồn VHDL được vi ần cứng (hardware description ửi đ ược thực thi.c clock trong m i CLB Đó là cách mà clock có th phân ph i bên trong FPGA.ỗi khi mã nguồn VHDL được vi ể ống, từ đó mạch điện vật
M ch đ ng h (Clock Circuitry):ạch đồng hồ (Clock Circuitry):ồ án cơ sởồ án cơ sở
Các kh i vào ra v i b đ m clock high drive g i là các clock driver,ống, từ đó mạch điện vật ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ột ngôn ngữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật ọi là "Logic Block", và các k n mằm r i rác xung quanh chip Các b đ m này đả phần cứng (hardware description ột ngôn ngữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật ược thực thi.c n i v i các chân clock vào và láiống, từ đó mạch điện vật ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được các tín hi u clock vào các đện hoặc hệ thống, từ đó mạch điện vật ư ng clock toàn c c (global clock line) nh mô t ụng trực ti ư ả phần cứng (hardware description ởi United State Department of Defense bên trên Các đư ng clock được thực thi.c thiết kế sao cho th i gian th i gian l ch nhện hoặc hệ thống, từ đó mạch điện vật ỏng nh t và th i gian lan truyấp ền nhanh Thiết kế đ ng b là yêu c u b t bu c v iồm CPLDs – Complex Programmable Logic Devices và ột ngôn ngữ mô tả phần cứng (hardware description ần cứng (hardware description ắt của VHSIC Hardware Description Language Bản thân ột ngôn ngữ mô tả phần cứng (hardware description ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được FPGA, t khi đ l ch tuy t đ i và tr không đừ đó mạch điện vật ột ngôn ngữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ống, từ đó mạch điện vật ễn phí trên n ược thực thi.c b o đ m Ch khi dùng các tínả phần cứng (hardware description ả phần cứng (hardware description ỉ có các câu lệnh đặt trong hi u clock t các b đ m clock thì th i gian tr tện hoặc hệ thống, từ đó mạch điện vật ừ đó mạch điện vật ột ngôn ngữ mô tả phần cứng (hardware description ện hoặc hệ thống, từ đó mạch điện vật ễn phí trên n ươ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL làng đ i và th i gian l ch m iống, từ đó mạch điện vật ện hoặc hệ thống, từ đó mạch điện vật ới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được được thực thi.c đ m b o.ả phần cứng (hardware description ả phần cứng (hardware description
2 CHÍP MÃ HÓA TÍN HIỆU VIDEO ADV7181B2.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ộ
Trang 6ADV7181B 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:
EAVBLANKINGSAVActive 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.
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):
- Lên mức cao khi ở vertical field blanking interval - Xuống mức thấp ở các trường hợp khác.
Trang 74 H - Nếu là trường SAV thì ở mức 0 Horizontal Blanking Status bit: - Nếu là trường EAV thì ở mức 1
Các Protecction bit thì dùng để kiểm tra và sửa lỗi phụ thuộc vào các bít F,V,H nhưng khi nhận Video Stream ta có thể bỏ qua các bit này nên ta không xét đến.
Ý nghĩa của các bit F và V là để đảm bảo sự đồng bộ các horizontal line trong một frame theo chiều dọc:
Trang 8Cá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 horizontal line sau :
Field 1 (F=0) : 262 line từ line 4 đến line 265; Field 2(F=1) : 263 line từ line
266 đến line 3
Active or Blanking : các Active video data và các Vertical Blanking Interval
được sắp xếp xen kẽ nhau :
Active portion (V=0) Odd Field : 244 line từ 20->263; Even Field: 243 line từ
Trang 9Một horizontal line tín hiệu sẽ gồm các thành phần sau:
Blanking: trong suốt thời gian truyền tín hiệu Video, ở giữa các Active video
signal Segments sẽ là các horizontal blanking interval Giá trị của các byte trong trường này sẽ phải phù hợp với các cấp độ (level) của các tín hiệu Cb, Cr và Y tương ứng theo quy tắc sau: Cb = 80h; Y = 10h; Cr = 80h ta có chuỗi byte : 80h, 10h, 80h,… 80h,10h
Tùy vào số line tín hiệu mà chuỗi này sẽ bao gồm 268 byte (khung 525 line) hoặc là 280 byte (khung 625 line).
Active Video Data: Có tất cả 1440 byte chứa đựng các thông tin về ảnh: 720
giá trị Y (luminace-brightness); 360 giá trị Cr (red chrominace); 360 giá trị Cb (blue chromiance) được sắp xếp theo từng nhóm cứ một Cb và Cr thì có 2 giá trị Y: CbYnCrYn+1 tạo thành chuỗi:
Cb0Y0Cr0Y1Cb1Y2Cr1Y3…… … Cb359Y718Cr359Y719 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ùng địa chỉ Slave Bit thấp nhất của địa chỉ Slave( LSB hay là Slave_address[0] ) quyết định thao tác ghi hay đọc: mức 1 đọc và mức 0 thì ghi Ở đây ta chỉ sử dụng 1 bộ ADV7123, giao thức I2C chủ yếu dùng để nạp dữ liệu cho các thanh ghi nên chọn địa chỉ Slave cho chip mã hóa này là 0x40h từ bảng giá trị địa chỉ I2C Slave dưới đây:
Trang 10Để điều khiển thiết bị trên Bus thì phải có một giao thức đặc biệt đi kèm Đầu tiên Master sẽ khởi động truyền dữ liệu bằng việc thiết lập điều kiện bắt đầu (SDA từ 1 xuống 0 trong khi SCLK vẫn ở mức cao) ở đây ta gọi là START, nó ám chỉ rằng theo sau đó là một luồng địa chỉ hay dữ liệu Các ngoại vi đáp trả lại START và dịch chuyển 8 bit tiếp theo (7 bit địa chỉ và 1 bit đọc/ghi), các bit này được truyền từ bit cao (MSB) đến thấp (LSB) Các ngoại vi khi đã nhận ra các địa chỉ được truyền thì đáp ứng bằng cách giữ SDA = 0 trong toàn bộ chu kỳ thứ 9 của xung clock gọi là ACK Các thiết bị khác thì sẽ rút khỏi bus tại điểm này và bảo toàn trạng thái IDE (khi cả SDA và SCLK đều ở mức cao để cho các thiệt bị theo dõi 2 line này, chờ START và địa chỉ được truyền đúng) Bit đọc/ghi chỉ ra hướng của dữ liệu, LSB = 0/1 thì master ghi/đọc thông tin vào/từ ngoại vi.
ADV7181B hoạt động như thiết bị Slave tiêu chuẩn trên Bus, chứa 196 địa chỉ con (Subaddress là độ lệch của địa chỉ cần thao tác với địa chỉ thiết bị) để cho phép truy cập các thanh ghi nội Điều đó giải thích rằng byte đầu tiên là địa chỉ của thiết bị và byte thứ 2 là địa chỉ con đầu tiên Các địa chỉ con này tự động tăng dần cho phép truy đọc/ghi ở địa chỉ con bắt đầu Sự truyền dữ liệu thì luôn bị ngắt bởi điều kiện dừng (STOP) Người dùng có thể truy cập tới bất cứ duy nhất 1 thanh ghi ở địa chỉ con trên cơ sở 1-1 khi không có sự cập nhật toàn bộ các thanh ghi Ở đề tài này ta không sử dụng chế độ cập nhật toàn bộ mà chỉ truy cập vào các thanh ghi cần thiết ở các địa chỉ con trên cơ sở 1-1.
START và STOP có thể xuất hiện ở bất kì đâu trong sự truyền dữ liệu, nếu các điều kiện này được khẳng định ở ngoài chuỗi liên tục với các thao tác đọc và ghi thông thường, thì nó tác động làm bus trở về trạng thái IDE Nếu địa chỉ người dùng phát ra không phù hợp (invalid) thì ADV7181B sẽ không gửi xác nhận ACK 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:
Trang 11 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.
Hình 2.1: Truyền dữ liệu trên bus và chuỗi đọc và ghi tuần tự với giao thức I2C
ngoại trừ các địa chỉ con, chúng chỉ được ghi, chúng chỉ ra các thanh ghi mà tác vụ đọc hay ghi tiếp theo truy cập đến Mọi sự giao tiếp với phần này thông qua Bus START với một sự truy cập các thanh ghi này Các thao tác ghi hay đọc sẽ được thực hiện từ địa chỉ đích, rồi tăng lên địa chỉ tiếp theo đến khi một lệnh STOP trên Bus được thực thi.
Lập trình các thanh ghi: cấu hình cho từng thanh ghi, thanh ghi giao tiếp gồm 8 bit chỉ được ghi Sau khi thanh ghi này được truy cập trên Bus và một thao tác đọc/ghi được lựa chọn, các địa chỉ con được cài đặt chỉ ra các thanh ghi mà tác vụ sẽ đặt tới.
chỉ ra địa chỉ bắt đầu được yêu cầu.
vậy nó phải được phân phối trên ít nhất 2 thanh ghi của I2C:
Khi một thông số được thay đổi bởi 2 lần ghi thì nó có thể giữ giá trị không phù hợp (invalid) trong khoảng thời gian lần đầu và lần cuối I2C được hoàn thành, có nghĩa là các bit đầu của nó có thể mang giá trị mới trong khi các bit còn lại vẫn giữ giá tri cũ.
Trang 12Để tránh sai sót này chuỗi I2C sẽ giữ các bit giá trị cập nhật của các thông số trong bộ nhớ cục bộ, và các bit của chuỗi I2C được cập nhật với nhau một lần khi tác vụ ghi vào thanh ghi cuối cùng hoàn thành.
Tác vụ hợp lý trên chuỗi I2C sẽ dựa trên cơ sở sau: các thanh ghi dành cho chuỗi I2C sẽ được ghi theo thứ tự tăng dần địa chỉ các thanh ghi Ví dụ: HSB[10:0] thì ghi lên 0x34 trước rồi ngay lập tức ghi thêm vào 0x35.
3 SDRAM IS42S16400
SDRAM IS42S16400 có tất cả 67180864 bit SDRAM được tổ chức thành 4 dải (BANK) nhớ, mỗi dải có dung lượng 1024576 từ (Words) 16 bit với tốc độ truyền dữ liệu có thể lên đến 133MHz.
3.1 NGUYÊN TẮC HOẠT ĐỘNG
Thực hiện việc truyền dữ liệu qua các chân địa chỉ và dữ liệu dưới sự chi phối của các chân diều khiển:
CKE cho phép xung clock Khi tín hiệu này ở mức thấp, chip xử lý giống
như là xung clock hoàn toàn bị dừng lại.
/CS lựa chọn chip: ở mức cao, thì bỏ qua tất cả các đầu vào khác (ngoại
trừ CKE), và hoạt động như một lệnh NOP nhận được.
DQM mặt nạ dữ liệu: Khi cao, những tín hiệu này khống chế dữ liệu
vào/ra Khi đi kèm với sự viết, dữ liệu không thật sự viết vào Khi dữ liệu được giữ ở mức trong hai chu kỳ trước một chu kỳ đọc, việc đọc không được đưa ra từ chip Trên một chip nhớ x16 hay DIMM, với 1 từ 8 bit thì có một hàng DQM.
/RAS Row Address Strobe là bit điều khiển cho qua địa chỉ hàng.
/CAS Column Address Strobe bit điều khiển cho qua địa chỉ cột.
/WE Write enable cho phép ghi.
Các tín hiệu /RAS, /CAS, /WE dùng để lựa chọn 1 trong 8 lệnh Nói chung thì
dùng để phân biệt các lệnh đọc, ghi.
SDRAM bên trong được chia thành trong 2 hay 4 dải (Bank) dữ liệu nội độc lập bên trong Một hoặc hai địa chỉ vào của dải (Bank) BA0 và BA1 sẽ lựa chọn Bank mà lệnh tác động đến.
Phần lớn các lệnh đều sử dụng địa chỉ được đưa vào ngõ vào địa chỉ Nhưng có một số lệnh lại không sử dụng chúng, hay chỉ biểu diễn một địa chỉ cột, vì vậy ta sử dụng A[10] để lựa chọn những phương án.
Bảng 1: Các chế độ truy cập SDRAM
Trang 13/CS/RAS/CAS/WEBanA10AnLệnh đọc khối hay ghi khối khi đang thực
Đọc với Precharge ( nạp lại ) tự động: khi thực hiện xong
Ghi với sự nạp lại tự động: khi thực hiện xong thì nạp lại (Precharge) tức
Precharge all (nạp lại toàn bộ): Ngưng
Trang 14thanh ghi): A[9:0] được nạp để cấu hoặc 8 chu kỳ).
Sự tương tác các tín hiệu điều khiển SDRAM:
Không có lệnh nào luôn được cho phép:
Lệnh chế độ nạp các thanh ghi (load mode register command) yêu cầu tất cả các dải (Bank) ở trạng thái IDE, và phải trì hoãn về sau cho sự thay đổi để tác động
Lệnh tự động làm tươi (auto refresh command) thì yêu cầu tất cả các dải (Bank) ở trạng thái IDE, và mất 1 khoảng thời gian làm tươi để đưa Chip về trạng thái IDE: thường là trcd + trp
Chỉ có những lệnh khác thì cho phép trên một Bank IDE là các lệnh kích hoạt Cần phải mất trcd trước khi hàng được mở hoàn toàn và chấp nhận một lệnh đọc hay ghi
Khi một dải (Bank) được mở thì có 4 lệnh được cho phép: đọc, ghi, kết thúc truyền khối (Burst terminal), nạp lại (precharge) Lệnh đọc, ghi bắt đầu truyền khối và có thể bị ngắt bởi những ngắt sau:
Ngắt một đọc khối dữ liệu:
Sau một lệnh đọc thì bất cứ lúc nào cũng có thể có một trong các lệnh: đọc, kết thúc truyền khối, hoặc là nạp được phát ra Và sẽ ngắt đọc khối này nếu có một ngầm định CAS được cấu hình Nếu có 1 lệnh đọc ở thời điểm 0, 1 lệnh đọc khác ở chu kỳ 2, ngầm định CAS ở chu kỳ 3 thì lệnh đọc đầu tiên sẽ truyền khối dữ liệu ra ngoài ở chu kỳ 3 và 4, và kết quả của lệnh đọc thứ 2 sẽ bắt đầu xuất hiện ở chu kỳ 5.
Nếu lệnh ở chu kỳ 2 là kết thúc truyền khối hoặc là nạp lại Bank kích hoạt thì không có dữ liệu ra ở chu kỳ 5.
Trang 15Mặc dù việc ngắt lệnh đọc có thể xuất hiện ở một Bank bất kỳ , nhưng lệnh nạp lại chỉ ngắt việc đọc khối nếu nó tác động trên cùng một Bank hoặc tất cả các Bank, nếu lệnh này hướng đến một Bank khác thì việc đọc khối vẫn tiếp tục.
Sự ngắt đọc tạo ra bởi một lệnh ghi thì cũng có thể nhưng sẽ khó khăn hơn Thực hiên điều này nhờ vào một tín hiệu DQM để khống chế ngõ ra của SDRAM, vì vậy trong khoảng thời gian này, chíp điều khiển bộ nhớ có thể lái dữ liệu đi qua chân DQ để ghi vào SDRAM Vì tác động của DQM trên lệnh đọc thì bị trì hoãn 2 chu kỳ trong khi đối với lệnh đọc thì ngay lập tức, nên DQM phải lên mức cao (raised) sớm hơn 2 chu kỳ trước khi có lệnh ghi.
Để thực hiện điều này trong 2 chu kỳ thì yêu cầu định vị thời điểm SDRAM tắt ngõ ra tại 1 cạnh lên xung Clock và thời điểm dữ liệu được cung cấp (cho lệnh ghi ) như ngõ vào của SDRAM ở cạnh tiếp theo của Clock.
Một ngắt ghi khối dữ liệu:
Bất kỳ lệnh đọc, ghi, hay kết thúc truyền tới một Bank bất kỳ sẽ kết thúc (dừng) việc ghi khối ngay lập tức, dữ liệu trên chân DQ khi lệnh thứ 2 được phát thì chỉ do lệnh này sử dụng.
Ngắt ghi khối với lệnh precharge (đến cung một Bank) thì khá phức tạp Đó là thời gian viết nhỏ nhất, twr phải được lướt qua giữa tác vụ ghi sau cùng tới 1 Bank (chu kỳ không bị che (unmasked) cuối cùng của ghi khối) với lệnh precharge kế tiếp, vì vậy một ghi khối sẽ bị dừng (hủy) bởi lệnh tích nạp (pre-charge) nếu có đủ chu kỳ kéo dài được che đi (dùng DQM) để tạo twr cần thiết Một lệnh ghi với sự tích nạp tự động chứa đựng một trì hoãn tự động.
Ngắt một lệnh tích nạp tự động:
Việc xử lý sự gián đoạn của thao tác đọc, ghi với chế độ tích nạp tự động là một đặc tính lựa chọn của SDRAM, và được hỗ trợ rất nhiều Nếu được sử dụng, sự tích nạp hay thời gian chờ twr theo sau bởi sự tích nạp (sau khi đọc) bắt đầu cùng một chu kỳ như một lệnh ngắt.
Sắp xếp truyền khối SDRAM:
Một bộ vi xử lý hiện đại có bộ đệm nói chung sẽ truy nhập bộ nhớ trong những đơn vị của line bộ đệm Ví dụ để truyền 64 byte, line bộ đệm yêu cầu 8 sự truy cập liên tiếp tới một DIMM (dual in-line memory module: module nhớ có hai hàng chân) 64bit, mà toàn bộ có thể được kích khởi bởi một lệnh đơn đọc hay ghi tùy vào sự cấu hình các chíp SDRAM.
Trang 16Sự truy cập line đệm điển hình được kích khởi bởi một sự đọc từ một địa chỉ đặc biệt, và SDRAM cho phép " từ có tính chất quyết định " của line đệm sẽ được truyền đầu tiên ("từ " ở đây có nghĩa là chiều rộng (của) chíp SDRAM hay DIMM, 64 bít với một DIMM tiêu biểu).
Chíp SDRAM hỗ trợ hai giao thức để sắp xếp các từ còn lại trong line đệm: - Chế độ truyền khối đan xen: làm cho các tính toán của con người thêm phức tạp nhưng lại dễ dàng tổng hợp phần cứng hơn và được ưu tiên với các bộ vi xử lý Intel Ta không sử dụng kiểu truyền này.
- Chế độ truyền khối tuần tự: những từ trễ hơn được truy cập trong việc tăng dần địa chỉ, khi kết thúc thì quay trở lại điểm bắt đầu khối Chẳng hạn, với một tuyền khối có chiều dài là 4, và địa chỉ cột được yêu cầu là 5, những từ sẽ truy cập theo thứ tự 5-6-7-4 Nếu chiều dài truyền khối là 8, thứ tự truy cập là 5-6-7-0-1-2-3-4 Điều này được thực hiện bởi việc thêm một bộ đếm địa chỉ cột, và bỏ qua số nhớ khi đi hết khối.
Ta có thể lựa chọn chiều dài khối và kiểu truy cập khối bằng cách sử dụng chế độ thanh ghi được mô tả phần tiếp theo.
Chế độ thanh ghi của SDRAM:
Tốc độ dữ liệu đơn SDRAM có một chế độ thanh ghi 10 bít đơn lập trình được Sau đó chuẩn SDRAM tốc độ dữ liệu kép SDRAM bổ sung thêm chế độ thanh ghi, định địa chỉ sử dụng những chân địa chỉ Bank Với SDR SDRAM, chân địa chỉ Bank và địa chỉ hàng A[10] và cao hơn thì được lờ đi, nhưng phải là 0 trong khi ở chế độ ghi vào thanh ghi Trong chu kỳ của chế độ thanh ghi thì các giá trị nạp vào M[9:0] chính là các bit địa chỉ.
- M[9] chế độ ghi từng khối, ở mức 0 thì ghi sử dụng chế độ và chiều dài truyền khối ở chế độ đọc, ở mức 1 thì tất cả các ghi không phải là truyền khối (định vị đơn).
- M[8:7] chế độ vận hành, muốn ở chế độ lưu trữ thì đặt giá trị 00
- M[6:4] ngầm định CAS chỉ với các giá trị hợp lệ là 010 (CL2) và 011 (CL3) Chỉ ra số chu kỳ giữa lệnh đọc và dữ liệu được gửi ra từ Chip Chip sẽ hoàn thành một giới hạn cơ bản trong nanô-giây dựa trên giá trị này; khi khởi tạo, bộ điều khiển bộ nhớ phải sử dụng kiến thức của nó về tần số xung Clock và dịch giới hạn kia thành những chu trình
- M[3] kiểu truy cập các từ trong khối : 0 thì truy cập tuần tự, 1 thì truy cập đan xen
Trang 17- M[2:0]: chiều dài khối: giá trị 000, 001, 010 và 011 chỉ ra kích thước khối tương ứng là 1, 2, 4 hay 8 từ Mỗi đọc ( và viết, nếu m[9] là 0) sẽ thực hiện nhiều sự truy cập, trừ phi được gián đoạn bởi một sự dừng (hủy) truyền khối hay các lệnh khác Giá trị 111 đặc tả khối với đầy đủ hàng (full-row Burst hoặc còn gọi là full page Burst) Sự truyền khối với đầy đủ hàng chỉ được cho phép với kiểu tuần tự Đối với SDRAM IS42S16400 thì chiều dài của 1 khối ở chế độ full page Burst là 256 từ Sự truyền khối thì tiếp tục cho đến khi có ngắt.
Làm tươi tự động:
Dùng để làm tươi lại Chip ram nhờ vào sự mở và đóng ( kích hoạt và tích nạp ) từng hàng trong từng Bank Tuy nhiên, để đơn giản hóa chíp điều khiển bộ nhớ, Chip SDRAM hỗ trợ lệnh tự động làm tươi, tức là đồng thời thực hiện thao tác này tới một hàng trong từng Bank SDRAM cũng duy trì một bộ đếm nội được lặp lại trên toàn bộ các hàng có thể Chip điều khiển bộ nhớ thì đơn giản phải phát ra đủ số lượng các lệnh làm tươi tự động (1 lệnh đối với 1 hàng ) với mỗi khoảng làm tươi (một giá trị chung là tref = 64 ms) Tất cả các Bank phải ở trạng thái IDE khi lệnh được phát.
Chế độ Lover Power:
Như đã đề cập, ngõ vào cho phép xung Clock (CKE) có thể được dùng để dừng xung Clock tới SDRAM Giá trị ngõ vào CKE được xét tại từng cạnh lên của xung Clock, và nếu ở mức thấp, thì mọi cạnh lên của xung Clock tiếp theo sẽ bị bỏ qua mọi mục đích khác so với việc kiểm tra CKE.
Nếu CKE xuống thấp trong khi SDRAM đang thực hiện tác vụ, thì nó đơn giản chỉ là “đóng băng lại” tại chỗ cho đến khi CKE lên mức cao.
Nếu SDRAM ở trạng thái IDE ( tất cả các Bank được tích nạp, không có lệnh nào đang hoạt động) khi CKE xuống thấp, SDRAM tự động chọn chế độ power-down (tiết kiệm năng lượng), giữ năng lượng ở cực tiểu cho tới khi có cạnh lên của CKE Khoảng này thì không được dài hơn giá trị tối đa khoảng làm tươi tref, nếu không những gì bộ nhớ chứa đựng sẽ bị mất Đây là phương pháp để dừng toàn bộ xung Clock trong khoảng thời gian này để tiết kiệm năng lượng.
Cuối cùng, nếu CKE ở mức thấp vào lúc một lệnh làm tươi tự động được gửi đến SDRAM, SDRAM chọn chế độ tự làm tươi ( seft-refresh mode) Tương tự Power Down, nhưng SDRAM dùng một timer nội để phát ra các chu kỳ làm tươi nội khi cần thiết Trong thời gian này thì dừng xung Clock Chế độ tự làm tươi tiêu thụ ít năng lưọng hơn so với chế độ Power Down, nhưng vẫn cho phép bộ điều khiển bộ nhớ disable toàn bộ.
Trang 184 CƠ CHẾ HIỂN THỊ ẢNH LÊN MONITOR4.1 NGUYÊN TẮC CHUNG.
Để hiện thị hình ảnh ra màn hình được tích hợp thì cần phải có một bộ VGA Grenerator với các tín hiệu và cơ chế làm việc như sau:
4.1.1 VGA COLOR SIGNALS.
Có 3 tín hiệu color là: red, green và blue gửi tín hiệu màu sắc (color information) đến màn hình VGA Mỗi một tín hiệu điều khiển một súng bắn điện tử (electron gun) để phóng các hạt electron vẽ lên một màu cơ bản tại một điểm trên màn hình Dải của tín hiệu nằm từ từ 0V (tương ứng với màu tối hoàn toàn) và 0.7V (sáng hoàn toàn) điều khiển cường độ của mỗi thành phần màu và 3 thành phần màu kết hợp với nhau tạo lên màu của điểm ảnh (dot) hay phần tử ảnh (pixel) trên màn hình.
Hình 4.1: VGA Connection
Tùy vào độ rộng A bít của tín hiệu màu ngõ vào tín mà mỗi màu analog ở ngõ ra là một trong 2A mức với bộ chuyển đổi digital to analog A bit, 3 tín hiệu analog kết hợp với nhau tạo nên phần tử ảnh (pixel) với 2A x 2A x 2A = 23A màu khác nhau.
4.1.2 VGA SIGNAL TIMING.
Mỗi một ảnh (hay frame) trên màn hình hiển thị là kết hợp của h dòng, mỗi dòng có w pixel Kích thước của mỗi frame được biểu diễn w x h dưới dạng tiêu biểu gồm 640 x 480m 800 x 600, 1024 x 768 và 1280 x 1024.
Trang 19Hình 4.2: CRT Display Timing Example
Để vẽ một frame, có những mạch điện có trách nhiệm di chuyển dòng electron từ trái sang phải và từ trên xuống dưới dọc theo màn hình gọi là deflection circuit Những mạch này yêu cầu phải có 2 tín hiệu đồng bộ để khởi động và dừng dòng electron tại đúng thời điểm để cho một dòng các điểm ảnh được vẽ dọc theo màn hình và mỗi dòng được điền theo cơ chế từ trên xuống dưới để tạo lên một ảnh.
VGA Display Timing v i chới chuẩn IEEE 1076 Trong IEEE 1164, có một chuẩn được ế đ 640 x 480:ột ngôn ngữ mô tả phần cứng (hardware description
SymbolParameterVertical SyncHorizontal SyncTimeClocksLinesTimeClocks
Hệ thống bên ngoài ghi giá trị pixel vào trong thanh ghi pixel (data register) Nội dung của thanh ghi này được dịch sau mỗi xung cloch để thay thế pixel hiện tại Các bit này được gửi đến bộ DAC để chuyển sang dạng tín hiệu màu analog Rồi kiểm tra xem giá trị trên chân Blank để xuất ra cổng VGA.
Hai mạch tạo xung đồng bộ (pulse generation circuit) được dùng để tạo các xung đồng bộ dọc (VSYNC) và ngang (HSYNC) Bộ hirizontal sync generator có đầu ra là tín hiệu gate một chu kì trùng khớp với sường lên của xugn đồng bộ ngang (horizontal sync pulse), tín hiệu gate này nối với tín hiệu clock – enable của bộ
Trang 20vertical sync generator vì thế nên clock – enable chỉ cập nhật bộ đến thời gian sau mỗi dòng pixel (line of pixels) Tín hiệu gate của vertical sync generator được dùng như tín hiệu báo kết thúc một frame, đồng thời nó cũng reset và xóa toàn bộ nội dung của pixel buffer nên bộ VGA generator luôn khởi động từ trạng thái xóa sạch hoàn toàn với mọi frame
Bộ tạo tín hiệu đồng bộ cũng tạo ra các tín hiệu horizontal và vertical blanking Khi dùng phép toán OR logic ta được tín hiệu blanking toàn cục.
4.2 BỘ VGA DAC ADV7123
Kit DE2 tích hợp một bộ VGA DAC và ADV7123 với cấu trúc
Hỗ trợ tín hiệu màu 10 bit ở ngõ vào, với bộ DAC 10 bit sẽ cho ra mức màu Analog ở ngõ ra, tuy nhiên trong thiết kế dữ liệu màu ta cung cấp cho ADV7181 chỉ là 8 bit nên tín hiều màu ở Analog ngõ ra có mức 3, tín hiệu analog kết hợp lại với nhau tạo nên phần tử ảnh (16 triệu) màu, 1028224.
ảnh hưởng đến quá trình hiển thị, BLANK với giá trị 0 thì chốt các dữ liệu màu ở ngõ vào.
Hình 4.3: Sơ đồ cấu trúc ADV7123
trên KIT DE2, vì vậy để sử dụng được bộ VGA DAC này ta phải tạo ra một khối vừa
Trang 21cung cấp các tín hiệu BLANK, Red, Green, Blue cho ADV7123 vừa phải tạo ra 2 tín hiệu đồng bộ VSYN và HSTNC nối trực tiếp vào cổng VGA một cách đồng thời.
5 SƠ LƯỢC HỆ THỐNG5.1 SƠ ĐỒ THIẾT KẾ
Hình 5.1: Sơ đồ hệ thống
5.2 NGUYÊN LÝ HOẠT ĐỘNG
Khối I2C_Video_Config: với giao thức giao tiếp I2C sẽ đặt giá trị cho các thanh ghi của bộ mã hóa ADV7181 để cấu hình hoạt động cho chip mã hóa này.
Khối Timer trì hoãn ban đầu: Sau chuỗi khởi động, ADV7181 rơi vào thời kì không ổn định, khối sẽ phát hiện thời kì không ổn định này rồi tính toán thời điểm bắt đầu làm việc của các khối khác.
Khối Disize_Horizon: Lấy ra chuỗi liên tục các pixel trong dòng dữ liệu do ADV7181B xuất ra đồng thời định lại kích thước frame ảnh từ dạng 720 x 480 sang chuẩn VGA 640 x 480.
SDRAM BUFFER: Nhận dữ liệu và tính hiệu điều khiển ghi từ khối Disize_Horizon để ghi giá trị các pixel vào SDRAM, đồng thời cũng nhận tín hiệu từ VGA controller để điều khiển việc xuất dữ liệu, địa chỉ phù hợp (xuất xen kẽ các line thuộc Odd field và Even field).
Khối xử lý ảnh YUV: xử lý dữ liệu ảnh nhận được từ SDRAM BUFFER rồi xuất ra dữ liệu ảnh cho khối Convert YUV to RGB.
Trang 22Khối ConvertYUVtoRGB: ADV718B xuất ra ảnh video dạng YUV, để có thể hiện thị lênh VGA thì trước tiên chuyển đổi thành dạng RGB.
Khối VGA_Controller: Nhận dữ liệu ảnh RGB từ khối ConvertYUVtoRGB để xuất dữ liệu và tín hiệu đồng bộ cho video DAC7123, đồng thời cũng phát ra các tín hiệu điều khiển SDRAM_BUFFER để xuất dữ liệu từ SDRAM.
Port 2 chiều để cấu hình các giá trị thanh ghi của ADV7181B
Hình 6.2: Dạng sóng để truyền dữ liệu và cấu trúc ghi với giao thức I2C
6.2 MÔ TẢ
Vai trò của khối chỉ là ghi giá trị vào các thanh ghi của ADV7181B nên có thể chọn xung clock làm việc của khối là 20KHz nhờ vào bộ chia tần số 50MHz Địa chỉ
Trang 23Slaver của ADV7181B là 40h nên ta sử dụng cách gán mI2C_DATA là kiểu dữ liệu cần truyền trên Bus và LUT_DATA chứa địa chỉ của thanh ghi và giá trị cần nạp.
Khi reset, bắt đầu cấu hình lại cho ADV7181B bằng cách xóa giá trị các bộ đếm và cờ Sau đó để nạp giá trị cho các thanh ghi ta sử dụng máy trạng thái sau:
always@(posedge mI2C_CTRL_CLK or negedge iRST_N) begin
//LUT_SIZE là số lần nạp giá trị cho các thanh ghi cần thiết
//LUT_INDEX là biến đếm để ánh xạ đến địa chỉ của các thanh ghi và giá trị cần
//có xác nhận ACK là đã nạp xong giá trị cho một thanh ghitừ //ADV thì nhảy tới trạng thái 2
if(!mI2C_ACK) mSetup_ST <= 2;
//không có xác nhận thì nhảy về trạng thái 0
else
Trang 24Ta chỉ cần đặt giá trị cho một thanh ghi cần thiết nên không thực hiện việc tăng dần địa chỉ thanh ghi mà sẽ ánh xạ từ LUX_INDEX đến LUX_DATA nhờ vào lệnh case, chẳng hạn như khi LUX_INDEX=27 để nạp giá trị 8’50 vào thanh ghi địa chỉ 8’h00 ta có cấu trúc:
27: LUT_DATA <= 16’h0050;
Để AVD7181B có thể phát hiện chuẩn video NTSC thì ta sẽ nạp các giá trị cho các thanh ghi theo bảng giá trị cài đặt ở phần mô tả ADV7181B Tuy nhiên khi truyền chuỗi này trên bus ta cần phải thêm các bit đồng bộ: 1 bit cho trạng thái IDE, 2 bit để thiết lặp cờ START, 3 bit để chờ ACK cho ADV xác nhận, 3 bit để thiết lặp cờ STOP và báo kết thúc chuỗi, vì vậy thực sự chuỗi dài 33 bit:
Trang 25//giá trị cần ghi vào thanh ghi
6’d21 : begin SDO=SD[7]; ACK2=I2C_SDAT;end
//thiết lặp cờ STOP và báo kết thúc chuỗi
6’d30 : begin SDO=1’b0; SCLK=1’b0; ACK3=I2C_SDAT;end 6’d31 : SCLK=1’b1;
6’d32 : begin SDO=1’b1;END=1;end endcase
Trong đó SD_COUTER thực hiện đếm từ 0 đến 63, như vậy việc nạp cho một thanh ghi chỉ thực hiện trong 33 chu kỳ đầu còn 30 chu kỳ sau thì bus ở trạng thái IDE (SCLK=1 va SDO=1) để chờ chu kỳ tiếp theo Đồng thời để đảm bảo được yêu cầu về dạng sóng trên chân I2C_SCLK và xác nhận (ACK) đã nạp xong thanh ghi, ta
Trang 26// khi xét xác nhận đã nạp xong thanh ghi ta sử dụng giá trị bù của //ACK(tích cực mức thấp), chỉ xác nhận khi có đủ 3 xác nhận ACK1, //ACK2, ACK3
Và dạng sóng thu được trên chân I2C_SCLK như sau (END từ 0 lên 1 chỉ ra rằng đã nạp xong giá trị cho một thanh ghi):
Hình 6.4: dạng sóng mô phỏng trên chân I2C_SCLK
7 KHỐI TIMER TRÌ HOÃN BAN ĐẦU7.1 SƠ ĐỒ KHỐI
Hình 7.1: Sơ đồ của khối timer trì hoãn ban đầu
7.2 MÔ TẢ
Với cấu hình đã cài đặt ở phần trước, khi đã hoạt động ổn định, dạng sóng do ADV7181B phát ra như sau:
Trang 27Hình 7.2: Mô tả dạng sóng ADV7181B
Vì vậy để phát hiện xem chip mã hóa này đã hoạt động ổn định hay chưa khối TD_DETEC tiến hành kiểm tra điều kiện: VS ở mức cao trong 9 chu kỳ liên tiếp của HS rồi chuyển xuống mức thấp, nếu thỏa mãn thì đưa TD_Stable lên mức cao Khi tín hiệu TD_Stable lên mức cao, khối RESET_DELAY bắt đầu đếm lên theo xung nhịp của ICLK (50MHz) để tính thời điểm xuất ra mức 1 trên các chân RST0, RST1, RST2 Các tín hiệu này dùng để khởi động các khối khác theo trình tự như sau:
a) Ban đầu xóa tất cả dữ liệu trong các khối.
b) Tính từ thời điểm TD_Stable lên 1 (đơn vị là chu kỳ clock 27MHz)
- Sau 1698692.5: tích cực RST1 để kích hoạt khối Desize Horizon.
VGA controller.
c) Giữ nguyên giá trị ngõ ra cho đến khi có tín hiệu RESET hệ thống thì lặp lại.
Điểm cần chú ý ở đây là khi Desize Horizon hoạt động thì sẽ xuất DATA_VALID cho phép ghi dữ liệu vào SDRAM BUFFER Rồi phải chờ một khoảng thời gian để ghi đủ số liệu cần thiết mới kích hoạt VGA Controller để xuất dữ liệu từ SDRAM BUFFER Như ta đã biết một frame ảnh do ADV7181B xuất ra bao gồm 900900 byte (525 line, mỗi line có 1716 byte) hay để truyền hết một frame sẽ mất 900900 chu kỳ Do xung clock trên chân LLC để truyền các byte là 27MHz nên ta kiểm tra lại các thời điểm này như sau:
- Lấy gốc thời gian là khi bắt đầu frame đầu tiên.
15444 chu kỳ.
- Frame thứ ba được bắt đầu tại thời điểm 2 x 900900 = 1801800 - Khối Desize Horizon được kích hoạt tại thời điểm 1714136.5
Trang 28(= 15444 + 1698692.5) tức là trước khi frame thứ ba bắt đầu Đảm bảo rằng khối sẽ xuất ra DATA_VALID = 1 ở toàn bộ các Active Pixel của frame thứ 3.
+ 2264923.5) nên oRequest được xuất ra tại thời điểm 2315727.5(= 2280376.5 + 35360) Với 35360 chu kỳ là khoảng thời gian từ khi khối được reset cho đến khi oRequest lên 1 Vậy việc đọc từ SDRAM BUFFER được kích hoạt khi frame thứ 3 đã bắt đầu được một khoảng thời gian là 513927.5(= 2315727.5 – 1801800) Điều này đảm bảo cho việc xuất ra đúng từng frame từ SDRAM BUFFER mà ta sẽ đề cập kỹ hơn ở phần mô tả SDRAM BUFFER.