Tải bản đầy đủ (.doc) (37 trang)

ĐỒ ÁN thiết kế bộ lọc FIR thông thấp trên FPGA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (842.77 KB, 37 trang )

ĐỒ ÁN II December 10, 2014

MỤC LỤC
MỤC LỤC.......................................................................................................................................................................1
2.1 DẪN NHẬP
17
2.2 CÁC KỸ THUẨT THIẾT KẾ CỦA SỔ
20
2.2.1 Cửa sổ chữ nhật (Rectangular Window)..............................................................................................23
2.2.2 Cửa sổ tam giác (Bartlett Window)......................................................................................................23
2.2.3 Cửa sổ Hanning (Hanning Window)....................................................................................................23
2.2.4 Cửa sổ Hamming (Hamming Window)................................................................................................24
2.2.5 Cửa sổ Blackman (Blackman Window)................................................................................................24
2.2.6 Cửa sổ Kaiser (Kaiser Window).........................................................................................................26
2.2.7 Thực hiện trên SystemVue....................................................................................................................29
THỰC NGHIỆM.........................................................................................................................................................30
3.1 MÔ PHỎNG TRÊN SYSTEMVUE
3.2 MÔ PHỎNG TRÊN FPGA

30
32

MỤC LỤC HÌNH ẢNH
HÌNH 1: KIẾN TRÚC TỔNG QUAN CỦA FPGA.................................................................................................5
HÌNH 2:KHỐI LOGIC LẬP TRÌNH ĐƯỢC CỦA FPGA....................................................................................5
HÌNH 3:GIAO DIỆN CỬA SỔ PHẦN MỀM ISE.................................................................................................11
HÌNH 4: CÁC LỰA CHỌN TẠO PROJECT VỚI VIRTEX 4...........................................................................13
HÌNH 5:KHAI BÁO CÁC CỔNG CHO MỘT VÍ DỤ TẠO MỘT COUNTER 4 BIT...................................14
HÌNH 6: THIẾT LẬP THỜI GIAN ĐẾM TIẾN, LÙI CHO COUNTER.........................................................16
HÌNH 7: KẾT QUẢ MÔ PHỎNG CỦA COUNTER............................................................................................16
HÌNH 8 :CÁC CHỈ TIÊU CỦA BỘ LỌC FIR: CÁC CHỈ TIÊU TUYỆT ĐỐI VÀ TƯƠNG ĐỐI...............18


HÌNH 9:KẾT QUẢ CỦA VIỆC LẤY CỬA SỔ TRONG MIỀN TẦN SỐ........................................................22
HÌNH 10: HÌNH DẠNG MỘT SỐ CỬA SỔ THƯỜNG DÙNG.........................................................................25
HÌNH 11: TÓM TẮT ĐẶC TÍNH CỦA MỘT SỐ LOẠI CỬA SỔ THƯỜNG DÙNG...................................25
HÌNH 12: KHẢO SÁT ĐẶC TÍNH CỬA SỔ KAISER........................................................................................28
HÌNH 13: SO SÁNH GIỮA CÁC LOẠI CỬA SỔ ĐƯỢC DÙNG.....................................................................29
HÌNH 14: BỘ LỌC FIR TRONG SYSTEMVUE..................................................................................................29
HÌNH 15 KHỐI NCO.................................................................................................................................................30
HÌNH 16: SƠ ĐỒ TOÀN MẠCH THIẾT KẾ........................................................................................................30
HÌNH 17: TIÉN HIỆU ĐẦU RA...............................................................................................................................31
HÌNH 18: PHỔ TÍN HIỆN KHI CHƯA LỌC........................................................................................................31
HÌNH 19 : PHỔ TÍN HIỆU KHI ĐÃ LỌC ( MÀU XANH )................................................................................32

ĐH Bách Khoa Hà nội

Page 1


ĐỒ ÁN II December 10, 2014

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 me, 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ờ.

ĐH Bách Khoa Hà nội

Page 2


ĐỒ ÁN II December 10, 2014

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ông thấp
bằng phương pháp cửa sổ trên chíp FPGA”
Em xin chân thành cảm ơn thầy Phạm Hải Đăng đã đặc biệt là đã tận tình hướng
dẫn và giúp đỡ chúng em để hoàn thành đồ á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 thầy .
Em xin chân thành cảm ơn !

