• Nenhum resultado encontrado

66378794 47842414 Thuc Hien Bo Loc FIR Thich Nghi Dung Thuat Toan LMS

N/A
N/A
Protected

Academic year: 2021

Share "66378794 47842414 Thuc Hien Bo Loc FIR Thich Nghi Dung Thuat Toan LMS"

Copied!
65
0
0

Texto

(1)

M

M

C L

C L

C

C

B

BẢẢNG KÝ HING KÝ HIỆỆU VIU VIẾẾT TT TẮẮTT ... ... ... 22 L

LỜ Ờ I MI MỞ Ở ĐẦĐẦU...4U...4 CH

CHƯƠ ƯƠ NG NG 1...1... ... ... 55 T

TỔỔNG QUAN VNG QUAN VỀỀFPGA VÀ NGÔN NGỮ FPGA VÀ NGÔN NGỮ VHDL...5VHDL...5 1.1.

1.1. TTỔỔ NG NG QUANQUAN VVỀỀ FPGAFPGA... ... 55

1.1.1. L

1.1.1. L ị  ị ch sch sử ử rarađờ đờ i ci củủa FPGAa FPGA... ... 55 1.1.2. Khái ni 

1.1.2. Khái ni ệ ệ m cm cơ ơ bbảản và cn và cấ ấ u trúc cu trúc củủa FPGAa FPGA... ... 6 6  1.1.3. Các

1.1.3. Cácứ ứ ng d ng d ụụng cng củủa FPGAa FPGA... ... 88

1.2.

1.2. TTỔỔ NG NG QUANQUAN VVỀỀ NGÔN NGÔN NG NGỮ Ữ VHDLVHDL ... ... 88

1.2.1. Gi 

1.2.1. Gi ớ ớ i thi i thi ệ ệ u vu về ề ngôn ng ngôn ng ữ ữ mô t mô t ảảphphầần cn cứ ứ ng VHDLng VHDL... ... 88 1.2.2. C  1.2.2. C ấ ấ u trúc mu trúc mộột mô hình ht mô hình hệ ệ ththố ố ng mô t ng mô t ảảbbằằng ngôn ng ng ngôn ng ữ ữ VHDLVHDL ... 1010 CH CHƯƠ ƯƠ NG NG 2...2... ... ... 1212 B BỘỘLLỌỌC C FIR...FIR... ... ... 1212 2.1.

2.1. BBỘỘ LLỌỌCC FIR FIR TRUYTRUYỀỀ N N THTHỐỐ NG NG ... ... 1212 2.2

2.2.. BBỘỘ LLỌỌCC FIR FIR SSỬ Ử DDỤỤ NG NG KIKIẾẾ N N TRÚCTRÚC SYSTOLICSYSTOLIC ARRAY...ARRAY... ... 1313

2.2.1. T 

2.2.1. T ổ ổ ng quan vng quan về ề systolic arraysystolic array ... ... 1313 2.2.2. B

2.2.2. Bộộl l ọọc FIR thc FIR thự ự c hi c hi ệ ệ n theo ki n theo ki ế ế n trúc systolic array mn trúc systolic array mộột chi t chi ề ề uu... .. 1414

CH

CHƯƠ ƯƠ NG NG 3...3... ... ... 1616 B

BỘỘLLỌỌC FIR THÍCH NGHI DÙNG THUC FIR THÍCH NGHI DÙNG THUẬẬT TOÁN LMS...16T TOÁN LMS...16 3.1.

3.1. ĐẶĐẶTT VVẤẤ N N ĐỀĐỀ... ... ... 1616 3.2.

3.2. CCẤẤUU TRÚCTRÚC CCỦỦAA MMẠẠCHCH LLỌỌCC THÍCHTHÍCH NGHI NGHI ... ... 1818 3.3.

3.3. MMẠẠCHCH LLỌỌCC WIENER WIENER FIRFIR ... ... 1919 3.4.

3.4. CÁCCÁC THUTHUẬẬTT TOÁNTOÁN THÍCHTHÍCH NGHI NGHI VÀVÀ Ứ Ứ  NG NG DDỤỤ NG...22 NG...22

3.4.1. Ph

3.4.1. Phươ ươ ng pháp gi ng pháp gi ảảm bm bướ ướ c nhanh nhc nhanh nhấ ấ t t ... ... 2222 3.4.2. Thu

3.4.2. Thuậật toán toàn pht toán toàn phươ ươ ng trung bình t ng trung bình t ố ố i thi i thi ể ể u (LMS)u (LMS)... ... 2525

CH

CHƯƠ ƯƠ NG NG 4...4... ... ... 2929 H

HỆỆTHTHỐỐNG SNG SỐỐBÙ HAI BÙ HAI VÀ CÁC VÀ CÁC PHÉP TOÁPHÉP TOÁN...N... ... 2929 4.1.

4.1. BIBIỂỂUU DIDIỄỄ N N SSỐỐ ÂMÂM TRONGTRONG HHỆỆ THTHỐỐ NG NG SSỐỐ BÙBÙ HAIHAI ... ... 2929 4.2.

4.2. THTHỰ Ự CC HIHIỆỆ N N CÁCCÁC PHÉPPHÉP TÍNHTÍNH TRONGTRONG HHỆỆ THTHỐỐ NG NG SSỐỐ BÙBÙ HAI...30HAI...30

4.2.1. Th

4.2.1. Thự ự c hi c hi ệ ệ n phép cn phép cộộng trong hng trong hệ ệ ththố ố ng sng số ố bù hai bù hai ... ... 3030 4.2.2. Th

4.2.2. Thự ự c hi c hi ệ ệ n phép tr n phép tr ừ ừ trong htrong hệ ệ ththố ố ng sng số ố bù hai bù hai ... ... 3131 4.2.3. Hi 

4.2.3. Hi ệ ệ n t n t ượ ượ ng tràn sng tràn số ố ... ... ... 3232 4.2.4. Th

4.2.4. Thự ự c hi c hi ệ ệ n phép nhân trong sn phép nhân trong số ố bù hai bù hai ... ... 3333

CH

CHƯƠ ƯƠ NG NG 5...5... ... ... 3535 TH

THỰ Ự C NGHIC NGHIỆỆM...35M...35 5.1.

5.1. MÔMÔ TTẢẢ PHPHẦẦ N N CCỨ Ứ  NG NG CCỦỦAA KITKIT VIRTEX-IIVIRTEX-II PRO...PRO... ... 3535 5.2.

5.2. K K ẾẾTT QUQUẢẢ THUTHU ĐƯỢĐƯỢCC VVỚỚII BBỘỘ LLỌỌCC FIR FIR TRUYTRUYỀỀ N N THTHỐỐ NG... NG... 3636 5.3.

5.3. K K ẾẾTT QUQUẢẢ THUTHU ĐƯỢĐƯỢCC VVỚỚII BBỘỘ LLỌỌCC FIR FIR THEOTHEO KIKIẾẾ N N TRÚCTRÚC SYSTSYSTOLICOLIC ... 3838 5.4.

5.4. K K ẾẾTT QUQUẢẢ THUTHU ĐƯỢĐƯỢCC VVỚỚII BBỘỘ LLỌỌCC FIR FIR THÍCHTHÍCH NGHI NGHI ... ... 3838 K 

K ẾẾT LUT LUẬẬNN ... ... ... 4141 TÀI LI

TÀI LIỆỆU THAM KHU THAM KHẢẢO...O... ... 4242

 PH 

(2)

B

B

NG KÝ HI

NG KÝ HI

U VI

U VI

T T

T T

T

T

Ký Hi

Ký Hiệệu

u

Di

Diễễn Gi

n Giảảii

ASIC

ASIC AA pplication pplication SS pecific pecific IIntegratedntegratedCCircuitircuit ADC

ADC Analog to Digital Converter Analog to Digital Converter  ALU

ALU Arithmetic Arithmetic Logic Logic UnitUnit ASM

ASM Auto Auto Senquencing Senquencing MemoryMemory CPLD

CPLD CComplexomplex PProgrammablerogrammableLLogicogic DDeviceevice CPU

CPU Central Central Processing Processing UnitUnit DSP

DSP DDigitaligital SSignalignalPProcessingrocessing DAC

DAC Digital Digital to to Analog Analog Converter Converter  DPU

DPU Data Data Processing Processing UnitUnit FIR 

FIR  FFiniteinite IImpulsempulse R R esponseesponse FPGA

FPGA FField Programmableield Programmable GGate Arrayate Array HDL

HDL HHardwareardware DDescriptionescription LLanguageanguage IC

IC IIntegratedntegrated CCircuitircuit IEEE

IEEE Institute of Institute of Electrical Electrical and and Electronics Electronics EngineersEngineers JTAG

JTAG Joint Joint Test Test Action Action GroupGroup LED

LED LLightight EEmittingmitting DDiodeiode LUT

LUT LLook ook UU p Table p Table LMS

LMS Least Mean Least Mean SquareSquare PAL

PAL PProgrammablerogrammableAArrayrray LLogicogic PLA

PLA PProgrammablerogrammableLLogicogic AArrayrray PCI

PCI Peripheral Component Peripheral Component InterconnectInterconnect PE

PE Process Process ElementElement RAM

RAM R R andomandom AAccessccess MMemoryemory ROM

ROM R R eadeadOOnlynlyMMemoryemory RS232

(3)

B

B

NG KÝ HI

NG KÝ HI

U VI

U VI

T T

T T

T

T

Ký Hi

Ký Hiệệu

u

Di

Diễễn Gi

n Giảảii

ASIC

ASIC AA pplication pplication SS pecific pecific IIntegratedntegratedCCircuitircuit ADC

ADC Analog to Digital Converter Analog to Digital Converter  ALU

ALU Arithmetic Arithmetic Logic Logic UnitUnit ASM

ASM Auto Auto Senquencing Senquencing MemoryMemory CPLD

CPLD CComplexomplex PProgrammablerogrammableLLogicogic DDeviceevice CPU

CPU Central Central Processing Processing UnitUnit DSP

DSP DDigitaligital SSignalignalPProcessingrocessing DAC

DAC Digital Digital to to Analog Analog Converter Converter  DPU

DPU Data Data Processing Processing UnitUnit FIR 

FIR  FFiniteinite IImpulsempulse R R esponseesponse FPGA

