Bài toán nhâ n2 số nguyên đơn giản

Một phần của tài liệu Nghiên cứu công nghệ FPGA và ứng dụng xử lý nhanh dữ liệu (Trang 54)

Đối với bài toán nhân 2 số nguyên N bit, theo lý thuyết phép nhân sẽ đƣợc thực hiện qua hàng loạt các phép cộng và dịch chuyển bit, vì thế kết quả sẽ nhận đƣợc sau đúng N xung nhịp đồng hồ.

Hình 3.3. Thiết kế bộ nhân 2 số

Sử dụng ngôn ngữ VHDL/AHDL đối với gói phần mềm Quartus của công ty Altera thiết kế bộ nhân 2 số với N bit, trong đó sử dụng bus D nhƣ là bus dữ liệu đầu vào, kết quả sẽ hiển thị ra ở bus Output (Hình 3.1).

………. // Control.tdf parameters ( N = 16 ); CONSTANT N1 = N + 1; SUBDESIGN control ( RESET, CLK : INPUT;

READY, L/S, ENA1, ENA2, CLR, OUT_counter[N-1..0]: OUTPUT; ) variable counter[N-1..0] : DFF; begin DEFAULTS READY = GND; L/S = VCC; ENA1 = VCC; ENA2 = VCC; CLR = GND; END DEFAULTS;

counter[].CLK = CLK; counter[].CLRn = !RESET; Table

counter[].Q => READY, L/S, ENA1, ENA2, CLR; 0 => GND, GND, GND, VCC, VCC;

N1 => VCC, GND, GND, GND, GND; end table;

if ( counter[].Q < N1 ) then counter[].D = counter[].Q + 1; else counter[].D = N1;

end if;

Out_counter[] = counter[].Q; end;

………. Kết quả thực thi mô phỏng đƣợc trình bày tại Hình 3.2

Device for compilation | EPF10K30EFC256-1

Total logic elements | 90 / 1,728 ( 5 % )

Total pins | 51 / 176 ( 28 % )

Total memory bits | 0 / 24,576 ( 0 % )

Total PLLs | 0 / 1 ( 0 % )

Device for timing analysis | EPF10K30EFC256-1

Thực hiện mô phỏng trên chip họ EPF10K30EFC256-1 của hãng ALTERA. Trên Hình 3.2 hiện thị kết quả mô phỏng thực hiện của chƣơng trình nhân 2 số 250 x 15, kết quả là 3750 nhận đƣợc sau 15 nhịp xung đồng hồ (tín hiệu CLK). Kết quả thực hiện nhƣ vậy là đúng vì các thừa số của phép nhân này đều là các số nguyên 16 bit, bởi vậy nên với cách thiết kế chuẩn của chƣơng trình, kết quả phép nhân sẽ nhận đƣợc sau khi đồng hồ xung CLK đếm đƣợc 15 xung.

3.3. Bài toán nhân 2 số nguyên sử dụng kỹ thuật Pipeline

Sử dụng kỹ thuật Pipeline , sử dụng thƣ viện Mega_LPM của Quartus 7.2, cài đặt các tham số của LPM_MULT để xem xét khả năng xử lý đối với phép nhân 2 số có sử dụng kỹ thuật Pipeline (tham số LPM_PIPELINE)

Hình 3.5: Các tham số input, output của LPM_MULT

Ở đây Db[], Da[] là các đầu vào, CLK là tín hiệu xung, Res[] là kết quả đầu ra của phép nhân.

Dƣới đây là file code chƣơng trình đối với khối control

---

LIBRARY ieee;

USE ieee.std_logic_1164.all;

LIBRARY lpm;

ENTITY lpm_mult0 IS

PORT

(

clock : IN STD_LOGIC ;

dataa : IN STD_LOGIC_VECTOR (7 DOWNTO 0);

datab : IN STD_LOGIC_VECTOR (7 DOWNTO 0);

result : OUT STD_LOGIC_VECTOR (15 DOWNTO 0)

);

END lpm_mult0;

ARCHITECTURE SYN OF lpm_mult0 IS

SIGNAL sub_wire0 : STD_LOGIC_VECTOR (15 DOWNTO 0); COMPONENT lpm_mult GENERIC ( lpm_hint : STRING; lpm_pipeline : NATURAL; lpm_representation : STRING; lpm_type : STRING;

lpm_widtha : NATURAL;

lpm_widthb : NATURAL;

lpm_widthp : NATURAL

);

PORT (

dataa : IN STD_LOGIC_VECTOR (7 DOWNTO 0);

datab : IN STD_LOGIC_VECTOR (7 DOWNTO 0);

clock : IN STD_LOGIC ;

result : OUT STD_LOGIC_VECTOR (15 DOWNTO 0)

);

END COMPONENT;

BEGIN

result <= sub_wire0(15 DOWNTO 0);

lpm_mult_component : lpm_mult