CHƯƠNG I
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

ĐH Bách Khoa Hà nội

Page 3


ĐỒ ÁN II December 10, 2014

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
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:

ĐH Bách Khoa Hà nội

Page 4


ĐỒ ÁN II December 10, 2014

Hình 1: Kiến trúc tổng quan của FPGA

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
ĐH Bách Khoa Hà nội

Page 5


ĐỒ ÁN II December 10, 2014


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
4, 5 của Xilinx có chứa nhân xử lý PowerPC, hay cho những ứng dụng xử lý tín
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


ĐH Bách Khoa Hà nội

Page 6


ĐỒ ÁN II December 10, 2014

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
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.

ĐH Bách Khoa Hà nội

Page 7


ĐỒ ÁN II December 10, 2014

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 che
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
cả các hệ con được mô tả chi tiết.
- 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ệ

ĐH Bách Khoa Hà nội

Page 8


ĐỒ ÁN II December 10, 2014

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 se 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.
+ 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

ĐH Bách Khoa Hà nội

Page 9


ĐỒ ÁN II December 10, 2014

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:
[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;

+ 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.
Hiện nay, có nhiều nhà cung cấp sản phẩm FPGA trên thị trường như Altera, Xilinx, Actel…
Sản phẩm của môi nhà cung cấp lại có những ưu, nhược điểm riêng do các hãng đều sản xuất
ĐH Bách Khoa Hà nội

Page 10


ĐỒ ÁN II December 10, 2014
theo công nghệ riêng của mình. Chính vì vậy mỗi hãng lại đưa ra một sản phẩm phần mềm
riêng đi kèm làm môi trường thiết kế và nạp cho chip FPGA của hãng đó như của Altera là
Quartus II, Actel có Actel Libero còn Xilinx có ISE. Trong khóa luận này em chỉ xin giới
thiệu về ISE – phần mềm hỗ trợ cho Kit Virtex 4 của Xilinx mà em đã sử dụng để thực hiện
khóa luận này.

1.3. ISE
Hệ thống phần mềm ISE của Xilinx là một môi trường thiết kế tích hợp bao gồm
thiết kế chương trình, mô phỏng và thực hiện các thiết kế trên các thiết bị FPGA hay
CPLD. ISE có thể tham gia vào việc điều khiển mọi giai đoạn trong quy trình thiết
kế.Thông qua giao diện của ISE, người dùng có thể can thiệp vào các thiết kế và sử
dụng các công cụ thực hiện thiết kế. Ngoài ra người dùng còn có thể can thiệp vào các
file hay tài liệu có liên quan đến project đang thiết kế.
Giao diện phần mềm ISE

Hình 3:Giao diện cửa sổ phần mềm ISE

Cửa sổ nguồn
Cửa sổ này bao gồm các file nguồn của 1 project (gồm các file được viết hoặc

các file có sẵn được đưa vào project). Trong cửa sổ này có một danh sách mà qua đó

ĐH Bách Khoa Hà nội

Page 11


ĐỒ ÁN II December 10, 2014

người dùng có thể chọn các file nguồn cho các mục đích thiết kế cụ thể như tổng hợp,
thực thi hay mô phỏng.
Cửa sổ xử lí
Cửa sổ này cho ta biết các thiết kế đã sẵn sàng để chạy (bao gồm cả mô phỏng
và thực thi) hay chưa (ví dụ khi bạn muốn chạy một thiết kế trong file nguồn đã chọn).
Để chạy một thiết kế, ta click đúp vào thiết kế đó, khi thiết kế đã được thực thi thành
công, một dấu tích xanh se xuất hiện bên cạnh thiết kế đó. Khi chạy một thiết kế, ISE
se tự động chạy các thiết kế nhỏ hỗ trợ cho thiết kế đó.
Các bước để tạo ra một thiết kế với ISE
1.3.1 Tạo một Project
Chọn File > New Project…xuất hiện thuật sĩ tạo Project mới.
Gõ tên Project trong trường Project Name field.
Chọn đến thư mục muốn chứa Project rồi chọn Next.
Chú ý rằng HDL phải được lựa chọn từ danh sách Top-Level Source Type, các
thông số khác chọn như trong hình 7.

ĐH Bách Khoa Hà nội

Page 12



ĐỒ ÁN II December 10, 2014

Hình 4: Các lựa chọn tạo project với Virtex 4.

1.3.1 Tạo mã nguồn VHDL
Để tạo ra file mã nguồn VHDL cho Project ta làm như sau:
Chọn New Source trong New Project Wizard.
Chọn kiểu mã nguồn VHDL Module.
Gõ từ bàn phím tên của file mã nguồn là counter (ví dụ là tạo ra mã nguồn cho
counter).
Quan sát thấy rằng hô kiểm tra Add to project được lựa chọn.
Kích Next.
Khai báo các cổng cho bộ counter bằng cách điền các thông tin như hình dưới
đây:

ĐH Bách Khoa Hà nội

Page 13


ĐỒ ÁN II December 10, 2014

Hình 5:Khai báo các cổng cho một ví dụ tạo một counter 4 bit.

Kich Next cho tới khi kết thúc và một file VHDL được tạo ra với các khai báo
ban đầu là các cổng in, out…
Từ đây ta có thể viết mã nguồn VHDL cho bộ counter nhưng ta cũng có thể lấy
counter trong ví dụ có sẵn của ISE. Để sử dụng ví dụ này ta làm như sau:
Mở ví dụ bằng cách: Edit > Language Template…
Dùng biểu tượng “+” duyệt đến mã nguồn của ví dụ như sau: VHDL >

Synthesis Constructs >Coding Examples>Counters>Binary>Up/Down Couter>Simple
Counter.
Để dùng lựa chọn Simple Counter ta chọn Edit > Use in File hoặc chọn nút Use
Template in File trên Toolbar.
Đóng cửa sổ Language Template.
Như vậy mã VHDL trong ví dụ đã được chèn vào file mã nguồn mà ta muốn tạo.
Để chương trình này có thể chạy đúng được ta phải quan sát và sửa lại một số
chỗ cho phù hợp với khai báo ban đầu. Đó là những vị trí mà chương trình đã đánh
dấu trong dấu “<...>” để cuối cùng ta được file mã nguồn có nội dung như sau:

ĐH Bách Khoa Hà nội

Page 14


ĐỒ ÁN II December 10, 2014

entity counter is
Port ( Clock : in STD_LOGIC;
Direction : in STD_LOGIC;
c : out STD_LOGIC_VECTOR (3 downto 0));
end counter;
architecture Behavioral of counter is
begin
process (Clock)
begin
if Clock='1' and Clock'event then
if Direction ='1' then
c <= c + 1;
else

c <= c - 1;
end if;
end if;
end process;
end Behavioral;
1.3.1 Mô phỏng
Ta có thể dùng chức năng mô phỏng của ISE để kiểm tra chức năng của thiết kế vừa
được tạo ra:
Tạo dạng sóng muốn kiểm tra ta làm như sau:
Chọn file Counter từ cửa sổ Source.
Tạo một test bench từ Project > New Source.
Trong cửa sổ New Source Wizard chọn Test Bench WaveForm và gõ từ bàn phím
counter_tbw trong trường tên file rồi kick Next cho đến khi xuất hiện cửa sổ và đặt các
thông số mong muốn, cuối cùng kích Finish:
Để chạy mô phỏng ta thiết lập các thông số như khoảng thời gian đếm tiến, thời gian
đếm lùi bằng cách kích chuột vào vị trí mà ta muốn cho kết thúc đếm tiến khi đó dạng

ĐH Bách Khoa Hà nội

Page 15


ĐỒ ÁN II December 10, 2014

xung bắt đầu từ đó se ở vị trí logic 0 và bắt đầu đếm lùi. Ta có thể tùy chọn các khoảng
đếm tiến hoặc lùi theo ý muốn.

Hình 6: Thiết lập thời gian đếm tiến, lùi cho counter.

Sau đó đóng cửa sổ này lại và chuyển sang bước mô phỏng.

Mô phỏng
Tại cửa sổ Source ta chọn Behavioral Simulation và chọn counter_tbw.
Tại cửa sổ Process ta kích chuột vào dấu “+” rồi kích đúp vào Generate Expected
Simulation Results để thực hiện mô phỏng. Ta được kết quả như sau:

Hình 7: Kết quả mô phỏng của counter.

1.3.1 Tạo ràng buộc thời gian
Bước này se tạo ra ràng buộc về thời gian, là thời gian mà ta ràng buộc khi chạy
trong FPGA.
Chọn Synthesis/Implementatorn.
Chọn file nguồn counter HDL.
Kích vào dấu “+” ở User Constraints và chọn Create Timing Constraints.
Sau bước này se tạo ra cho bạn file.UCF và ta có thể thiết lập các thông số theo
tính toán mà thiết kế se phải đáp ứng.
1.3.1 Gán chân
Chọn file nguồn là counter trên cửa sổ Source.
Chọn Assign Package Pins trong cửa sổ Process.
Từ đây ta có thể gắn chân để có thể đưa thiết kế vào phần cứng thật. Tùy từng
dòng cụ thể mà ta đặt chân căn cứ vào bảng chân được cung cấp bởi nhà sản xuất.

ĐH Bách Khoa Hà nội

Page 16


ĐỒ ÁN II December 10, 2014

Kết thúc bước này ta có thể đưa thiết kế vào phần cứng và quan sát trên các lối vào ra
của phần cứng bằng những thiết bị hỗ trợ quan sát như giao động ký hay đèn LED .


CHƯƠNG II
BỘ LỌC FIR
2.1 DẪN NHẬP
Việc thiết kế một bộ lọc số tiến hành theo 3 bước:


Đưa ra các chỉ tiêu: Trước khi thiết kế một bộ lọc chúng ta cần xác định các chỉ
tiêu. Các chỉ tiêu được xác định bởi các ứng dụng cụ thể khác nhau.



Tìm các xấp xỉ: Một khi chỉ tiêu đã được xác định, ta sử dụng các khái niệm và
công cụ toán học khác nhau để tiến tới biểu diễn và tính gần đúng cho bộ lọc
với tập các chỉ tiêu đã cho. Và đây là chủ đề chính của việc thiết kế lọc số.



Thực hiện bộ lọc: Kết quả của các bước trên cho mô tả dưới dạng một phương
trình sai phân, hoặc một hàm hệ thống H(z), hoặc một đáp ứng xung h(n). Từ
các mô tả này chúng ta có thể thi hành bộ lọc bằng phần cứng hoặc phần mềm
mô phỏng trên máy tính.

Trong những
phần tiếp sau đây, để mô tả các chỉ tiêu của bộ lọc chúng ta se xem xét việc thiết kế
một bộ lọc thông thấp như một ví dụ cơ sở. Có 2 nhóm chỉ tiêu: Các chỉ tiêu tuyệt đối
(Absolute Specifications) và các chỉ tiêu tương đối (Relative Specifications - DB).

ĐH Bách Khoa Hà nội


Page 17


ĐỒ ÁN II December 10, 2014

Trên hình 8 là mô tả các chỉ tiêu của bộ lọc FIR thông thấp (Low Pass Filter):
|H(ejw)|
1+δ 1
Độ gợn dải thông

1
1-δ 1

Độ gợn dải chắn

Dải chuyển tiếp
δ2
0
0

wp

ws

π

Rp
As
Decibels


Hình 8 :Các chỉ tiêu của bộ lọc FIR: các chỉ tiêu tuyệt đối và tương đối

Trong đó:
• Band [0, wp] được gọi là dải thông, và δ 1 là dung sai (gợn sóng) được chấp
nhận trong đáp ứng dải thông lý tưởng.
• Band [ws, π ] được gọi là dải chắn, và δ 2 là dung sai ở dải chắn.
• Band [wp, ws] được gọi là dải chuyển tiếp, và không có ràng buộc nào về đáp
ứng biên độ trong dải này
Các chỉ tiêu tương đối gồm có:
• Rp: Độ gợn sóng trong dải thông tính theo dB.
• As : Suy hao trong dải chắn tính theo dB.
Quan hệ giữa các chỉ tiêu này như sau:

ĐH Bách Khoa Hà nội

Page 18


ĐỒ ÁN II December 10, 2014

R p = −20 log10

A s = −20 log10

1 − δ1
> 0 (≈0)
1 + δ1

δ2
> 0 (>>1)

1 + δ1

Các chỉ tiêu trên được đưa ra đối với bộ lọc FIR thông thấp, và tất nhiên đối với
các bộ lọc khác như thông cao HPF (High Pass Filter), thông dải BPF (Band Pass
Filter) đều có thể được định nghĩa tương tự. Tuy nhiên, các tham số thiết kế quan trọng
nhất là các dung sai dải tần và các tần số cạnh-dải (tolerance or ripples and band-edge
frequencies). Bởi vậy, trong phần 1 về cơ sở lý thuyết này chúng ta chỉ tập trung vào
bộ lọc FIR thông thấp. Việc thiết kế cụ thể cho bộ lọc FIR thông dải bằng kỹ thuật cửa
sổ se được phát triển trên cơ sở lọc thông thấp và se được mô tả chi tiết trong phần 2.
Việc thiết kế và thực hiện lọc FIR có những thuận lợi sau đây:
• Đáp ứng pha là tuyến tính.
• Dễ thiết kế do không gặp các vấn đề ổn định (lọc FIR luôn ổn định).
• Việc thực hiện rất hiệu quả
•.
• Có thể sử dụng DFT để thực hiện
Đáp ứng pha là tuyến tính (linear phase response) mang lại những thuận lợi sau:
• Bài toán thiết kế chỉ gồm các phép tính số học thực chứ không cần phép tính
số học phức.
• Bộ lọc pha tuyến tính không có méo trễ nhóm và chỉ bị trễ một khoảng không
đổi.
• Đối với bộ lọc có chiều dài M (hoặc bậc M-1) số phép toán có bậc M/2 như
đã khảo sát trong thực hiện bộ lọc có pha tuyến tính.

ĐH Bách Khoa Hà nội

Page 19


ĐỒ ÁN II December 10, 2014


2.2 CÁC KỸ THUẨT THIẾT KẾ CỦA SỔ
Ý tưởng cơ bản của việc thiết kế là: chọn một bộ lọc chọn tần lý tưởng (mà đáp ứng
xung luôn luôn phi nhân quả, dài vô hạn) và cắt (lấy cửa sổ - window) đáp ứng xung
của nó để thu được bộ lọc FIR có pha tuyến tính và nhân quả (linear phase and causal
FIR filter). Bởi vậy, điểm quan trọng trong phương pháp này là việc chọn một hàm
cửa sổ thích hợp và một bộ lọc lý tưởng tương ứng.
Bộ lọc thông thấp lý tưởng (ideal LPF) có tần số cắt wc < π được cho bởi:
 1.e
Hd (e jw) = 
0,

− jw, if | w |≤ w
c

if wc <| w |< π



Đáp ứng xung hd(n)
của bộ lọc lý tưởng này
được
cho1bởi:

sin[ wc (n − α )]
−1
jw
jw
jwn
hd (n) = F H d (e ) =
H

(
e
)
e
dw
=
d
2π ∫−π
π (n − α )

[

]

Chú ý rằng hd(n) là đối xứng theo α, sự kiện này tiện dụng cho bộ lọc FIR có pha
tuyến tính. Ngoài ra hd(n) có độ dài vô hạn và phi nhân quả.
Để thu được bộ lọc FIR có pha tuyến tính và nhân quả h(n) có độ dài M, ta cần có:

h ( n ) 0 ≤ n ≤ M − 1
M −1
h( n) =  d
, and α =
elsewhere
2
 0
Thao tác này được gọi là lấy cửa sổ (window). Tổng quát, đáp ứng xung h(n) có
thể có được bằng cách lấy đáp ứng xung của bộ lọc lý tưởng hd(n) nhân với hàm cửa
sổ w(n) như sau:
h(n) = hd(n).w(n)
Tuỳ thuộc vào cách định nghĩa hàm cửa sổ w(n) (window function) chúng ta có những

cửa sổ thiết kế khác nhau. Chẳng hạn nếu dùng cửa sổ chữ nhật (Rectangular), thì hàm
cửa sổ được định nghĩa:
1, nếu 0≤ n ≤ M-1
w(n) = 
0, n khác

ĐH Bách Khoa Hà nội

Page 20


ĐỒ ÁN II December 10, 2014

Trong miền tần số, đáp ứng của lọc FIR nhân quả H(ejw) chính là tích chập vòng
của đáp ứng tần số bộ lọc lý tưởng Hd(ejw) và đáp ứng tần số của hàm cửa sổ W(ejw) :
H(ejw) = Hd(ejw) ⊗ W(ejw)

ĐH Bách Khoa Hà nội

Page 21


ĐỒ ÁN II December 10, 2014

Hình dạng của H(ejw) có thể được mô tả trực quan trên hình 9. Từ hình ve này chúng ta
có một số nhận xét quan trọng sau đây:

H(ejw)
Hd(ejw)


Transition bandwidth

Main-lobe
width
W(ejw)

Max side-lobe height

Hình 9:Kết quả của việc lấy cửa sổ trong miền tần số

• Do cửa sổ w(n) có chiều dài M hữu hạn, đáp ứng của nó có một búp chính
(main-lobe) có độ rộng tỷ lệ với 1/M, và các búp bên (side-lobe) của nó có
chiều cao thấp hơn.
• Tích chập tuần hoàn sinh ra một phiên bản méo của đáp ứng xung lý tưởng
Hd(ejw).
• Búp chính (main-lobe) sinh ra một dải chuyển tiếp trong H(ejw) mà độ rộng là
nguyên nhân tạo nên độ rộng dải chuyển tiếp (transition bandwidth). Độ rộng
này tỷ lệ với 1/M. Độ rộng búp chính càng lớn thì độ rộng dải chuyển tiếp
càng lớn.

ĐH Bách Khoa Hà nội

Page 22


ĐỒ ÁN II December 10, 2014

• Các búp bên (side-lobes) sinh ra các gợn sóng có hình dạng như nhau trong
cả dải thông và dải chắn.
Với các chỉ tiêu bộ lọc đã cho, chọn chiều dài bộ lọc và một hàm cửa sổ w(n) với độ

rộng main-lobe hẹp nhất và hệ số suy giảm side-lobe bé nhất có thể được. Từ nhận xét
4 nêu trên ta chú ý rằng dung sai dải thông δ1 và dung sai dải chắn δ2 không thể ấn
định một cách độc lập. Ta lấy chung δ 1 = δ 2.
Tiếp theo chúng ta xem xét các hàm cửa sổ thường được dùng, bao gồm: cửa sổ chữ
nhật (Rectangular), cửa sổ tam giác (Bartlett), cửa sổ Hanning, cửa sổ Hamming, cửa
sổ Blackman và cửa sổ Kaiser.

2.2.1 Cửa sổ chữ nhật (Rectangular Window)
Trong miền n cửa sổ chữ nhật được định nghĩa như sau:
w(n) =

1 0≤ n ≤ M-1
0 Các trường hợp khác

2.2.2 Cửa sổ tam giác (Bartlett Window)
Với mục đích giảm biên độ của các đỉnh thứ cấp của cửa sổ chữ nhật, chúng ta chọn
một cửa sổ khác có dạng tam giác cân, gọi là cửa sổ tam giác hay cửa sổ Bartlett
Trong miền n cửa sổ tam giác được định nghĩa như sau:

w(n) =

2n
M-1
2 - 2n
M-1
0

0≤ n ≤ M-1
2
M-1 ≤ n ≤ M - 1

2
Các trường hợp khác

2.2.3 Cửa sổ Hanning (Hanning Window)

w(n) =

 2Π n 
 4Π n 
0.42 − 0.5 cos
 + 0.08 cos

 M 
 M 

0≤ n ≤ M

0 Các trường hợp khác

ĐH Bách Khoa Hà nội

Page 23


ĐỒ ÁN II December 10, 2014

2.2.4 Cửa sổ Hamming (Hamming Window)

w(n) =


 2Π n 
0.54 − 0.46 cos

 M 
0
Các trường hợp khác

0≤ n ≤ M

2.2.5 Cửa sổ Blackman (Blackman Window)

w(n) =

 2Π n 
 4Π n 
0.42 − 0.5 cos
 + 0.08 cos

 M 
 M 
0
Các trường hợp khác

ĐH Bách Khoa Hà nội

0≤ n ≤ M

Page 24



ĐỒ ÁN II December 10, 2014

Hình 10: Hình dạng một số cửa sổ thường dùng

Trên hình 11 cho chúng ta một sự so sánh giữa các hàm cửa sổ thường dùng về
các đặc tính: độ rộng dải chuyển tiếp ∆w, độ suy giảm ở dải chắn As.

Hình 11: Tóm tắt đặc tính của một số loại cửa sổ thường dùng

ĐH Bách Khoa Hà nội

Page 25


×