Đề tài Thiết kế hệ thống xử lý ảnh số trên nền fpga

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

pdf84 trang | Chia sẻ: oanh_nt | Lượt xem: 6068 | Lượt tải: 1download
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:

  • pdfThiết kế hệ thống xử lý ảnh số trên nền fpga.pdf