GENERIC MAP (

lpm_hint => "MAXIMIZE_SPEED=5",

lpm_pipeline => 1,

lpm_type => "LPM_MULT", lpm_widtha => 8, lpm_widthb => 8, lpm_widthp => 16 ) PORT MAP ( dataa => dataa, datab => datab, clock => clock, result => sub_wire0 ); END SYN; ---

Thay đổi các tham số LPM_PIPELINE trên cùng một chip FPGA, có thể nhận thấy đƣợc các kết quả khác nhau trên cùng thiết bị EPF10K30EFC256-1 nhƣ sau:

Với LPM_PIPELINE =1

Device for compilation | EPF10K30EFC256-1

Total pins | 33 / 176 ( 18 % )

tco (Clock to Output Delays)

Thời gian bị trễ (delay) tối đa khối nhân đƣa ra OUTPUT là - 12.8 ns

Hình 3.6: Kết quả thực hiện phép nhân 250 x 15 = 3750

Với LPM_PIPELINE =2, ta có thời gian bị trễ (delay) tối đa khối nhân đƣa ra OUTPUT - 10.9 ns

Với LPM_PIPELINE =5, ta có thời gian bị trễ (delay) tối đa khối nhân đƣa ra OUTPUT là - 7.5 ns,

Clock Name Required fmax Actual fmax (period)

Clk None 208.33 MHz ( period = 4.800 ns )

Kết quả trên cho thấy với khả năng sử dụng kỹ thuật Pipeline khối nhân LPM_MULT có thể tăng tốc độ thực hiện và đƣa ra kết quả nhanh hơn.

Nhƣ vậy ta nhận đƣợc bảng so sánh thời gian thực thi khi thay đổi thông số pipeline trên con chip này với phần mềm trên (Bảng 3.1)

STT Số lƣợng Pipeline Thời gian trễ (output)

1 1 12,8 ns

2 2 10,9 ns

3 4 8,7 ns

4 5 7,5 ns

Bảng 3.1: Thời gian thực thi phụ thuộc số Pipeline của Flex10

Với những kết quả đƣa ra tại Bảng 3.1, có thể thấy hiệu quả của việc sử dụng Pipeline, tuy nhiên số lƣợng Pipeline cho phép ở mỗi Chip là khác nhau, ảnh hƣởng trực tiếp đến việc lập trình trên Chip.

Với Chip EPF10K30EFC256-1 (thuộc họ chip Flex10) ta đã có kết quả ở bảng 3.1, khi thực hiện trên Chip EP1SGX10DF672C6 (thuộc họ chip Stratix) ta có kết quả nhƣ sau:

STT Số lƣợng Pipeline Thời gian trễ (output)

1 1 13,09 ns

2 2 10,15 ns

3 4 7,73 ns

4 5 7,73 ns

Bảng 3.2: Thời gian thực thi phụ thuộc số Pipeline của Stratix

Với kết quả thử nghiệm trên 2 loại Chip Flex10 và Stratix, có thể thấy khả năng của chúng khác nhau, tùy thuộc vào bài toán khác nhau có thể có sự lựa chọn chúng khác nhau.

3.4. Đánh giá kết quả

Nhƣ các kết quả đƣa ra, có thể nhận thấy với kỹ thuật Pipeline có thể thực thi nhƣng phép toán cơ bản nhanh hơn và từ đó khả năng xử lý dữ liệu nhanh sẽ đƣợc thực hiện, đặc biệt đối với các loại dữ liệu đồng nhất, khả năng xử lý tƣơng tự giữa các khối có thời gian thực hiện là tƣơng đồng, từ đây việc sử dụng hiệu quả Pipeline cho phép tăng tốc thời gian thực hiện mà khả năng đồng bộ ít xảy ra lỗi.

Với việc thử nghiệm trên 2 họ chip Flex10 và chip họ Stratix, kết quả cho thấy có sự khác nhau và việc sử dụng chip nào tùy thuộc vào mức độ của bài toán mà ngƣời lập trình phải quan tâm đến lƣợng tài nguyên cho phép ở mỗi chip. Chip Stratix là các chip có lƣợng tài nguyên rất lớn, nên việc thử nghiệm với một bài toán nhỏ chƣa đánh giá hết khả năng của chúng, đây cũng là những hạn chế nhất định của kết quả thử nghiệm này.

Kết quả của bài toán thử nghiệm này có thể sẽ đƣợc sử dụng trong các chƣơng trình mã hóa và giải mã AES đối với các máy chủ khi xác thực và gửi mật khẩu tới khách hàng trên các hệ thống phục vụ khách hàng lớn nhƣ các máy chủ của ngân hàng, hệ thống viễn thông.

KẾT LUẬN

Trong quá trình thực hiện luận văn, tôi đã thực hiện đƣợc những kết quả sau:

