Mục lục
Lời cảm ơn. 2
Mục lục. 3
Danh mục các hình vẽ trong đồán tốt nghiệp. 6
Mở đầu. 8
Phần 1 : Cơsởlý thuyết xửlý ảnh số. 10
1.1. Khái quát vềhệthống Thịgiác máy tính và Cảm biến thịgiác. 10
1.3. Các thành phần của hệthống xửlý ảnh:. 16
1.3.1. Thành phần thu thập ảnh, Camera và vấn đề định dạng ảnh. 16
1.3.2. Thành phần xửlý ảnh. 17
1.3.2.1. Các khái niệm cơbản của xửlý ảnh số. 17
1.3.2.2. Các thuật toán xửlý ảnh số. 18
1.4. Một sốgiải pháp phần cứng cho hệthống thịgiác máy. 28
FPGA. 28
DSP Processor. 28
Mainboard, laptop. 29
Phần 2 : Khái quát vềFPGA và mạch phát triển XST 3S1000 của XESS. 31
2.1. Giới thiệu chung vềFPGA và ngôn ngữVHDL. 31
2.1.1. Khái niệm và ứng dụng FPGA. 31
2.1.2. Kiến trúc FPGA. 32
2.1.2.1. Kiến trúc chung FPGA. 32
Configurable Logic Blocks (CLBs). 33
Configurable I/O Blocks. 34
Programmable Interconnect. 34
Mạch đồng hồ(Clock Circuitry ). 35
2.1.2.2. So sánh giữa cấu trúc nhỏvà cấu trúc lớn. 36
2.1.2.3. So sánh giữa SDRAM Programming và Anti-fuse programming. 36
2.1.2.4. Cấu trúc FPGA của Spartan 3. 37
2.1.3. Trình tựthiết kếmột chip. 38
www.ngohaibac.net
4
Ghi các đặc điểm kĩ thuật. 39
Chọn công nghệ. 40
Chọn một hướng tiếp cận thiết kế. 40
Chọn công cụtổng hợp. 40
Thiết kếchip. 41
Mô phỏng – cái nhìn tổng quan vềthiết kế. 41
Tổng hợp. 41
Place and Route. 41
Mô phỏng lại – tổng quan cuối cùng. 42
Kiểm tra. 42
2.1.4. Ngôn ngữmô tảphần cứng VHDL. 42
Trình tựthiết kếmột chíp dựa trên VHDL. 43
2.2. Giới thiệu mạch phát triển XST 3S 1000 của hãng XESS. 44
2.2.1. XSA-3S1000. 45
2.2.2. XST-3.0 (XStend Board). 46
2.3. Giới thiệu hãng Xilinx và các công cụlập trình:. 49
Hãng Xilinx. 49
ISE 9.2. 49
LogicCore 9.2. 49
EDK 9.2. 50
System Generator 9.2. 50
Phần 3 : Xây dựng hệthống xửlí ảnh động trên nền FPGA. 51
3.1. Sơ đồcấu trúc hệthống xửlí ảnh động. 51
3.2. Xây dựng hệthống thu thập, lưu trữ, xửlý và hiển thị ảnh. 53
3.2.1. Thành phần thu thập ảnh Framegrabber. 53
3.2.2. Lưu dữliệu từFramegrabber vào SDRAM. 55
3.2.3. Các cơchế ghi đọc SDRAM: SDRAM Controller, Dual Port SDRAM. 55
SDRAM Controller. 55
Pipeline Read Operation. 56
Pipeline Write Operation. 56
Dualport Module for the SDRAM Controller. 58
www.ngohaibac.net
5
3.2.4. Image Processing core. 60
3.2.5. Hiển thị ảnh lên VGA: VGA Generator. 67
VGA Color Signals. 67
VGA Signal Timing. 68
Nguyên tắc hoạt động của VGA Generator. 69
3.2.6. Picoblaze và hệthống điều khiển trung tâm. 71
3.2.6.1. Khái quát PicoBlaze. 71
KCPSM3 Module. 73
Kết nối với bộnhớROM chương trình. 73
3.2.6.2. Sơ đồcấu trúc của khối xửlý trung tâm. 75
Thuật toán của chương trình. 75
3.3. Thiết kếgiao diện điều khiển hệthống. 76
Chức năng. 77
3.4. Mô phỏng và kết quả. 77
Phương án mô phỏng. 77
Kết quả. 78
Kết luận. 79
Tài liệu tham khảo. 82
84 trang |
Chia sẻ: oanh_nt | Lượt xem: 6068 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế hệ thống xử lý ảnh số trên nền fpga, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
u
tương đối phức tạp, với khối lượng tính toán rất lớn (hàng trăm ngàn pixel).
Do đó, để thỏa mãn yêu cầu về tốc độ và hiệu suất xử lý, đòi hỏi những nền
phần cứng đủ mạnh với khả năng xử lý và tính thời gian thực cao.
Dưới đây là một số giải pháp phần cứng thường được sử dụng cho một hệ
thống xử lý ảnh số.
FPGA
Đây là giải pháp về phần cứng mà hay được sử dụng hiện nay. Tận dụng
đặc tính của FPGA là linh hoạt và tốc độ xử lý nhanh (cứng hoá các giải
thuật), đặc biệt với khả năng xử lý song song, FPGA rất phù hợp với các bài
toán xử lý ảnh đòi hỏi một khối lượng tính toán phức tạp.
DSP Processor
DSP Processor được giới thiệu đầu tiên vào những năm 1978, 1979 bởi
Intel, Bell Labs. Các bộ xử lý DSP có những đặc tính nổi bật như sau:
Thích hợp cho các quá trình cần xử lý theo thời gian thực
Hiệu năng được tối ưu với dữ liệu dạng luồng
Chương trình và dữ liệu được bố chí riêng biệt (kiến trúc Harvard)
Tích hợp các chỉ thị lệnh đặc biệt SIMD (Single Instruction, Multiple
Data)
Không hỗ trợ đa nhiệm
Tương tác trực tiếp với bộ nhớ của thiết bị
Tích hợp sẵn ADC và DAC
www.ngohaibac.net
29
DSP Processor ngày nay đã được tích hợp nhiều thành phần khác nhau,
làm tăng khả năng linh hoạt và tốc độ xử lý. Đặc biệt các DSP Processor rất
thích hợp cho những nhu cầu cần tính toán nhanh, xử lý số thực. Đặc biệt một
số còn có sẵn những chỉ thị lệnh giúp cho việc tính toán ma trận, tích chập
hay thậm chí các phép biến đổi DCT trong quá tình nén ảnh. Với những ưu
điểm đó DSP Processor được dùng trong nhiều thiết bị xử lý ảnh chuyên
nghiệp.
Mainboard, laptop
Đây là một trong những phương pháp đơn giản nhất. Có thể tận dụng các
mainboard máy tính hay thậm chí các máy tính xách tay với chức năng là một
đơn vị xử lý ảnh, và đưa ra quyết định. Với việc kết nối một camera hay
webcam ta hoàn toàn chủ động trong quá trình nhận/xử lý ảnh. Các giao tiếp
ngoại vi phổ biến như UART, Parallel, USB hay Keyboard.
Việc sử dụng mainboard, laptop sẽ có những ưu/ nhược điểm sau:
Ưu điểm
Có tốc độ xử lý cao
Dễ dàng lập trình, kiểm lỗi
Hệ điều hành quen thuộc (windows/linux)
Các công cụ lập trình/biên dịch phổ biến (MSVC, gcc)
Nhược điểm
Kích thước, khối lượng lớn
Dễ hư hỏng do va đập hay các tác nhân khác
Giá thành rất đắt (>600$)
Có quá nhiều thành phần không sử dụng đến
www.ngohaibac.net
30
Chỉ có thể giao tiếp với ngoại vi thông qua các chuẩn phổ biến như
UART, USB
Ngoài các giải pháp trên, còn nhiều những giải pháp phần cứng khác cho
một hệ thống xử lý ảnh số như : Main công nghiệp, Single Board
Computer(SBC) sử dụng Single on Chip (SoC)....
Trong đồ án này, chúng em sử dụng giải pháp là vi mạch khả trình FPGA
để xây dựng toàn bộ hệ thống xử lý ảnh và điều khiển trung tâm. Mục đích
của đề tài là xây dựng một hệ thống xử lý ảnh trên nên FPGA, trong đó thực
hiện được một số thuật toán cơ bản như lọc, phân ngưỡng, phân vùng, xử lý
đồng cấu ảnh nhị phân, đánh nhãn đối tượng và cuối cùng là tính toán các
đặc trưng của đối tượng. (vị trí, diện tích...)
Hệ thống được xây dựng với mục đích thử nghiệm những thuật toán xử
lý ảnh số đã được nghiên cứu, sử dụng công nghệ FPGA, đồng thời tạo nền
tảng cho hệ thống thị giác máy tính với những thuật toán xử lý cao hơn.
www.ngohaibac.net
31
Phần 2 : Khái quát về FPGA và mạch phát triển XST 3S1000 của
XESS
2.1. Giới thiệu chung về FPGA và ngôn ngữ VHDL
2.1.1. Khái niệm và ứng dụng FPGA
Khái niệm
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 kiến trúc khác tương tự nhưng đơn giản hơn FPGA, là CPLD (
Complex Programable Logic Device ). Thực chất đây là tiền thân của FPGA.
Năm 1984, Ross Freeman, một đồng sáng lập của Xilinx đã phát minh ra
FPGA. FPGA và CPLC đều bao gồm một số lượng khá lớn các phần tử logic
khả trình. Mật độ cổng logic (Logic Gate) của CPLD nằm trong khoản từ vài
nghìn cho đến 10 nghìn cổng. Trong khi đó FPGA thông thường chứa từ 10
nghìn cho đến vài triệu cổng.
Khác biệt cơ bản giữa FPGA và CPLD là ở kiến trúc của chúng. CPLD có
một kiến trúc bị giới hạn trong một hoặc một vài dãy logic khả trình cùng với
một lượng nhỏ thanh ghi định thời. Do đó nó kém linh hoạt hơn, nhưng lại có
ưu điểm là khả năng dự đoán trễ lớn hơn và tỉ lệ logic-kết nối cao hơn.
Ngược lại, trong kiến trúc của FPGA lại có sự trội hơn về số lượng kết nối.
Điều này làm cho nó trở nên linh hoạt hơn ( về số lượng thiết kế được thực
www.ngohaibac.net
32
thi bên trong) nhưng cũng đồng nghĩa với việc phức tạp hơn trong quá trình
thiết kế.
Một khác biệt đáng chú ý nữa giữa FPGA và CPLD là : hầu hết các FPGA
hiện nay đều bao có các phần tử chức năng tích hợp cao hơn ( như bộ cộng,
nhân tích hợp) , và bộ nhớ tích hợp.
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, ethernet...). 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.
Ứng dụng.
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.
2.1.2. Kiến trúc FPGA
2.1.2.1. Kiến trúc chung FPGA
www.ngohaibac.net
33
Hình 2.1 : Kiến trúc chung của 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 Logic Blocks (CLBs)
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,..
www.ngohaibac.net
34
Hình 2.2 : Một Logic Block điển hình
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).
Hình 2.3 : Configurable Logic Blocks
Programmable Interconnect
www.ngohaibac.net
35
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.
Hình 2.4 : Programmable Interconnect
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
www.ngohaibac.net
36
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.
2.1.2.2. So sánh giữa cấu trúc nhỏ và cấu trúc lớn
FPGA có cấu trúc nhỏ giống như các mảng cổng của hệ ASIC với các CLBs
chỉ bao gồm các phần tử cơ bản rất nhỏ như các cổng NAND, cổng NOR, …
Các nhà lý luận cho rằng các phần tử nhỏ có thể nói với nhau tạo lên các chức
năng lớn hơn mà không tốn nhiều các phần tử logic. Trong các FPGA có cấu
trúc lớn, các CLB có thể bao gồm 2 hoặc nhiều flip-flop, các thiết kếmà không
cần nhiều flip-flop sẽ khiến cho nhiều flip-flop không được dùng đến. Tiếc
rằng, các cấu trúc nhỏ lại yêu cầu khá nhiều nguồn kết nối (routing resource),
dẫn đến tăng không gian và thêm vào một lượng lớn trễ mà không thể bù lại
để có hiệu quả hơn.
2.1.2.3. So sánh giữa SDRAM Programming và Anti-fuse programming
Có 2 cách để lập trình FPGA. Cách đầu tiên là SDRAM Programming, bao
gồm một vài bit Static RAM cho mỗi phần tử lập trình. Ghi một bit với giá trị
0 sẽ ngắt switch, trong khi ghi giá trị 1 sẽ đóng switch. Cách còn lại là anti-
fuse bao gồm các cấu trúc rất nhỏ, không giống như các cầu chì thông
thường, bình thường chúng không tạo ra một kết nối nào cả. Một dòng điện
có cường độ nhất định trong khi lập trình thiết bị sẽ dẫn đến việc hai bên của
anti-fuse kết nối với nhau.
Thuận lợi của cấu trúc FPGA dựa trên SRAM là chúng dùng một quá trình
sản xuất chuẩn mà ở đó các kế hoạch sản xuất chip là gần như giống nhau và
luôn luôn được tối ưu cho khả năng hoạt động. Từ khi mà SRAM có thể lập
trình lại được thì FPGA có thể lập trình lại bất cứ khi nào muốn, thận chí
ngay cả khi chúng đang ở trong hệ thống, đơn giản như là ghi vào SRAM
thông thường. Chúng có nhược điểm là vùng nhớ volatile nên một vấn đề về
www.ngohaibac.net
37
nguồn có thể thay đổi nội dung của RAM. Các thiết bị dựa trên SDRAM cũng
có thời gian trễ đường truyền lớn.
Thuận lợi của cấu trúc FPGA dựa trên anti-fuse là chúng là non-volatile và
các trễ khi nối dây sẽ rất nhỏ vì thế nên chúng có khuynh hướng nhanh hơn.
Nhược điểm là chúng yêu cầu một bộ lập trình bên ngoài để lập trình và mỗi
khi lập trình xong thì không thể thay đổi được.
2.1.2.4. Cấu trúc FPGA của Spartan 3
Cấu trúc tổng quan của Spartan 3 gồm có 5 thành phần có chức năng khả
trình cơ bản sau:
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,..
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. 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).
Block RAM cho phép lưu trữ dữ liệu dưới dạng các khối (block) dual-
port 18-Kbit.
Multiplier Blocks cho phép 2 số nhị phân 18bit làm đầu vào và dễ dàng
tính toán tích của chúng.
Digital Clock Manager (DCM) Blocks cung cấp khả năng tự xác định
xung clock, là giải pháp số hoàn chỉnh cho các tín hiệu clock phân phối, trễ,
nhân, chia và dịch bit.
Các phần tử này được tổ chức như trong hình sau:
www.ngohaibac.net
38
.
Hình 2.5 : Cấu trúc các thành phần của Spartan 3A
Từ hình vẽ ta thấy, các IOBs bao quanh các mảng CLBs, riêng Spartan-3E
chỉ có một vòng các IOBs. Mỗi cột block RAM bao gồm một vài block RAM
18-Kbit, mỗi block RAM lại gắn liền với một multiplier dành riêng. Các DCM
được đặt ở các vị trí: 2 DCM phía trên và 2 cái phía dưới của thiết bị, và đối
với các device lớn hơn thì có thêm các DCM ở phía bên cạnh.
Đặc điểm chung mạng Spartan-3 là kết nối liên thông giữa 5 phần tử cơ
bản này, và truyền tín hiệu giữa chúng. Mỗi thành phần chức năng này có
một switch matrix dành riêng để cho phép chọn lựa kết nối cho việc đi dây
trong FPGA.
2.1.3. Trình tự thiết kếmột chip
Trình tự thiết kếmột hệ thống trên nền FPGA bao gồm các bước sau:
www.ngohaibac.net
39
Hình 2.6. Design Flow
Ghi các đặc điểm kĩ thuật
Tầm quan trọng của các đặc điểm kĩ thuật (specification) không thể phóng
đại quá. Nó chỉ tuyệt đối cần đặc biệt khi là một hướng dẫn để chọn công
nghệ phù hợp và tạo những yêu cầu của bạn cho các nhà sản xuất chip. Và
các đặc điểm kĩ thuật cho phép mỗi kĩ sư hiểu về thiết kế hệ thống chung và
công việc của họ trong hệ thống đó là gì. Và nó cũng cho phép các kĩ sư thiết
kế giao diện đúng cho một loạt các phần của chip. Các đặc điểm kĩ thuật cũng
giúp tiết kiệm thời gian và sự hiểu lầm. Sẽ không làm gì được nếu không có
các bảng ghi các đặc điểm kĩ thuật.
Chi tiết kĩ thuật nên bao gồm các thông tin sau đây:
Sơ đồ khối bên ngoài để chỉ ra chip đó được đặt vào trong hệ thống
như thế nào.
Sơ đồ khối bên trong chỉ rõ mỗi chức năng của các thành phần.
www.ngohaibac.net
40
Miêu tả các chân vào ra bao gồm khả năng lái đầu ra, mức ngưỡng
đầu vào.
Thời gian ước lượng bao gồm thời gian thiết lập và giữ ở các chân vào,
thời gian lan truyền ra các cổng ra và thời gian chu kì clock.
Đếm xấp xỉ số gate
Dạng đóng gói
Tiêu thụ nguồn
Giá cả
Các thủ tục để kiểm tra
Một điều rất quan trọng nữa là đó là các tài liệu trực tuyến. Rất nhiều
phần sẽ được dự đoán tốt nhất ở trong đó, nhưng sẽ thay đổi trong quá trình
chip được thiết kế.
Chọn công nghệ
Mỗi khi một chi tiết miêu tả kĩ thuật được xuất bản, nó có thể được dùng
để chọn nhà sản xuất chip tốt nhất với công nghệ và cấu trúc giá cả là tốt nhất
đáp ứng được yêu cầu của bạn.
Chọn một hướng tiếp cận thiết kế
Tại thời điểm này bạn phải quyết định cách thực hiện thiết kế mà bạn
mong muốn. Đối với các chip nhỏ thì cách tiếp cận bằng sơ đồ nguyên lý
(schematic) thường được chọn, đặc biệt là khi các kĩ sư thiết kế đã quen thuộc
với các công cụ này. Thế nhưng đối với các thiết kế lớn hơn, nguôn ngữ miêu
tả phần cứng (hardware description language) HDL như Verilog và VHDL
được dùng bởi khả năng mềm dẻo, dễ đọc, dễ chuyển giao. Khi dùng ngôn
ngữ cấp cao, phần mềm tổng hợp (synthesis software) sẽ được yêu cầu tổng
hợp (synthesize) thiết kế. Có nghĩa rằng phần mềm này sẽ tạo ra các cổng ở
cấp thấp từmiêu tả ở cấp cao hơn.
Chọn công cụ tổng hợp
Tại điểm này, bạn phải quyết định chọn phần mềm tổng hợp nào sẽ được
dùng nếu bạn có kế hoạch thiết kế FPGA với HDL. Điều đó rất quan trọng kể
www.ngohaibac.net
41
từ khi mỗi công cụ tổng hợp được khuyên dùng và sự ủy thác của cách thiết
kế phần cứng nên nó có thể hoạt động tổng hợp đúng hơn.
Thiết kế chip
Có một số cách để thiết kế chip
Top-down design (Thiết kế từ trên xuống dưới)
Macros
Synchronous design
Protect against metastability
Avoid floating nodes
Avoid bus contention
Mô phỏng – cái nhìn tổng quan về thiết kế
Mô phỏng là một quá trình liên tục khi mà thiết kế xong. Từng phần nhỏ
của thiết kế nên được mô phỏng trước khi kết hợp chúng thành các phần lớn
hơn. Điều này rất là cần thiết và sự mô phỏng theo thứ tự sẽ kiểm tra chức
năng hoạt động đúng của từng phần.
Mỗi khi thiết kế và mô phỏng hoàn thành, dẫn đến một cái nhìn tổng quan
khác về thiết kế vì thế thiết kế có thể được kiểm tra lại. Thật là quan trọng để
nhận các kết quả khác cho phép nhìn qua các mô phỏng và chắc chắn rằng
không có điều gì bị quên và không sự tổn hao nào gặp phải. Đó là một trong
những khái quát quan trọng nhất bởi vì khi mô phỏng đúng và thành công
thì bạn sẽ biết được chip của bạn sẽ hoạt động đúng trong hệ thống.
Tổng hợp
Nếu thiết kế dùng HDL, bước tiếp theo là tổng hợp chip, bao gồm việc
dùng phần mềm tổng hợp để chuyển đổi thật tối ưu từ thiết kế mức RTL
(register transfer level) sang thiết kế mức gate mà có thể gắn vào các khối
logic trong FPGA.
Place and Route
www.ngohaibac.net
42
Bước tiếp theo là sắp đặt chip, kết quả trong việc thiết kế vật lý cho chip
thực. Điều này bao gồm các công cụ của nhà sản xuất đẻ tối ưu lập trình cho
chip để thực hiện thiết kế. Sau đó, thiết kế được lập trình vào cho chip.
Mô phỏng lại – tổng quan cuối cùng
Sau khi sắp đặt xong, thì chip phải được mô phỏng lại với các con số về
thời gian tạo ra bởi các layout thực tế. Nếu mọi thứ đều tốt đến thời điểm
này, thì một kết quảmô phỏng mới sẽ đúng với các kết quả dự đoán.
Kiểm tra
Đối với các thiết bị lập trình được, đơn giản là lập trình thiết bị đó và ngay
lập tức có mẫu thử. Sau đó bạn có trách nhiệm đặt mấu thử này vào trong hệ
thống và xem xem hệ thống có làm việc đúng không. Nếu bạn làm lần lượt
các bước ở bên trên thì đa phần là hệ thống sẽ hoạt động đúng chỉ với một
vài lỗi rất nhỏ. Các lỗi này thường được làm việc xung quanh với việc thay
đổi hệ thống và thay đổi phần mềm hệ thống. Các lỗi này cần được kiểm tra
và trích dẫn lại để có thể được sửa chữa trong phiên bản tiếp theo của chip.
Kiểm tra hệ thống nhúng là cần thiết tại thời điểm này để đưa ra kết quả rằng
mọi phần của hệ thống đều hoạt động đúng khi kết hợp với nhau.
Khi các chíp được đưa vào sản xuất, rất cần thiết có một vài kiểm tra để có
một vài kiểm tra burn-in trong hệ thống để test thường xuyên hệ thống qua
thời gian dài. Nếu một chip được thiết kế đúng, thì nó chỉ bị hỏng khi lỗi điện
học hoặc lỗi cơ học sẽ thường xuyên xảy ra với loại kiểm tra khắc nghiệt này.
2.1.4. Ngôn ngữmô tả phần cứ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,
www.ngohaibac.net
43
lần nâng cấp sau đó có tên là VHDL 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ự.
Trình tự thiết kếmột chíp dựa trên VHDL
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. Các bước thực hiện một project được tổng
kết như trong hình dưới:
www.ngohaibac.net
44
Hình 2.7: Qui trình thiết kế chip dựa trên VHDL
Chúng ta bắt đầu thiết kế bằng cách viết mã VHDL, được ghi trong các file
với đuôi mở rộng .vhd và tên giống như tên của ENTITY (thực thể). Bước
đầu tiên trong quá trình synthesis là biên dịch. Biên dịch là một quá trình
chuyển đổi giữa ngôn ngữ VHDL bậc cao tại Register Transfer Level (RTL)
sang netlist ởmức gate level. Bước thứ 2 là tối ưu thực hiện trên gate level net
list tối ưu về tốc độ hoặc cho diện tích. Cuối cùng là môt phần mềm place and
route sẽ tạo ra một physical layout cho các chíp PLD/FPGA hoặc tạo ra các
mặt nạ cho một hệ ASIC.
2.2. Giới thiệu mạch phát triển XST 3S 1000 của hãng XESS
Trang chủ của XESS Corp. :
X Engineering Software Systems Corporation (XESS) là công ty tại phía
Bắc Carolina (Mỹ) được thành lập từ năm 1990. XESS Corp. đưa ra những
công cụ phát triển logic lập trình được với giá phải chăng và các hướng dẫn
cho người dùng được viết bởi các kĩ sư, các nhà nghiên cứu, nhà thiết kế và
ngay cả của sinh viên.
www.ngohaibac.net
45
XESS giới thiệu 2 board chuyên dùng cho xử lý ảnh và audio:
2.2.1. XSA-3S1000
Hình 2.8 : KIT XSA-3S1000
KIT FPGA này bao gồm có 32 Mbyte DRAM đồng bộ và 2 Mbyte Flash để
xây dựng hệ thống vi điều khiển RISC hoàn thiện dựa trên phần mềm (soft-
core).
Có thể có tới 4 bitstream được lưu trữ trong Flash và ta có thể dùng switch
để lựa chọn bitstream nào được cấu hình cho FPGA khi áp đặt nguồn điện
vào KIT. Hoặc chúng ta có thể download trực tiếp vào FPGA nhờ cổng song
song (parallel port) dùng công cụ XSTOOLS ( trong bộ công cụ của XESS).
Giao diện CPLD trên XSA-3S1000 cũng hỗ trợ download dùng XILINX
iMPACT và circuit test/debug với ChipScope dùng cáp download song song
của Xilinx.
www.ngohaibac.net
46
Bổ sung thêm vào các chip FPGA, SDRAM và Flash, có thêm cổng VGA có
thể hiển thị đồ họa với 512 màu. Thêm vào đó, còn có thêm prototyping
header đưa cho ta 65 chân I/O để xây dựng các giao diện với các ngoại vi
khác.
Hình 2.9. Sơ đồ cấu trúc của XSA-3S1000
2.2.2. XST-3.0 (XStend Board)
www.ngohaibac.net
47
Hình 2.10 : XST-3.0 Board
Xstend Board là mạch hỗ trợ cho XSA Board có thể truy nhập qua giao
diện prototype. Bo mạch này mở rộng khả năng của XSA Board trên một số
mặt:
Các pushbuttons, DIP switches, LEDs, và protopying area rất có ích
cho các thí nghiệm ở phòng Lab.
Mạch stereo và dual-chanel analog I/O dùng cho xử lý âm thanh kết
hợp với các thành phần DSP được synthesize với phần mềm CORE
generation của Xilinx.
Video decoder (bộ giải mã video) cho phép số hóa các video dạng
NTSC/PAL/SECAM trong các ứng dụng xử lý ảnh.
Giao diện Ethernet 10/100 làm cho XSA Board có khả năng truy nhập
TCP/IP và các dạng mạng khác.
Giao diện USB 1.1 làm cho XSA Board như một ngoại vi USB dạng low-
speed hoặc full-speed với PC.
www.ngohaibac.net
48
Giao diện RS-232 rất hữu ích khi XSA Board cần phải gửi thông tin qua
liên kết giao tiếp nổi tiếp với tốc độ thấp.
Giao diện IDE cung cấp cho XSA Board khả năng truy cập vào ổ đĩa
cứng (hard disk) để lưu và phục hồi dữ liệu.
Các module với chức năng khác có thể thêm vào trong XST Board nhờ
các doughterboard connector.
Như vậy, kết hợp giữa XSA-3S1000 và XST-3.0 cho
Các file đính kèm theo tài liệu này:
- Thiết kế hệ thống xử lý ảnh số trên nền fpga.pdf