FPGA FField Programmableield Programmable GGate Arrayate Array HDL

HDL HHardwareardware DDescriptionescription LLanguageanguage IC

IC IIntegratedntegrated CCircuitircuit IEEE

IEEE Institute of Institute of Electrical Electrical and and Electronics Electronics EngineersEngineers JTAG

JTAG Joint Joint Test Test Action Action GroupGroup LED

LED LLightight EEmittingmitting DDiodeiode LUT

LUT LLook ook UU p Table p Table LMS

LMS Least Mean Least Mean SquareSquare PAL

PAL PProgrammablerogrammableAArrayrray LLogicogic PLA

PLA PProgrammablerogrammableLLogicogic AArrayrray PCI

PCI Peripheral Component Peripheral Component InterconnectInterconnect PE

PE Process Process ElementElement RAM

RAM R R andomandom AAccessccess MMemoryemory ROM

ROM R R eadeadOOnlynlyMMemoryemory RS232

(4)

SoC

SoC SSystemystemoonn cchiphip SRAM

SRAM Static Static Random Random Access Access MemoryMemory SPLD

SPLD SSimpleimple PProgramablerogramableLLogicogic DDeviceevice USB

USB UUniversalniversal SSerialerial BBusus VHDL

VHDL VVery High Speed Iery High Speed Itergrated Circuittergrated Circuit H

HardwareardwareDDescriptionescriptionLLanguageanguage VHSIC

(5)

L

Ờ 

I M

Ở ĐẦ

U

 Ngày nay, xử lý tín hiệu và lọc số là một ngành phát triển hết sức mạnh mẽ, các công nghệ, thuật toán ngày càng đượ c đổi mớ i và tối ưu hoá nhằm nâng cao tính hiệu quả của nó. Tuy nhiên, công nghệ phát triển càng cao thì đòi hỏi phần cứng phải đủ nhanh để xử lý. Các mạch lọc tươ ng tự tr ướ c đây không còn đủ khả năng để đáp ứng yêu cầu đó nữa. Vì vậy, FPGA đã ra đờ i như một giải pháp cung cấ p môi tr ườ ng làm việc hiệu quả cho các ứng dụng thực tế. Tính linh động cao trong quá trình thiết k ế cho  phép FPGA giải quyết những bài toán phức tạ p mà tr ướ c kia chỉ thực hiện nhờ phần mềm máy tính. Ngoài ra, nhờ mật độ cổng logic cao, FPGA đượ c ứng dụng cho những  bài toán đòi hỏi khối lượ ng tính toán lớ n và dùng trong các hệ thống làm việc theo thờ i gian thực. Những ứng dụng trong thực tế của FPGA r ất r ộng rãi, bao gồm: các hệ thống hàng không, vũ tr ụ, quốc phòng, tiền thiết k ế mẫu ASIC( ASIC prototyping ), các

hệ thống điều khiển tr ực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính...Đặc biệt, vớ i khả năng tái lậ p trình, ngườ i sử dụng có thể thay đổi lại thiết k ế của mình chỉ trong vài giờ .

Chính vì tính thiết thực mà FPGA đã mang lại, em quyết định chọn FPGA làm hướ ng nghiên cứu của mình. Trong bài khoá luận này, em xin trình bày một ứng dụng cụ thể của FPGA trong xử lý tín hiệu số đó là “Thự c hiện bộ lọc FIR thích nghi dùng thuật toán LMS”. Đề tài đượ c thực hiện tại phòng thí nghiệm mục tiêu “Các hệ tích hợ p thông minh ( SIS LAB)” tr ực thuộc tr ườ ng Đại học Công nghệ - ĐHQG HN.

Em xin chân thành cảm ơ n các thầy cô giáo đặc biệt là PGS.TS Tr ần Quang Vinh và Th.S Nguyễn Kiêm Hùng đã tận tình hướ ng dẫn và giúp đỡ  em để hoàn thành bản luận văn này một cách tốt đẹ p.

Do thờ i gian và kiến thức có hạn nên công trình này không thể tránh khỏi sai sót, vì vậy em r ất mong nhận đượ c các ý kiến đóng góp của các thầy cô và các bạn.

Em xin chân thành cảm ơ n !

Hà Nội, Ngày 27 Tháng 3 Năm 2008  Nguyễn Anh Cườ ng

(6)

Chươ ng 1

TỔ NG QUAN VỀ FPGA VÀ NGÔN NGỮ VHDL

1.1. TỔ NG QUAN VỀ FPGA 1.1.1. Lịch sử ra đờ i của FPGA

FPGA đượ c thiết k ế đầu tiên bở i Ross Freeman, ngườ i sáng lậ p công ty Xilinx vào năm 1984, kiến trúc mớ i của FPGA cho phép tích hợ  p số lượ ng tươ ng đối lớ n các  phần tử bán dẫn vào 1 vi mạch so vớ i kiến trúc tr ướ c đó là CPLD. FPGA có khả năng chứa tớ i từ 100.000 đến hàng vài tỷ cổng logic, trong khi CPLD chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối vớ i PAL, PLA còn thấ p hơ n nữa chỉ đạt vài nghìn đến 10.000.

CPLD đượ c cấu trúc từ số lượ ng nhất định các khối SPLD (Simple programable logic device) thuật ngữ chung chỉ PAL, PLA. SPLD thườ ng là một mảng logic

AND/OR lậ p trình đượ c có kích thướ c xác định và chứa một số lượ ng hạn chế các  phần tử nhớ  đồng bộ (clocked register ). Cấu trúc này hạn chế khả năng thực hiện

những hàm phức tạ p và thông thườ ng hiệu suất làm việc của vi mạch phụ thuộc vào cấu trúc cụ thể của vi mạch hơ n là vào yêu cầu bài toán.

Kiến trúc của FPGA là kiến trúc mảng các khối logic, mỗi khối này nhỏ hơ n nhiều nếu đem so sánh vớ i một khối SPLD, ưu điểm này giúp FPGA có thể chứa nhiều hơ n các phần tử logic và phát huy tối đa khả năng lậ p trình của các phần tử logic và hệ thống mạch k ết nối, để đạt đượ c mục đích này thì kiến trúc của FPGA phức tạ p hơ n nhiều so vớ i CPLD.

Một điểm khác biệt nữa vớ i CPLD là trong những FPGA hiện đại đượ c tích hợ  p nhiều bộ logic số học đã đượ c tối ưu hóa, hỗ tr ợ RAM, ROM, tốc độ cao, hay các bộ nhân, cộng dùng cho những ứng dụng xử lý tín hiệu số.

 Ngoài khả năng cấu trúc lại vi mạch ở mức toàn cục, một số FPGA hiện đại còn hỗ tr ợ  cấu trúc lại ở  mức cục bộ, tức là khả năng cấu trúc lại một bộ phận riêng lẻ trong khi vẫn đảm bảo hoạt động bình thườ ng cho các bộ phận khác

(7)

1.1.2. Khái niệm cơ bản và cấu trúc của FPGA

FPGA (Field-programmable gate array) là vi mạch dùng cấu trúc mảng phần tử

logic mà ngườ i dùng có thể lậ p trình đượ c. Chữ field ở đây muốn chỉ đến khả năng tái

lậ p trình “bên ngoài” tuỳ theo mục đích ứng dụng của ngườ i sử dụng, 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. Kiến trúc tổng quan về FPGA đượ c mô tả như hình 1:

(8)

Vi mạch FPGA đượ c cấu thành từ các bộ phận:

• Các khối logic cơ bản lập trình đượ c (logic block )

Phần tử chính của FPGA là các khối logic (logic block ). Khối logic đượ c cấu

thành từ LUT và một phần tử nhớ  đồng bộ flip-flop. LUT (  Look up table) là

khối logic có thể thực hiện bất kì hàm logic nào từ 4 đầu vào, k ết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic tr ực tiế p hay thông qua phần tử nhớ flip-flop.

Khối logic đượ c mô tả như hình 2:

 Hình 2: Khối logic lậ p trình đượ c của FPGA

Trong tài liệu hướ ng dẫn của các dòng FPGA của Xilinx còn sử dụng khái niệm SLICE, 1 Slice gồm 4 khối logic tạo thành, số lượ ng các Slices thay đổi từ vài nghìn đến vài chục nghìn tùy theo loại FPGA.

• Hệ thống mạch liên k ết lập trình đượ c

Mạng liên k ết trong FPGA đượ c cấu thành từ các đườ ng k ết nối theo hai  phươ ng ngang và đứng, tùy theo từng loại FPGA mà các đườ ng k ết nối đượ c chia thành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx có 3 loại k ết nối: ngắn, dài và r ất dài. Các đườ ng k ết nối đượ c nối vớ i nhau thông qua các khối chuyển mạch lậ p trình đượ c (  programable switch), trong một khối chuyển

mạch chứa một số lượ ng nút chuyển lậ p trình đượ c, đảm bảo cho các dạng liên k ết phức tạ p khác nhau.

• Khối vào/ra ( IO Pads)

Khối vào/ra nhiều hay ít là tuỳ thuộc vào từng loại FPGA. Chúng có thể đượ c k ết nối vớ i các thiết bị bên ngoài như LED, USB, RS232, RAM....tuỳ theo mục đích sử dụng

• Các phần tử tích hợ p sẵn

 Ngoài các khối logic, tùy theo các loại FPGA khác nhau mà có các phần tử tích hợ  p thêm khác nhau, ví dụ để thiết k ế những ứng dụng SoC, trong dòng Virtex

(9)

hiệu số trong FPGA đượ c tích hợ  p các DSP Slice là bộ nhân, cộng tốc độ cao, thực hiện hàm A*B+C, ví dụ dòng Virtex của Xilinx chứa từ vài chục đến hàng tr ăm DSP slices vớ i A, B, C 18-bit.

1.1.3. Các ứ ng dụng của FPGA

Ứ ng dụng của FPGA bao gồm: xử lý tín hiệu số, các hệ thống hàng không, vũ tr ụ, quốc phòng, tiền thiết k ế mẫu ASIC( ASIC prototyping ), các hệ thống điều khiển tr ực

quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính...