- Trình bày tổng quan về công nghệ FPGA, các khái niệm chính, khả năng ứng dụng của FPGA đối với các bài toán xử lý dữ liệu.

- Nghiên cứu các công cụ, ngôn ngữ lập trình có thể làm việc với FPGA.

- Trình bài khái quát về các bài toán xử lý dữ liệu nhanh, các điểm mạnh của FPGA, các cách tiếp cận xử lý nhanh qua kỹ thuật Pipeline và công nghệ FPGA.

- Thử nghiệm ví dụ xử lý dữ liệu nhanh qua kỹ thuật Pipeline trên nền tảng ngôn ngữ lập trình VHDL/AHDL của công cụ Quartus và chip FPGA của hãng Altera.

Hạn chế:

- Vì thời gian có hạn, việc nắm bắt công cụ còn chƣa hoàn thiện, ví dụ thực hiện còn khá đơn giản, chƣa thể hiện hết đƣợc khả năng xử lý dữ liệu lớn.

Hƣớng phát triển:

- Xây dựng phần mềm mã hóa và giải mã các file kích thƣớc lớn để so sánh khả năng thực hiện nhanh của FPGA.

TÀI LIỆU THAM KHẢO

[1]. PGS.Vũ Quý Điềm (chủ biên), Phạm Văn Tuân, Nguyễn Thúy Anh, Đỗ

Lê Phú, Nguyễn Ngọc Văn (2006) – Cơ sở kỹ thuật đo lường điện tử - NXB Khoa Học và Kỹ Thuật.

[2]. Trần Ngọc Phụng, Trần Thị Điểm, Cao Trần Bảo Thƣơng, Huỳnh Hữu

Thuận (2006) - Thực hiện một số thuật toán dò tìm chuyển động trên FPGA - Hội Nghị Khoa Học Trƣờng Đại Học KHTN lần 5.

[3] Mani B, Srivastava. VHDL tutorial. UCLA – EE.

[4] System Generator for DSP, Getting started Guide, Reference Guide, User Guide, Xilinx.

[5] Nguyễn Trọng Hải - Bài giảng Verilog - ĐH Kỹ thuật công nghệ TPHCM.

[6] Nguyễn Viết Kính, Trịnh Anh Vũ - Thông tin số - NXBGD.

[7] Jim Lewis (2002), Coding a 40x40 Pipelined Multiplier in VHDL

(version

online:http://www.synthworks.com/papers/VHDL_RTL_Pipelined_Multiplier_M APLD_2002_S_BW.pdf)

[8] ISO/IEC 15444-1,Information Technology-JPEG2000 (2000) Image Coding System, Part 1: Core Coding System.

[9] PENG Zhou, ZHAO Bao-jun (2010), High-throughout hardware architecture of MQ arithmetic coder, International Conference on Signal Processing (ICSP), October, 2010, pp. 430-433

[10] Michael Dyer, David Taubman (2004), Saeid Nooshabadi, Improved throughput arithmetic coder for JPEG2000, International Conference on Image Processing, vol. 4, October, 2004, pp. 2817-2820

[11] Manjunath Gangadhar, Dinesh Bhatia (2003), FPGA based EBCOT architecture for JPEG 2000, International Conference on Field-Programmable Technology (FPT), December, 2003, pp. 228-233

[12] Taoufik Saidani, Mohamed Atri, Rached Tourki (2008),

Implementation of JPEG 2000 MQ-Coder, International Conference on Design and Technology of Integrated Systems in Nanoscale Era, March, 2008, pp. 1-4

[13] Kai Liu, Yu Zhoub,Yun Song Li,Jian Feng Ma (2010), A high performance MQ encoder architecture in JPEG2000, the VLSI Journal, vol. 43, no. 3, June, 2010, pp. 305-317

[14] Minsoo Rhu, In-Cheol Park (2013), Optimization of Arithmetic Coding for JPEG2000, IEEE Transactions on Circuits and Systems for Video Technology, vol. 20, no. 3, March, 2010, pp. 446-451 118 Tạp chí Khoa học và Kỹ thuật - Học viện KTQS số 153 (4-2013)

[15] Tinku Acharya, Ping-Sing Tai (2005), JPEG2000 Standard for Image Compression: Concepts, Algorithms and VLSI Architectures, New Jersey, U.S.A: John Wiley & Sons, chapter 5, 2005, pp. 185-195

[16] Wael M. El-Sharkasy, Mohamed E. Ragab (2012), Hardware modelling of JPEG2000 MQ-encoder, International Conference on Intelligent and Advanced Systems (ICIAS), vol. 2, June, 2012, pp. 707-712

[17] Altera, Avalon Interface Specifications, California, U.S.A, (2011), pp. 35 - 44

Một phần của tài liệu Nghiên cứu công nghệ FPGA và ứng dụng xử lý nhanh dữ liệu (Trang 54)

Tải bản đầy đủ (PDF)

(67 trang)