Xử lý tín hiệu số (dsp) và ứng dụng của dsp trên công nghệ fpga

Các bộ xử lý tín hiệu được xây dựng xuất phát từ nhu cầu giải quyết các bài toán xử lý tín hiệu số, trong đó chủ yếu thực hiện các phép tính tổng và tích hai thừa số. Vấn đề quan trọng nhất của DSP là đảm bảo hoạt động của hệ thống trong thời gian thực- nghĩa là thực hiện các phép tính của thuật toán xử lý tín hiệu số trong thời gian nhỏ hơn chu kỳ rời rạc hoá tín hiệu. Để đạt được tốc độ tính toán nhanh cần thiết, các bộ DSP cần có thiết bị thực hiện các phép tính xử lý tín hiệu số trong một chu kỳ lệnh nhờ sử dụng kiến trúc phần cứng cải tiến. Đặc điểm cấu trúc của DSP là phân chia không gian bộ nhớ thành hai vùng, bộ nhớ chương trình và bộ nhớ dữ liệu với khả năng trao đổi trực tiếp dữ liệu giữa chúng.

doc28 trang | Chia sẻ: vietpd | Lượt xem: 4727 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Xử lý tín hiệu số (dsp) và ứng dụng của dsp trên công nghệ fpga, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 2 xử lý tín hiệu số (dsp) và ứng dụng của DSP trên công nghệ FPGA 2.1 Khái quát chung về xử lý tín hiệu số DSP. Các bộ xử lý tín hiệu được xây dựng xuất phát từ nhu cầu giải quyết các bài toán xử lý tín hiệu số, trong đó chủ yếu thực hiện các phép tính tổng và tích hai thừa số. Vấn đề quan trọng nhất của DSP là đảm bảo hoạt động của hệ thống trong thời gian thực- nghĩa là thực hiện các phép tính của thuật toán xử lý tín hiệu số trong thời gian nhỏ hơn chu kỳ rời rạc hoá tín hiệu. Để đạt được tốc độ tính toán nhanh cần thiết, các bộ DSP cần có thiết bị thực hiện các phép tính xử lý tín hiệu số trong một chu kỳ lệnh nhờ sử dụng kiến trúc phần cứng cải tiến. Đặc điểm cấu trúc của DSP là phân chia không gian bộ nhớ thành hai vùng, bộ nhớ chương trình và bộ nhớ dữ liệu với khả năng trao đổi trực tiếp dữ liệu giữa chúng. Điều đó cho phép tổ chức xử lý lệnh theo kiểu đường ống ba tầng song song là nhận lệnh, giải mã lệnh và thực hiện lệnh một cách có hiệu quả. Sự trao đổi giữa các vùng bộ nhớ cho phép tính toán khối lượng lớn các hệ số từ bộ nhớ chương trình vào bộ nhớ dữ liệu. 2.1.1 Hệ thống xử lý tín hiệu số. Hệ thống xử lý tín hiệu số (DSP) gồm các thành phần cơ bản sau: Bộ lọc thấp tần, bộ biến đổi ADC, bộ DSP, bộ biến đổi DAC, bộ lọc là phẳng. y(t) x(t) Lọc chống chồng phổ ADC DSP DAC Bộ lọc là phẳng Hình 2.1 Sơ đồ hệ thống xử lý tín hiệu số DSP Hình 2.2 Hiệu ứng chồng phổ fd f f fv=fd/2 fd Phổ tín hiệu tương tự Phổ tín hiệu rời rạc chồng phổ |A| |A| Tín hiệu đầu vào cần xử lý là tín hiệu liên tục có dạng bất kỳ theo miền tần số hoặc miền thời gian. Đây là tín hiệu có độ dài hữu hạn theo thời gian và vô hạn theo tần số. Trước khi đưa vào xử lý ở bộ DSP thì tín hiệu tương tự cần phải được biểu diễn dưới dạng số. Để có dạng số của tín hiệu cần phải qua bộ biến đổi tương tự-số ADC. Đầu vào của mạch có bộ lọc chống chồng phổ để hạn chế các tín hiệu ngoài dải chồng lên tín hiệu trong dải trong quá trình lấy mẫu. Sau đó, tín hiệu được lấy mẫu, lượng tử hoá nhờ ADC. ở đầu ra của bộ biến đổi ADC ta có tín hiệu số với n = 0, 1, 2, ...(N-1) là một chuỗi nhị phân bậc m (hay được gọi là độ phân giải của bộ biến đổi ADC). Chuỗi các giá trị x(n) biểu diễn dưới dạng nhị phân m bit được đưa tới bộ DSP. Bộ DSP đảm nhiệm nhiều chức năng quan trọng, trong đó có hai chức năng đặc trưng là lọc số và phân tích phổ. Các quá trình này được thực hiện một cách độc lập. a) Lọc số Hệ thống rời rạc tuyến tính (HTRRTT) với tham số cố định phổ biến nhất được mô tả trong miền thời gian bởi phương trình vi sai dạng: (2.1) Trong đó: - hệ số xác định thuộc tính của HTRRTT. - giá trị rời rạc của tín hiệu đầu vào và đầu ra. - hằng số xác định độ phức tạp của HTRRTT. - giá trị rời rạc của các tín hiệu đầu vào và đầu ra được giữ chậm tại các chu kỳ rời rạc hoá và tương ứng. Phương trình (2.1) mô tả HTRRTT đệ quy nếu mỗi giá trị đọc thứ của tín hiệu đầu ra là tổ hợp tuyến tính của giá trị thứ hiện tại của tín hiệu đầu vào các giá trị giữ chậm trước đó của tín hiệu đầu vào với 1, 2, ..., (N-1) và (M-1) giá trị giữ chậm của tín hiệu ra với 1, 2, ... (M-1). Lớp phương trình (2.1) có thể được sử dụng để thực hiện bộ lọc đáp ứng xung vô hạn IIR. Trong trường hợp này, theo các yêu cầu đặt ra với bộ lọc cần thiết kế (tần số giới hạn, độ lệch dải tần...) người ta cần phải tính các giá trị cho từng bộ lọc riêng rẽ. Việc tính toán được thực hiện trên máy tính PC nhờ các gói phần mềm chuẩn. Sau đó trên cơ sở phương trình (2.1) người ta có thể tiến hành lọc số ở bộ DSP bằng chương trình lọc số. Trên cơ sở HTRRTT không đệ quy, nghĩa là với theo phương trình (2.1) người ta có thể tiến hành thiết kế bộ lọc có đặc tính xung hữu hạn FIR. Lớp phương trình như vậy có dạng: (2.2) Cũng như đối với hệ thống tuyến tính bất kỳ, đáp ứng ở đầu ra của HTRRTT liên hệ với tác động đầu vào theo mối quan hệ kiểu giảm bậc: (2.3) Với - Đặc tính xung của HTRRTT. Phương trình (2.3) và phương trình (2.1) mô tả HTRRTT trong miền thời gian. Từ đó có thể thấy rằng, các phép toán cơ sở đối với bộ DSP là phép nhân, phép cộng và các phép kết hợp giữa chúng (phép nhân tích luỹ) còn các phép dịch và phép chuyển thực hiện việc giữ chậm. b) Phân tích phổ Một trong những bài toán phức tạp nhất của XLTHS là phân tích thuộc tính các tín hiệu để có thể nghiên cứu chúng không những trong miền thời gian mà cả trong miền tần số. Trong xử lý tín hiệu số để biểu diễn trong miền tần số các tín hiệu rời rạc tuần hoàn với chu kỳ N hoặc có độ dài hữu hạn N thì phải sử dụng biến đổi Fourier rời rạc DFT (Discrete Fourier Transformation). Biểu thức tính toán DFT có dạng: khi k = 0, 1, 2, ...., (N-1) (2.4) Trong đó : x(n) với n = 0, 1, 2, 3,.........(N - 1) là các giá trị của tín hiệu rời rạc (tuần hoàn theo chu kỳ N hoặc có độ dài hữu hạn N). X(k) với k = 0, 1, 2, 3..........(N = 1) là DFT của tín hiệu x(n) là chuỗi tuần hoàn có giá trị phức cách đều nhau trong miền tần số (các hệ số phức chuỗi Fourier) với chu kỳ N và khoảng cách giữa chúng là: là thừa số lặp và bằng (2.5) giá trị tuyệt đối và đối số của chuỗi phức X(k) với k = 1, 2, 3....,(N = 1) chính là biên độ và pha của thành phần DFT tương ứng. Cần lưu ý rằng, ý nghĩa của DFT đối với tín hiệu rời rạc tuần hoàn và các tín hiệu có độ dài hữu hạn là khác nhau. Đối với tín hiệu rời rạc tuần hoàn với chu kỳ N thì DFT (tập hợp các hệ số Fourier phức) ứng với phổ tuần hoàn rời rạc của tín hiệu đó. Giá trị tuyệt đối và đối số các hệ số phức X(k) được gọi là phổ biên độ và phổ pha. Đối với tín hiệu rời rạc có độ dài hữu hạn thì DFT (N hệ số Fourier phức) ứng với N các giá trị rời rạc cách đều nhau của phổ trong chu kỳ. Phổ của tín hiệu đã cho xác định rằng biến đổi DFT của nó là hàm tần số tuần hoàn liên tục, tuy nhiên theo N giá trị rời rạc cách đều nhau của phổ nghĩa là theo DFT sẽ đảm bảo khả năng phục hồi chính xác phổ liên tục. Như vậy, thực chất mối quan tâm về DFT được giải thích bởi các lý do sau: thứ nhất DFT hoàn toàn đặc trưng cho phổ tín hiệu có độ dài hữu hạn, và thứ hai là để tính toán trên máy tính PC các hàm liên tục (trong trường hợp này là phổ tín hiệu) cần phải rời rạc hoá chúng. Trong cả hai trường hợp thì muốn phục hồi chính xác tín hiệu liên tục từ các giá trị rời rạc x(n) của nó cần phải sử dụng biến đổi Fourier ngược IDFT (Inverse Discrete Fourier Transformation). (2.6) Từ (2.4) và (2.6) ta thấy rằng các phép toán cơ sở khi thực hiện DFT và IDFT là phép nhân và phép cộng các số phức. ở đầu vào DSP (Hình 2.1) ta có tín hiệu ra y(n) là kết quả của xử lý số tín hiệu đầu vào x(n) và chính là chuỗi N các số nhị phân N bit (trong trường hợp tổng quát thì N và M có thể thay đổi). Tín hiệu này được đưa tới bộ biến đổi DAC để tạo ra tín hiệu liên tục bậc thang. Hiệu ứng bậc thang có thể gây ra méo tín hiệu và được loại trừ bằng cách sử dụng bộ lọc là phẳng tần thấp. 2.1.2 Cấu trúc cơ bản của bộ DSP. Cấu trúc cơ bản của các bộ DSP như hình vẽ. Các bộ ghi trì hoãn nối ra (Tapped delay register) vi là các ô nhớ kế tiếp trong RAM 1, còn các đáp ứng xung hi (các hệ số hay số nhân) được lưu giữ trong RAM 2. Ngoài ra còn có ROM để chứa chương trình của thuật toán lọc. hi .vi y vi Bus x v3 v2 v1 v0 h3 h2 h1 h0 y X + y RAM 1 RAM 2 ROM Vào hi MAC Ra Hình 2.3 Cấu trúc cơ bản của các bộ DSP ` Gánh nặng của các bộ DSP là phần nhân và tích luỹ (MAC), tức nơi tín hiệu thực hiện các phép nhân và cộng (số nguyên hoặc số chấm động tuỳ thuộc bộ DSP). Một lệnh như vậy mất khoảng vài chục ns. Lọc bậc N có N+1 lối ra cần khoảng N+1 lệnh, ngoài ra còn phải cộng thêm các thời gian khác (nhập, xuất, dịch chuyển…). Các bộ DSP hiện đại có cấu trúc sao cho giảm tối đa thời gian thực hiện lệnh. 2.2 Vai trò của FPGA trong các hệ xử lý tín hiệu số DSP Trước đây, các giải thuật xử lý tín hiệu số (DSP) được thực hiện bằng các chíp DSP đa dụng (general-purpose) dùng cho các ứng dụng có tần số thấp hoặc các chíp DSP chuyên dụng và các mạch tích hợp chuyên dụng (ASIC) cho các ứng dụng có tần số cao hơn. Sự tiến bộ trong FPGA ngày nay đã cho phép các kỹ sư thiết kế các hệ thống DSP nhiều sự lựa chọn hơn. FPGA vẫn đảm bảo lợi thế của các chức năng như một IC chuyên dụng (ASIC) mà lại tránh được chi phí phát triển cao, và có thể thay đổi được thiết kế sau khi sản xuất. FPGA linh hoạt hơn trong khi thiết kế, tận dụng thiết bị tốt nhất, trong khi vẫn đảm bảo được không gian bo mạch và nguồn cung cấp cho hệ thống. Trong trường hợp thiết kế yêu cầu sử dụng một bộ DSP, hay trong trường hợp yêu cầu thời gian nhanh tới thị trường, hay trong trường hợp tính tương thích được đẩy lên cao, việc sử dụng FPGA có thể sẽ là giải pháp tốt hơn. FPGA sử dụng SRAM rất phù hợp cho xử lý số học, bao gồm cả các chức năng DSP nâng cao MAC. Một loạt các chức năng DSP (như FFT, tích chập, và các giải thuật khác) có thể được tích hợp với các mạch tích hợp ngoại vi xung quanh. FPGA cũng có thể được tái cấu hình khi chạy để thực hiện một chức năng nào đó ở mức hệ thống. Khi xây dựng một hệ thống xử lý tín hiệu số (DSP) bằng FPGA, người thiết kế có thể tận dụng các cấu trúc song song, các giải thuật số học, để giảm thiểu các tài nguyên và tăng hiệu năng của DSP. Số học phân bố (Distributed Arithmetic) được sử dụng trong kỹ thuật nhân mảng trong FPGA là một cách để tăng dải thông và thông lượng dữ liệu (so với các giải pháp XLTHS trước đây). Thiết kế FPGA ít đòi hỏi kiến thức về các phần cứng chuyên dụng như là các chíp DSP và ASIC. Do đó, các nhóm thiết kế nhỏ hơn, với ít kỹ sư có kinh nghiệm hơn, cũng có thể thiết kế các hệ thống lớn hơn, phức tạp hơn các nhóm kỹ sư giàu kinh nghiệm và hiểu biết nhiều về các phần cứng chuyên dụng trước đây. Các nhóm thiết kế FPGA bây giờ có thể thiết kế, kiểm tra, và sẵn sàng cho một hệ thống xử lý tín hiệu số phức tạp trước khi đưa vào sản xuất ngay trong thời gian ngắn. Các bộ máy trong hệ thống DSP thường là các hệ thống máy tính xử lý tuần tự phân kênh theo thời gian thực hiện liên tục các phép xử lý toán học. Trong khi các bộ DSP có thể thực hiện nhiều chỉ lệnh trong một chu kỳ đồng hồ, thì toàn bộ quá trình xử lý được thực hiện theo các chuỗi gồm 3 bước: 1-đọc từ bộ nhớ; 2-xử lý; 3-ghi trở lại bộ nhớ. Tiến trình này tương đương với một loạt các giải thuật tuần tự độc lập (a modified Von Neuman Architeature). Bộ DSP trở nên không hiệu quả khi một giải thuật phụ thuộc vào một hoặc nhiều các điều kiện khác trong quá khứ, hoặc hiện tại, hoặc tương lai. Đây là nguyên nhân cơ bản của cấu trúc song song hoặc hồi đáp (Feed-back) của luồng dữ liệu cần xử lý với các trạng thái đợi bổ sung trong các bộ DSP. a. FPGA tăng sự linh hoạt Giống như một DSP đa dụng, các FPGA có khả năng lập trình và dễ thay đổi. Người thiết kế có thể thay đổi rất nhanh mà không tăng giá thành và quy trình sản xuất lâu như một ASIC. Khi tính đến nhân tố hiệu năng, nhiều người thiết kế hướng về công nghệ ASIC. Công nghệ ASIC cung cấp một khả năng thiết kế các kiến trúc tuỳ chỉnh để tối ưu hoá mục đích ứng dụng. Hình 2.4 Một ví dụ bộ lọc FIR 256 Tap Ví dụ, một bộ lọc số điển hình yêu cầu nhiều chu kỳ MAC - một chu kỳ MAC cho mỗi Tap lọc. Một DSP thông thường chỉ có một MAC đơn, bởi vậy mỗi Tap lọc phải được thực hiện tuần tự, nên làm giảm toàn bộ sự thực hiện của hệ thống. Đối với bộ lọc FIR 256 Tap đòi hỏi 256 phép toán (MACs) trên mỗi dữ liệu lấy mẫu trước khi xử lý mẫu tiếp theo. Sự thực hiện FPGA đã vượt quá 128 tỉ phép toán MACs/giây, cao hơn đáng kể so với DSP thông thường. Với VitexII, sự thực hiện sẽ là 600 tỉ MACs/giây. FPGA đạt được điều này bởi việc sử dụng một kiến trúc song song để xử lý tín hiệu vào. Dùng kiến trúc này, mỗi mẫu trong bộ lọc FIR 256 Tap có thể được xử lý trong một chu kỳ đồng hồ đơn, do đó cải thiện đáng kể sự thực thi và hiệu quả của DSP. b. Tăng sự thực hiện với các FPGA Kiến trúc DSP ảnh hưởng trực tiếp đến sự thực hiện của hệ thống. Bởi vì đa số các hàm DSP đều dựa trên phép nhân/tích luỹ, sự thực thi của MAC là chủ yếu. Mỗi bộ xử lý có khả năng thực hiện các giải thuật DSP bởi vì mỗi bộ xử lý có thể thực hiện các phép cộng và các phép nhân. Sự khác nhau duy nhất giữa một DSP đa dụng và một bộ vi xử lý là cách mà chúng thực hiện chức năng này. Ví dụ, bộ xử lý Pentium yêu cầu 11 chu kỳ đồng hồ để thực hiện một thao tác nhân/cộng đơn trong khi đa số các bộ xử lý DSP chỉ yêu cầu một chu kỳ đơn. Một DSP điểm cố định 50MHz thực hiện một chu kỳ nhân/tổng chỉ trong 20 ns trong khi một bộ xử lý Pentium 133MHz yêu cầu 1.3 ms để thực hiện cùng một chức năng. Như vậy kết quả, một bộ xử lý Pentium 133MHz chỉ bằng 24% công suất xử lý DSP của một DSP 50MHz cho chức năng lọc thể hiện trong hình 2.5. Hình 2.5 So sánh hiệu quả thực hiện của bộ lọc FIR FPGA đưa ra một kiến trúc hoàn toàn thích hợp với ứng dụng đặc biệt. Bởi vì FPGA thiết kế rất linh hoạt, hàm DSP có thể được ánh xạ trực tiếp đến các tài nguyên có sẵn trên một FPGA. Sự thực thi FPGA không những nhanh hơn đa số các DSP, nó cho phép kết hợp tốt nhất giữa mật độ và hiệu năng của hệ thống. Hình 2.5 biểu diễn mối quan hệ của các sự thực hiện khác nhau của một bộ lọc FIR 8-bit, 16-Tap, thường thực hiện với bộ xử lý DSP điểm cố định 50 MHz. Hiệu quả nhất của sự thực thi FPGA thể hiện bằng 68% đối với một XC4003E-3 FPGA, hoặc xấp xỉ 1500 cổng. Sự thực thi hiệu quả là sử dụng thuật toán “phân bố tuần tự” SDA (Sequential Distributed Arithmetic). Các hàm nhân được ánh xạ vào trong các hàm tạo của FPGA, các bộ cộng và tích luỹ sử dụng logic nhớ nhanh (fast carry logic) và các thanh ghi dịch nối tiếp được xây dựng một cách hiệu quả trên chíp RAM. Hiệu quả lớn nhất của sự thực thi FPGA sử dụng khoảng 75% của một XC401E-2 FPGA, hoặc khoảng 9750 cổng. Mặc dù chiếm diện tích lớn hơn nhưng sự thực hiện nhanh hơn 22 lần so với một DSP 50 MHz đối với ứng dụng này. Nó sử dụng giải thuật phân bố song song (PDA). Thậm chí có thể thực thi nhanh hơn nếu ứng dụng có thể chấp nhận góc trễ dữ liệu xẩy ra do kiến trúc đường ống. Sự thực hiện cũng được tăng lên nếu bộ lọc được tích hợp với mạch logic khác trên cùng một chíp do đó bỏ qua được các độ giữ chậm vào/ra. Hình 2.6 Hiệu năng của các giải thuật phân bố đối với bộ lọc FIR Với khả năng thực hiện FPGA trong một dải rộng, sự kết hợp tốt nhất giữa mật độ và hiệu năng đối với các giải thuật khác nhau được thể hiện trong hình 2.6. Mỗi sự thực hiện hoàn toàn thích hợp với tốc độ, mật độ, và giá thành yêu cầu của mục đích ứng dụng. Tuần tự nối tiếp là hiệu quả nhất, nhưng cũng là chậm nhất. PDA là nhanh nhất, nhưng cũng sử dụng nhiều mạch lôgic nhất. SDA là một sự dung hoà tốt nhất của tốc độ và mật độ, tuỳ thuộc vào hệ thống yêu cầu. Trong nhiều ứng dụng, một FPGA hoàn toàn thay thế được một DSP chuyên dụng. Các ứng dụng này là quá trình xử lý nhúng hoặc là các chức năng lọc điển hình với tần số lấy mẫu dữ liệu từ 100 kHz đến 70 MHz. Trong dải từ 1 kHz đến 100 kHz, một hàm DSP - cộng với tất cả các hệ thống logic khác - là phù hợp với một FPGA đơn, giá thành thấp. Phương pháp này sử dụng giải thuật tuần tự nối tiếp (SSDA) như trình bày ở hình 2.6, nhưng hiệu năng thấp. c. FPGA nâng cao khả năng của DSP đa dụng FPGA không bao giờ thay thế hoàn toàn các bộ xử lý DSP đa dụng. Các DSP đa dụng vẫn còn có ảnh hưởng lớn đến sự thực hiện điểm dấu phẩy động. Hơn nữa, các bộ xử lý DSP đa dụng sử dụng các phần mềm quen thuộc. Người thiết kế thực hiện một thuật toán DSP sử dụng một ngôn ngữ lập trình như “C” và biên dịch mã cho bộ xử lý DSP chuyên dụng. Trong nhiều ứng dụng, một bộ vi xử lý DSP nhanh và rất đắt được sử dụng để điều khiển sự thực hiện tối đa từng phần mã nhỏ. Một thuật toán DSP điển hình chứa đựng nhiều vòng lặp phản hồi và các cấu trúc song song như trình bày trên sơ đồ dòng dữ liệu cho bộ lọc FIR 16-Tap trong hình 2.7. Hình 2.7 Sơ đồ khối bộ lọc FIR 16-Tap với hệ số nhân đối xứng Mã phần mềm cho các giải thuật như vậy không được thực thi hiệu quả trong các kiến trúc DSP đa dụng. Điển hình sử dụng khoảng 20-40% của mã lệnh và 60-80% khả năng xử lý của DSP. Một phương pháp phổ biến để tăng khả năng thực hiện DSP là sử dụng nhiều DSP mắc song song cùng với bộ nhớ tốc độ cao. Ví dụ, giải pháp 4-DSP thể hiện ở hình 2.5 theo lý thuyết sự thực hiện bằng 4 lần so với giải pháp sử dụng DSP-đơn. Tuy nhiên, giá thành của nó lại tăng hơn 4 lần. Những thiết kế DSP nhiều chíp này nhìn chung yêu cầu không gian bo mạch lớn và các bộ nhớ chấp hành cao hơn làm tăng thêm giá thành. Ngoài ra, giải pháp tốt nhất cho các ứng dụng này có thể là một bộ xử lý DSP, bộ vi xử lý hoặc bộ vi điều khiển với một FPGA đồng xử lý. Bộ xử lý DSP đa dụng sử dụng các hàm điều khiển hệ thống và hàm di chuyển dữ liệu. FPGA cung cấp một bộ đồng xử lý DSP tuỳ chỉnh thích hợp để sử dụng tối đa chức năng xử lý. Quá trình phân tích giải thuật DSP sẽ khám phá ra các cấu trúc song song và các vòng lặp để sử dụng tố đa hiệu quả DSP. Việc đặt các hàm này trong FPGA làm tăng sự thực hiện toàn bộ. 2.3 Một số trường hợp ứng dụng 2.3.1 Bộ giải mã Viterbi Một bộ giải mã Viterbi là một ví dụ giải thích làm thế nào một FPGA có thể tăng tốc độ một chức năng. Thiết kế ban đầu sử dụng hai thiết bị DSP lập trình được 66 MHz để thực thi một giải thuật. Giải thuật đã sử dụng để tính toán các đầu ra “New_1” và “New_2”, thể hiện ở hình 2.7, yêu cầu 17 chu kỳ đồng hồ tính toán, cộng thêm 7 chu kỳ đồng hồ bổ sung do trạng thái đợi (wait-state) đối với bộ nhớ SRAM bên ngoài của DSP. Bộ nhớ này là bắt buộc đối với DSP để lưu trữ dữ liệu, Do đó thuật toán Viterbi Decoder yêu cầu 360 ns [(24-clock cycles).(15 ns)] tổng thời gian xử lý. Thuật toán Viterbi Decoder tận dụng khoảng 80% của toàn bộ thời gian xử lý. Chú ý rằng điều này không chứa đựng sự tính toán của các đầu ra “Diff_1” và “Diff_2”. Các đầu ra này có thể yêu cầu một sự bổ sung 7 chu kỳ đồng hồ. Bảy từ dữ liệu vào/ra được dồn kênh trên một Bus vào/ra chung với tốc độ lớn nhất là 33 MHz. Hình 2.8 Sơ đồ bộ giải mã Viterbi MSB MSB I / O Bus I / O Bus New _ 1 New _ 2 Diff_1 Diff_2 Bit Prestate Buffer 1 0 24-Bit 24-Bit 24-Bit M U X M U X Old _1 INC Old _2 Có hai giới hạn trong thiết kế này : Thứ nhất là trạng thái đợi gắn liền với bộ nhớ SRAM mở rộng yêu cầu hai chu kỳ đồng hồ 15 ns cho mỗi lần truy cập bộ nhớ. Do đó mỗi lần thực hiện cần 30 nsec, và tốc độ lớn nhất của Bus vào/ra là 30 nsec . Thứ hai là mỗi lượt cộng/trừ (Add/Subtract) và phân kênh (MUX) phải được thực hiện tuần tự với sự bổ sung thêm các trạng thái đợi. Mỗi lượt cộng/trừ (Add/Subtract) yêu cầu 4 phép toán bổ sung với nhiều chỉ thị lệnh cho một phép toán. * Giải mã Viterbi dựa trên cơ sở FPGA và DSP Thuật toán này là rất phù hợp cho FPGA. Chúng ta có thể lợi dụng khả năng xử lý song song các kênh dữ liệu bên trong FPGA cho các cấu trúc song song của 4 khối cộng/trừ trong tầng thứ nhất và hai khối cộng/trừ trong tầng thứ hai. Khả năng ghi và lưu các dữ liệu vào cho hai khối MUX mà không cần bộ nhớ ngoài hoặc các chu kỳ đồng hồ bổ sung như trong bộ phân kênh thông thường. Hình 2.9 Sơ đồ khối bộ giải mã Viterbi sử dụng FPGA MSB MSB I / O Bus I / O Bus Bit Prestate Buffer 1 0 24-Bit 24-Bit 24-Bit R E G R E G Old _ 1 Old _ 2 INC New _ 1 New _ 2 Diff_1 Diff_2 R E G R E G R E G R E G M U X R E G M U X R E G Các thanh ghi đường ống Hình 5: Sơ đồ khối giải mã Viterbi sử dụng FPGA Sự thay đổi thiết kế cho kết quả là: Giải mã Viterbi dựa trên công nghệ FPGA yêu cầu 135 ns [(9-clock cycle).(15 nsec)] của toàn bộ thời gian xử lý (bao gồm tất cả các đầu ra) so sánh với 360 ns cho bộ phân kênh thông thường, bằng 37.5% thời gian xử lý của bộ DSP thông thường. Các Bus dữ liệu vào /ra đồng thời cũng hỗ trợ tốc độ truyền 66 MHz, gấp đôi so với thông lượng cũ. Việc thực hiện bằng FPGA đã thay thế một bộ DSP và 3 chíp SRAM. Hình 2.10 Hiệu quả của hai sự thực thi bộ giải mã Viterbi. Trên đây là một ví dụ minh hoạ dùng FPGA có thể tăng tốc một hàm DSP. Để sử dụng FPGA trong một thiết kế DSP, cần