Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 57 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
57
Dung lượng
1,69 MB
Nội dung
Thiết kế máy ảnh kỹ thuật số TỔNG QUAN Giới thiệu máy ảnh kỹ thuật số đơn giản Quan điểm nhà thiết kế Yêu cầu thông số kỹ thuật Thiết kế triển khai Giới thiệu • Hệ thống nhúng máy ảnh kỹ thuật số Bộ xử lý đa Bộ xử lý đặc thù Tùy chỉnh chuẩn Bộ nhớ Giao tiếp • Thiết kế máy ảnh kỹ thuật số Bộ xử lý đa vs xử lý đơn chức Phân tách chức loại xử lý khác Máy ảnh kỹ thuật số đơn giản YÊU CẦU CHUNG • Chụp ảnh • Lưu trễ ảnh dạng số Không sử dụng film Lưu nhiều ảnh máy ảnh o Số lượng phụ thuộc vào dung lượng nhớ số bit sử dụng cho ảnh • TẢI ẢNH LÊN HỆ THỐNG MÁY TÍNH (PC) CHỈ KHẢ THI GẦN ĐÂY • Hệ thống chip (SOC): nhiều xử lý nhớ IC • Bộ nhớ flash dung lượng cao • Mơ tả đơn giản: Máy ảnh kỹ thuật số thực có nhiều tính Ảnh có kích thước khác nhau, xóa ảnh, kéo dãn số học, phóng to/thu nhỏ, vv Máy ảnh kỹ thuật số đơn giản Chip máy ảnh kỹ thuật số CCD A2D Bộ tiền xử lý CCD Bộ đồng xử lý pixel D2A Thấu kính Bộ giải mã JPEG Vi điều khiển Số nhân/ tích lũy Hiển thị ctrl Bộ điều khiển DMA Bộ điều khiển nhớ • • • Giao diện xe bus ISA UART Màn hình LCD Đơn chức – máy ảnh kỹ thuật số Bị ràng buộc chặt chẽ Chi phí thấp, cơng suất thấp, nhỏ, nhanh Phản ứng nhanh theo thời gian thực – Chỉ phạm vi nhỏ Thách thức thiết kế Tối ưu hóa số liệu thiết kế • Mục tiêu thiết kế rõ ràng Xây dựng triển khai với chức mong muốn • Thách thức thiết kế Tối ưu hóa đồng thời nhiều số thiết kế • Chỉ số thiết kế Tính đo lường triển khai hệ thống Tối ưu hóa số thiết kế thách thức Thách thức thiết kế Số liệu thiết kế chung • Chi phí đơn vị: Chi phí để sản xuất hệ thống, không bao gồm chi phí NRE • Chi phí NRE (Chi phí kỹ thuật khơng định kỳ): Chi phí thiết kế lần • • • • Kích thước: khơng gian vật lý cần thiết cho hệ thống Hiệu suất: thời gian thực thi thông lượng hệ thống Công suất: lượng điêu tiêu thụ hệ thống Tính linh hoạt: khả thay đổi chức hệ thống mà không gây chi phí NRE nặng nề Thách thức thiết kế Số liệu thiết kế chung • Thời gian tới nguyên mẫu: thời gian cần thiết để xây dựng phiên hoạt động hệ thống • Thời gian đưa thị trường: thời gian cần thiết để phát triển hệ thống đến mức phát hành bán cho khách hàng • Khả bảo trì: khả sửa đổi hệ thống sau phát hành lần đầu • Chính xác, an tồn, nhiều Số liệu thiết kế Cải thiện số làm xấu số khác • Cần có chun mơn phần cứng phần mềm để tối ưu hóa số thiết kế Kích cỡ Quyền lực Hiệu suất Chi phí NRE CCD chip máy ảnh kỹ thuật số A2D tiền xử lý CCD đồng xử lý pixel D2A Thấu kính giải mã JPEG vi điều khiển Số nhân/Tích lũy điều khiển DMA điều khiển nhớ Hiển thị ctrl Giao diện xe buýt ISA Không chuyên gia phần cứng phần mềm nhưu thường thấy nhà thiết kế phải thoải mái với công nghệ khác để lựa chọn cơng nghệ tốt cho ứng dụng cụ thể rang buộc liên quan UART hình LCD Phần cứng Phần mềm Thời gian đưa thị trường số liệu thiết kế đòi hỏi khắt khe Revenues ($) • Thời gian cần thiết để phát triển sản phẩm đến mức bán cho khách hàng • Cửa sổ thị trường Khoảng thời gian mà sản phẩm có doanh thu cao Time (months) • Thời gian đưa thị trường trung bình hạn chế khoảng tháng • Sự chậm trễ tốn Tổn thất gia nhập thị trường chậm trễ • Mơ hình doanh thu đơn giản hóa Tuổi thọ sản phẩm = 2W, Đỉnh W Thời gian gia nhập thị trường xác định tam giác, đại diện cho thâm nhập thị trường Diện tích tam giác doanh thu Revenues ($) Peak revenue Peak revenue from delayed entry On-time Market fall Market rise • Lỗ Delayed Sự khác biệt khu vực tam giác trì hỗn D On-time entry Delayed entry W 2W Time 10 Thành phần kết nối SOC Ánh xạ nhớ Tất xử lý đơn chức RAM kết nối với bus nhớ 8051 Đọc Bộ xử lý đặt địa bus địa 16 bit Kích hoạt tín hiệu điều khiển đọc chu kỳ Đọc liệu từ bus liệu bit chu kỳ sau Thiết bị (RAM SPP) phát tín hiệu điều khiển đọc kích hoạt Kiểm tra địa Đặt giữ liệu yêu cầu bus liệu chu kỳ Ghi Bộ xử lý đặt địa liệu bus địa bus liệu Kích hoạt tín hiệu điều khiển ghi chu kỳ xung Thiết bị (RAM SPP) phát tín hiệu điều khiển ghi kích hoạt Kiểm tra bus địa Đọc lưu trữ liệu từ bus liệu 43 Phần mềm Mơ hình cấp hệ thống cung cấp phần lớn mã nguồn Module hierarchy, procedure names, main program giữ nguyên Mã nguồn cho modules UART CCDPP phải thiết kế lại Đơn giản cần thay phân bổ nhớ o o o o xdata sử dụng để tải/lưu biến qua bus nhớ bên _at_ định địa nhớ để lưu trữ biến Mỗi byte gửi đến U_TX_REG xử lý kích hoạt UART U_STAT_REG sử dụng UART để sẵn sàng – UART chậm nhiều so với xử lý Tương tự, chỉnh sửa nhỏ tương tự áp dụng cho mã nguồn CCDPP Tất mô đun khác không bị ảnh hưởng Mã gốc từ mơ hình cấp hệ thống #include static FILE *outputFileHandle; void UartInitialize(const char *outputFileName) { outputFileHandle = fopen(outputFileName, "w"); } void UartSend(char d) { fprintf(outputFileHandle, "%i\n", (int)d); } Viết lại mô-đun UART static unsigned char xdata U_TX_REG _at_ 65535; static unsigned char xdata U_STAT_REG _at_ 65534; void UARTInitialize(void) {} void UARTSend(unsigned char d) { while( U_STAT_REG == ) { /* busy wait */ } U_TX_REG = d; } 44 Phân tích Tồn SOC thử nghiệm trình mơ VHDL • Giải thích mô tả VHDL mô chức thực thi hệ O Thu thập số liệu thiết kế quan thống trọng Nhớ lại mã chương trình dịch sang cổng Mơ tả VHDL ROM VHDL • • Kiểm tra chức xác Đo chu kỳ xung nhịp để xử lý hình ảnh (hiệu suất) Mơ tả mức cổng thu cách tổng hợp • Cơng cụ tổng hợp giống trình biên dịch cho SPPs • Mơ mơ hình cấp cổng để lấy liệu phân tích cơng suất VHDL VHDL giả lập VHDL công cụ tổng hợp cổng Thời gian thực phương trình cơng suất cổng Trình mơ mức cổng cổng cổng tổng Power khu vực chip Số lần cổng chuyển từ sang sang • Đếm số cổng cho khu vực chip 45 Bản cài đặt thứ : Vi điều khiển CCDPP Phân tích việc triển khai chương trình Thời gian thực thi tổng cộng để xử lý hình ảnh: 9.1 giây Lượng tiêu thụ điện năng: 0.033 watt Lượng tiêu thụ lượng: 0.30 joule (9.1 s x 0.033 watt) Tổng diện tích chip: 98,000 cổng (hoặc vi mạch) sử dụng để triển khai chương trình 46 3rd Implementation: Vi điều khiển CCDPP/Biến đổi cosin rời rạc cố định điểm • 9.1 giây chưa đáp ứng giới hạn hiệu suất giây • Phép biến đổi DCT ứng cử viên hàng đầu để cải thiện Việc triển khai lần thứ cho thấy vi xử lý dành hầu hết chu kỳ Có thể thiết kế phần cứng tùy chỉnh giống làm cho CCDPP Phức tạp nên đòi hỏi nhiều nỗ lực thiết kế Thay vào đó, tăng tốc chức DCT cách sửa đổi hành vi 47 Chi phí dấu chấm động DCT • Chi phí dấu phẩy động DCT sử dụng ~260 thao tác dấu phẩy động chuyển động pixel 4096 (64 x 64) pixels ảnh triệu thao tác dấu phẩy động ảnh Không hỗ trợ dấu phẩy động với điều khiển intel 8051 o Trình biên dịch phải mô – Tạo thủ tục cho thao tác dấu phẩy động nhiều, thêm – Mỗi thủ tục sử dụng hàng chục thao tác số nguyên Do đó, ảnh có > 10 triệu thao tác số nguyên Các thủ tục làm tăng kích thước mã • Phép tốn cố định điểm cải thiện điều 48 Số học điểm cố định • Số nguyên dùng để biểu diễn số thực Hằng số bit số nguyên đại diện cho phần phân số số thực Nhiều bit hơn, biểu diễn xác Các bit lại đại diện cho phần số thực trước dấu thập phân • Dịch số thực thành biểu diễn điểm cố định Nhân giá trị thực với 2^ (#bit sử dụng cho phần phân số) Làm trịn thành số ngun gần Ví dụ: biểu diễn 3.14 dạng số nguyên bit với bit cho phân số 2^4 = 16 3.14 x 16 = 50.24 ≈ 50 = 00110010 16 (2^4) giá trị có cho phân số, giá trị đại diện cho 0.0625 (1/16) bit cuối (0010) = 2 x 0.0625 = 0.125 3(0011) + 0.125 = 3.125 ≈ 3.14 (nhiều bit cho phân số tăng độ xác) 49 Phép tốn số học điểm cố định Phép cộng Cộng biểu diễn số nguyên e.g., 3.14 + 2.71 = 5.85 3.14 → 50 = 00110010 2.71 → 43 = 00101011 50 + 43 = 93 = 01011101 5(0101) + 13(1101) x 0.0625 = 5.8125 ≈ 5.85 Phép nhân Nhân biểu diễn số nguyên Dịch kết sang phải # bit phần phân số Ví dụ: 3.14 * 2.71 = 8.5094 50 * 43 = 2150 = 100001100110 >> = 10000110 8(1000) + 6(0110) x 0.0625 = 8.375 ≈ 8.5094 • Phạm vi giá trị thực sử dụng bị giới hạn chiều rộng bit giá trị kết có 50 Triển khai điểm cố định CODEC • COS_TABLE cung cấp biểu diễn điểm cố định bit giá trị cosin • bits sử dụng cho phần phân số • Kết phép nhân dịch sang phải bit static const char code COS_TABLE[8][8] = { { 64, 62, 59, 53, 45, 35, 24, 12 }, { 64, 53, 24, -12, -45, -62, -59, -35 }, { 64, 35, -24, -62, -45, 12, 59, 53 }, { 64, 12, -59, -35, 45, 53, -24, -62 }, { 64, -12, -59, 35, 45, -53, -24, 62 }, { 64, -35, -24, 62, -45, -12, 59, -53 }, { 64, -53, 24, 12, -45, 62, -59, 35 }, { 64, -62, 59, -53, 45, -35, 24, -12 } }; static unsigned char C(int h) { return h ? 64 : ONE_OVER_SQRT_TWO;} static int F(int u, int v, short img[8][8]) { long s[8], r = 0; unsigned char x, j; for(x=0; x 6; } for(x=0; x> 6; return (short)((((r * (((16*C(u)) >> 6) *C(v)) >> 6)) >> 6) >> 6); } static const char ONE_OVER_SQRT_TWO = 5; static short xdata inBuffer[8][8]; static short outBuffer[8][8], idx; void CodecInitialize(void) { idx = 0; } void CodecPushPixel(short p) { if( idx == 64 ) idx = 0; inBuffer[idx / 8][idx % 8] = p