Do tính linh động cao trong quá trình thiết k ế cho phép FPGA giải quyết lớ  p những bài toán phức tạ p mà tr ướ c kia chỉ thực hiện nhờ phần mềm máy tính, ngoài ra nhờ  mật độ cổng logic lớ n FPGA đượ c ứng dụng cho những bài toán đòi hỏi khối lượ ng tính toán lớ n và dùng trong các hệ thống làm việc theo thờ i gian thực.

1.2. TỔ NG QUAN VỀ NGÔN NGỮ VHDL

Thiết k ế hay lậ p trình cho FPGA đượ c thực hiện chủ yếu bằng các ngôn ngữ mô tả phần cứng HDL như VHDL, Verilog ...các hãng sản xuất FPGA lớ n như Xilinx, Altera thườ ng cung cấ p các gói phần mềm và thiết bị phụ tr ợ cho quá trình thiết k ế, cũng có một số các hãng thứ ba cung cấ p các gói phần mềm kiểu này như Synopsys, Synplify... Các gói phần mềm này có khả năng thực hiện tất cả các bướ c của toàn bộ quy trình thiết k ế IC chuẩn vớ i đầu vào là mã thiết k ế trên HDL (còn gọi là mã RTL).

Trong bài Luận văn này, có sử dụng ngôn ngữ mô tả phần cứng VHDL, do đó ta chỉ tậ p chung tìm hiểu về ngôn ngữ VHDL.

1.2.1. Giớ i thiệu về ngôn ngữ mô tả phần cứ ng VHDL

VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợ  p tốc độ r ất cao, là một loại ngôn ngữ mô tả phần cứng đượ c phát triển dùng cho tr ươ ng trình VHSIC( Very High Speed Itergrated Circuit) của bộ quốc phòng Mỹ. Mục tiêu của việc phát triển VHDL là có đượ c một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất cho  phép thử nghiệm các hệ thống số nhanh hơ n cũng như cho phép dễ dàng đưa các hệ thống đó vào ứng dụng trong thực tế. Ngôn ngữ VHDL đượ c ba công ty Intermetics, IBM và Texas Instruments bắt đầu nghiên cứu phát triển vào tháng 7 năm 1983. Phiên  bản đầu tiên đượ c công bố vào tháng 8-1985. Sau đó VHDL đượ c đề xuất để tổ chức

(10)

IEEE xem xét thành một tiêu chuẩn chung. Năm 1987 đã đưa ra tiêu chuẩn về VHDL( tiêu chuẩn IEEE-1076-1987).

VHDL đượ c phát triển để giải quyết các khó khăn trong việc phát triển, thay đổi và lậ p tài liệu cho các hệ thống số. Như ta đã biết, một hệ thống số có r ất nhiều tài liệu mô tả. Để có thể vận hành bảo trì sửa chữa một hệ thống ta cần tìm hiểu k ỹ lưỡ ng tài liệu đó. Vớ i một ngôn ngữ mô phỏng phần cứng tốt việc xem xét các tài liệu mô tả tr ở  nên dễ dàng hơ n vì bộ tài liệu đó có thể đượ c thực thi để mô phỏng hoạt động của hệ thống. Như thế ta có thể xem xét toàn bộ các phần tử của hệ thống hoạt động trong một mô hình thống nhất.

VHDL đượ c phát triển như một ngôn ngữ độc lậ  p không gắn vớ i bất k ỳ một  phươ ng pháp thiết k ế, một bộ mô tả hay công nghệ phần cứng nào. Ngườ i thiết k ế có thể tự do lựa chọn công nghệ, phươ ng pháp thiết k ế trong khi chỉ sử dụng một ngôn ngữ duy nhất. Và khi đem so sánh vớ i các ngôn ngữ mô phỏng phần cứng khác đã k ể ra ở trên ta thấy VHDL có một số ưu điểm hơ n hẳn các ngôn ngữ khác:

- Thứ nhấ t là tính công cộng: VHDL đượ c phát triển dướ i sự bảo tr ợ của chính

 phủ Mỹ và hiện nay là một tiêu chuẩn của IEEE. VHDL đượ c sự hỗ tr ợ  của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấ p công cụ thiết k ế mô  phỏng hệ thống.

- Thứ hai là khả năng hỗ tr ợ nhiều công nghệ và phươ ng pháp thiết k ế. VHDL

cho phép thiết k ế bằng nhiều phươ ng pháp, ví dụ phươ ng pháp thiết k ế từ trên xuống, hay từ dướ i lên dựa vào các thư viện sẵn có. VHDL cũng hỗ tr ợ  cho nhiều loại công cụ xây dựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ, sử dụng ma tr ận lậ p trình đượ c hay sử dụng mảng ngẫu nhiên.

- Thứ ba là tính độc lậ p vớ i công nghệ: VHDL hoàn toàn độc lậ p vớ i công nghệ

chế tạo phần cứng. Một mô tả hệ thống dùng VHDL thiết k ế ở mức cổng có thể đượ c chuyển thành các bản tổng hợ  p mạch khác nhau tuỳ thuộc công nghệ chế tạo phần cứng mớ i ra đờ i nó có thể đượ c áp dụng ngay cho các hệ thống đã thiết k ế .

- Thứ t ư là khả năng mô tả mở r ộng: VHDL cho phép mô tả hoạt động của phần

cứng từ mức hệ thống số cho đến mức cổng. VHDL có khả năng mô tả hoạt động của hệ thống trên nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi mức. Như thế ta có thể mô phỏng một bản thiết k ế bao gồm

(11)

- Thứ năm là khả năng trao đổi k ết quả: Vì VHDL là một tiêu chuẩn đượ c chấ p

nhận, nên một mô hình VHDL có thể chạy trên mọi bộ mô tả đáp ứng đượ c tiêu chuẩn VHDL. Các k ết quả mô tả hệ thống có thể đượ c trao đổi giữa các nhà thiết k ế sử dụng công cụ thiết k ế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL. Cũng như một nhóm thiết k ế có thể trao đổi mô tả mức cao của các hệ thống con trong một hệ thống lớ n (trong đó các hệ con đó đượ c thiết k ế độc lậ p). - Thứ sáu là khả năng hỗ tr ợ thiết k ế mức lớ n và khả năng sử dụng lại các thiết

k ế: VHDL đượ c phát triển như một ngôn ngữ lậ p trình bậc cao, vì vậy nó có thể đượ c sử dụng để thiết k ế một hệ thống lớ n vớ i sự tham gia của một nhóm nhiều ngườ i. Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ tr ợ việc quản lý, thử nghiệm và chia sẻ thiết k ế. Và nó cũng cho phép dùng lại các phần đã có sẵn. 1.2.2. Cấu trúc một mô hình hệ thống mô tả bằng ngôn ngữ VHDL

Mục đích của phần này sẽ nhằm giớ i thiệu sơ qua về cấu trúc khung cơ bản của VHDL khi mô tả cho một mô hình thiết k ế thực.

Thông thườ ng một mô hình VHDL bao gồm ba phần: thực thể, kiến trúc và các cấu hình. Đôi khi ta xử dụng các gói (packages) và mô hình kiểm tra hoạt động của hệ thống (testbench).

+ Thự c thể (entity): Khai báo thực thể trong VHDL là phần định ngh ĩ a các chỉ tiêu phía ngoài của một phần tử hay một hệ thống. Thực chất của việc khai báo thực thể chính là khai báo giao diện của hệ thống vớ i bên ngoài. Ta có thể có tất cả các thông tin để k ết nối mạch vào mạch khác hoạc thiết k ế tác nhân đầu vào phục vụ cho mục đích thử nghiệm. Tuy nhiên hoạt động thật sự của mạch không nằm ở phần khai  báo này

+ Kiến trúc (Architecture): Phần thứ 2 trong mô hình VHDL là khai báo kiến trúc. Mỗi một khai báo thực thể đều phải đi kèm vớ i ít nhất một kiến trúc tươ ng ứng. VHDL cho phép tạo ra hơ n một kiến trúc cho một thực thể. Phần khai báo kiến trúc có thể bao gồm các khai báo về các tín hiệu bên trong, các phần tử bên trong hệ thống, hay các hàm và thủ tục mô tả hoạt động của hệ thống. Tên của kiến trúc là nhãn đượ c đặt tuỳ theo ngườ i sử dụng. Có hai cách mô tả kiến trúc của một phần tử ( hoặc hệ thống) đó là mô hình hoạt động (Behaviour) hay mô tả theo mô hình cấu trúc (Structure). Tuy nhiên một hệ thống có thể bao gồm cả mô tả theo mô hình hoạt động và mô tả theo mô hình cấu trúc.

(12)

+ Mô tả kiến trúc theo mô hình hoạt động: Mô hình hoạt động mô tả các hoạt động của hệ thống ( hệ thống đáp ứng vớ i các tín hiệu vào như thế nào và đưa ra k ết quả gì ra đầu ra) dướ i dạng các cấu trúc ngôn ngữ lậ p trình bậc cao. Cấu trúc đó có thể là PROCESS, WAIT, IF, CASE, FOR-LOOP…

+ Mô tả kiến trúc theo mô hình cấu trúc: Mô hình cấu trúc của một phần tử (hoặc hệ thống) có thể bao gồm nhiều cấ p cấu trúc bắt đầu từ một cổng logic đơ n giản đến xây dựng mô tả cho một hệ thống hoàn thiện. Thực chất của việc mô tả theo mô hình cấu trúc là mô tả các phần tử con bên trong hệ thống và sự k ết nối của các phần tử con đó. Như vớ i ví dụ mô tả mô hình cấu trúc một flip-flop RS gồm hai cổng NAND có thể mô tả cổng NAND đượ c định ngh ĩ a tươ ng tự như ví dụ vớ i cổng NOT, sau đó mô tả sơ đồ móc nối các phần tử NAND tạo thành trigơ RS

+ Cấu trúc Process: Process là khối cơ  bản của việc mô tả theo hoạt động. Process đượ c xét đến như là một chuỗi các hành động đơ n trong suốt quá trình dịch.

Cấu trúc tổng quát:

+ Môi trườ ng kiểm tra (testbench): Một trong các nhiệm vụ r ất quan tr ọng là kiểm tra bản mô tả thiết k ế. Kiểm tra một mô hình VHDL đượ c thực hiện bằng cách quan sát hoạt động của nó trong khi mô phỏng và các giá tr ị thu đượ c có thể đem so sánh vớ i yêu cầu thiết k ế.

