Міністерство освіти і науки України
Національний університет „Львівська політехніка”
кафедра ЕОМ
Курсовий проект
з курсу:
“Методи алгоритми і засоби цифрової обробки сигналів та зображень”
Тема: “Розробка алгоритму ШПФ на ПЛІС”
Львів – 2005
Завдання до курсового проекту.
Розробити та синтезувати на ПЛІС пристрій для обчислення 16-ти точкового ШПФ за основою 2 та прорідженням за частотою. Сформувати набір тестових послідовностей та засобами пакету Active HDL провести функціональну симуляцію пристрою.
Анотація.
В даній роботі описується один із алгоритів ШПФ (FFT), а саме 16-ти точкове ШПФ за основою 2 та прорідженням за частотою. Будується граф обчислення ШПФ та на його основі алгоритм описується мовою VHDL. Далі виконуєьтся синтез проекту на ПЛІС (FPGA) та оцінка отриманих результатів.
Зміст
Вступ ____________________________________5
Аналітичний огляд _________________________6
1.1. Алгоритм ШПФ з основою 2___________________6
1.2. Обчислення повертаючих множників____________7
1.3. Модифікований граф ШПФ____________________9
1.4. Біт інверсний порядок видачі даних____________10
1.5. Проекція графу ШПФ на вертикальну площину__10
Розробка пристрою на VHDL____________________12
2.1. Інтерфейс пристрою__________________________12
2.2. Структурна схема____________________________12
2.3. Формат вхідних та вихідних даних______________12
2.4. Двохточкові ШПФ____________________________14
2.5. Комутаційна мережа__________________________14
2.6. Вибір кількості та об’єму ПЗП__________________15
2.7. Керуючий пристрій___________________________16
Тестування____________________________________ 18
Висновки______________________________________ 34
Література _______________________________________ 35
Вступ
При обробці сигналів у багатьох випадках доводиться виміряти спектри. Так, в задачах розпізнавання мови спектральний аналіз, як правило, передує подальшій спеціальній обробці. В системах стиснення смуги мовних сигналів спектральний аналіз є звичайно основною операцією. В гідроакустичних системах для виявлення надводних кораблів і підводних човнів вимагається проводити складний спектральний аналіз. В системах радіолокацій для отримання інформації про швидкість мети також доводиться виміряти спектр.
Слід мати на увазі, що поняття «спектральний аналіз» включає велике число різних вимірювань. В широкому значенні його можна визначити як вимірювання, яке дає точні або наближені значення z-перетворення дискретного сигналу для заданих значень z». Створення адекватної теорії спектрального аналізу утруднено тією обставиною, що на практиці всі спектральні вимірювання проводяться на кінцевих тимчасових інтервалах, довжина яких звичайно визначається інтуїтивно або на основі накопиченого досвіду. Наприклад, «спектр» мовного сигналу дуже сильно залежить від часу, змінюючись приблизно із швидкістю зміни параметрів мовного тракту (біля 10раз за секунду). Не дивлячись на це, в багатьох прикладних задачах короткочасний спектр мовного сигналу є однією з найважливіших характеристик.
Набір алгоритмів, званих алгоритмами швидкого перетворення Фурьє (ШПФ), включає різноманітні методи зменшення часу обчислення дискретного перетворення Фурьє (ДПФ). Оскільки обчислення ДПФ є основною операцією в більшості задач спектрального аналізу, то використовування ШПФ в деяких що зустрічаються на практиці випадках, дозволяє прискорити обчислення ДПФ в 100 і більш раз в порівнянні з методом прямого обчислення ДПФ, має надзвичайно важливе значення і повинне розглядатися як невід'ємна частина застосування методів цифрової обробки сигналів для спектрального аналізу.
Той факт, що одновимірний масив чисел можна виразити через двовимірний масив більш ніж одним способом, пояснює різноманіття алгоритмів ШПФ. Звідси витікає, що математична операція переходу з одновимірного простору в двовимірний є основою всіх алгоритмів ШПФ. При такому єдиному підході до алгоритму ШПФ його різні варіанти можуть бути отриманий порівняно простим способом.
1.Аналітичний огляд.
1.1. Алгоритм ШПФ з основою 2
Якщо число N є степенем 2, то його можна записати як (N/2) х 2; аналогічно N/2 = (M/4) X2 і т.д. В результаті елементи початкового одновимірного масиву можна розположити таким чином, щоб елементарними операціями були двохточкові ШПФ. Простий приклад для N = 16 показаний на рис.1.1.
Рис.1.1. 16-точкове з основою 2 з проріджуванням по частоті.
При побудові графу N-точкового ШПФ за основою 2 слід виконати ряд обчислень для визначення кількості ярусів графу та кількості метеликів на кожному ярусі.
А саме: кількість ярусів = Log2N, оскільки в нас N=16, то Log216 = 4;
Кількість метеликів = N/2 = 16/2= 8
Після виконання даних розрахунків будуємо граф зображений на рис. 1.1.
Таким чином, на рис.1.1 кружки представляють двохточкові ШПФ, а множення на повертаючі множники зображені стрілками. Елементи пам'яті також представлені крапками і пронумеровані зверху вниз, причому номери регістрів не приводяться. Можливі варіанти ШПФ з основою 2 з проріджуванням по частоті і за часом. Перший варіант представлений на рис. 1.1. Щоб зрозуміти, яким чином в цьому алгоритмі здійснюється проріджування, вважатимемо, що перші 8 відліків утворюють перший рядок матриці з 8 стовпців і 2 рядків, наступні 8 відліків складають другий рядок.
На першому етапі алгоритму рис.1.1 виконуються 8 двохточкові ДПФ від елементів кожного стовпця. Потім проводяться повороти, причому показники експонент повертаючих множників вказані перед позначенням елементів пам'яті другого етапу. Потім всі рядки проріджуються шляхом формування з них матриць розміром (4 X 2) і перетворяться по схемі 8-точкового БПФ з основою 2, але з іншими повертаючими множниками.
Алгоритм рис. 2.1 можна розглядати як варіант ШПФ з проріджуванням по частоті, оскільки повороти проводяться після ДПФ. Можна побудувати і алгоритм з проріджуванням за часом, але для цього доведеться переходити від матриць меншого розміру до більших матриць.
Алгоритм базової операції ШПФ з основою 2 і проріджуванням за частотою можна представити у вигляді :
де X,Y — результати базової операції; А, B — вхідні відліки; WN— комплексні коефіцієнти;
1.2. Обчислення повертаючих множників WN
Для виконання кожної базової операції на метелик необхідно подати поворотний коефіцієнт Wp, де W==e-2jπ/N при прямому БПФ і W=e2jπ/N при зворотному БПФ. Для алгоритму БПФ з прорідженням за часом значення р пов'язані з номерами відліків п, беруть участь у виконанні базової операції на j-й ітерації, наступним співвідношенням:
де j=1 ..., r-1 - номер поворотного коефіцієнта, що бере участь в базовій операції; ki - розряди r-ого кода номерів операндів.
Наприклад, для N=64 і r=2 на 1-й ітерації значення р(1) для всіх груп відліків рівне 0, на 2-й ітерації р(1}=k524= =k5N/4, т. д.
На третій ітерації
і т д.
Використовуючи даний підхід здійснюємо обчислення певертаючих множників для 16-ти точкового ШПФ за основою 2 з прорідженням по частоті. Відмінністю буде лише те, що при прорідженні по частоті змінюється порядок слідування коефіцієнтів на різних ітераціях, тобто на першій ітерації:
На другій ітерації:
На третій ітерації:
На четвертій ітерації
1.3. Модифікований граф ШПФ
Оскільки при реалізації апаратно графу ШПФ виникають незручності при неспівпадінні адрес комірок з яких потрібно брати елементи на кожному ярусі, то від графу зображеного на рис.1.1. можна перейти до графу зображеного на рис.1.2.
Рис.1.2. Модифікований граф 16-ти точкового ШПФ за основою 2 з прорідженням за частотою.
На рисунку видно, що для кожної базової операції на будь-якому ярусі дані беруться і записуються за тими самими адресами що і на попередньму ярусі.
Точки і метелики пронумеровані у відповідності до графу на рис.2.1 для того щоб простіше було наглядно відслідкувати потік даних і переконатись, що він не перекручений та повністю відповідає алгоритму ШПФ комірки пам’яті пронумеровані у відповідності до нумерації на рис.1.1. Змінюється і порядок слідування повертаючих множників, що зображено на рисунку. При такій побудові графу значно простіше побудувати проекцію графу на вертикальну площину і далі її перевести в схему.
1.4. Біт інверсний порядок видачі даних та проекція графу.
Наступним моментом є те, що на вході графу при прорідженні за частотою ми маємо прямий порядок слідування даних, а на виході отримуємо двійково- інверсний. Отже при видачі даних в прямому порядку потрібно здійснити двійково-інверсну перестановку за правилом описаним в таблиці 1.
номер
Двійкове представле-ння
Двійкова інверсія
Двійково-інверсний номер
0
0000
0000
0
1
0001
1000
8
2
0010
0100
4
3
0011
1100
12
4
0100
0010
2
5
0101
1010
10
6
0110
0110
6
7
0111
1110
14
8
1000
0001
1
9
1001
1001
9
10
1010
0101
5
11
1011
1101
13
12
1100
0011
3
13
1101
1011
11
14
1110
0111
7
15
1111
1111
15
Таб.1 Двійково-інверсна перестановка даних
Після опису роботи алгоритму можна перейти до його реалізації. На рис. 1.3 зображено проекцію графа ШПФ на вертикальну площину. В результаті його реалізації буде отримано ітераційний пристрій де на кожній ітерації обчислюватиметься один ярус потокового графу ШПФ.
1.5 Проекція потокового графу ШПФ на вертикальну площину.
Рис. 1.3. Спрощена проекція графу на вертикальну площину.
На рисунку використані такі позначення:
Memory array – масив елементів пам'яті для зберігання проміжних результатів обробки
MUX – вхідні мультиплексори для запису вхідних даних на першому циклі роботи пристрою
F1,F2,…,F8 – вузли обробки (двохточкові ШПФ)
На даному рисунку не показано повертаючих множників та виходів пристрою, він ілюструє лише потік даних при обробці.
2. Розробка
Для реалізації пристрою описаного рисунком 1.3. використовуєьтся наступна структура.
2.1 Інтерфейс пристрою
Пристрій має 16 паралельних вхідних портів для прийому даних та два вхідні порти для отримання керуючих сигналів – це сигнали RST (Reset – початковий скид) та CLK(Clock – синхронізація). Результати обробки вхідних даних видаються по 16-х паралельних вихідних портах. Всі порти, крім RST i CLK є 32-х розрядні.
2.2. Спрощена структурна схема пристрою.
Структура пристрою зображена на рис. 2.1. Дані надходять по 16-ти паралельних портах і проходячи через мультиплексори записуються у відповідні регістри. Мультиплексорами управляє керуючий автомат (Control Unit) по лінії SEL. При SEL = 0, в регістри записуються вхідні дані, при SEL = 1 – проміжні дані. Далі дані з регістрів поступають на входи двохточкових ШПФ де обробляються у відповідності до базової операції ШПФ і на наступному циклі знову записуються до відповідних регістрів. На останньому циклі дані записуються в регістри і подаються на вихідні порти відповідно до табл.1 при встановленому сигналі oen, який генерується куруючим пристроєм.
В ПЗП (ROM) зберігаються повертаючі множники, які є константами і подаються на двохточкові ШПФ через комутуючу мережу. Роботою комутуючої мережі (Comunication Network) управляє керуючий пристрій по лініях DC[3:0].
Далі буде детальніше розглянуто кожний з основних вузлів, на базі яких побудована структура пристрою.
Рис. 2.1 Сруктурна схема пристрою для обчислення 16-ти точкового ШПФ за основою 2
2.3 Формат вхідних та вихідних даних
Вхідні та вихідні дані є комплексними числами виду А=ar+jbi, де аr – дійсна частина, bi – уявна частина, j- уявна одиниця. Для їх кодування використовуються 32 розряди, причому 16 старших розрядів для кодування дійсної частини, 16 молодших для кодування уявної частини.
Рис. 2.2 Формат вхідних та вихідних даних
Дійсна і уявна частина є знаковими числами з фіксованою комою. Розряди 31 та 15 використовуються для кодування знаків, 30-24 та 14-8 для кодування цілих частин, 23-16 та 7-0 для кодування дробових частин дійсної та уявної складових числа відповідно до рис. 2.2.
2.4. Двохточкові ШПФ (fft0 – fft7)
На рис. 2.1 видно, що базовими вузлами обчислення є 8 двохточкових ШПФ, кожне з яких є комбінаційною схемою з внутрішнью структурою зображеною на рис. 2.3. На входи поступають два 32-х розрядних числа А і В та два 16-ти розрядних числа Wr i Wi. На виході отримуємо два 32-х розрядних числа X=A+B i Y=(A-B)WN.
Рис. 2.3. Внутрішня структура двохточкового ШПФ
Алгоритми сумування та множення комплексних чисел
А = аr + jai; B = br+jbi;
Сумування:
А + B = ar + br + j(ai + bi)
Множення:
A * B = arbr + jarbi + jaibr - aibi
2.5. Комунікаційна мережа (Comunication Network)
Комутаційна мережа використовується для комутації двохточкового ШПФ з потрібним номером ПЗП у відповідні моменти часу (на відповідних робочих циклах пристрою). Вона складається з буферів, якими управляє керуючий автомат по лініях DC[3:0]. Всановлюючи потрібні значення сигналів на лініях керування він або дозволяє або забороняю видачу даних на виході кожного з буферів. В один момент часу дані можуть поступати на операційний пристрій тільки з виходу одного з буферів. На рис. 2.4. зображено підключення одного з операційних пристроїв до ПЗП.
Рис. 2.4. Підключенняодного з двохточкових ШПФ до ПЗП через комутаційну мережу.
2.6. Вибір кількості і об’єму ПЗП.
Для вибору кількості і об’єму ПЗП необхідно провести аналіз кількості і значень повертаючих множників.
Для алгоритму 16-ти точкового ШПФ за основою 2 необхідно зберігати в пам’яті 8 значень повертаючих множників WN. Оскільки WN = wr + jwi є комплексним і має косинусну складову wr i синусну складову wi то розглянемо графічно значення цих функцій в потрібних точках. Обчислення значень точок описано в пункті 1.2.
Рис. 2.5. Значення функцій cos i sin на періоді 2рі.
На рисунку видно, що деякі з коефіцієнтів співпадають за значенням між собою, а саме: Wr0 = Wi4, Wr1 = Wi3 = Wi5, Wr2 = Wi2 = Wi6, Wr3 = Wi1 = Wi7,
Wr4 = Wi0. Залишаються Wr5, Wr6, Wr7. Провівши такий аналіз отримуємо висновок – необхідно 8 16-ти розрядних ПЗП об'ємом в 1 комірку.
2.7. Керуючий автомат (Control Unit).
Керуючий автомат здійснює функцію управління роботою всього пристрою. Отримуючи сигнали RST i CLK він формує всі необхідні сигнали управління, а саме:
SEL – для управління роботою мультиплексорів;
DC[3:0] – чотирьох розрядний сигнал для управління комутаційною мережею;
OEN – сигнал дозволу видачі вихідних даних
На рис. 2.6 зображено граф керуючого автомату і діаграму його роботи.
При поступленні сигналу RST = 1 автомат переходить в початковий стан INIT. При встановлені RST в нуль автомат переходить з початкового стану в стан S0, далі в S1, і так далі як зображено на рисунку. З стану S5 автомат повертається в стан S0. Перехід із стану в стан здійснюється по зростаючому фронту сигналу CLK. На відповідних станах керуючий автомат формує необхідні керуючі сигнали у відповідності до рисунку.
Рис. 2.6. Граф керуючого автомату та діаграма його функціонування
3. Тестування пристрою.
Для тестування пристрою формується тестова послідовність такого типу:
Моделюються сигнали Acos(kt) i Asin(kt). Далі беруться значення цих сигналів у відповідних точках : ділянка на якій розглядається сигнал розбивається на 16 відліків і в кожній точці отримуються необхідні для проведення тестів значення. Значення отримані в результаті обчислення Acos(kt) є дійсними складовими вхідних даних, а Asin(kt) – уявними.
Для побудови даної тестової послідовності була розроблена програма для обчислення виразів sin(kt) i cos(kt) при 1<= k <= 16.
Лістинг програми:
Program Garmonik_Form;
uses CRT;
type
form = array [0..15] of byte;
const p : byte = 180;
var
k,i,j : byte;
y,x,dx,z,t,dg,g,gr : real;
Real_,Image:form;
procedure DEC2HEX (dec:real;var A:form);
var zila,drob,sum:real;
begin
for i:= 15 downto 0 do
A[i] := 0;
if dec >= 0 then A[15] := 0 else A[15] := 1;
zila := abs(int(dec));
drob := abs(frac(dec));
if drob = 0 then if zila = 1 then A[8] := 1
else A[15] := 0
else begin
sum := drob;
for i:=7 downto 0 do begin
sum := sum*2;
if sum >= 1 then begin
A[i] := 1;
sum:=sum-1
end
end
end
end;
begin
clrscr;
k := 15;
dx := Pi/8;
dg := p/8;
while k <= 15 do begin
x := 0;
g:= 0;
while x < 2*Pi do begin
t := x*k;
gr := g*k;
y := cos(t);
DEC2HEX(y,Real_);
z := sin(t);
DEC2HEX(z,Image);
write(gr:3:1,' y= ',y:3:5,' z= ',z:3:5,' ');
for i:=15 downto 0 do
write(Real_[i]);
write(' ');
for i:=15 downto 0 do
write(Image[i]);
writeln;
x := x + dx;
g := (g + dg);
end;
inc(k)
end;
readln
end.
Програма складається з процедури переводу числа з десяткової системи числення в двійкову та тіла програми де в циклі обчислюються значення sin(kt) i cos(kt), які передаються як параметри процедурі для переведення в двійкову систему.
За результатами отриманими в результаті виконання даної програми будується набір тестових послідовностей та формується script – файл для тестування пристрою засобами пакету Active HDL. Нище подається текст скрипт-файлу:
acom $DSN/src/ButterFly.vhd
acom $DSN/src/OperationUnit.vhd
asim fft fft
force IN0 16#01000000 150ns, 16#00EC0061 650ns, 16#00B500B5 1150ns, 16#006100EC 1650ns, 16#00000100 2150ns,16#806100EC 2150ns, 16#80B500B5 2650ns, 16#80EC0061 3150ns, 16#81000000 3650ns, 16#80EC8061 4150ns, 16#80B580B5 4650ns, 16#806180EC 5150ns, 16#00008100 5650ns, 16#006180EC 6150ns, 16#00B580B5 6650ns, 16#00EC8061 7150ns, 16#01000000 7650ns
force IN1 16#01000000 150ns, 16#00B500B5 650ns, 16#00000100 1150ns, 16#80B500B5 1650ns, 16#81000000 2150ns,16#80B580B5 2150ns, 16#00008100 2650ns, 16#00B500B5 3150ns, 16#01000000 3650ns, 16#00B500B5 4150ns, 16#00000100 4650ns, 16#80B500B5 5150ns, 16#81000000 5650ns, 16#80B580B5 6150ns, 16#00008100 6650ns, 16#00B580B5 7150ns, 16#01000000 7650ns
force IN2 16#01000000 150ns, 16#006100EC 650ns, 16#80B500B5 1150ns, 16#80EC8061 1650ns, 16#00008100 2150ns,16#00EC8061 2150ns, 16#00B500B5 2650ns, 16#806100EC 3150ns, 16#81000000 3650ns, 16#806180EC 4150ns, 16#00B580B5 4650ns, 16#00EC0061 5150ns, 16#00000100 5650ns, 16#80EC0061 6150ns, 16#80B580B5 6650ns, 16#006180EC 7150ns, 16#01000000 7650ns
force IN3 16#01000000 150ns, 16#00000100 650ns, 16#81000000 1150ns, 16#00008100 1650ns, 16#01000000 2150ns,16#00000100 2150ns, 16#81000000 2650ns, 16#00008100 3150ns, 16#01000000 3650ns, 16#00000100 4150ns, 16#81000000 4650ns, 16#00008100 5150ns, 16#01000000 5650ns, 16#00000100 6150ns, 16#81000000 6650ns, 16#00008100 7150ns, 16#01000000 7650ns
force IN4 16#01000000 150ns, 16#806100EC 650ns, 16#80B580B5 1150ns, 16#00EC8061 1650ns, 16#00000100 2150ns,16#80EC8061 2150ns, 16#00B580B5 2650ns, 16#006180EC 3150ns, 16#81000000 3650ns, 16#006180EC 4150ns, 16#00B500B5 4650ns, 16#80EC0061 5150ns, 16#00008100 5650ns, 16#00EC0061 6150ns, 16#80B500B5 6650ns, 16#806180EC 7150ns, 16#01000000 7650ns
force IN5 16#01000000 150ns, 16#80B500B5 650ns, 16#00008100 1150ns, 16#00B500B5 1650ns, 16#81000000 2150ns,16#00B580B5 2150ns, 16#00000100 2650ns, 16#80B580B5 3150ns, 16#01000000 3650ns, 16#80B500B5 4150ns, 16#00008100 4650ns, 16#00B500B5 5150ns, 16#81000000 5650ns, 16#00B580B5 6150ns, 16#00000100 6650ns, 16#80B580B5 7150ns, 16#01000000 7650ns
force IN6 16#01000000 150ns, 16#80EC0061 650ns, 16#00B580B5 1150ns, 16#806100EC 1650ns, 16#00008100 2150ns,16#006100EC 2150ns, 16#80B580B5 2650ns, 16#00EC0061 3150ns, 16#81000000 3650ns, 16#00EC8061 4150ns, 16#80B500B5 4650ns, 16#006180EC 5150ns, 16#00000100 5650ns, 16#806180EC 6150ns, 16#00B500B5 6650ns, 16#80EC8061 7150ns, 16#01000000 7650ns
force IN7 16#01000000 150ns, 16#81000000 650ns, 16#01000000 1150ns, 16#81000000 1650ns, 16#01000000 2150ns,16#81000000 2150ns, 16#01000000 2650ns, 16#81000000 3150ns, 16#01000000 3650ns, 16#81000000 4150ns, 16#01000000 4650ns, 16#81000000 5150ns, 16#01000000 5650ns, 16#81000000 6150ns, 16#01000000 6650ns, 16#81000000 7150ns, 16#01000000 7650ns
force IN8 16#01000000 150ns, 16#80EC8061 650ns, 16#00B500B5 1150ns, 16#806180EC 1650ns, 16#00000100 2150ns,16#006180EC 2150ns, 16#80B500B5 2650ns, 16#00EC8061 3150ns, 16#81000000 3650ns, 16#00EC0061 4150ns, 16#80B580B5 4650ns, 16#006100EC 5150ns, 16#00008100 5650ns, 16#806100EC 6150ns, 16#00B580B5 6650ns, 16#80EC0061 7150ns, 16#01000000 7650ns
force IN9 16#01000000 150ns, 16#80B580B5 650ns, 16#00000100 1150ns, 16#00B580B5 1650ns, 16#81000000 2150ns,16#00B500B5 2150ns, 16#00008100 2650ns, 16#80B500B5 3150ns, 16#01000000 3650ns, 16#80B580B5 4150ns, 16#00000100 4650ns, 16#00B580B5 5150ns, 16#81000000 5650ns, 16#00B500B5 6150ns, 16#00008100 6650ns, 16#80B500B5 7150ns, 16#01000000 7650ns
force IN10 16#01000000 150ns, 16#806180EC 650ns, 16#80B500B5 1150ns, 16#00EC0061 1650ns, 16#00008100 2150ns,16#80EC0061 2150ns, 16#00B500B5 2650ns, 16#006180EC 3150ns, 16#81000000 3650ns, 16#006100EC 4150ns, 16#00B580B5 4650ns, 16#80EC8061 5150ns, 16#00000100 5650ns, 16#00EC8061 6150ns, 16#80B580B5 6650ns, 16#806100EC 7150ns, 16#01000000 7650ns
force IN11 16#01000000 150ns, 16#00008100 650ns, 16#81000000 1150ns, 16#00000100 1650ns, 16#01000000 2150ns,16#00008100 2150ns, 16#81000000 2650ns, 16#00000100 3150ns, 16#01000000 3650ns, 16#00008100 4150ns, 16#81000000 4650ns, 16#00000100 5150ns, 16#01000000 5650ns, 16#00008100 6150ns, 16#81000000 6650ns, 16#00000100 7150ns, 16#01000000 7650ns
force IN12 16#01000000 150ns, 16#006180EC 650ns, 16#80B580B5 1150ns, 16#80EC0061 1650ns, 16#00000100 2150ns,16#00EC0061 2150ns, 16#00B580B5 2650ns, 16#806180EC 3150ns, 16#81000000 3650ns, 16#806100EC 4150ns, 16#00B500B5 4650ns, 16#00EC8061 5150ns, 16#00008100 5650ns, 16#80EC8061 6150ns, 16#80B500B5 6650ns, 16#006100EC 7150ns, 16#01000000 7650ns
force IN13 16#01000000 150ns, 16#00B580B5 650ns, 16#00008100 1150ns, 16#80B580B5 1650ns, 16#81000000 2150ns,16#80B500B5 2150ns, 16#00000100 2650ns, 16#00B500B5 3150ns, 16#01000000 3650ns, 16#00B580B5 4150ns, 16#00008100 4650ns, 16#80B580B5 5150ns, 16#81000000 5650ns, 16#80B500B5 6150ns, 16#00000100 6650ns, 16#00B500B5 7150ns, 16#01000000 7650ns
force IN14 16#01000000 150ns, 16#00EC8061 650ns, 16#00B580B5 1150ns, 16#006180EC 1650ns, 16#00008100 2150ns,16#806180EC 2150ns, 16#80B580B5 2650ns, 16#80EC8061 3150ns, 16#81000000 3650ns, 16#80EC0061 4150ns, 16#80B500B5 4650ns, 16#806100EC 5150ns, 16#00000100 5650ns, 16#006100EC 6150ns, 16#00B500B5 6650ns, 16#00EC0061 7150ns, 16#01000000 7650ns
force IN15 16#01000000 150ns, 16#01000000 650ns, 16#01000000 1150ns, 16#01000000 1650ns, 16#01000000 2150ns,16#01000000 2150ns, 16#01000000 2650ns, 16#01000000 3150ns, 16#01000000 3650ns, 16#01000000 4150ns, 16#01000000 4650ns, 16#01000000 5150ns, 16#01000000 5650ns, 16#01000000 6150ns, 16#01000000 6650ns, 16#01000000 7150ns, 16#01000000 7650ns
force CLK 0 0, 1 50ns, -r 100ns
force RST 1 0, 0 110ns
run 8000ns
В результаті виконання даного скрипта отримуємо результати функціональної симуляції завершеного пристрою.
4. Висновки
При виконанні даного проекту було проаналізовано алгоритм швидкого перетворення Фур’є та на його основі розроблено пристрій. Розглянуто один із варіантів алгоритму ШПФ а саме 16-ти точкове ШПФ за основою 2 та прорідженням за частотою. Сформовано набір тестових послідовностей і засобами пакету Active HDL отримано результати функціональної симуляції пристрою.
Список використаної літератури
Цифровые фильтры и устройства обработи сигналов на интегральных микросхемах: Справочное пособие/Ф.Б.Высоцкий, В.И. Алексеев, В.П. Пачин и др.; Под ред. Б.Ф.Высоцкого.-М.: Радио и связь, 1984.-216с.
Основы цыфровой обработки сигналов: Курс лекций / А.И.Солонина, С.М.Арбузов, И.И.Гук. – СПб.: БХВ-Петербург, 2003. – 608 с.