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

Chương trình bộ lọc FIR

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 (31.7 KB, 2 trang )

;************************************************************************
nolist
include 'ioequ.asm'
include 'intequ.asm'
include 'ada_equ.asm'
include 'ada_init.asm'
;
XBASE
equ $0
; Hằng địa chỉ bắt đầu số liệu ở bộ nhớ X
YBASE
equ $0
; Hằng địa chỉ bắt đầu số liệu ở bộ nhớ Y
PBASE
equ $100
; Hằng địa chỉ bắt đầu chương trình ở bộ nhớ P
P_RESET equ $0
; Hằng địa chỉ Véc tơ ngắt RESET
ORDER
equ 101
; Hằng số là bậc N của bộ lọc số FIR
START_X equ $100
; Địa chỉ đầu mảng số liệu tác động x(n) ở bộ nhớ Y
;
; ****** ******
org
x:XBASE
; Thiết lập địa chỉ đầu số liệu ở bộ nhớ X
List
dc 0.00049189988593 ; Nhập mảng hằng 101 phần tử là giá trị các
dc 0.00031992920792 ; mẫu h(k) của đặc tính xung h(n) (Mảng các hệ


…..…
; số của bộ lọc số FIR pha tuyến tính bậc N=101).
;
; ****** ******
org
y:YBASE
; Thiết lập địa chỉ đầu số liệu ở bộ nhớ Y
; ****** ******
org
p:P_RESET
; Địa chỉ véc tơ ngắt RESET
jmp
MAIN
; Nhẩy đến điểm bắt đầu của chương trình
; ****** ******
org
p:PBASE
; Điểm bắt đầu của chương trình chính tương ứng
;
với địa chỉ p:PBASE
MAIN
; ****** Khởi tạo hệ thống ******
movep #$040004,x:M_PCTL ; Khởi tạo vòng khóa pha PLL các bộ vi xử lý
; DSP563xx : PLL 5*19.6608=98.304MHz
ori
#3,mr
; Thiết lập các bit che ngắt ở thanh ghi MR
movec #0,sp
; Xóa con trỏ ngăn xếp
move #0,omr

; Thiết lập chế độ làm việc Mode0
move #$40,r7
; Nạp hằng số $40 cho thanh ghi r7
move #-1,m7
; Nạp địa chỉ -1 cho thanh ghi m7
jsr
ada_init
; Gọi chương con khởi tạo AUDIO CODEC
move #START_X,r4
; Nạp địa chỉ đầu mảng x(n) vào thanh ghi R4
move #64,m4
; Nạp độ dài mảng x(n) vào thanh ghi M4
clr
a
; Xóa thanh chứa A
rep
m4
; Quay vòng lặp lệnh tiếp theo 64 lần
101


move a,y:(r4)+
movep x:M_SSISR0,a0
movep a0,x:M_TX00

; Xóa vùng nhớ 64 từ mảng x(n) ở bộ nhớ Y
; Đọc thanh ghi trạng thái của ESSI0 vào A0
; và nạp vào thanh ghi số liệu phát 0 của nó

;

LOOP_0
; Điểm bắt đầu vòng lặp chính của bộ lọc FIR
FRAME brset #3,x:M_SSISR0,FRAME ; Đợi sườn lên xung đồng bộ đầu tiên
movep x:M_SSISR0,a0
; Đọc thanh ghi trạng thái của ESSI0 vào A0
movep x:M_RX0,a0
; Đọc thanh ghi số liệu đến cổng ESSI0
Lap_1
brclr #7,x:M_SSISR0,Lap_1
; Đợi thiết lập cờ rxdf
clr
a
; ****** ******
move #start_adress,r6
; Thuc hien thao tac ghi dịch
move #(start_adress-1),r4
do
#ORDER,end_do
move y:(r6)+,a0
move a0,y:(r4)+
end_do
; Kết thúc ghi dịch, nạp mẫu mới
; ****** ******
clr
a
movep x:M_SSISR0,a0
movep x:M_RX0,a0
move #(400+ORDER -1),r6
; 400 + order -1 =499
move a0,y:(r6)

; ****** Vòng lặp tính các phần tử phản ứng y(n) và gửi vể CS4270 ******
fir
clr
a
move #List,r0
move x:(r0),x0
move y:(r6),y0
rep
#order
mac x0,y0,a x:(r0)+,x0 y:(r6)-,y0
Lap_2
brclr #6,x:M_SSISR0,Lap_2
; Đợi thiết lập cờ tdre
movep a,x:M_TX00
jmp
LOOP_0
; Nhẩy về nhận mảng tác động x(k) tiếp
nolist
end
;************************************************************************



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×