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ụng2.3.1 Bộ giải mã Viterbi 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ể
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 để lu 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.
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à lu 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.8 Sơ đồ bộ giải mã Viterbi
MSB 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
MU U X M U X Old _1 INC Old _2 MSB MSB I / O Bus I / O Bus Bit Prestate Buffer 10 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
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 xác định các luồng dữ liệu song song và/hoặc các phép toán yêu cầu nhiều chu kỳ đồng hồ.
2.3.2 Bộ lọc số.
Cơ chế xử lý của đa số các thuật toán lọc là một hàm nhân và cộng (MAC). Các thiết kế bộ lọc có thể khác nhau nhiều theo số lợng các bộ MAC, từ 1 đến hàng nghìn. Khi số
Hàm MAC có thể đợc thực thi hiệu quả với các kỹ thuật số học phân bố (DA) hơn là với các phơng pháp số học thông thờng. Số học phân bố (DA) có thể tận dụng triệt để các bảng tra Look-up (LUTs) để thực hiện các hàm xử lý tín hiệu số (DSP) trong các FPGA.