Trang 7 DANH SÁCH CÁC THUẬT NGỮ VÀ TỪ VIẾT TẮT Viết tắt Tiếng Anh Tiếng Việt ALU Arithmetic Logic Unit Bộ thực thi các phép tốn lơ-gic ALU Arithmetic Logic unit Đơn vị lô-gic số học AMBA
HỆ THỐNG XỬ LÝ ẢNH SỐ
Một số khái niệm cơ bản trong xử lý ảnh số
Muốn đi vào phân tích các bước xử lý ảnh số chúng ta cần biết một số khái niệm cơ bản trong xử lý ảnh số
Luận văn Chính trị học
Ảnh số là tập hợp các điểm ảnh với mức độ sáng phù hợp, giúp mô tả ảnh gần với thực tế Điểm ảnh là kết quả của quá trình số hóa, chuyển đổi ảnh liên tục thành tập hợp các điểm tương ứng với vị trí và độ sáng thực Khoảng cách giữa các điểm được thiết lập để mắt thường không nhìn thấy ranh giới giữa chúng Mỗi điểm trong ảnh số được gọi là pixel, và trong một bức ảnh hai chiều, mỗi pixel tương ứng với một điểm trong hệ tọa độ (x, y).
Độ phân giải của ảnh là mật độ các điểm ảnh (pixel) trên bề mặt hiển thị, được xác định bởi khoảng cách giữa các điểm ảnh sao cho mắt thường không nhìn thấy được Độ phân giải được phân bố theo trục (x, y) trong không gian hai chiều Ví dụ, độ phân giải 1920x1280 có nghĩa là có 1920 điểm ảnh chiều ngang và 1280 điểm ảnh chiều dọc Khi độ phân giải cao, khoảng cách giữa các điểm ảnh sẽ nhỏ hơn, dẫn đến độ mịn của ảnh tăng lên.
Mức xám của ảnh biểu thị cường độ sáng của từng điểm ảnh, được gán bằng các giá trị số Các thang mức xám cơ bản phụ thuộc vào số bit của mỗi điểm ảnh, với số bit cao hơn mang lại độ chính xác cao hơn so với ảnh gốc Có ba loại ảnh cơ bản đại diện cho các mức xám khác nhau Ảnh xám (gray image) chỉ có hai màu đen và trắng, nhưng mức xám tại các điểm ảnh có thể khác nhau, với mỗi điểm ảnh có giá trị 8 bit, tương ứng với 256 mức sáng khác nhau.
Luận văn Chính trị học
Ngày nay, công nghệ xử lý ảnh đã tiến bộ, cho phép biểu diễn mỗi điểm ảnh bằng nhiều hơn 3 bytes, nâng cao giá trị của hình ảnh Bên cạnh các giá trị màu cơ bản, các yếu tố bổ sung được sử dụng để cải thiện chất lượng ảnh Các loại ảnh phổ biến bao gồm ảnh xám, ảnh nhị phân và ảnh màu.
Hình 1.3: Các loại ảnh trong xử lý ảnh.
Các bước xử lý ảnh số
Có 10 bước cơ bản trong xử lý ảnh số được thể hiện trong hình 1.4 dưới đây:
Ảnh sẽ được thu nhận từ các thiết bị cảm biến như camera và sẽ được số hóa nếu thiết bị không có chức năng số hóa ảnh đầu vào Quá trình số hóa ảnh diễn ra thông qua bộ chuyển đổi tín hiệu từ tương tự sang số.
Nâng cao hình ảnh là quá trình xử lý nhằm cải thiện chất lượng hình ảnh đầu ra so với ảnh gốc, phù hợp với ứng dụng cụ thể Kỹ thuật này giúp làm rõ các chi tiết ẩn và nổi bật những đặc tính quan trọng trong bức ảnh Đây là bước quan trọng để thiết lập các thông số và kỹ thuật định hướng cho từng vấn đề cụ thể Ví dụ, kỹ thuật tăng cường hình ảnh tia X không thể áp dụng cho hình ảnh vệ tinh chụp từ phổ hồng ngoại Các phương pháp nâng cao hình ảnh trong quá trình này chỉ mang tính tương đối.
Luận văn Chính trị học
Người xem đóng vai trò quan trọng trong việc đánh giá hiệu quả của một phương pháp cụ thể thông qua 5 hình ảnh được xử lý và trình bày một cách trực quan.
Hình 1.4: Các bước cơ bản trong xử lý ảnh số [5]
Khôi phục hình ảnh là lĩnh vực cải thiện sự xuất hiện của bức ảnh thông qua các mô hình toán học hoặc xác suất Khác với việc nâng cao hình ảnh dựa trên sở thích chủ quan, khôi phục hình ảnh yêu cầu đánh giá khách quan hơn để đảm bảo tính thuyết phục trong kết quả.
Xử lý ảnh màu là quá trình khai thác màu sắc trong một bức ảnh để trích xuất các đặc điểm quan trọng, giúp nâng cao chất lượng và thông tin của hình ảnh.
Phân loại ảnh và xử lý đa biến là cơ sở quan trọng trong việc chia hình ảnh thành các độ phân giải khác nhau, đồng thời đóng vai trò thiết yếu trong quá trình nén dữ liệu ảnh.
Nén ảnh là kỹ thuật giúp giảm dung lượng lưu trữ và băng thông cần thiết để truyền tải hình ảnh, đặc biệt quan trọng trong môi trường internet Mặc dù công nghệ lưu trữ đã tiến bộ, khả năng truyền tải ảnh vẫn gặp nhiều thách thức do kích thước lớn của hình ảnh Định dạng jpg, sử dụng tiêu chuẩn nén JPEG (Joint Photographic Experts Group), là một ví dụ phổ biến về nén ảnh mà hầu hết người dùng máy tính đều quen thuộc.
Phân loại và xử lý đa biến Nén ảnh
Nhận dạng và mô tả
Luận văn Chính trị học
Xử lý hình thái học là quá trình sử dụng các công cụ để trích xuất các thành phần hình ảnh quan trọng, phục vụ cho việc nhận diện và mô tả hình dáng Bước này bao gồm việc chuyển đổi từ xử lý ảnh đầu ra nhằm phân tích các đặc tính của hình ảnh.
Phân đoạn ảnh là bước quan trọng trong xử lý ảnh số, nơi các ảnh được tách thành các thành phần dựa trên các đặc tính chung như màu sắc hoặc độ sáng Mục tiêu chính của phân đoạn ảnh là làm nổi bật và tách biệt các thuộc tính của các thành phần trong ảnh thô Do lượng thông tin trong ảnh rất lớn, trong khi các ứng dụng chỉ cần một số đặc trưng cụ thể, nên cần có quy trình giảm thiểu thông tin, bao gồm cả phân đoạn ảnh và trích chọn đặc tính.
Quá trình phân đoạn ảnh cho ra dữ liệu ảnh thô với các đặc tính như vùng biên và các đặc điểm riêng biệt Để biểu diễn dữ liệu này, cần lựa chọn giữa hai phương pháp: biến đổi dựa trên vùng biên hoặc trích xuất đặc tính của ảnh Biểu diễn bằng vùng biên thích hợp cho các ứng dụng chỉ quan tâm đến hình thức bên ngoài, trong khi biểu diễn bằng đặc tính riêng biệt phù hợp cho các ứng dụng cần phân tích sâu hơn về tính chất đối tượng Các bước này chỉ là một phần trong việc chuyển đổi dữ liệu ảnh thô sang dạng khác phù hợp hơn với nhu cầu sử dụng, đồng thời cần áp dụng các phương pháp khác để làm nổi bật các đặc tính cần thiết cho mục đích sau này.
Ảnh là một đối tượng phức tạp với nhiều yếu tố như đường nét, độ sáng tối và dung lượng điểm ảnh, cùng với môi trường thu ảnh đa dạng, dẫn đến hiện tượng
Luận văn Chính trị học
7 nên trong tất các các bước hiện nay đã có áp dụng trí tuệ con người vào xử lý và phát huy một cách hiệu quả
Các bước xử lý ảnh số bao gồm nhiều thành phần cơ bản, nhưng không nhất thiết phải thực hiện tất cả tùy thuộc vào ứng dụng cụ thể Đối với ứng dụng chỉnh sửa, các bước tiền xử lý ảnh là cần thiết để nâng cao chất lượng hình ảnh Trong khi đó, nhận dạng và giải thích thường chỉ áp dụng cho các ứng dụng phức tạp như nhận dạng hay phát hiện chuyển động Khi tiếp nhận hình ảnh từ camera hoặc cảm biến, ảnh sẽ được số hóa và nén để giảm dung lượng, sẵn sàng cho việc sử dụng hoặc xử lý tiếp theo Ảnh số hóa có thể bỏ qua bước tiền xử lý và chuyển thẳng đến bước phân đoạn hoặc trích chọn đặc trưng, giúp tối ưu hóa quy trình xử lý ảnh theo nhu cầu người dùng.
Hình 1.5: Mối liên hệ giữa các bước trong xử lý ảnh số [12]
Luận văn Chính trị học
Xử lý ảnh số là một lĩnh vực phong phú với nhiều kỹ thuật đa dạng phục vụ cho các mục đích khác nhau Dưới đây là một số vấn đề cơ bản cần lưu ý trong quá trình xử lý ảnh số.
Chỉnh mức xám
Nhằm khắc phục tính không đồng đều trong một bức ảnh thì có hai bước để tiếp cận:
Giảm số mức xám là quá trình nhóm các mức xám có giá trị tương tự thành một nhóm Khi chỉ có hai mức xám, ảnh đầu ra sẽ trở thành ảnh đen trắng Bước này thường được áp dụng trong các máy in ảnh màu để tạo ra ảnh đen trắng.
Tăng số mức xám thông qua kỹ thuật nội suy giúp tạo ra các mức xám trung gian, làm cho ảnh có thêm giá trị về độ sáng Kết quả là hình ảnh sẽ trở nên mịn màng hơn và mang lại trải nghiệm chân thật hơn cho người dùng.
Biến đổi ảnh
Trong xử lý ảnh, việc tăng số lượng điểm ảnh dẫn đến độ phức tạp tính toán gia tăng, yêu cầu dung lượng lưu trữ và thời gian thực hiện lớn hơn Các phương pháp khoa học cổ điển thường gặp khó khăn trong ứng dụng thực tế Để giải quyết vấn đề này, người ta sử dụng các phép toán tương đương hoặc chuyển đổi sang miền xử lý khác nhằm đơn giản hóa tính toán Sau khi thực hiện các phép toán dễ dàng hơn, biến đổi ngược được áp dụng để đưa dữ liệu trở lại miền ban đầu Các biến đổi phổ biến trong xử lý ảnh bao gồm nhiều kỹ thuật khác nhau.
- Biến đổi Fourier, Cosin, Sin
- Biến đổi (mô tả) ảnh bằng tích chập, tích Kronecker
- Các biến đổi khác như KL (Karhumen Loeve), Hadamard
Nén ảnh
Một bức ảnh, dù ở dạng nào, cần một không gian lưu trữ lớn Để giảm thiểu không gian bộ nhớ, các phương pháp nén ảnh đã được phát triển Hiện nay, các chuẩn nén ảnh như MPEG, H264 và H265 đang được sử dụng rộng rãi và mang lại hiệu quả cao.
Thuật toán theo dõi và phát hiện chuyển động
Theo dõi chuyển động của con người là một thách thức phức tạp do nhiều yếu tố như hình dạng cơ thể, cấu trúc khớp nối, tốc độ di chuyển nhanh và trang phục Những yếu tố này tạo ra nhiều vấn đề cần giải quyết trong quá trình theo dõi.
Luận văn Chính trị học
Điều kiện ánh sáng, ảnh nền và nhiễu có thể ảnh hưởng lớn đến các kỹ thuật xử lý video Để đạt được kết quả mong muốn, cần thực hiện bước tiền xử lý video trước khi tiến hành các bước tiếp theo Sau khi giải quyết các vấn đề ngoại cảnh, việc phát hiện và phân loại đối tượng là cần thiết để theo dõi chúng Các kỹ thuật khoanh vùng đối tượng giúp phát hiện các đối tượng quan tâm trong video và phân cụm các pixel tương ứng Các đối tượng chuyển động có thể là con người, động vật hoặc cây cối Sau đó, việc theo dõi các đối tượng trở nên dễ dàng hơn.
Hình 1.6: Các bước theo dõi đối tượng
Trước khi theo dõi đối tượng trong video, cần phát hiện các đối tượng trong khung hình Trong phần tiếp theo, học viên sẽ trình bày hai thuật toán phát hiện đối tượng cơ bản: thuật toán trừ nền và thuật toán chênh lệch khung hình.
Thuật toán trừ nền
Thuật toán trừ nền (Background Subtraction Algorithms) là phương pháp phổ biến để phát hiện đối tượng chuyển động trong video Cách thức hoạt động của nó là so sánh từng pixel trong khung hình hiện tại với hình ảnh nền tham chiếu Khi các pixel trong khung hình hiện tại có sự khác biệt đáng kể so với pixel ở hình ảnh nền, đối tượng được xác định là đang chuyển động Phương pháp này tương tự như thuật toán đã được mô tả trước đó, khi xem xét các giá trị khác biệt của các pixel tại một thời điểm nhất định.
Tiền xử lý video Camera
Luận văn Chính trị học
Thuật toán này được xác định là nền tĩnh và không thay đổi, giúp đảm bảo rằng kết quả đầu ra luôn chính xác hơn Các bước thực hiện thuật toán được thể hiện rõ ràng trong sơ đồ dưới đây.
Hình 1.7: Sơ đồ khối thuật toán trừ nền
Thuật toán này rất đơn giản và mang lại kết quả chính xác cao nhờ vào việc sử dụng cảnh tĩnh không thay đổi hệ quy chiếu trong suốt quá trình xử lý Tuy nhiên, nó cũng gặp phải hạn chế do sự thay đổi của các yếu tố môi trường, như sự thay đổi cường độ sáng, vị trí camera bị xê dịch, hoặc hình ảnh nền có nhiều vị trí không phải là vật tĩnh.
Thuật toán trừ khung hình
Thuật toán trừ khung hình (Frame Difference Algorithm) hoạt động dựa trên giả định nền tĩnh, so sánh các pixel giữa các khung hình trong khoảng thời gian ngắn (∆t) Khi phát hiện sự khác biệt vượt ngưỡng (Γ), điều này cho thấy có sự thay đổi tại các pixel, từ đó kết luận rằng có chuyển động xảy ra.
So sánh ngưỡng Hình nền
Kết quả Trừ nền Chụp khung hình
Luận văn Chính trị học
Trong đó I i là sự sai của một pixel giữa hai khung hình video liên tiếp là f t và f t−1
Sự khác biệt giữa tất cả các pixel trong một khung hình tại một thời điểm sẽ tạo thành một tập hợp số nhị phân, cho phép chúng ta nhận diện chuyển động so với khung hình trước Thuật toán này được minh họa qua sơ đồ khối dưới đây.
Hình 1.8: Sơ đồ khối thuật toán trừ khung hình
Phương pháp này nổi bật với khả năng nhận dạng chuyển động hiệu quả, dễ thực hiện và không yêu cầu nhiều không gian bộ nhớ, đồng thời có thể hoạt động tốt ngay cả khi camera bị xê dịch hoặc gặp phải các yếu tố môi trường Tuy nhiên, hạn chế lớn nhất là thuật toán không hoạt động trên nền tĩnh, dẫn đến việc nhận diện chuyển động có thể trở nên tương đối do hệ quy chiếu luôn thay đổi theo thời gian.
Thuật toán phân loại đối tượng
Các phương pháp phát hiện khoanh vùng chuyển động đã được đề cập ở phần trước
Để xác định đối tượng cần theo dõi trong các tình huống chuyển động, chúng ta cần áp dụng các phương pháp đa dạng và phức tạp Quá trình này gặp nhiều thách thức do đối tượng luôn di chuyển và có thể bị cản trở bởi vật thể hoặc góc khuất, làm hạn chế tầm nhìn của camera Bên cạnh đó, các yếu tố môi trường cũng đóng vai trò quan trọng, ảnh hưởng đến khả năng theo dõi đối tượng một cách hiệu quả.
Kết quả Trừ khung hình Chụp khung hình
Luận văn Chính trị học
Để nhận diện đối tượng hiệu quả, chúng ta cần chú ý đến các đặc tính nổi bật như màu sắc, hình dạng, kết cấu và các thuộc tính chuyển động của nó Bài viết này sẽ giới thiệu về thuật toán theo dõi và nhận dạng đối tượng.
Thuật toán Harris Corner Detector được đề xuất bởi Harris và Stephens vào năm
Năm 1988, phương pháp phát hiện góc (corner detector) đã được giới thiệu, sử dụng trong hình ảnh 2D với hai cạnh và biên có hướng khác nhau tại các điểm lân cận.
Từ vùng cửa sổ, chúng ta tiến vào trung tâm để xác định đối tượng, với các điểm có sự thay đổi lớn về cường độ pixel, như thể hiện rõ trong hình 1.9 dưới đây.
Hình 1.9: Cách nhận biết góc trong thuật toán Harris Conner
Các góc được coi là điểm quan trọng vì chúng cung cấp các giá trị chính xác và đa dạng, trong khi vùng trống và các biên lại tạo ra quá nhiều điểm ảnh khác nhau, dẫn đến kết quả không đồng nhất Để phát hiện những sự thay đổi này, thuật toán sử dụng một hàm tính toán tự động.
Hàm cửa sổ w(x,y) được sử dụng để xác định cường độ sáng I(x,y) của điểm ảnh tại tọa độ (x,y), trong khi I(x + u, y + v) là cường độ sáng sau khi dịch chuyển cửa sổ đến tọa độ mới Chúng ta có thể áp dụng bộ lọc với các điểm ảnh lân cận có giá trị bằng 1 và các điểm ảnh còn lại có giá trị 0, hoặc sử dụng bộ lọc Gaussian, trong đó các điểm ảnh lân cận sẽ có giá trị cao hơn.
Luận văn Chính trị học
13 hơn so với các điểm còn lại theo phân bố Gaussian Áp dụng biến đổi Taylor cho các cường độ thay đổi chúng ta có:
Với I x và I y là các đạo hàm riêng tương ứng theo x và y Biến đổi ra chúng ra được hàm:
Sử dụng các phép nhân tính toán ma trận chúng ta được kết quả:
Giá trị riêng của ma trận S a được xác định là 𝜆 1 và 𝜆 2, trong đó k là một hằng số được xác định qua thực nghiệm, thường nằm trong khoảng [0,04…0,15] Biểu thức dưới đây sẽ quyết định xem hàm cửa sổ w có chứa góc hay không.
Khi cả hai giá trị λ1 và λ2 đều nhỏ, hàm E(u,v) gần như không thay đổi theo bất kỳ hướng nào Điều này dẫn đến việc vùng cửa sổ xung quanh không có sự biến đổi về cường độ sáng, cho thấy rằng cửa sổ không phát hiện được góc hoặc cạnh nào.
Nếu giá trị λ1 lớn và λ2 nhỏ, hoặc ngược lại, điều này chỉ ra rằng hàm cửa sổ E(u,v) có sự biến đổi giá trị khi di chuyển theo một hướng, và có sự thay đổi rõ rệt khi dịch chuyển theo hướng trực giao Sự khác biệt này cho thấy sự tồn tại của một cạnh.
Khi cả hai giá trị λ 1 và λ 2 đều lớn, sự dịch chuyển của cửa sổ theo bất kỳ hướng nào sẽ dẫn đến sự thay đổi cường độ sáng, cho thấy sự xuất hiện của một điểm góc Mối quan hệ giữa λ 1 và λ 2 được minh họa trong Hình 1.10 [11] dưới đây.
Luận văn Chính trị học
Hình 1.10: Biểu đồ quan hệ giữa 𝜆 1 và 𝜆 2 [11]
Hệ thống xử lý ảnh số
Hệ thống xử lý ảnh trên máy tính số bao gồm các thành phần như bộ thu nhận ảnh, bộ số hóa, bộ xử lý trung tâm, màn hình và bộ nhớ Hiện nay, nhiều hệ thống xử lý ảnh chuyển đổi sang ảnh xám hoặc đen trắng nhằm giảm độ phức tạp và khối lượng tính toán Ảnh xám được ứng dụng rộng rãi trong các lĩnh vực như sinh vật học, y học và công nghiệp, và mọi ứng dụng trên ảnh xám đều có thể áp dụng cho ảnh màu Với sự phát triển của công nghiệp điện tử, việc tích hợp nhiều thành phần cho phép xử lý đồng thời cả ảnh xám và ảnh màu, duy trì hiệu năng và dung lượng lưu trữ Nhờ đó, độ chính xác và tốc độ xử lý ảnh ngày càng cao, phục vụ cho các lĩnh vực yêu cầu tính chính xác và khả năng làm việc thời gian thực.
Luận văn Chính trị học
Hình 1.11: Hệ thống xử lý ảnh
Một số giải pháp phần cứng thực thi trong hệ thống xử lý ảnh
CÔNG NGHỆ FPGA
Mạch tích hợp ứng dụng chuyên biệt
Mạch tích hợp ứng dụng chuyên biệt (ASIC) là loại mạch được thiết kế cho các ứng dụng cụ thể và hiện đang được sử dụng rộng rãi trong nhiều lĩnh vực như vi xử lý điện thoại di động, máy móc tự động, phương tiện truyền thông, xe cộ, và hệ thống xử lý Sự phát triển mạnh mẽ của công cụ thiết kế đã cho phép các sản phẩm ASIC có nhiều chức năng hơn, với số lượng cổng lên đến hàng trăm tỉ Tuy nhiên, chi phí thiết kế và chế tạo ASIC tại nhà máy vẫn rất cao đối với nhiều cá nhân và phòng thí nghiệm Do đó, một số nhà cung cấp đã phát triển các mạch tích hợp với chi phí thấp hơn để đáp ứng nhu cầu này.
ASIC Mạch tích hợp lô-gic lập trình được
Mảng phần tử Chuẩn tế bào
Luận văn Chính trị học
Học viên sẽ tiến hành phân tích hai loại mạch tích hợp có thể cấu hình được, bao gồm mảng cổng lô-gic lập trình được và các thiết bị lô-gic có khả năng lập trình.
Các thiết bị lô-gic có thể lập trình được
Các thiết bị lô-gic có thể lập trình được (PLD) là mạch tích hợp số cho phép cấu hình lại để thực hiện các chức năng lô-gic theo yêu cầu Đây là chip c
Thiết bị lô-gic khả trình phức tạp được tạo thành từ các thiết bị lô-gic khả trình đơn giản, thường là mảng lô-gic AND/OR lập trình được với kích thước
Mảng cổng lô-gic có khả năng lập trình
Mảng cổng lô-gic có khả năng lập trình (FPGA) là một loại mạch tích hợp lớn, cho phép người dùng lập trình và thay đổi thiết kế theo nhu cầu FPGA có khả năng tái lập trình linh hoạt, không phụ thuộc vào dây chuyền sản xuất phức tạp của nhà máy bán dẫn.
Mảng cổng lô-gic có khả năng lập trình được xem như một mạch tích hợp ứng dụng chuyên biệt, nhưng không đạt được mức độ tối ưu như mạch tích hợp ASIC do hạn chế trong việc thực hiện các tác vụ phức tạp Tuy nhiên, công nghệ ASIC thường tốn nhiều thời gian để chế tạo và chi phí cao để sản xuất sản phẩm đầu tiên Ngược lại, mảng cổng lô-gic có khả năng tái cấu hình mạnh mẽ, mang lại sự linh hoạt cho người dùng.
Luận văn Chính trị học
Việc áp dụng công nghệ FPGA trong thiết kế mạch trước khi sản xuất các mẫu ASIC rất quan trọng, giúp giảm chi phí và rút ngắn thời gian chế tạo mạch tích hợp.
Công nghệ FPGA nổi bật với tính linh hoạt nhưng cũng có những nhược điểm như diện tích lớn hơn 20 đến 35 lần so với vi mạch ASIC, hiệu suất kém hơn ba đến bốn lần và tiêu thụ năng lượng động gấp 10 lần Những hạn chế này chủ yếu xuất phát từ khối lập trình định tuyến của FPGA, nơi đảm nhiệm việc thực thi, kết nối và tiêu thụ năng lượng, đổi lại cho khả năng chế tạo nhanh chóng.
Thiết kế hay lập trình cho mạch FPGA được thực hiện chủ yếu bằng các ngôn ngữ mô tả phần cứng như VHDL, verilog …
Mảng cổng lô-gic có khả năng lập trình và mạch tích hợp ứng dụng chuyên biệt
Các mạch tích hợp ứng dụng chuyên biệt (ASIC) có hiệu năng và dung lượng lưu trữ cao hơn, đồng thời tiêu thụ nguồn nuôi thấp hơn so với mảng cổng lô-gic có khả năng lập trình (FPGA) Điều này dẫn đến việc thiết kế FPGA tiêu tốn nhiều năng lượng hơn so với ASIC Do đó, trong sản xuất công nghiệp quy mô lớn, công nghệ ASIC mang lại chi phí sản xuất trên mỗi đơn vị thấp hơn so với sản phẩm từ công nghệ FPGA.
Mảng cổng lô-gic có khả năng lập trình là lựa chọn phù hợp cho các ứng dụng vừa và nhỏ nhờ vào chi phí thiết kế thấp Tuy nhiên, khi sản xuất công nghiệp với số lượng lớn, mạch tích hợp ứng dụng chuyên biệt (ASIC) lại có giá thành rẻ hơn nhiều, vì công nghệ ASIC được thiết kế cho một ứng dụng cụ thể thay vì linh hoạt và tái cấu hình như công nghệ FPGA.
Quá trình thiết kế cổng lô-gic có khả năng lập trình diễn ra nhanh chóng và đơn giản hơn so với thiết kế mạch tích hợp ứng dụng chuyên biệt Điều này là do không cần phải sắp xếp linh kiện, cũng như không yêu cầu các mặt mạ hay quy trình hoàn thiện phức tạp.
Mạch tích hợp ứng dụng chuyên biệt có thể được thiết kế để xử lý hỗn hợp các tín hiệu hoặc chỉ sử dụng thiết kế tương tự Tuy nhiên, việc thiết kế mạch này không thể sử dụng các chip FPGA.
Mạch tích hợp ứng dụng chuyên biệt (ASIC) có thể được thiết kế hoàn toàn cho các ứng dụng cụ thể và phức tạp như vi xử lý hoặc bộ nhớ, trong khi mảng cổng lô-gic lập trình (FPGA) không có khả năng này.
Luận văn Chính trị học
Mảng cổng lô-gic lập trình được cho phép cấu hình lại nhiều lần, giúp giảm thiểu chi phí sản xuất sản phẩm cuối cùng Nhờ vào công nghệ này, người dùng có thể tự thiết kế một CPU theo nhu cầu và mong muốn của mình.
Thiết kế mạch tích hợp ứng dụng chuyên biệt yêu cầu chi phí cao cho nghiên cứu, thiết kế và kiểm thử sản phẩm mới, trong khi thiết kế dựa trên công nghệ FPGA lại tiết kiệm chi phí nhờ khả năng tái cấu hình Thêm vào đó, quá trình thiết kế mạch tích hợp ứng dụng chuyên biệt thường kéo dài hơn so với thiết kế mảng cổng lô-gic lập trình được.
Các công cụ thiết kế FPGA thường có chi phí thấp hơn so với các công cụ thiết kế ASIC FPGA có khả năng lập trình lại, cho phép sử dụng cho nhiều ứng dụng khác nhau, trong khi ASIC không có tính năng này Điều này giải thích lý do tại sao công nghệ FPGA ngày càng trở nên phổ biến.
Mảng cổng lô-gic lập trình được và thiết bị lô-gic lập trình được
Để so sánh với thiết bị lô-gic lập trình được thì mảng cổng lô-gic lập trình được tối ưu hơn ở các điểm:
- Công cụ lập trình của FPGA thực hiện đơn giản hơn
Kiến trúc của FPGA được xây dựng từ các khối lô-gic nhỏ hơn nhiều so với các khối lô-gic trong thiết bị lô-gic khả trình đơn giản Ưu điểm này cho phép FPGA chứa số lượng lớn các phần tử lô-gic, với khả năng đạt tới hàng tỷ cổng lô-gic, trong khi thiết bị lô-gic khả trình phức tạp chỉ có thể chứa từ 10.000 đến 100.000 cổng lô-gic Để đạt được điều này, kiến trúc của mảng cổng lô-gic lập trình được thiết kế phức tạp hơn nhiều so với thiết bị lô-gic khả trình phức tạp.
- Các trễ trong các thiết bị lô-gic khả trình phức tạp lớn hơn so với các trễ trong các mảng cổng lô-gic lập trình được
Ngoài ra mảng cổng lô-gic lập trình được và thiết bị lô-gic lập trình được còn có một số đặc điểm khác nhau như:
Các FPGA gồm có các khối lô-gic nhỏ, trong khi các CPLD được làm ra từ các khối lô-gic lớn
FPGA là chip lô-gic số dựa vào RAM, trong khi CPLD là chip dựa vào EEPROM
Các FPGA dựa vào các bảng ánh xạ bên trong, trong khi các CPLD lại hình thành các hàm lô-gic nhờ các mạch cổng sea-of-gates
Luận văn Chính trị học
Hầu hết các FPGA tích hợp các mạch lô-gic cao cấp như bộ cộng, bộ nhân và bộ nhớ nhúng, cũng như các khối lô-gic cho phép thực hiện các bộ giải mã và hàm toán học, trong khi CLPD không cung cấp các tính năng này.
Các mảng cổng lô-gic lập trình được thích hợp cho thiết kế phức tạp hơn so với thiết bị lô-gic khả trình phức tạp Thiết bị lô-gic khả trình phức tạp thường được sử dụng cho các ứng dụng tổ hợp, trong khi mảng cổng lô-gic lập trình được lại tối ưu hơn cho các máy trạng thái lớn như vi xử lý Mảng cổng lô-gic lập trình được hoạt động với các phần tử lô-gic theo dạng song song, ngược lại, vi điều khiển dựa trên cấu trúc CPU thực thi mã lệnh theo dạng tuần tự.
Một điểm khác biệt nổi bật giữa thiết bị lô-gic khả trình phức tạp và các thiết bị hiện đại là việc tích hợp nhiều bộ lô-gic số học đã được tối ưu hóa, cùng với hỗ trợ RAM, ROM tốc độ cao và các bộ nhân cộng.
Sau khi phân tích các ưu nhược điểm của FPGA so với các mạch tích hợp khác, học viên nhận thấy rằng FPGA là lựa chọn khả thi và phù hợp nhất cho đề tài này về chi phí, công cụ, thời gian chế tạo và hiệu năng hoạt động Tiếp theo, học viên sẽ tiến hành phân tích kiến trúc cơ bản của FPGA cùng với một số ứng dụng nổi bật của nó.
Cấu trúc mảng cổng lô-gic lập trình được
Có hai phương pháp lập trình FPGA: lập trình dựa trên SRAM và lập trình dựa trên kết nối cầu chì
Lập trình dựa trên SRAM yêu cầu sử dụng các bit của SRAM cho từng phần tử Giá trị bit 0 sẽ tắt chuyển mạch, trong khi giá trị bit 1 sẽ bật chuyển mạch Phương pháp lập trình thứ hai tạo ra kết nối cầu chì thông qua dòng lập trình.
FPGA dựa trên SRAM cho phép ghi đọc giống như SRAM thông thường, giúp lập trình lại nhiều lần ngay cả khi đang trong hệ thống Tuy nhiên, việc lập trình loại FPGA này gặp phải trễ định tuyến lớn Loại FPGA này thường được ứng dụng trong việc lập trình cấu hình các mẫu thử cho thiết kế phần cứng trên ASIC.
FPGA sử dụng kết nối cầu chì để giữ nguyên nội dung lập trình ngay cả khi mất nguồn, đồng thời có độ trễ định tuyến thấp Tuy nhiên, quá trình sản xuất FPGA lại khá phức tạp.
Luận văn Chính trị học
FPGA sử dụng kiến trúc dựa trên SRAM cơ bản với các thành phần thiết yếu, và một khi đã lập trình xong, thiết kế không thể thay đổi được nữa.
- Các khối lô-gic có thể cấu hình được
- Các khối vào ra có thể cấu hình được
- Mạng liên kết có thể lập trình được
Hình 2.2: Tổng thể về kiến trúc FPGA [3]
Bên cạnh đó, có thể có các mạch điều khiển tín hiệu xung nhịp số, phân phối cho từng khối logic, khối vào ra và các mạch logic bổ sung như ALU, bộ nhớ, bộ ghép kênh (MUX), thanh ghi dịch và mạch giải mã.
Khối lô-gic có thể tái cấu hình (CLB): Mục đích của việc lập trình khối lô-gic trong
FPGA là công nghệ cung cấp các tính toán và phần tử nhớ cơ bản cho hệ thống số, với các khối lô-gic là tài nguyên chính Mỗi khối lô-gic trong FPGA thường chứa nhiều mảnh, mỗi mảnh lại bao gồm các ô lô-gic và thành phần nhớ Các ô lô-gic này được cấu hình để thực hiện các chức năng logic cơ bản như AND, OR, NOT, thông qua việc sử dụng bảng ánh xạ trên các tín hiệu số.
Luận văn Chính trị học
Các khối lô-gic (LUT) được kết nối qua mạng liên kết có thể lập trình, tạo thành một mảng các khối lô-gic thực hiện các tác vụ tính toán phức tạp hơn.
Hình 2.3: Khối lô-gic cơ bản [8]
Bảng ánh xạ (LUT) là một loại bộ nhớ nhỏ, hay còn gọi là bộ tạo chức năng, dùng để thực hiện các chức năng logic bằng cách lưu trữ trạng thái logic đầu ra tương ứng với từng tổ hợp biến đầu vào Thông thường, bảng ánh xạ có bốn đầu vào, cho phép thực hiện bất kỳ chức năng logic nào với bốn đầu vào.
Hệ thống mạch liên kết lập trình trong FPGA cho phép kết nối các khối lô-gic và khối vào/ra để tạo thành thiết kế hoàn chỉnh Các liên kết này bao gồm bộ ghép kênh, transistor và bộ đệm ba trạng thái, giúp kết nối các khối lô-gic với nhau Ngoài ra, transistor và bộ ghép kênh còn đóng vai trò quan trọng trong các cấu trúc định tuyến bên trong mạch FPGA.
Khối ra vào là thành phần quan trọng trong thiết kế kiến trúc FPGA, cung cấp giao tiếp giữa các khối lô-gic và các thành phần bên ngoài Mỗi chân vào/ra của mạch FPGA có thể được lập trình để đảm bảo các giao tiếp điện cần thiết, giúp kết nối FPGA với hệ thống mà nó tham gia Việc tối ưu hóa khối ra vào là một yếu tố quyết định trong hiệu suất và khả năng tương tác của FPGA trong các ứng dụng thực tế.
Luận văn Chính trị học
25 vào/ra là việc lựa chọn các tiêu chuẩn điện áp cung cấp và điện áp tham chiếu sẽ được hỗ trợ
Kiến trúc vi xử lý Microblaze
Kiến trúc MicroBlaze có những đặc điểm nổi bật như tập lệnh 32 bit với 3 toán hạng và 2 chế độ định địa chỉ Hệ thống sử dụng đường bus 32 bit để truyền địa chỉ, kèm theo một khối ghi dịch và hai cấp độ ngắt Khối tính toán số học ALU bao gồm các bộ phận như cộng/trừ, ghi dịch/lô-gic và nhân, tạo nên khả năng xử lý mạnh mẽ cho kiến trúc này.
Tập thanh ghi dữ liệu gồm 32 thanh ghi 32-bit
MicroBlaze cung cấp 3 giao tiếp bộ nhớ:
Bus bộ nhớ cục bộ
Bus xử lý cục bộ
Bus kết nối ngoại vi
Mối quan hệ giữa các thành phần trong vi xử lý được thể hiện trong hình 2.5:
Luận văn Chính trị học
Hình 2.5: Sơ đồ khối kiến trúc vi xử lý Microblaze 32 bits [2]
Giao tiếp với bộ nhớ đệm được chia thành hai loại: bus kết nối lệnh và bus kết nối dữ liệu Microblaze sử dụng bus AXI làm giao diện kết nối đầu tiên, thiết lập mối quan hệ chủ/tớ giữa hệ thống và bộ nhớ Các kết nối AXI4-Stream hỗ trợ xử lý đồng thời, trong khi các kết nối ngoại vi được thực hiện qua các bus ngoại vi theo chuẩn IBM, cung cấp ba loại bus cho kết nối đa lõi liên tục, thư viện macro và cổng lô-gic cho người dùng.
Bus xử lý cục bộ
Bus ngoại vi trên chip
Bus điều khiển thanh ghi
Bus ngoại vi trên chip được chia thành hai giao diện chính: giao diện lệnh và giao diện dữ liệu Tất cả các kết nối ngoại vi đều thông qua bus OPB, bao gồm cả đồng hồ.
Hẹn giờ/bộ đếm Điều khiển Interrupt Điều khiển SRAM Điều khiển bộ nhớ flash
Luận văn Chính trị học
31 Điều khiển bộ nhớ ZBT Điều khiển BRAM Điều khiển bộ nhớ DDR Điều khiển SDRAM
Giao diện kết nối UART
Giao diện kết nối SPI
Giao diện kết nối mạng Ethernet 10/100 MAC
Định dạng dữ liệu và kiến trúc tập lệnh của Microblaze
Tập lệnh rút gọn RISC của Microblaze sử dụng hai định dạng lệnh 32-bit: Định dạng loại A cho các lệnh giữa thanh ghi – thanh ghi, bao gồm trường opcode, một thanh ghi toán hạng đích và hai thanh ghi nguồn Định dạng loại B áp dụng cho các lệnh thanh ghi – số, với trường opcode, một thanh ghi đích, một thanh ghi nguồn và một giá trị nguồn số trực tiếp 16-bit.
Hình 2.6: Định dạng lệnh trong Microblaze
Microblaze áp dụng kiến trúc Load/Store của RISC, cho phép truy cập bộ nhớ với ba kích thước dữ liệu: 8 bits, 16 bits, và 32 bits Kiến trúc RISC của vi xử lý Microblaze dựa vào tập thanh ghi 32-bit và bảng ánh xạ bộ nhớ truy cập ngẫu nhiên, với các tập lệnh riêng cho việc truy cập bộ nhớ dữ liệu và bộ nhớ lệnh Hơn nữa, Microblaze hỗ trợ kết nối các khối bộ nhớ truy cập ngẫu nhiên (BRAM) cả trong chip và ngoài chip.
Microblaze, giống như các vi xử lý kiến trúc RISC khác, áp dụng kiến trúc đường ống để tối ưu hóa hiệu suất Mỗi câu lệnh thường cần một chu kỳ để hoàn thành từng giai đoạn, điều này giúp cải thiện tốc độ xử lý tổng thể.
Luận văn Chính trị học
Microblaze yêu cầu 32 chu kỳ để hoàn thành một câu lệnh, tương ứng với số giai đoạn trong cấu trúc đường ống, và chỉ một câu lệnh được hoàn thành mỗi chu kỳ khi không có xung đột dữ liệu hay lỗi cấu trúc Xung đột dữ liệu có thể xảy ra khi kết quả của một lệnh cần thiết cho lệnh tiếp theo, dẫn đến đình trệ trong xử lý trừ khi kết quả được chuyển tiếp Trình biên dịch GNU của Microblaze tối ưu hóa sắp xếp các câu lệnh để tránh xung đột này Xung đột điều khiển xảy ra khi một lệnh đã thực hiện nhưng không có lệnh tiếp theo sẵn sàng, và Microblaze sử dụng khe trễ và bộ đệm để giảm chu kỳ trống Ngoài ra, xung đột cấu trúc có thể xảy ra với các lệnh yêu cầu nhiều chu kỳ để hoàn thành, điều này được xử lý bằng cách trì hoãn các đường ống Các lệnh truy cập bộ nhớ chậm có thể mất nhiều chu kỳ, và MicroBlaze cung cấp bộ đệm tiền nhận lệnh để giảm xung đột trong bộ nhớ khi thực hiện các lệnh đa chu kỳ Khi đường ống bị đình trệ, bộ đệm tiền nhận lệnh vẫn tiếp tục tải các lệnh tuần tự, cho phép giai đoạn nhận lệnh lấy lệnh trực tiếp từ bộ đệm khi có thể Nếu các câu lệnh bị sửa đổi trong quá trình thực thi, bộ đệm tiền nhận lệnh cần được làm trống để tránh chứa các câu lệnh cũ.
Vi xử lý Microblaze tích hợp được ba loại cấu trúc đường ống cho ba mục đích khác nhau
Kiến trúc đường ống tiết kiệm diện tích được thiết kế với ba giai đoạn chính: đọc lệnh (IF), giải mã lệnh (ID), và thực thi lệnh (EXE), nhằm giảm chi phí phần cứng Các quá trình đẩy dữ liệu, trễ trong đường ống và rẽ nhánh được tự động xử lý trong phần cứng Hình 2.7 minh họa kiến trúc đường ống ba giai đoạn của Microblaze.
Hình 2.7: Kiến trúc đường ống ba giai đoạn
Luận văn Chính trị học
Kiến trúc đường ống được thiết kế với năm giai đoạn nhằm tối ưu hóa hiệu suất thực thi, bao gồm ba giai đoạn chính và hai giai đoạn bổ sung: truy cập bộ nhớ (MEM) và ghi kết quả vào thanh ghi (WB), như được minh họa trong hình 2.8.
Hình 2.8: Kiến trúc đường ống năm giai đoạn
Kiến trúc này có hai loại xung đột dữ liệu [2]:
Trong giai đoạn giải mã (ID), một lệnh cần nhận kết quả từ lệnh đang trong quá trình thực thi (EXE) dưới dạng toán hạng nguồn Các loại lệnh trong giai đoạn thực thi bao gồm tải, lưu, dịch, nhân, chia và lệnh dấu phẩy động Tình huống này dẫn đến việc xảy ra 1-2 chu kỳ trễ.
Trong giai đoạn giải mã (ID), một lệnh cần sử dụng kết quả từ một lệnh đang ở giai đoạn truy cập bộ nhớ (MEM) làm toán hạng nguồn Các lệnh ở giai đoạn truy cập bộ nhớ bao gồm tải, nhân và dấu phẩy động, và việc sử dụng kết quả từ những lệnh này yêu cầu một chu kỳ trễ.
Chế độ thứ ba nhằm tối đa hóa tần số hoạt động sử dụng kiến trúc đường ống tám giai đoạn, bao gồm các bước: đọc lệnh (IF), giải mã lệnh (ID), thực thi lệnh (EXE), truy cập bộ nhớ 0 (M0), bộ nhớ 1 (M1), bộ nhớ 2 (M2), bộ nhớ 3 (M3) và ghi kết quả vào thanh ghi (WB) Kiến trúc này được minh họa trong hình 2.9.
Hình 2.9: Kiến trúc đường ống tám giai đoạn
Luận văn Chính trị học
Với kiến trúc này thì có bốn loại xung đột dữ liệu [2]:
Khi một câu lệnh đang trong giai đoạn giải mã (ID) cần kết quả từ câu lệnh thực thi (EXE) như một toán hạng nguồn, các loại lệnh thực thi bao gồm tải, lưu, dịch, nhân, chia và lệnh dấu phẩy động Kết quả này có thể dẫn đến 1-5 chu kỳ trễ.
Trong quá trình giải mã lệnh (ID), một lệnh cần sử dụng kết quả từ bộ nhớ M0 làm toán hạng nguồn Các lệnh trong bộ nhớ M0 bao gồm tải, nhân và dấu phẩy động Để hoàn thành, kết quả sẽ cần từ 1 đến 4 chu kỳ trễ.
Trong quá trình giải mã lệnh (ID), một lệnh cần sử dụng kết quả từ hai lệnh lưu trữ tại bộ nhớ M0 và M1 làm toán hạng nguồn Các lệnh tại bộ nhớ M0 và M1 bao gồm lệnh tải, nhân và dấu phẩy động Để hoàn thành, kết quả yêu cầu có độ trễ từ 1-3 hoặc 1-2 chu kỳ.
Khi một câu lệnh đang trong giai đoạn giải mã (ID) và cần kết quả từ bộ nhớ M3 như một toán hạng nguồn, các loại lệnh thực thi bao gồm lệnh tải và lệnh dấu phẩy động Điều này dẫn đến việc xảy ra 1 chu kỳ trễ.
Sau khi tìm hiểu về cấu trúc mảng cổng lô-gic có khả năng lập trình và các thành phần cơ bản của nó, người học sẽ tiến hành phân tích và thiết kế một hệ thống xử lý ảnh Hệ thống này sẽ được xây dựng dựa trên công nghệ FPGA và sử dụng các công cụ thiết kế, mô phỏng đã được phân tích trước đó.
Luận văn Chính trị học
3 Chương 3 ĐỀ XUẤT VÀ THỰC THI THỬ NGHIỆM HỆ THỐNG
XỬ LÝ ẢNH TRÊN ARTIX-7
Sự phát triển mạnh mẽ trong công nghệ xử lý ảnh đã tạo ra nhiều ứng dụng đa dạng, đòi hỏi hệ thống phần cứng phải linh hoạt và hiệu năng cao Hệ thống FPGA đáp ứng tốt cả hai yêu cầu này, cho phép chỉnh sửa thuật toán trực tiếp và cải thiện hiệu suất hoạt động Tuy nhiên, việc chỉnh sửa phần cứng cần sự hỗ trợ từ các phần mềm trung gian như của Xilinx, Althena, hoặc các bên thứ ba như Synopsys Kit Artix-7 của Xilinx cung cấp công cụ hỗ trợ thiết kế hệ thống, giúp đơn giản hóa quy trình với thông số hợp lý và giá thành phù hợp, từ đó tạo ra mẫu hệ thống trước khi sản xuất.
Công cụ Vivado Design Suite