Professional Documents
Culture Documents
MC LC
BNG K HIU VIT TT ............................................................................................................................... 2
LI M U ........................................................................................................................................................ 4
CHNG 1............................................................................................................................................................ 5
TNG QUAN V FPGA V NGN NG VHDL............................................................................................ 5
1.1. TNG QUAN V FPGA ............................................................................................................................. 5
1.1.1. Lch s ra i ca FPGA.................................................................................................................... 5
1.1.2. Khi nim c bn v cu trc ca FPGA .......................................................................................... 6
1.1.3. Cc ng dng ca FPGA ................................................................................................................... 8
1.2. TNG QUAN V NGN NG VHDL ...................................................................................................... 8
1.2.1. Gii thiu v ngn ng m t phn cng VHDL .............................................................................. 8
1.2.2. Cu trc mt m hnh h thng m t bng ngn ng VHDL ....................................................... 10
CHNG 2.......................................................................................................................................................... 12
B LC FIR........................................................................................................................................................ 12
2.1. B LC FIR TRUYN THNG .............................................................................................................. 12
2.2. B LC FIR S DNG KIN TRC SYSTOLIC ARRAY.................................................................... 13
2.2.1. Tng quan v systolic array .............................................................................................................. 13
2.2.2. B lc FIR thc hin theo kin trc systolic array mt chiu......................................................... 14
CHNG 3.......................................................................................................................................................... 16
B LC FIR THCH NGHI DNG THUT TON LMS ............................................................................ 16
3.1. T VN ............................................................................................................................................ 16
3.2. CU TRC CA MCH LC THCH NGHI ......................................................................................... 18
3.3. MCH LC WIENER FIR ....................................................................................................................... 19
3.4. CC THUT TON THCH NGHI V NG DNG ............................................................................. 22
3.4.1. Phng php gim bc nhanh nht .............................................................................................. 22
3.4.2. Thut ton ton phng trung bnh ti thiu (LMS) ...................................................................... 25
CHNG 4.......................................................................................................................................................... 29
H THNG S B HAI V CC PHP TON............................................................................................ 29
4.1. BIU DIN S M TRONG H THNG S B HAI ........................................................................... 29
4.2. THC HIN CC PHP TNH TRONG H THNG S B HAI ......................................................... 30
4.2.1. Thc hin php cng trong h thng s b hai ............................................................................... 30
4.2.2. Thc hin php tr trong h thng s b hai .................................................................................. 31
4.2.3. Hin tng trn s ............................................................................................................................ 32
4.2.4. Thc hin php nhn trong s b hai .............................................................................................. 33
CHNG 5.......................................................................................................................................................... 35
THC NGHIM ................................................................................................................................................. 35
5.1. M T PHN CNG CA KIT VIRTEX-II PRO................................................................................... 35
5.2. KT QU THU C VI B LC FIR TRUYN THNG................................................................ 36
5.3. KT QU THU C VI B LC FIR THEO KIN TRC SYSTOLIC .......................................... 38
5.4. KT QU THU C VI B LC FIR THCH NGHI ....................................................................... 38
KT LUN .......................................................................................................................................................... 41
TI LIU THAM KHO................................................................................................................................... 42
PH LC ............................................................................................................................................................. 43
http://www.ebook.edu.vn
K Hiu
Din Gii
ASIC
ADC
ALU
ASM
CPLD
CPU
DSP
DAC
DPU
FIR
FPGA
HDL
IC
Integrated Circuit
IEEE
JTAG
LED
LUT
Look Up Table
LMS
PAL
PLA
PCI
PE
Process Element
RAM
ROM
RS232
http://www.ebook.edu.vn
SoC
System on chip
SRAM
SPLD
USB
VHDL
VHSIC
http://www.ebook.edu.vn
LI M U
Ngy nay, x l tn hiu v lc s l mt ngnh pht trin ht sc mnh m, cc
cng ngh, thut ton ngy cng c i mi v ti u ho nhm nng cao tnh hiu
qu ca n. Tuy nhin, cng ngh pht trin cng cao th i hi phn cng phi
nhanh x l. Cc mch lc tng t trc y khng cn kh nng p ng
yu cu na. V vy, FPGA ra i nh mt gii php cung cp mi trng lm
vic hiu qu cho cc ng dng thc t. Tnh linh ng cao trong qu trnh thit k cho
php FPGA gii quyt nhng bi ton phc tp m trc kia ch thc hin nh phn
mm my tnh. Ngoi ra, nh mt cng logic cao, FPGA c ng dng cho nhng
bi ton i hi khi lng tnh ton ln v dng trong cc h thng lm vic theo thi
gian thc. Nhng ng dng trong thc t ca FPGA rt rng ri, bao gm: cc h
thng hng khng, v tr, quc phng, tin thit k mu ASIC(ASIC prototyping), cc
h thng iu khin trc quan, phn tch nhn dng nh, nhn dng ting ni, mt m
hc, m hnh phn cng my tnh...c bit, vi kh nng ti lp trnh, ngi s dng
c th thay i li thit k ca mnh ch trong vi gi.
Chnh v tnh thit thc m FPGA mang li, em quyt nh chn FPGA lm
hng nghin cu ca mnh. Trong bi kho lun ny, em xin trnh by mt ng dng
c th ca FPGA trong x l tn hiu s l Thc hin b lc FIR thch nghi
dng thut ton LMS. ti c thc hin ti phng th nghim mc tiu Cc h
tch hp thng minh ( SIS LAB) trc thuc trng i hc Cng ngh - HQG HN.
Em xin chn thnh cm n cc thy c gio c bit l PGS.TS Trn Quang Vinh
v Th.S Nguyn Kim Hng tn tnh hng dn v gip em hon thnh bn
lun vn ny mt cch tt p.
Do thi gian v kin thc c hn nn cng trnh ny khng th trnh khi sai st,
v vy em rt mong nhn c cc kin ng gp ca cc thy c v cc bn.
Em xin chn thnh cm n !
H Ni, Ngy 27 Thng 3 Nm 2008
Nguyn Anh Cng
http://www.ebook.edu.vn
Chng 1
TNG QUAN V FPGA V NGN NG VHDL
1.1. TNG QUAN V FPGA
1.1.1. Lch s ra i ca FPGA
FPGA c thit k u tin bi Ross Freeman, ngi sng lp cng ty Xilinx
vo nm 1984, kin trc mi ca FPGA cho php tch hp s lng tng i ln cc
phn t bn dn vo 1 vi mch so vi kin trc trc l CPLD. FPGA c kh nng
cha ti t 100.000 n hng vi t cng logic, trong khi CPLD ch cha t 10.000
n 100.000 cng logic; con s ny i vi PAL, PLA cn thp hn na ch t vi
nghn n 10.000.
CPLD c cu trc t s lng nht nh cc khi SPLD (Simple programable
logic device) thut ng chung ch PAL, PLA. SPLD thng l mt mng logic
AND/OR lp trnh c c kch thc xc nh v cha mt s lng hn ch cc
phn t nh ng b (clocked register). Cu trc ny hn ch kh nng thc hin
nhng hm phc tp v thng thng hiu sut lm vic ca vi mch ph thuc vo
cu trc c th ca vi mch hn l vo yu cu bi ton.
Kin trc ca FPGA l kin trc mng cc khi logic, mi khi ny nh hn
nhiu nu em so snh vi mt khi SPLD, u im ny gip FPGA c th cha nhiu
hn cc phn t logic v pht huy ti a kh nng lp trnh ca cc phn t logic v h
thng mch kt ni, t c mc ch ny th kin trc ca FPGA phc tp hn
nhiu so vi CPLD.
Mt im khc bit na vi CPLD l trong nhng FPGA hin i c tch hp
nhiu b logic s hc c ti u ha, h tr RAM, ROM, tc cao, hay cc b
nhn, cng dng cho nhng ng dng x l tn hiu s.
Ngoi kh nng cu trc li vi mch mc ton cc, mt s FPGA hin i cn
h tr cu trc li mc cc b, tc l kh nng cu trc li mt b phn ring l
trong khi vn m bo hot ng bnh thng cho cc b phn khc
http://www.ebook.edu.vn
http://www.ebook.edu.vn
http://www.ebook.edu.vn
http://www.ebook.edu.vn
10
process
http://www.ebook.edu.vn
11
Chng 2
B LC FIR
Trong :
x[n]: l tn hiu li vo ca mch
y[n]: l tn hiu li ra ca mch
h[n]: l p ng xung ca mch
Li ra y[n] v li vo x[n] lin h vi nhau bi cng thc:
N 1
y[n] =
h[k ]x[n k ]
k =0
http://www.ebook.edu.vn
12
khc phc nhc im , ta s dng kin trc systolic array nng cao kh
nng p ng ca mch
PE
PE
PE
PE
PE
Hnh 5 m t kin trc systolic array hai chiu, d liu chuyn ng hai hng
theo chiu ca mi tn qua cc b DPU. D liu ra cng theo hai hng
http://www.ebook.edu.vn
13
2.2.2. B lc FIR thc hin theo kin trc systolic array mt chiu
cho vic x l d liu c nhanh hn, b lc FIR theo kin trc Systolic
array s bao gm mt dy cc phn t x l hay cn gi l PE (Process Element).
Trong cng mt thi im, cc PE s thc hin ng thi cc nhim v ring, v do
, tn hiu li ra s c a ra mt cch lin tc m khng phi mt mt khong
thi gian tnh ton do n c tnh t trc .
Cu trc ca mt PE ca b lc FIR SYSTOLIC c trnh by nh trong hnh 6
Hnh 6: Cu trc ca mt PE
http://www.ebook.edu.vn
14
Yin
+
..
x aN
yout
x ao
xin
..
xout
yout
..
x aN
x ao
xin
..
xout
http://www.ebook.edu.vn
15
Chng 3
B LC FIR THCH NGHI DNG THUT TON LMS
3.1. T VN
Thut ng lc dng ch tt c cc h thng c kh nng khi phc li dng ca
cc thnh phn tn s ca tn hiu li vo to ra tn hiu li ra tha mn cc yu cu
mong mun. Vi b lc FIR trnh by trn, th h s ca b lc lun khng i. Do
, nu c s thay i t ngt ca mt hoc mt vi yu t u vo(nh tn hiu
nhiu chng hn) th b lc s khng cn c ti u na. Hay ni cch khc, ta
khng thu c tn hiu mong mun.
khc phc nhc im trn, ngi ta a ra mt b lc FIR c cu trc mi,
m trong , cc h s ca b lc c th thay i c c th thch ng vi s thay
i bt ng ca cc yu t li vo. Mch lc FIR c cc h s thay i nh vy c
gi l mch lc FIR thch nghi. Gin khi ca mch lc nh vy c trnh by
trong hnh 9.
Tn hiu vo x[n]
__
h[n]=h0,h1...
+
y[n]
Tn hiu sai s
e[n]
16
http://www.ebook.edu.vn
17
x[n]
-1
x[n-1]
wN-1[n]
w1[n]
wo[n]
x
x[n-N+1]
z-1
-1
+
y[n] e[n]
+
+
Trong :
x[n] : Vector tn hiu u vo ca mch lc.
x[n] = [xn xn-1 xn-2 xn-N+1]T
w: L vector trng s ca b lc thch nghi
w = [w0 w1wN-1]T
y[n] : l li ra ca mch lc
y[n] =
N 1
(3.1)
k =0
http://www.ebook.edu.vn
18
d[n]
Bi ton thch nghi s t iu chnh ma trn cc trng s w sao cho sai s e[n] l
nh nht.
(3.3)
(3.4)
(3.5)
(3.6)
(3.7)
R=E[x[n]x [n]] =
R00
R01
R02
R0 N-1
R10
R11
R12
R1 N-1
..
..
.
.
.....
..
..
..
..
..
..
http://www.ebook.edu.vn
19
(3.8)
RN-1 N-1
(3.9)
, vi i = 0,1,2N-1
(3.10)
(3.11)
w[ 0 ]
w[1]
w[ N 1]
(3.12)
N 1 N 1
k =0
k =0 m =0
(3.13)
w[k ]w[m]R[k , m] =
k =0 m =0
N 1 N 1
+wi2R[k,i]
N 1
N 1
w[m]R[k , m]
m =0
m #k
(3.14)
http://www.ebook.edu.vn
20
J
= -2Pi +
w[i ]
N 1
, vi i=0,1,2,,N-1
(3.15)
k =0
(3.16)
(3.17)
(3.18)
N 1
(3.19)
k =0
(3.20)
(3.21)
(3.22)
(3.23)
http://www.ebook.edu.vn
21
x[n]
z-1
x[n-1]
z-1
wN-1[n]
w1[n]
wo[n]
x
z-1
y[n] __
e[n]
d[n]
Hnh 11: Mch lc Wiener FIR
http://www.ebook.edu.vn
22
(4.1)
(4.2)
y, thay cho vic gii phng trnh mt cch trc tip, ta gii bi ton bng
cch tm mt phng php lp.
Theo phng php ny, xut pht t gi tr d on trc i vi wo, gi l w(0),
nh tnh ton quy thc hin nhiu php lp hi t ti wo. Thut ton lp ny
thng xuyn c s dng trong cc mch lc thch nghi.
Phng php gim bc nhanh nht c thc hin theo cc bc sau:
1.
2.
3.
4.
(4.3)
trong :
kJ = 2Rw(k)-2P
(4.4)
http://www.ebook.edu.vn
23
(4.5)
(4.6)
Ta nh ngha vector:
v(k) = w(k) - wo
(4.7)
(4.8)
(4.9)
(4.10)
(4.11)
(4.12)
vi i=0,1,,N-1
(4.13)
vi i=0,1,,N-1
(4.14)
24
(4.15)
0<<
1
i
(4.16)
1
max
(4.17)
N 1
q[i]v'[i](k )
(4.18)
i =0
N 1
v' i(0)(1-2i)k qi
(4.19)
i =0
http://www.ebook.edu.vn
25
x[n]
z-1
x[n-1]
z-1
wN-1[n]
w1[n]
wo[n]
x
z-1
y[n] __
e[n]
+
+
d[n]
Hnh 12: Mch lc FIR thch nghi dng thut ton LMS
N 1
w k[n] x[n-k]
(4.20)
k =0
(4.21)
http://www.ebook.edu.vn
26
cc tiu ho theo ngha ton phng trung bnh, v th mi c tn l thut ton ton
phng trung bnh ti thiu. Khi cc qu trnh x[n] v d[n] l cc qu trnh ngu nhin
dng, th thut ton ny hi t n nghim ca phng trnh Wiener-Hopf. Ni cch
khc, thut ton LMS l mt s thc t thc hin cc mch lc Wiener-Hopf,
nhng khng gii mt cch tng minh phng trnh Wiener-Hopf. N l mt thut
ton tun t c s dng thch nghi tp trng s ca mch lc nh s quan st lin
tc tn hiu li vo x[n] v tn hiu li ra mong mun d[n].
Nh vy, thut ton LMS chnh l s thc thi thng k ca thut ton gim bc
nhanh nht, trong hm ph tn J=E[e2[n]] c thay bng gi tr xc nh tc thi
j^[n] = e2[n]. Khi phng trnh truy hi tnh tp trng s ca mch lc c xc
nh bng phng trnh:
w[n+1] = w[n] - e2[n]
(4.22)
w[0]
w[1]
w[N 1]
(4.23)
(4.24)
(4.25)
http://www.ebook.edu.vn
(4.26)
27
(4.27)
(4.28)
1
3trace[ R ]
(4.29)
trong : trace[R] =
N 1
[ k ]
, Vi N l bc ca b lc
k =0
------------------------------
http://www.ebook.edu.vn
28
Chng 4
H THNG S B HAI V CC PHP TON
4.1. BIU DIN S M TRONG H THNG S B HAI
Trong h thng s b hai, s dng vn c biu din nh cc s khng du
khc. Do vy, ta ch tm hiu cch biu din s m trong h thng s b 2.
Gi s P l s dng, c biu din bi n bit trong s b hai, khi :
-P = K = 2n P.
V d: nu ta s dng s 4 bit biu din th +5 =0101 v -5 = 100000101=1011 v -3=10000-0011=1101
Vic tm s b hai nh cch trn thng t c s dng, do s phc tp ca n
khi phi s dng cc php tnh. V th, ta a ra mt phng php khc d dng hn:
Gi s s B = bn-1 bn-2b1 bo v K = kn-1 kn-2k1 ko l s b hai ca B.
Khi , s K c th c to ra t B bng cch : gi nguyn cc s bng 0 t
phi sang tri ca B cho n s u tin bng 1 ca B;cc s tip theo ca B s c
o ngc li(1 thnh 0 v 0 thnh 1).
V d: B=0110, khi k0=b0 =0 v k1=b1=1, cc s cn li thu c B bng vic
o cc bit tng ng : k2=0 v k3 = 1. Kt qu l: K=1010 l s b hai ca B=0110
Hnh di biu din s b hai 4 bit
http://www.ebook.edu.vn
29
http://www.ebook.edu.vn
30
http://www.ebook.edu.vn
31
32
http://www.ebook.edu.vn
33
---------------------------------
http://www.ebook.edu.vn
34
Chng 5
THC NGHIM
5.1. M T PHN CNG CA KIT VIRTEX-II PRO
Phn cng ca kit Virtex-II Pro bao gm:
FPGA Spartan-II dng to giao tip PCI hoc USB
2 LED trng thi hin th 3 mu:cam, , vng
Gic cm cho mch np JTAG
2 knh ADC c lp(ADC 14 bit) vi tc ly mu ti a l 105Mhz
2 knh DAC c lp(DAC 14 bit) vi tc bin i ti a l 160Mhz
2 rnh ZBT SRAM c lp vi b nh 512K x 32
FPGA virtex-II XC2V80-4CS144 to clock
FPGA virtex-II pro XC2VP30-4FF1152 l FPGA chnh cho ngi s dng
C ng kt ni vi clock ngoi
C thch anh 65Mhz trong mch
Tng th v kit virtex-II Pro c m t nh hnh 14:
http://www.ebook.edu.vn
35
Dao ng k
My
pht
ADC
FPGA
DAC
Sau khi qua bin i ADC, d liu c biu din di dng s b hai s c
a vo FPGA x l. FPGA c nhim v thc hin thut ton lc theo yu cu ca
ngi lp trnh. S thc hin thut ton i vi b lc FIR c trnh by nh trong
hnh 3 ca chng 2. Trong , li vo x[n] ca b lc chnh l cc gi tr sau khi qua
bin i ADC, cc h s h[n] l cc hng s c cho trc(c tnh ton bng
Matlab) v y[n] l kt qu sau khi qua b lc FIR. Cc kt qu ny cng c biu
din di dng s b hai v c a qua b bin i DAC hin ln trn dao ng
k.
Trong bi lun vn ny, em thit k b lc FIR thng thp, vi bc b lc l 50,
tn s m b lc bt u suy gim v trit tiu l t 800Hz n 1250Hz, tn s ly
mu l 20Khz.
Cc h s h[n] s c tnh ton bng cng c fdatool trong Matlab. p ng tn
s tnh ton bng Matlab c m t nh hnh 16:
http://www.ebook.edu.vn
36
http://www.ebook.edu.vn
37
http://www.ebook.edu.vn
38
d(n) = s(n)+v(n)
+
v1(n)
v(n) __
FIR
e(n)
output
LMS
Hnh 19: M hnh kh nhiu 50 Hz
Trong :
http://www.ebook.edu.vn
39
Tn hiu thu c sau khi qua b lc FIR thch nghi loi b c nhiu 50Hz.
Tuy nhin, vn khng c trn tru v c mp m nh. S d nh vy l do cc
nguyn nhn sau:
Do b bin i ADC l 14 bit, nn khi qua b lc FIR(bao gm cc b nhn v
b cng) th d liu ln ti 28 bit, m u ra DAC ch h tr 14 bit, v vy,
trc khi d liu c a vo b lc FIR, ta phi chia d liu cho 27 u ra
DAC l 14 bit. Do , kt qu c sai s nht nh
B bin i DAC ch h tr cc s nguyn, do , ta phi lm trn cc h s
thnh s nguyn, v vy, kt qu t c cng khng c nh l thuyt
http://www.ebook.edu.vn
40
KT LUN
Trong thi gian tin hnh hon thin kho lun tt nghip, ngoi vic cng c li
nhng kin thc c hc trong sut 4 nm qua, em cn thu c mt s kin thc
v kt qu nht nh:
c tm hiu v thc hnh trn chip FPGA ca hng Xilinx
Bit s dng thnh tho phn mm ISE
C thm nhiu kinh nghim trong vic lp trnh vi ngn ng VHDL
Thc hin thnh cng b lc FIR thng thp trn FPGA theo kin trc
truyn thng v theo kin trc systolic array. So snh c u im,
nhc im ca tng loi
Thc hin thnh cng b lc FIR thch nghi dng thut ton LMS trn
FPGA loi b nhiu 50 Hz
http://www.ebook.edu.vn
41
http://www.ebook.edu.vn
42
PH LC
http://www.ebook.edu.vn
43
port (
I : in std_logic;
O : out std_logic
);
end component;
component IBUFG
port (
I : in std_logic;
O : out std_logic
);
end component;
component DCM
generic (
DLL_FREQUENCY_MODE
: string :=
DUTY_CYCLE_CORRECTION : string :=
STARTUP_WAIT
: string :=
);
port (
CLKIN
: in std_logic;
CLKFB
: in std_logic;
DSSEN
: in std_logic;
PSINCDEC : in std_logic;
PSEN
: in std_logic;
PSCLK
: in std_logic;
RST
: in std_logic;
CLK0
: out std_logic;
CLK90
: out std_logic;
CLK180
: out std_logic;
CLK270
: out std_logic;
CLK2X
: out std_logic;
CLK2X180 : out std_logic;
CLKDV
: out std_logic;
CLKFX
: out std_logic;
CLKFX180 : out std_logic;
LOCKED
: out std_logic;
PSDONE
: out std_logic;
STATUS
: out std_logic_vector(7
);
end component;
-- end of clock components
"LOW";
"TRUE";
"FALSE"
downto 0)
component chiatan
port
clk_i :
in
std_logic;
sochia
clk_o :
:
in
integer;
out std_logic
);
http://www.ebook.edu.vn
44
end component;
signal CLKIN_OSC, CLKFB_OSC, CLK_OSC, RESET, RSTl : std_logic;
-- temporary registers
signal ADC1, ADC2 : std_logic_vector(13 downto 0);
signal DAC1
:std_logic_vector(13 downto 0);
signal data
:std_logic_vector(13 downto 0);
-- common ground
signal GND : std_logic;
signal clk:std_logic;
begin
GND <= '0';
RESET <= not RESETl;
-----------------------------clock deskew section----------------------------- IBUFG Instantiation for CLK_IN
U0_IBUFG : IBUFG
port map (
I => CLK1_FB,
O => CLKIN_OSC
);
-- BUFG Instantiation for CLKFB
U0_BUFG : BUFG
port map (
I => CLKFB_OSC,
O => CLK_OSC
);
-- DCM Instantiation for internal deskew of CLK0
U0_DCM : DCM
port map (
CLKIN
=> CLKIN_OSC,
CLKFB
=> CLK_OSC,
DSSEN
=> GND,
PSINCDEC => GND,
PSEN
=> GND,
PSCLK
=> GND,
RST
=> RESET,
CLK0
=> CLKFB_OSC,
LOCKED
=> RSTl
);
-----------------------------end of clock deskew----------------------------- module configured
CONFIG_DONE <= '0';
-- set low pass filter response and no zero stuffing for both DACs
DAC1_MOD0 <= '0';
DAC1_MOD1 <= '0';
DAC2_MOD0 <= '0';
DAC2_MOD1 <= '0';
-- disable resets for DACs
DAC1_RESET <= '0';
DAC2_RESET <= '0';
http://www.ebook.edu.vn
45
http://www.ebook.edu.vn
46
Library ieee;
Use ieee.std_logic_1164.all;
Entity FIR_Filter is
Generic(n: integer :=14; -- width of data
m: integer := 51); -- order of FIR
Port (
Xin: in std_logic_vector(n-1 downto 0);
clk,reset: in std_logic;
Yout: out std_logic_vector(n-1 downto 0)
);
end FIR_FIlTER;
architecture arch_FIR of FIR_FILTER is
Component FF_D
Generic(n: integer :=14);
Port (
D :in std_logic_vector(n-1 downto 0);
Clk,Reset: in std_logic;
--enable: in std_logic;
Q: out std_logic_vector(n-1 downto 0)
);
end Component;
component PE is
Generic(n: integer :=14);
Port (
Xin,Ain: in std_logic_vector(n-1 downto 0);
Yin: in std_logic_vector(n-1 downto 0);
clk,reset : in std_logic;
Xout: inout std_logic_vector(n-1 downto 0);
Yout: out std_logic_vector(n-1 downto 0)
);
end component;
http://www.ebook.edu.vn
47
http://www.ebook.edu.vn
48
);
end Component;
signal S1,S2,S3: STD_LOGIC_VECTOR (n-1 DOWNTO 0);
signal rmul: STD_LOGIC_VECTOR (n-1 DOWNTO 0);
begin
REGX: FF_D
generic map (n => 14)
port map (Xin,clk,reset,Xout);
Multi: mult port map (xout,ain,rmul);
--REGS0: FF_D port map (s1,clk,reset,rmul);
adderS: adder port map (rmul,Yin,Yout);
--REGS1: FF_D port map (S2,clk,reset,S3);
--REGS2: FF_D port map (S3,clk,reset,Yout);
end arch_PE;
-----------Library ieee;
Use ieee.std_logic_1164.all;
Entity FF_D is
Generic(n: integer :=14);
Port (
D :in std_logic_vector(n-1 downto 0);
Clk,Reset: in std_logic;
--Enable: in std_logic;
Q: out std_logic_vector(n-1 downto 0)
);
end FF_D;
architecture arch_FFD of FF_D is
Begin
Process (clk,reset)
begin
if clk'event and clk = '1' then
--if enable = '1' then
if reset = '0' then
Q <= (others =>'0');
else
Q <= D;
end if;
--end if;
end if;
end process;
end arch_FFD;
-------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_SIGNED.all;
entity mult is
PORT
(
dataa
: IN STD_LOGIC_VECTOR (13 DOWNTO 0);
datab
: IN STD_LOGIC_VECTOR (13 DOWNTO 0);
result
: OUT STD_LOGIC_VECTOR (13 DOWNTO 0)
);
END mult;
http://www.ebook.edu.vn
49
port( clk_i
sochia
clk_o
:
:
:
in
std_logic;
in
integer;
out std_logic
);
end chiatan;
architecture run_chia of chiatan is
begin
process(clk_i)
variable i
: integer range 0 to 50001 :=0;
variable j
: integer range 0 to 50000 :=0;
variable temp
: std_logic:='1';
begin
j:=sochia/2;
if(clk_i'event and clk_i='1') then
i:=i+1;
if(i>=j) then i:=0;temp:=not(temp);--;j:=j+1;
--if(j>=sochia) then j:=0; temp:=not(temp);
end if;
end if;
--end if;
clk_o<=temp;
end process;
end run_chia;
http://www.ebook.edu.vn
50
http://www.ebook.edu.vn
51
component DCM
generic (
DLL_FREQUENCY_MODE
: string :=
DUTY_CYCLE_CORRECTION : string :=
STARTUP_WAIT
: string :=
);
port (
CLKIN
: in std_logic;
CLKFB
: in std_logic;
DSSEN
: in std_logic;
PSINCDEC : in std_logic;
PSEN
: in std_logic;
PSCLK
: in std_logic;
RST
: in std_logic;
CLK0
: out std_logic;
CLK90
: out std_logic;
CLK180
: out std_logic;
CLK270
: out std_logic;
CLK2X
: out std_logic;
CLK2X180 : out std_logic;
CLKDV
: out std_logic;
CLKFX
: out std_logic;
CLKFX180 : out std_logic;
LOCKED
: out std_logic;
PSDONE
: out std_logic;
STATUS
: out std_logic_vector(7
);
end component;
-- end of clock components
"LOW";
"TRUE";
"FALSE"
downto 0)
component chiatan
port( clk_i :
in
sochia
clk_o :
);
std_logic;
:
in
integer;
out std_logic
end component;
signal CLKIN_OSC, CLKFB_OSC, CLK_OSC, RESET, RSTl : std_logic;
-- temporary registers
signal ADC1, ADC2 : std_logic_vector(13 downto 0);
signal DAC1
:std_logic_vector(13 downto 0);
signal DAC2
:std_logic_vector(13 downto 0);
signal data
:std_logic_vector(13 downto 0);
-- common ground
signal GND : std_logic;
signal clk:std_logic;
http://www.ebook.edu.vn
52
begin
GND <= '0';
RESET <= not RESETl;
-----------------------------clock deskew section----------------------------- IBUFG Instantiation for CLK_IN
U0_IBUFG : IBUFG
port map (
I => CLK1_FB,
O => CLKIN_OSC
);
-- BUFG Instantiation for CLKFB
U0_BUFG : BUFG
port map (
I => CLKFB_OSC,
O => CLK_OSC
);
-- DCM Instantiation for internal deskew of CLK0
U0_DCM : DCM
port map (
CLKIN
=> CLKIN_OSC,
CLKFB
=> CLK_OSC,
DSSEN
=> GND,
PSINCDEC => GND,
PSEN
=> GND,
PSCLK
=> GND,
RST
=> RESET,
CLK0
=> CLKFB_OSC,
LOCKED
=> RSTl
);
-----------------------------end of clock deskew----------------------------- module configured
CONFIG_DONE <= '0';
-- set low pass filter response and no zero stuffing for both DACs
DAC1_MOD0 <= '0';
DAC1_MOD1 <= '0';
DAC2_MOD0 <= '0';
DAC2_MOD1 <= '0';
-- disable resets for DACs
DAC1_RESET <= '0';
DAC2_RESET <= '0';
-- optimum settings for sampling rate
DAC1_DIV0 <= '1';
DAC1_DIV1 <= '0';
DAC2_DIV0 <= '1';
DAC2_DIV1 <= '0';
-- digital output of adc to digital input of DAC
U0: chiatan port map(CLK_OSC,5250,clk);
http://www.ebook.edu.vn
53
http://www.ebook.edu.vn
54
Component FF_D
Generic(n: integer :=14);
Port (
D :in std_logic_vector(n-1 downto 0);
Clk,Reset: in std_logic;
--enable: in std_logic;
Q: out std_logic_vector(n-1 downto 0)
);
end Component;
component PE is
Generic(n: integer :=14);
Port (
Xin,Ain: in std_logic_vector(n-1 downto 0);
Yin: in std_logic_vector(n-1 downto 0);
clk,reset : in std_logic;
Xout: inout std_logic_vector(n-1 downto 0);
Yout: out std_logic_vector(n-1 downto 0)
);
end component;
http://www.ebook.edu.vn
55
Library ieee;
Use ieee.std_logic_1164.all;
Entity PE is
Generic(n: integer :=14);
Port (
Xin,Ain: in std_logic_vector(n-1 downto 0);
Yin: in std_logic_vector(n-1 downto 0);
clk,reset : in std_logic;
Xout: inout std_logic_vector(n-1 downto 0);
Yout: out std_logic_vector(n-1 downto 0)
);
end PE;
architecture arch_PE of PE is
Component adder
PORT
(
dataa
: IN STD_LOGIC_VECTOR (13 DOWNTO 0);
datab
: IN STD_LOGIC_VECTOR (13 DOWNTO 0);
result
: OUT STD_LOGIC_VECTOR (13 DOWNTO 0)
);
END Component;
Component mult
PORT
(
dataa
: IN STD_LOGIC_VECTOR (13 DOWNTO 0);
datab
: IN STD_LOGIC_VECTOR (13 DOWNTO 0);
result
: OUT STD_LOGIC_VECTOR (13 DOWNTO 0)
);
END Component;
-- Declarations (optional)
Component FF_D
Generic(n: integer :=14);
Port (
D :in std_logic_vector(n-1 downto 0);
Clk,Reset: in std_logic;
--Enable: in std_logic;
Q: out std_logic_vector(n-1 downto 0)
);
end Component;
signal S1,S2,S3: STD_LOGIC_VECTOR (n-1 DOWNTO 0);
signal rmul: STD_LOGIC_VECTOR (n-1 DOWNTO 0);
begin
REGX: FF_D
generic map (n => 14)
port map (Xin,clk,reset,Xout);
Multi: mult port map (xout,ain,rmul);
--REGS0: FF_D port map (s1,clk,reset,rmul);
adderS: adder port map (rmul,Yin,S2);
http://www.ebook.edu.vn
56
-----------Library ieee;
Use ieee.std_logic_1164.all;
Entity FF_D is
Generic(n: integer :=14);
Port (
D :in std_logic_vector(n-1 downto 0);
Clk,Reset: in std_logic;
--Enable: in std_logic;
Q: out std_logic_vector(n-1 downto 0)
);
end FF_D;
architecture arch_FFD of FF_D is
Begin
Process (clk,reset)
begin
if clk'event and clk = '1' then
--if enable = '1' then
if reset = '0' then
Q <= (others =>'0');
else
Q <= D;
end if;
--end if;
end if;
end process;
end arch_FFD;
-------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_SIGNED.all;
entity mult is
PORT
(
dataa
: IN STD_LOGIC_VECTOR (13 DOWNTO 0);
datab
: IN STD_LOGIC_VECTOR (13 DOWNTO 0);
result
: OUT STD_LOGIC_VECTOR (13 DOWNTO 0)
);
END mult;
architecture run_mult of mult is
begin
result <= dataa*datab;
--result(13)<= dataa(7) xor datab(7);
end run_mult;
------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_SIGNED.all;
http://www.ebook.edu.vn
57
result<=dataa+datab;
end run_add;
-------------------------------------------library ieee;
use ieee.std_logic_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_SIGNED.all;
entity chiatan is
port( clk_i :
in
std_logic;
sochia
:
in
integer;
clk_o :
out std_logic
);
end chiatan;
architecture run_chia of chiatan is
begin
process(clk_i)
variable i
: integer range 0 to 50001 :=0;
variable j
: integer range 0 to 50000 :=0;
variable temp
: std_logic:='1';
begin
j:=sochia/2;
if(clk_i'event and clk_i='1') then
i:=i+1;
if(i>=j) then i:=0;temp:=not(temp);--;j:=j+1;
--if(j>=sochia) then j:=0; temp:=not(temp);
end if;
end if;
--end if;
clk_o<=temp;
end process;
end run_chia;
----------------------------------------------------
http://www.ebook.edu.vn
58
3. Chng trnh thit k b lc FIR thch nghi dng thut ton LMS
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_SIGNED.all;
entity Toplevel is
port (
-- main clock input from oscilator
CLK1_FB
: in std_logic;
-- main reset input from mb
RESETl
: in std_logic;
-- configuration done signal
CONFIG_DONE : out std_logic;
-- dac 14 bit data outputs
DAC1_D
: out std_logic_vector(13 downto 0);
DAC2_D
: out std_logic_vector(13 downto 0);
-- adc 14 bit data inputs
ADC1_D
: in std_logic_vector(13 downto 0);
ADC2_D
: in std_logic_vector(13 downto 0);
-- dac reset signals
DAC1_RESET : out std_logic;
DAC2_RESET : out std_logic;
-- dac setup
DAC1_MOD0
: out std_logic;
DAC1_MOD1
: out std_logic;
DAC2_MOD0
: out std_logic;
DAC2_MOD1
: out std_logic;
-- dac clock divider setup
DAC1_DIV0
: out std_logic;
DAC1_DIV1
: out std_logic;
DAC2_DIV0
: out std_logic;
DAC2_DIV1
: out std_logic;
-- led flash signals
LED1_Red
: out std_logic;
LED2_Red
: out std_logic;
LED1_Green : out std_logic;
LED2_Green : out std_logic
);
end Toplevel;
architecture Behavioral of Toplevel is
-- clock components
component BUFG
port (
I : in std_logic;
O : out std_logic
);
end component;
component IBUFG
port (
I : in std_logic;
O : out std_logic
);
end component;
component DCM
generic (
DLL_FREQUENCY_MODE
http://www.ebook.edu.vn
: string := "LOW";
59
component chiatan
port( clk_i
sochia
clk_o
);
:
:
:
in
std_logic;
in
integer;
out std_logic
end component;
signal CLKIN_OSC, CLKFB_OSC, CLK_OSC, RESET, RSTl : std_logic;
-- temporary registers
signal ADC1, ADC2 : std_logic_vector(7 downto 0);
signal DAC1
:std_logic_vector(13 downto 0);
signal DAC2
:std_logic_vector(13 downto 0);
signal data
:std_logic_vector(13 downto 0);
-- common ground
signal GND : std_logic;
signal clk:std_logic;
http://www.ebook.edu.vn
60
begin
GND <= '0';
RESET <= not RESETl;
-----------------------------clock deskew section----------------------------- IBUFG Instantiation for CLK_IN
U0_IBUFG : IBUFG
port map (
I => CLK1_FB,
O => CLKIN_OSC
);
-- BUFG Instantiation for CLKFB
U0_BUFG : BUFG
port map (
I => CLKFB_OSC,
O => CLK_OSC
);
-- DCM Instantiation for internal deskew of CLK0
U0_DCM : DCM
port map (
CLKIN
=> CLKIN_OSC,
CLKFB
=> CLK_OSC,
DSSEN
=> GND,
PSINCDEC => GND,
PSEN
=> GND,
PSCLK
=> GND,
RST
=> RESET,
CLK0
=> CLKFB_OSC,
LOCKED
=> RSTl
);
-----------------------------end of clock deskew----------------------------- module configured
CONFIG_DONE <= '0';
-- set low pass filter response and no zero stuffing for both DACs
DAC1_MOD0 <= '0';
DAC1_MOD1 <= '1';
DAC2_MOD0 <= '0';
DAC2_MOD1 <= '0';
-- disable resets for DACs
DAC1_RESET <= '0';
DAC2_RESET <= '0';
-- optimum settings for sampling rate
DAC1_DIV0 <= '0';
DAC1_DIV1 <= '1';
DAC2_DIV0 <= '1';
DAC2_DIV1 <= '0';
-- digital output of adc to digital input of DAC
http://www.ebook.edu.vn
61
http://www.ebook.edu.vn
62
component mult is
PORT
(
dataa
datab
result
);
END component;
http://www.ebook.edu.vn
63
y <=p(0)+p(1);
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_SIGNED.all;
entity mult is
PORT
(
dataa
: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
datab
: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
result
: OUT STD_LOGIC_VECTOR (15 DOWNTO 0)
);
END mult;
architecture run_mult of mult is
begin
result <= dataa*datab;
--result(13)<= dataa(7) xor datab(7);
end run_mult;
------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_SIGNED.all;
entity adder is
PORT
(
dataa
datab
result
);
END adder;
http://www.ebook.edu.vn
64
end run_add;
-------------------------------------------library ieee;
use ieee.std_logic_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_SIGNED.all;
entity chiatan is
port( clk_i :
in
std_logic;
sochia
:
in
integer;
clk_o :
out std_logic
);
end chiatan;
architecture run_chia of chiatan is
begin
process(clk_i)
variable i
: integer range 0 to 50001 :=0;
variable j
: integer range 0 to 50000 :=0;
variable temp
: std_logic:='1';
begin
j:=sochia/2;
if(clk_i'event and clk_i='1') then
i:=i+1;
if(i>=j) then i:=0;temp:=not(temp);--;j:=j+1;
--if(j>=sochia) then j:=0; temp:=not(temp);
end if;
end if;
--end if;
clk_o<=temp;
end process;
end run_chia;
http://www.ebook.edu.vn
65