Môi tr ườ ng kiểm tra có thể hiểu như một mạch kiểm tra ảo. Môi tr ườ ng kiểm tra sinh ra các tác động lên bản thiết k ế và cho phép quan sát hoặc so sánh k ết quả hoạt động của bản mô tả thiết k ế. Thông thườ ng thì các bản mô tả đều cung cấ p chươ ng trình thử. Nhưng ta cũng có thể tự xây dựng chươ ng trình thử (testbench). Mạch thử thực chất là sự k ết hợ  p của tổng hợ  p nhiều thành phần. Nó gồm ba thành phần: mô hình VHDL đã qua kiểm tra, nguồn dữ liệu và bộ quan sát. Hoạt động của mô hình VHDL đượ c kích thích bở i các nguồn dữ liệu và kiểm tra tính đúng đắn thông qua bộ quan sát. [tên nhãn]: process [(danh sách các yế u t ố kích thích hoạt động)] [khai báo các biế n] begin [các câu l ệnh] end process;

(13)

Chươ ng 2

B

L

C FIR 

2.1. BỘ LỌC FIR TRUYỀ N THỐ NG

 Bộ l ọc FIR là bộ lọc có đáp ứng xung chiều dài hữu hạn, tức là đáp ứng xung chỉ

khác không trong một khoảng có chiều dài hữu hạn N (từ 0 đến N-1). Bộ lọc FIR vớ i  bậc của bộ lọc là N đượ c biểu diễn như hình 3:

 Hình 3: Cấu trúc của bộ lọc FIR truyền thống

Trong đó:

x[n]: là tín hiệu lối vào của mạch y[n]: là tín hiệu lối ra của mạch h[n]: là đáp ứng xung của mạch

Lối ra y[n] và lối vào x[n] liên hệ vớ i nhau bở i công thức: y[n] =

− = − 1 0 ] [ ] [  N  k  k  n  x k  h

Để tính đượ c các giá tr ị y[k] từ các mẫu lối vào x[k] thì các mẫu lần lượ t qua các  bộ tr ễ, bộ nhân và bộ cộng. Vớ i bộ lọc FIR có bậc là N thì phải sau N phép nhân và

N-1 phép cộng thì mớ i tính đượ c giá tr ị của lối ra.

 Như vậy, bộ lọc FIR có cấu trúc như trên có nhượ c điểm là khả năng đáp ứng chậm, các mẫu lối ra không đượ c liên tục mà sau một khoảng thờ i gian tính toán xong các phép nhân và phép cộng mớ i đượ c xuất ra.

(14)

Để khắc phục nhượ c điểm đó, ta sử dụng kiến trúc systolic array để nâng cao khả năng đáp ứng của mạch

2.2. BỘ LỌC FIR SỬ DỤ NG KIẾ N TRÚC SYSTOLIC ARRAY 2.2.1. Tổng quan về systolic array

Systolic array là cấu trúc xử lý song song đặc biệt chứa các khối xử lý dữ liệu (data processing unit gọi tắt là DPU), các khối xử lý này đượ c sắ p xế  p thành một mạng. DPU tươ ng tự như CPU nhưng nó không có bộ đếm chươ ng trình. Từng khối DPU như là một trigger truyền thông bở i sự luân chuyển dữ liệu từ DPU này đến các DPU lân cận. Thông thườ ng, những dữ liệu khác nhau thì sẽ luân chuyển theo các hướ ng khác nhau. Các luồng dữ liệu tớ i và r ờ i khỏi các cổng DPU đượ c phát từ ASM (Auto senquencing memory là thành phần không thể thiếu của cấu trúc Non-Von-  Neumann. Trong cấu trúc này, cơNon-Von-  chế senquencing đóng vai trò là bộ đếm chươNon-Von- ng trình). Mỗi ASM đóng vai trò là bộ đếm dữ liệu. Trong hệ thống này, luồng dữ liệu vào có thể vào từ đầu ra của thiết bị ngoại vi và ngượ c lại.

Các bộ xử lý (DPU) tính toán dữ liệu, lưu tr ữ dữ liệu theo những cách độc lậ p vớ i nhau. Các bộ xử lý này có thể có một vài thanh ghi và khối ALU. Các DPU có khả năng lưư tr ữ và xử lý dữ liệu độc lậ p vớ i nhau. Mỗi DPU sau khi xử lý dữ liệu xong sẽ chia sẻ dữ liệu cho các Cell lân cận.

Trong hình 4, mô tả kiến trúc Systolic array một chiều, dữ liệu chuyển động theo một hướ ng

 Hình 4: Cấu trúc systolic array một chiều

Hình 5 mô tả kiến trúc systolic array hai chiều, dữ liệu chuyển động hai hướ ng theo chiều của mũi tên qua các bộ DPU. Dữ liệu ra cũng theo hai hướ ng

(15)

 Hình 5: Kiến trúc systolic array hai chiều

2.2.2. Bộ lọc FIR thự c hiện theo kiến trúc systolic array một chiều

Để cho việc xử lý dữ liệu đượ c nhanh hơ n, bộ lọc FIR theo kiến trúc Systolic array sẽ bao gồm một dãy các phần tử xử lý hay còn gọi là PE (Process Element). Trong cùng một thờ i điểm, các PE sẽ thực hiện đồng thờ i các nhiệm vụ riêng, và do đó, tín hiệu ở lối ra sẽ đượ c đưa ra một cách liên tục mà không phải mất một khoảng thờ i gian để tính toán do nó đã đượ c tính từ tr ướ c đó.

Cấu trúc của một PE của bộ lọc FIR SYSTOLIC đượ c trình bày như trong hình 6

 Hình 6: Cấu trúc của một PE

 Như vậy, cấu trúc của bộ lọc FIR Systolic vớ i bậc bộ lọc là N, gồm N+1 PE đượ c trình bày như hình 7

(16)

Khác vớ i bộ lọc FIR thông thườ ng, đầu ra của bộ cộng lại đượ c đưa qua 2 bộ chốt để làm tr ễ, nó có tác dụng chia đườ ng truyền tín hiệu của mạch thành những đoạn nhỏ, do đó làm tăng tần số hoạt động của mạch, đồng thờ i làm cho tín hiệu xin và yin vào bộ cộng cùng một lúc, do đó, tín hiệu ra sẽ đượ c liên tục, đáp ứng nhanh, bở i việc tính toán đã đượ c thực hiện tr ướ c đó.

Vớ i việc chia đườ ng truyền dài nhất của mạch thành những đoạn nhỏ nhờ  các thanh ghi chốt, ta còn có thể tối ưu bộ lọc FIR systolic hơ n nữa. Hình 8 mô tả cấu trúc tối ưu của bộ lọc FIR systolic.

Mô hình này về ý tưở ng vẫn giống mô hình tr ướ c, bao gồm các thanh ghi chốt,  bộ cộng, bộ nhân của mô hình tr ướ c, tuy nhiên, có sự thay đổi vị trí của các thanh ghi chốt, tr ướ c bộ nhân và bộ cộng ta chèn thêm một thanh ghi chốt vào để chia nhỏ đườ ng truyền tín hiệu. Do đó, làm cho tần số hoạt động của mạch tăng lên.

x a N + ….. ….. x ao + xin Yin xout

 Hình 8: Cấu trúc tối ưu của bộ lọc FIR systolic bậc N

yout x a N + ….. ….. x ao + xin Yin xout

 Hình 7: Cấu trúc bộ lọc FIR systolic bậc N

(17)

Chươ ng 3

BỘ LỌC FIR THÍCH NGHI DÙNG THUẬT TOÁN LMS

3.1. ĐẶT VẤ N ĐỀ

Thuật ngữ lọc dùng để chỉ tất cả các hệ thống có khả năng khôi phục lại dạng của các thành phần tần số của tín hiệu lối vào để tạo ra tín hiệu lối ra thỏa mãn các yêu cầu mong muốn. Vớ i bộ lọc FIR trình bày ở trên, thì hệ số của bộ lọc luôn không đổi. Do đó, nếu có sự thay đổi đột ngột của một hoặc một vài yếu tố đầu vào(như tín hiệu nhiễu chẳng hạn) thì bộ lọc sẽ không còn đượ c tối ưu nữa. Hay nói cách khác, ta không thu đượ c tín hiệu mong muốn.

Để khắc phục nhượ c điểm trên, ngườ i ta đưa ra một bộ lọc FIR có cấu trúc mớ i, mà trong đó, các hệ số của bộ lọc có thể thay đổi đượ c để có thể thích ứng vớ i sự thay đổi bất ngờ của các yếu tố lối vào. Mạch lọc FIR có các hệ số thay đổi như vậy đượ c gọi là mạch lọc FIR thích nghi. Giản đồ khối của mạch lọc như vậy đượ c trình bày trong hình 9.

Trong sơ đồ này, tín hiệu lối vào là một dãy thờ i gian r ờ i r ạc x[n], mạch lọc đượ c đặc tr ưng bở i đáp ứng xung h[n], còn tín hiệu lối ra ở thờ i điểm n là một dãy y[n].

h[n]=h0,h1... +

Tín hiệu vào x[n]

 __ 

 Hình 9: Giản đồ khối của mạch lọc thích nghi y[n]

Tín hiệu mong muốn d(n)

Tín hiệu sai số e[n]

(18)

Lối ra này đượ c sử dụng để xác định một đáp ứng mong muốn d[n]. Các hệ số của mạch lọc phải đượ c chọn lựa sao cho dãy tín hiệu mong muốn có dạng phù hợ  p nhất vớ i tín hiệu lối vào. Điều này có thể đượ c thực hiện nếu dãy tín hiệu sai số e[n] hội tụ về không nhanh nhất. Để làm đượ c điều này, ta phải tối ưu hoá một hàm sai số đượ c xác định theo phươ ng pháp thống kê hoặc phươ ng pháp quyết định. Đối vớ i  phươ ng pháp thống kê, thì hàm sai số đượ c sử dụng là giá tr ị toàn phưong trung bình của tín hiệu sai số e[n]. Nếu tín hiệu vào và tín hiệu mong muốn là những tín hiệu dừng, thì việc cực tiểu hoá sai số toàn phươ ng trung bình đưa đến một mạch lọc r ất nổi tiếng đó là mạch lọc Wiener, đượ c gọi là tối ưu theo ngh ĩ a toàn phươ ng trung bình. Hầu hết các thuật toán thích nghi là áp dụng cho các loại mạch lọc Wiener. Trong  phươ ng pháp quyết định, cách chọn hàm sai số là một tổng tr ọng số của tín hiệu sai số toàn phươ ng. Việc cực tiểu hoá hàm này dẫn đến một mạch lọc tối ưu đối vớ i dãy dữ liệu đã cho.

 Như vậy, mạch lọc đượ c thiết k ế hoặc bằng các công thức thống kê hoặc bằng các công thức xác định. Trong các thiết k ế xác định, cần phải tính toán một số đại lượ ng trung bình khi sử dụng dãy dữ liệu đã cho mà mạch lọc cần xử lý. Nói cách khác, để thiết k ế đượ c mạch lọc Wiener cần phải biết tr ướ c các tính chất thống kê của các tín hiệu cơ sở . Trong tr ườ ng hợ  p này, các dãy tín hiệu cơ sở thườ ng đượ c cho là tín hiệu dừng và trung bình theo thờ i gian bằng trung bình thống kê.

Mặc dù phép đo tr ực tiế p các giá tr ị trung bình của tín hiệu có thể đượ c thực hiện để thu đượ c những thông tin cần thiết cho việc thiết k ế mạch lọc Wiener hoặc các mạch lọc tối ưu, nhưng trong nhiều ứng dụng thực tế, các giá tr ị trung bình của tín hiệu lại đượ c sử dụng theo cách gián tiế p, trong đó sai số lối ra của mạch lọc tươ ng quan vớ i các mẫu của tín hiệu vào của mạch lọc theo một số cách và sử dụng k ết quả của  phươ ng trình đệ quy để điều chỉnh các hệ số của mạch theo kiểu lặ p.

Sử dụng phươ ng pháp lặ p có thể đưa đến các lờ i giải thích nghi có khả năng tự hiệu chỉnh. Có ngh ĩ a là nếu các tính chất thống kê của tín hiệu thay đổi đối vớ i thờ i gian, thì nhờ nghiệm lặ p, các hệ số của mạch lọc có thể tự điều chỉnh để thích nghi vớ i các tính chất thống kê mớ i.

 Nghiệm lặ  p, nói chung r ất đượ c ưa chuộng vì nó dễ mã hoá trong phần mềm và dễ thực thi trong phần cứng hơ n các nghiệm không lặ p.

(19)

3.2. CẤU TRÚC CỦA MẠCH LỌC THÍCH NGHI

Cấu trúc thườ ng đượ c sử dụng trong mạch lọc thích nghi đượ c mô tả như hình 10:

 Hình 10: Cấu trúc của mạch lọc FIR thích nghi

Trong đó:

x[n] : Vector tín hiệu đầu vào của mạch lọc. x[n] = [xn xn-1 xn-2… xn-N+1]T

w: Là vector tr ọng số của bộ lọc thích nghi w = [w0w1…w N-1]T

y[n] : là lối ra của mạch lọc y[n] =

− = − 1 0 ] [ ] [  N  k  k  n  x k  w wT x[n] (3.1)

d[n] : là lối ra mong muốn

e[n] : là sai số giữa tín hiệu mong muốn d[n] và tín hiệu đầu ra y[n]

e[n]=d[n]-y[n] (3.2) z-1 z-1 x z-1 + x x wo[n] w1[n] w N-1[n] x[n] x[n-1] + e[n] x

Thuật toán thích nghi

x[n-N+1]

y[n]

d[n] +

(20)

-Bài toán thích nghi sẽ tự điều chỉnh ma tr ận các tr ọng số w sao cho sai số e[n] là nhỏ nhất. 3.3. MẠCH LỌC WIENER FIR  Vì wTx[n] là một vô hướ ng nên bằng chuyển vị của nó, tức là:wTx[n]=xT[n]w. Do đó, từ (3.1) và (3.2) ta có: e[n]=d[n]-y[n]=d[n]-wTx[n]=d[n]-xT[n]w (3.3)

Đối vớ i mạch lọc Wiener, hàm hiệu năng đượ c chọn là sai số toàn phươ ng trung  bình:

J= E[|e[n]|2] (3.4)

Trong đó ký hiệu E[.] là k ỳ vọng thống kê. Thay (3.3) vào (3.4) ta đượ c: J= E[(d[n]-wTx[n])(d[n]-xT[n]w)] (3.5)

Khai triển (3.5) và chú ý w có thể đưa ra ngoài toán tử E[.] vì nó không phải là  biến số thống kê, ta thu đượ c:

J=E[d2[n]]–wTE[x[n]d[n]]– E[d[n]xT[n]]w + wTE[x[n]xT[n]]w (3.6) Ta định ngh ĩ a vector tươ ng quan chéo bậc Nx1:

P = E[x[n]d[n]] = [P0 P1 …P N-1] T (3.7) Và ma tr ận tươ ng quan: R 00 R 01 R 02 …… R 0 N-1 R 10 R 11 R 12 …… R 1 N-1 R=E[x[n]xT[n]] = .. .. .. …… …. (3.8) .. .. .. …. …. .. .. …. ... … R  N-1 0 R  N-1 1 R   N-1 2 …… R  N-1 N-1

(21)

Chú ý là: E[d[n]xT[n]] = PT; wTP = PTw, ta thu đượ c:

J = E[d2[n]] – 2wTP + wTRw (3.9)

Để thu đượ c táp tr ọng số ứng vớ i hàm phí tổn J có giá tr ị cực tiểu, ta cần phải giải hệ phươ ng trình đượ c tạo thành từ đạo hàm bậc nhất của J đối vớ i mỗi táp tr ọng số wi bằng không, tức là: wi  J  ∂ ∂ = 0 , vớ i i = 0,1,2…N-1 (3.10) Các phươ ng trình trên có thể viết dướ i dạng ma tr ận: ∇J = 0 (3.11)

ở đây ∇là toán tử vi phân đượ c xác định như một vectơ cột:

∇= ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ − ∂ ∂ ∂ ∂ ∂ ∂ ] 1 [ . . . ] 1 [ ] 0 [  N  w w w (3.12)

Để tìm các đạo hàm riêng của J đối vớ i các táp tr ọng số wi của mạch lọc, tr ướ c

hết phải khai triển hệ thức (3.9) thành dạng tườ ng minh: J = E[d2[n]] – 2

− = 1 0 ] [ ] [  N  k  k  w k   P  +

∑∑

− = − = 1 0 1 0 ] , [ ] [ ] [  N  k   N  m m k   R m w k  w (3.13)

Tổng kép trong (3.13) có thể khai triển dướ i dạng:

∑∑

− = − = 1 0 1 0 ] , [ ] [ ] [  N  k   N  m m k   R m w k  w =

∑∑

− = − − 1 #0 1 #0 ] , [ ] [ ] [  N  i k  k   N  i m m m k   R m w k  w +wi

− = 1 #0 ] , [ ] [  N  i k  k  i k   R k  w +wi

− = 1 #0 ] , [ ] [  N  k  m m m k   R m w +wi2R[k,i] (3.14)

Thay (3.14) vao` (3.13), sau đó lấy đạo hàm riêng phần của J theo wi và thay

(22)

] [i w  J  ∂ ∂ = -2Pi +

− = + 1 0 ] , [ ] , [ ]( [  N  k  k  i  R i k   R k  w ) , vớ i i=0,1,2,…,N-1 (3.15)

Trong tr ườ ng hợ  p này ta thấy:

R ki = E[x[n-k]x[n-i]] = Φxx[i-k] (3.16)

ở đây Φxx[i-k] là hàm tự tươ ng quan của x[n]

Tươ ng tự:

R ik = Φxx[k-i] (3.17)

Do tính chất đối xứng của hàm tự tươ ng quan nên Φxx[k] =Φxx[-k], ta thu đượ c:

R ki= R ik  (3.18) Thay (3.18) vào phươ ng trình (3.15) ta đượ c: ] [i w  J  ∂ ∂ = -2Pi + 2

− = 1 0 ] [ ] , [  N  k  k  w k  i  R ,vớ i i = 0,1,2…,N-1 (3.19)

Phươ ng trình trên có thể biểu diễn dướ i dạng ma tr ận:

∇J = 2Rw – 2P (3.20)

Đặt ∇J=0 ta sẽ thu đượ c phươ ng trình tối ưu hoá táp tr ọng số của mạch lọc

Wiener 

Rwo = P (3.21)

Đây là phươ ng trình Wiener-Hopf đối vớ i vetor tr ọng số tối ưu wo:

wo = R -1P (3.22)

Thay giá tr ị wo vừa tìm đượ c từ phươ ng trình Wiener-Hopf và Rwo=P vào

 phươ ng trình (3.9) ta sẽ tìm đượ c giá tr ị cực tiểu của hàm phí tổn J: Jmin = E[d2[n]] - woTP

= E[d2[n]] - woTRwo (3.23)

Đó là sai số cực tiểu mà mạch lọc Wiener FIR W(z) có thể đạt đượ c khi táp tr ọng số của nó là nghiệm của phươ ng trình Wiener-Hopf, ngh ĩ a là nghiệm tối ưu ở (3.22)

(23)

3.4. CÁC THUẬT TOÁN THÍCH NGHI VÀ Ứ  NG DỤ NG

Trong phần này, chúng ta nghiên cứu chủ yếu thuật toán toàn phươ ng trung bình tối thiểu LMS. Thuật toán này đượ c áp dụng r ộng rãi trong xử lý số thích nghi và thống kê do tính chất bền vững và đơ n giản của nó. Nhờ thuật toán này mà dãy sai số hội tụ về không vớ i tốc độ nhanh, tuỳ theo bướ c giảm cấ p. Vì vậy, dựa trên thuật toán này, ngườ i ta đã phát triển nhiều thuật toán nhanh

3.4.1. Phươ ng pháp giảm bướ c nhanh nhất

Đây là phươ ng pháp lặ p để tìm táp tr ọng số tươ ng ứng vớ i điểm cực tiểu của mặt sai số của mạch lọc Wiener FIR. Trong phươ ng pháp này, hàm phí tổn cần cực tiểu hoá đượ c giả thiết là phân k ỳ và xuất phát từ một đểm bất k ỳ trên mặt sai số, ta lấy một  bướ c nhỏ theo hướ ng mà trong đó hàm phí tổn giảm nhanh nhất. Tại điểm đó, hàm phí

tổn của mạch lọc Wiener sẽ có giá tr ị tối ưu.

 Hình 11: Mạch lọc Wiener FIR 

Đối vớ i mạch lọc Wiener như hình, dãy tín hiệu vào mạch lọc là x[n] và dãy tín hiệu mong muốn d[n] và táp tr ọng số wi đượ c giả thiết là những dãy số thực. Khi đó,

dãy lối ra của mạch lọc:

z-1 z-1 x z-1 + x x wo[n] w1[n] w N-1[n] x[n] x[n-1] + e[n]

Thuật toán thích nghi

x

y[n] __ 

d[n]

(24)

y[n] = wTx[n] = w xT[n] (4.1)

 Nhắc lại r ằng khi hàm phí tổn đạt giá tr ị cực tiểu thì táp vector tr ọng số đạt đến giá tr ị tối ưu, thoả mãn phươ ng trình Wiener-Hopf:

Rwo=P (4.2)

Ở đây, thay cho việc giải phươ ng trình một cách tr ực tiế p, ta giải bài toán bằng cách tìm một phươ ng pháp lặ p.

Theo phươ ng pháp này, xuất phát từ giá tr ị dự đoán tr ướ c đối vớ i wo,gọi là w(0),

nhờ  tính toán đệ quy thực hiện nhiều phép lặ p để hội tụ tớ i wo. Thuật toán lặ  p này

thườ ng xuyên đượ c sử dụng trong các mạch lọc thích nghi.

Phươ ng pháp giảm bướ c nhanh nhất đượ c thực hiện theo các bướ c sau:

1. Xuất phát từ các thông số dự đoán ban đầu mà các giá tr ị tối ưu của nó tìm đượ c để cực tiểu hoá hàm phí tổn.

2. Tìm gradient của hàm phí tổn ứng vớ i các thông số tại điểm xuất phát 3. Cậ  p nhật các thông số bằng cách lấy một bướ c theo hướ ng ngượ c vớ i

vector gradient thu đượ c trong bướ c 2. Điều đó tươ ng ứng vớ i bướ c giảm nhanh nhất trong hàm phí tổn. Ngoài ra, kích thướ c của bướ c đượ c chọn tỉ lệ vớ i kích thướ c của vector gradient

4. Lặ p lại các bướ c 2 và 3 cho đến khi không thể thay đổi đượ c nữa trong các thông số

Theo các thủ tục trên, nếu w(k) là vector táp tr ọng số tại phép lặ  p thứ k, thì  phươ ng trình truy hồi sau đây có thể đượ c sử dụng để cậ p nhật w(k):

w(k+1) = w(k) - µ∇J (4.3)

trong đó:

J = 2Rw(k)-2P (4.4)

Thông số µ là đại lượ ng vô hướ ng dươ ng đượ c gọi là kích thướ c của bướ c. Đây

là thông số r ất quan tr ọng vì tốc độ hội tụ của w(k) tớ i giá tr ị tối ưu wo phụ thuộc vào

thông số này, tức là vào kích thướ c của bướ c đã lựa chọn. Nếu kích thướ c bướ c lớ n có thể sự hội tụ sẽ nhanh hơ n, nhưng bù lại tính ổn định sẽ kém hơ n

(25)

Thay (4.4) vào (4.3) ta đượ c:

w(k+1) = w(k) - 2µ(Rw(k) – P) (4.5)

Để có thể thấy sự cậ p nhật các giá tr ị w(k) cho hội tụ tớ i wo,ta viết lại (4.5) :

w(k+1) - wo = (I-2µR)(w(k)-wo) (4.6)

Ta định ngh ĩ a vector:

v(k) = w(k) - wo (4.7)

Khi đó (4.6) tr ở thành:

v(k+1) = (I-2µR)v(k) (4.8)

Phươ ng trình (4.8) sẽ có dạng đơ n giản hơ n nữa nếu ta đưa ma tr ận tươ ng quan R  về dạng chéo. Ngh ĩ a là ta đặt:

R=Qλ QT (4.9)

Và thay ma tr ận đơ n vị I=QQT, khi đó (4.8) tr ở thành:

v(k+1) = (QQT - 2µQλ QT)v(k) = Q(I-2µλ )QTv(k) (4.10) Trong đó λ là ma tr ận chéo đượ c tạo thành từ các giá tr ị riêng của ma tr ận tươ ng quan R, còn Q là ma tr ận đượ c tạo thành từ các vector riêng tr ực giao tươ ng ứng

Đặt:

v’(k) = QTv(k) (4.11)

 Như vậy ta thu đượ c phươ ng trình truy hồi đối vớ i vector v’(k) như sau:

v’(k+1) =(I-2µλ )v’(k) (4.12)

 phươ ng trình vector (4.12) có thể tách thành các phươ ng trình vô hướ ng : v’i(k+1) = (1-2µλ i) v’i(k) vớ i i=0,1,…,N-1 (4.13)

ở đây, v’i(k) là phần tử thứ i của vector v’(k)

 Nếu bắt đầu từ dãy giá tr ị ban đầu v’o(0), v’1(0),…,v’ N-1(0) và sau k phép lặ p

chúng ta sẽ thu đượ c:

v’i(k) = (1-2µλ i)v’i(0) vớ i i=0,1,…,N-1 (4.14)

Từ (4.7) và (4.11) ta thấy r ằng w(k) hội tụ tớ i wokhi và chỉ khi v’(k) hội tụ tớ i

vector không. Nhưng (4.14) lại cho thấy v’i(k) hội tụ tớ i không khi và chỉ khi thông số

(26)

|1-2µλ i| < 1 , vớ i i=0,1,…,N-1 (4.15)

Khi (4.15) thoả mãn thì thành phần thứ i của vector v’i(k) sẽ hội tụ nhanh về

không theo hàm e-mũ khi số lượ ng phép lặ p tăng lên. Ngoài ra (4.15) cũng là điều kiện để chọn kích thướ c của bướ c µ sao cho thuật toán giảm cấ p nhanh nhất và ổn định. Điều kiện đó có thể khai triển dướ i dạng :

-1<1-2µλ i<1 hay: 0 < µ <

i

λ 

1

(4.16) Do kích thướ c bướ c µ đượ c áp dụng cho tất cả các giá tr ị của i, nên tính chất hội tụ và ổn định của thuật toán giảm bướ c nhanh nhất đượ c đảm bảo khi:

0 < µ <

max 1

λ  (4.17)

Vớ i λ max là giá tr ị riêng cực đại của các giá tr ị riêng: λ 0,λ 1,… λ  N-1

Bây giờ ta viết thuật toán giảm bướ c nhanh nhất cho vector táp tr ọng số w(k) của mạch lọc. Ta thấy : w(k) = wo+ v(k) = wo+ Qv’(k) = wo+[qo q1…q N-1] [v’o(k) v’1(k) ….v’ N-1(k)]T = wo +

− = 1 0 ) ]( [' ] [  N  i k  i v i q (4.18)

ở đây qo,q1,…q N-1,là các vector riêng gắn vớ i các giá tr ị riêng λ o, λ 1,… λ  N-1của ma tr ận

tươ ng quan R.

Thay (4.14) vào (4.18) ta thu đượ c: w(k) = wo+

− = 1 0 '  N  i v i(0)(1-2µλ i)k qi (4.19)

K ết quả này cho thấy mỗi giá tr ị riêng λ i xác định một kiểu hội tụ riêng theo một

hướ ng đượ c xác định bở i vector riêng tươ ng ứng qi của nó. Các kiểu hội tụ khác nhau

hoạt động độc lậ p vớ i nhau. Vớ i một giá tr ị chọn lựa của thông số bướ c µ, thì thừa số 1-2µλ i xác định giá tr ị λ i để kiểu hội tụ thứ i hội tụ nhanh nhất.

3.4.2. Thuật toán toàn phươ ng trung bình tối thiểu (LMS)

(27)

thuật toán gradient thống kê lần đầu tiên đượ c Windrow-Hoff áp dụng năm 1960 và sau đó phát triển thành nhiều thuật toán mớ i nhờ tính chất đơ n giản và bền vững của thuật toán này. Nó là thuật toán lọc thích nghi tuyến tính bao gồm hai quá trình: quá trình lọc và thích nghi. Trong quá trình lọc, thuật toán này sử dụng mạch lọc ngang tuyến tính có lối vào x(n) và lối ra y(n). Quá trình thích nghi đượ c thực hiện nhờ sự điều khiển tự động các táp tr ọng số của các hệ số của mạch lọc sao cho nó tươ ng đồng vớ i tín hiệu sai số là hiệu của tín hiệu lối ra vớ i tín hiệu mong muốn d(n). Sơ đồ của thuật toán như trong hình.

 Hình 12: Mạch lọc FIR thích nghi dùng thuật toán LMS

Giả sử mạch lọc ngang có N- táp tr ọng số và là dãy số thực, khi đó tín hiệu lối ra đượ c viết: y[n] =

− = 1 0  N  k  wk [n] x[n-k] (4.20)

Trong đó táp tr ọng số wo[n]…..,w N-1[n] đượ c chọn lựa như thế nào để sai số:

e[n]= d[n] - y[n] (4.21)

có giá tr ị cực tiểu. Nói chung trong mạch lọc thích nghi, táp tr ọng số là hàm của chỉ số thờ i gian n, vì chúng đượ c thích nghi liên tục vớ i sự thay đổi thống kê của tín hiệu. Thuật toán LMS điều chỉnh táp tr ọng số của mạch lọc sao cho sai số e[n] đượ c

z-1 z-1 x z-1 + x x wo[n] w1[n] w N-1[n] x[n] x[n-1] + e[n] x y[n] __  Thuật toán LMS + d[n]

(28)

cực tiểu hoá theo ngh ĩ a toàn phươ ng trung bình, vì thế mớ i có tên là thuật toán toàn  phươ ng trung bình tối thiểu. Khi các quá trình x[n] và d[n] là các quá trình ng ẫu nhiên dừng, thì thuật toán này hội tụ đến nghiệm của phươ ng trình Wiener-Hopf. Nói cách khác, thuật toán LMS là một sơ  đồ thực tế để thực hiện các mạch lọc Wiener-Hopf, nhưng không giải một cách tườ ng minh phươ ng trình Wiener-Hopf. Nó là một thuật toán tuần tự đượ c sử dụng để thích nghi táp tr ọng số của mạch lọc nhờ sự quan sát liên tục tín hiệu lối vào x[n] và tín hiệu lối ra mong muốn d[n].

 Như vậy, thuật toán LMS chính là sự thực thi thống kê của thuật toán giảm bướ c nhanh nhất, trong đó hàm phí tổn J=E[e2[n]] đượ c thay bằng giá tr ị xác định tức thờ i  j^[n] = e2[n]. Khi đó phươ ng trình truy hồi để tính táp tr ọng số của mạch lọc đượ c xác

định bằng phươ ng trình:

w[n+1] = w[n] - µ∇e2[n] (4.22)

trong đó w[n] = [wo[n],w1[n],….,w N-1[n]]T, µ là thông số bướ c của thuật toán còn

∇là toán tử vi phân đượ c xác định bằng vector cột như sau:

∇ = ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ − ∂ ∂ ∂ ∂ ∂ ∂ ] 1 [ . . . ] 1 [ ] 0 [  N  w w w (4.23)

 Như vậy thành phần thứ k của vector ∇e2[n] là:

wi ∂ ∂ e2 [n] = 2e[n] wi n e ∂ ∂ [ ] (4.24) Thay e[n]=d[n]-y[n] vào phươ ng trình trên và do d[n] độc lậ p vớ i wi, ta đượ c:

wi ∂ ∂ e2 [n] = -2e[n] wi n  y ∂ ∂ [ ] (4.25) Bây giờ , thay y[n] từ (4.20) vào (4.25) ta đượ c:

wi

∂ ∂

(29)

Hoặc dướ i dạng tổng quát là:

∇e2[n] = -2e[n]x[n] (4.27)

Trong đó: x[n]=[ x[n], x[n-1]….x[n-N+1]]T Thay k ết quả từ (4.27) vào (4.22) ta đượ c:

w[n+1] = w[n] + 2µe[n]x[n] (4.28)

Đây là phươ ng trình truy hồi để xác định táp tr ọng số của mạch lọc đối vớ i các dãy lối vào và dãy sai số. Nó đượ c gọi là thuật toán LMS đệ qui, thích nghi một cách đệ quy các hệ số của mạch lọc cứ sau mỗi mẫu mớ i của tín hiêu lối vào x[n] và mẫu tín hiệu mong muốn d[n]. Các phươ ng trình (4.20), (4.21), (4.28), theo thứ tự là ba bướ c để hoàn chỉnh mỗi một phép lặ p của thuật toán LMS. Phươ ng trình (4.20) là quá trình lọc, nó đượ c tạo thành để thu đượ c tín hiệu lối ra của mạch lọc. Phươ ng trình (4.21) đượ c sử dụng để tính sai số. Còn phươ ng trình (4.28) dùng để thích nghi một cách đệ quy táp tr ọng số của mạch lọc sao cho sai số xác định đạt giá tr ị cực tiểu. Trong  phươ ng trình này, µ là thông số bướ c, nó điều khiển tốc độ hội tụ của thuật toán tớ i nghiệm tối ưu. Nếu chọn µ lớ n thì tốc độ hội tụ nhanh; còn nếu chọn µ giá tr ị bé thì tốc độ hội tụ sẽ chậm hơ n. Tuy nhiên, nếu µ quá lớ n thì thuật toán sẽ không ổn định và do vậy để đảm bảo tính chất ổn định của thuật toán LMS, µ phải đượ c chọn sao cho:

0 < µ < ] [ 3 1  R trace (4.29) trong đó: trace[R] =

− = 1 0 ] [  N  k  k  λ  , Vớ i N là bậc của bộ lọc

(30)

---Chươ ng 4

H

TH

NG S

BÙ HAI VÀ CÁC PHÉP TOÁN

4.1. BIỂU DIỄ N SỐ ÂM TRONG HỆ THỐ NG SỐ BÙ HAI

Trong hệ thống số bù hai, số dươ ng vẫn đượ c biểu diễn như các số không dấu khác. Do vậy, ta chỉ tìm hiểu cách biểu diễn số âm trong hệ thống số bù 2.

Giả sử P là số dươ ng, đượ c biểu diễn bở i n bit trong số bù hai, khi đó: -P = K = 2n – P.

Ví dụ: nếu ta sử dụng số 4 bit để biểu diễn thì +5 =0101 và -5 = 10000-0101=1011 và -3=10000-0011=1101

Việc tìm số bù hai như cách trên thườ ng ít đượ c sử dụng, do sự phức tạ p của nó khi phải sử dụng các phép tính. Vì thế, ta đưa ra một phươ ng pháp khác dễ dàng hơ n:

Giả sử số B = bn-1 bn-2…b1 bo và K = k n-1 k n-2…k 1 k o là số bù hai của B.

Khi đó, số K có thể đượ c tạo ra từ B bằng cách : giữ nguyên các số bằng 0 từ  phải sang trái của B cho đến số đầu tiên bằng 1 của B;các số tiế p theo của B sẽ đượ c

đảo ngượ c lại(1 thành 0 và 0 thành 1).

Ví dụ: B=0110, khi đó k 0=b0 =0 và k 1=b1=1, các số còn lại thu đượ c B bằng việc

đảo các bit tươ ng ứng : k 2=0 và k 3 = 1. K ết quả là: K=1010 là số bù hai của B=0110

(31)

Hình 13:Số bù hai đượ c biểu diễn bở i 4 bit

Các số đượ c biểu diễn trong hệ thống số bù hai đượ c biểu diễn bở i công thức: B=(-bn-1 x 2n-1) + bn-2 x 2n-2 +….+ b1 x 21 + bo

Trong đó B = bn-1 bn-2…b1 bo là số n bit đượ c biểu diễn trong hệ thống số bù hai.

4.2. THỰ C HIỆ N CÁC PHÉP TÍNH TRONG HỆ THỐ NG SỐ BÙ HAI 4.2.1. Thự c hiện phép cộng trong hệ thống số bù hai

Thực hiện phép cộng trong số bù hai hết sức đơ n giản, như cộng số nhị phân thông thườ ng. Ta xét một vài ví dụ về việc thực hiện phép cộng vớ i các số bù hai 4 bit:

(32)

Lưu ý: vớ i phép cộng:(+5)+(-2)=(+3) và (-5)+(-2)=(-7) thì trong tr ườ ng hợ  p này ta có thể bỏ qua bit thứ 5

4.2.2. Thự c hiện phép trừ trong hệ thống số bù hai

Để thực hiện phép tr ừ trong số bù hai, ta chỉ việc tìm số bù hai của số bị tr ừ r ồi thực hiện phép cộng vớ i số tr ừ.Ta xét các ví dụ sau:

(33)

Lưu ý: vớ i ví dụ (+5)-(+2) =(+3) và (-5)-(+2)=(-7) ta có thể bỏ qua bit thứ 5. 4.2.3. Hiện tượ ng tràn số

 Nếu dùng n bit để biểu diễn số có dấu thì ta có thể biểu diễn các số trong khoảng từ --2n-1 đến 2n-1 – 1. Nếu sau quá trình thực hiện phép toán(cộng, tr ừ, nhân) mà k ết quả thu đượ c không nằm trong dải trên thì ta nói có hiện tượ ng tràn số.

Ta xét các ví dụ sau:

Trong ví dụ trên, ta thấy: (+7)+(+2) = (+9) và (-7)+(-2) = (-9) có k ết quả bị tràn do (+9) và (-9) không có trong dải biểu diễn số có dấu 4 bit(từ -8 đến 7). Các k ết quả còn lại không tràn do vẫn nằm trong dải biểu diễn.

 Ngoài ra, có một cách khác nhận biết đượ c k ết quả có tràn hay không mà không cần quan tâm đến dải biểu diễn đó là:

Overflow = c3 xor c4

 Nếu dùng n bit để biểu diễn số có dấu thì ta có: Overflow = cnxor cn-1

(34)

4.2.4. Thự c hiện phép nhân trong số bù hai

Tr ướ c khi thảo luận về phép nhân hai số bù hai, ta cần phải biết về phép nhân vớ i luỹ thừa của 2.

Giả sử B=bn-1 bn-2…b1 bo. Khi đó: 2 x B = bn-1 bn-2…b1 bo0.

Ta chỉ việc dịch B sang trái 1 số r ồi thêm 1 số 0 vào cuối.

Tổng quát hơ n, nếu ta thực hiện phép nhân: 2k x B thì ta chỉ việc dịch B sang trái k số r ồi thêm k số 0 vào cuối.

Ta thấy phép nhân của số có dấu vớ i luỹ thừa của 2 giống như của số không dấu. Tuy nhiên, vớ i phép chia thì lại khác hẳn. Để chia số B cho 2k , ta dịch số B sang phải k  số(tức là bỏ đi k số cuối). Sau đó, ta thêm vào tr ướ c số B k bit dấu(bit dấu là bit có tr ọng số cao nhất).

Ví dụ:

B = 011000 = (24)10 , B:2 = 001100 = (12)10, và B:4= 000110 =(6)10

Tươ ng tự vớ i số âm: B=101000=(-24)10 , B:2= 110100 =(-12)10

 Như vậy, ta đã biết cách thực hiện phép nhân và chia của số bù hai vớ i luỹ thuỳ của 2. Bây giờ ta thảo luận xem cách nhân 2 số bù hai đượ c thực hiện như thế nào.

(35)

Từ 2 ví dụ trên, ta rút ra đượ c cách nhân 2 số bù hai n bit A=an-1an-2… a1ao và

B=bn-1 bn-2....b1 bo tươ ng tự như trên.

(36)

---Chươ ng 5

TH

Ự 

C NGHI

M

5.1. MÔ TẢ PHẦ N CỨ  NG CỦA KIT VIRTEX-II PRO Phần cứng của kit Virtex-II Pro bao gồm:

• FPGA Spartan-II dùng để tạo giao tiế p PCI hoặc USB •

• 22 LLEEDD ttr r ạạnngg tthhááii hhiiểểnn tthhịị 33 mmààuu::ccaamm,, đđỏỏ,, vvàànngg •

• Giiắắcc ccắắmG m cchhoo mmạạcchh nnạạ p p JJTTAAGG

• 2 kênh ADC độc lậ p(ADC 14 bit) vớ i tốc độ lấy mẫu tối đa là 105Mhz • 2 kênh DAC độc lậ p(DAC 14 bit) vớ i tốc độ biến đổi tối đa là 160Mhz • 2 rãnh ZBT SRAM độc lậ p vớ i bộ nhớ 512K x 32

• FPGA virtex-II XC2V80-4CS144 để tạo clock 

• FPGA virtex-II pro XC2VP30-4FF1152 là FPGA chính cho ngườ i sử dụng • Có đườ ng k ết nối vớ i clock ngoài

• Có thạch anh 65Mhz trong mạch

Tổng thể về kit virtex-II Pro đượ c mô tả như hình 14:

(37)

5.2. K ẾT QUẢ THU ĐƯỢC VỚI BỘ LỌC FIR TRUYỀ N THỐ NG Lưu đồ tiến hành thực hiện bộ lọc FIR truyền thống như hình 15:

 Hình 15: Lưu đồ thực hiện bộ lọc FIR truyền thống

Sau khi qua biến đổi ADC, dữ liệu đượ c biểu diễn dướ i dạng số bù hai sẽ đượ c đưa vào FPGA để xử lý. FPGA có nhiệm vụ thực hiện thuật toán lọc theo yêu cầu của ngườ i lậ p trình. Sơ đồ thực hiện thuật toán đối vớ i bộ lọc FIR đượ c trình bày như trong hình 3 của chươ ng 2. Trong đó, lối vào x[n] của bộ lọc chính là các giá tr ị sau khi qua  biến đổi ADC, các hệ số h[n] là các hằng số đã đượ c cho tr ướ c(đượ c tính toán bằng Matlab) và y[n] là k ết quả sau khi đã qua bộ lọc FIR. Các k ết quả này cũng đượ c biểu diễn dướ i dạng số bù hai và đượ c đưa qua bộ biến đổi DAC để hiện lên trên dao động ký.

Trong bài luận văn này, em thiết k ế bộ lọc FIR thông thấ p, vớ i bậc bộ lọc là 50, tần số mà bộ lọc bắt đầu suy giảm và triệt tiêu là từ 800Hz đến 1250Hz, tần số lấy mẫu là 20Khz.

Các hệ số h[n] sẽ đượ c tính toán bằng công cụ fdatool trong Matlab. Đáp ứng tần số tính toán bằng Matlab đượ c mô tả như hình 16:

 Hình 16 : Đáp ứng tần số của mạch lọc FIR  Máy

 phát ADC FPGA DAC

(38)

K ết quả thu đượ c khi thực hiện trên chíp FPGA:

• Tín hiệu bắt đầu suy giảm tại tần số 700Mhz, đượ c cho bở i hình 17:

 Hình 17: Tín hiệu bắt đầu suy giảm

• Tín hiệu bị triệt tiêu tại tần số 1237Hz, đượ c cho bở i hình 18:

(39)

5.3. K ẾT QUẢ THU ĐƯỢC VỚI BỘ LỌC FIR THEO KIẾ N TRÚC SYSTOLIC

Vớ i bộ lọc FIR thực hiện theo kiến trúc systolic array, lưu đồ và k ết quả đạt đượ c cũng tươ ng tự như vớ i bộ lọc FIR thông thườ ng. Tuy nhiên, tốc độ thực hiện lại nhanh hơ n nhiều. Vớ i công cụ “place and route tools” của phần mềm ISE, cho ta k ết quả như sau:

• Vớ i bộ lọc FIR thực hiện theo kiến trúc systolic array, tần số hoạt động lớ n nhất

của mạch là 141.947 Mhz và sử dụng hết 1775 slice.

• Vớ i bộ lọc FIR truyền thống, tần số hoạt động của lớ n nhất của mạch là 19.857

Mhz và sử dụng hết 417 slice.

 Như vậy, ta có thể thấy bộ lọc FIR thực hiện theo kiến trúc systolic array có tốc độ đáp ứng nhanh hơ n nhiều so vớ i bộ lọc FIR thông thườ ng, tuy nhiên, nó lại tốn nhiều tài nguyên hơ n. Do đó, tuỳ theo từng ứng dụng cụ thể mà ta chọn thiết k ế theo phươ ng  pháp nào

5.4. K ẾT QUẢ THU ĐƯỢC VỚI BỘ LỌC FIR THÍCH NGHI

Bộ lọc FIR thích nghi có r ất nhiều ứng dụng như: Khử nhiễu, nhận dạng hệ thống chưa biết, dự báo k ết quả vớ i hệ thống có tín hiệu vào là ngẫu nhiên….

Trong bài luận văn này, em xin trình bày về ứng dụng của bộ lọc FIR thích nghi để khử nhiễu 50Hz-là nhiễu do nguồn sinh ra. Đây là loại nhiễu phổ biến và gây ảnh hưở ng lớ n đến các thiết bị điện tử.

(40)

 Hình 19: Mô hình khử nhiễu 50 Hz

Trong đó:

• s(n) là tín hiệu mong muốn • v(n) là tín hiệu nhiễu

• v1(n) là tín hiệu cùng dạng vớ i v(n)(có thể khác nhau về biên độ và pha) • v’(n) đầu ra của bộ lọc FIR thích nghi

• e(n) là tín hiệu sai số, đồng thờ i là lối ra.

Thuật toán LMS sẽ có nhiệm vụ điều chỉnh các hệ số của bộ lọc FIR sao cho lối ra v’(n) có dạng gần nhất vớ i tín hiệu nhiễu v(n). Khi đó, e(n)=d(n) - v’(n) sẽ đạt đến tín hiệu mong muốn s(n). Tức là ta đã khử đượ c nhiễu.

K ết quả thu đượ c khi tiến hành trên chip FPGA:

• Tín hiệu lẫn vớ i nhiễu 50Hz tr ướ c khi lọc, đượ c cho bở i hình 20 d(n) = s(n)+v(n) FIR  + LMS v’(n) __  v1(n) + e(n) output

(41)

• Tín hiệu sau khi lọc đượ c cho bở i hình 21

 Hình 21: Tín hiệu thu đượ c sau khi lọc

Tín hiệu thu đượ c sau khi qua bộ lọc FIR thích nghi đã loại bỏ đượ c nhiễu 50Hz. Tuy nhiên, vẫn không đượ c tr ơ n tru và có độ mấ p mô nhỏ. Sở d ĩ như vậy là do các nguyên nhân sau:

• Do bộ biến đổi ADC là 14 bit, nên khi qua bộ lọc FIR(bao gồm các bộ nhân và

 bộ cộng) thì dữ liệu lên tớ i 28 bit, mà đầu ra DAC chỉ hỗ tr ợ  14 bit, vì vậy, tr ướ c khi dữ liệu đượ c đưa vào bộ lọc FIR, ta phải chia dữ liệu cho 27 để đầu ra DAC là 14 bit. Do đó, k ết quả có sai số nhất định

• Bộ biến đổi DAC chỉ hỗ tr ợ các số nguyên, do đó, ta phải làm tròn các hệ số

(42)

T LU

N

Trong thờ i gian tiến hành hoàn thiện khoá luận tốt nghiệ p, ngoài việc củng cố lại những kiến thức đã đượ c học trong suốt 4 năm qua, em còn thu đượ c một số kiến thức và k ết quả nhất định:

• Đượ c tìm hiểu và thực hành trên chip FPGA của hãng Xilinx • Biết sử dụng thành thạo phần mềm ISE

• Có thêm nhiều kinh nghiệm trong việc lậ p trình vớ i ngôn ngữ VHDL • Thực hiện thành công bộ lọc FIR thông thấ p trên FPGA theo kiến trúc

truyền thống và theo kiến trúc systolic array. So sánh đượ c ưu điểm, nhượ c điểm của từng loại

• Thực hiện thành công bộ lọc FIR thích nghi dùng thuật toán LMS trên

(43)

TÀI LI

U THAM KH

O

[1] Simon Haykin. Adaptive filter theory, Third edition

[2] Uwe Meyer-Baese. Digital Signal Processing with Field Programmable Gate  Arrays, Third Edition

[3] John G.Proaskis,Dimitris G.Manolakis. Digital Signal Processing , Third edition

[4] Alexander D.Poularikas, Zayed M.Ramanda. Adaptive filtering primer with matlab,

2006.

[5] Douglas L.Perry. VHDL: Programming by Example .McGraw – Hill, Fourth

Edition

[6]. Volnei A.Pedroni , Circuit Design With VHDL, MIT Press, 2004

[7] Jan Van der Spiegel. VHDL tutorial 

[8] Nguyễn Kim Giao, K  ỹ thuật đ iện t ử số , Nhà xuất bản Đại học Quốc gia Hà Nội,

2006.

[9]. Tống Văn On, Thiế t k ế mạch số vớ i VHDL và Verilog , Nhà xuất bản lao động xã

hội, 2007.

[10] Hồ Văn Sung. X ử lý số tín hiệu đ a t ố c độvà dàn l ọc, Nhà xuất bản KH-KT, 2007

[11] http://en.wikipedia.org [12] http://www.xilinx.com [13] http://www.fpga4fun.com

Referências

Documentos relacionados

Este seguro tem por objetivo garantir, nos termos destas Condições Gerais e das demais condições contratuais, até o limite do capital segurado estabelecido para cada

Garante ao Segurado, até o limite do Capital Segurado, a prestação de serviços ou reembolso de despesas com o regresso sanitário, na ocorrência de um acidente

O mais recente trabalho de David Lake, professor da Universidade da Califórnia, visa justamente a desafiar o conceito fundamental de anarquia nas relações internacionais,

No entanto, é possível compreender por meio de análise das frases, que são as alternativas escolhidas pelos professores, que existe algumas concepções contrarias

▪ A palavra APÊNDICE deve aparecer em letras maiúsculas, no centro da página,. acompanhada da letra de

1 – Os pagamentos decorrentes do presente Regulamento são efectuados, preferencialmente, através dos meios electrónicos disponíveis, sendo obrigatório o

discutimos como reflexões espaciais podem ser gestadas para além dos confins da ciência geográfica; em seguida verificamos como algumas dimensões do conceito

A visão de Aníbal em seu manto, dormindo no chão com seus homens, ou Alexandre no deserto, recusando um capacete cheio de água enquanto seus homens estavam