ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Цифровий фільтр високої частоти
         

     

    Інформатика, програмування

    Цифровий фільтр високої частоти

    Курсова робота з дисципліни: Основи проектування цифрових пристроїв на ПЛІС

    Студент Горюнов Д.Ю.

    Рязанський державний радіотехнічний університет

    Рязань 2008 р.

    Вступ

    В даному розділі представлена (?!) буду розробляти і моделювати цифровий фільтр високої частоти (Бих). Характеристики цього фільтра вказані у виданому викладачем завданні.

    Фільтр буде виконаний на основі програмованої логічної інтегральної схеми EPF10K20RC240-4 з сімейства FLEX10K фірми Altera за допомогою спеціальних програм MAX + plus II 10.2 BASELINE і MATLAB 6.5.

    ПЛІС сімейств FLEX10K - найпопулярніша елементна база для реалізації алгоритмів ЦГЗ. Їх часто використовують так, як вони мають велику логічну ємність, зручну архітектуру з вбудованими блоками пам'яті (EAB, Embedded Array Block), високу надійність та прийнятну ціну, щодо інших ПЛІС. Цього достатньо для вирішення проблем, що виникають у розробників.

    Аналіз, формалізація і декомпозиція задачі

    У даній роботі я (?!) буду проектувати цифрою фільтр з нескінченною імпульсною характеристикою третього порядку.

    Запишемо лінійне різницеві рівняння для Бих-фільтра:

    Перетворимо дане рівняння і отримуємо три форми реалізації Бих-фільтра:

    1) Пряма форма 1

    2) Пряма форма 2

                    

    3) Транспонована пряма форма 2

                                           

    Для фільтру порядку М = 3 отримаємо:

    Проаналізувавши форми реалізацій фільтрів, приходжу до висновку, що потрібно використовувати транспонована пряму форму 2, тому що має вбудований конвеєр і найменшу кількість суматори (?!). Цю форму можна представити у вигляді трьох блоків, які ми надалі і будемо використовувати при програмуванні:

    Рис.4 Блок Mult_a

    Рис.5 Блок Mult_b Рис.6 Блок Mult_c

    Програмувати будемо ПЛИС фірми Altera FLEX10K20RC240-4.Укажем характеристики цієї схеми:        

    Логічна ємність         

    20000             

    Число логічних елементів         

    1152             

    Число логічних блоків         

    144             

    Пам'ять (біт)         

    12288             

    Використовувані висновки         

    189             

    Число рядків         

    6             

    Каналів в рядку         

    144             

    Кількість стовпців         

    24             

    Каналів в стовпці         

    24     

    Таблиця 1

    У завданні були отримані коефіцієнти фільтра. Але вони дробові і тому MAX + plus з ними працювати не може. Необхідно їх перевести в цілі числа. Це здійснюється за допомогою масштабування. Масштабування коефіцієнтів проводиться шляхом множення заданих коефіцієнтів ai на 2m і bi на 2n. Вибираємо n і m так, щоб виконувалися умови технічного завдання (відхилення АЧХ в смузі пропускання та затухання АЧХ в смузі непропусканія). З урахуванням цього виберемо m = n = 6.

    Використовуємо MATLAB і отримуємо характеристики фільтра при різних заокругленнях:

    -без округлення

    -с відкиданням дробової частини (fix);

    -з округленням до найближчого цілого (round);

    -з округленням до найближчого меншого цілого (floor);

    -з округленням до найближчого більшого цілого (ceil);

    Вибираємо округлення до найближчого цілого, так як це єдине округлення, що задовольняє технічним завданням. Воно відповідає червоному графіком.

    (Відхилення АЧХ в смузі пропускання: не більше ± 0,6 дБ

    Загасання АЧХ в смузі непропусканія: не менше 29 дБ)

    (Визначте реальні величини відхилень!!)

    Рис.10 Імпульсна характеристика фільтра

    Рис.11 Перехідна характеристика фільтра

    Рис.12 ФЧХ фільтра

    Рис.13 Карта нулів і полюсів фільтра

    Даний фільтр є стійкий, тому що всі полюси знаходяться всередині одиничною кола.

    випишемо округлені та маштабована коефіцієнти:        

            

    Задані коефіцієнти   

    (DEC)            

    Округлені   коефіцієнти   

    (DEC)         

    Округлені   коефіцієнти в   

    додатковому коді   

    (BIN)             

    b1         

    0.126464868216455         

    8         

    1000             

    b2         

    -0.211575649599258         

    -14         

    10010             

    b3         

    0.211575649599257         

    14         

    1110             

    b4         

    -0.126464868216455         

    -8         

    11000             

    a1         

    1.000000000000000         

    -64         

    1000000             

    a2         

    0.927241545063816         

    -59         

    1000101             

    a3         

    0.888040485768699         

    -57         

    1000111             

    a4         

    0.284717905073458         

    -18         

    1101110     

    Таблиця 2 (??)

    (Всі коефіцієнти негативні ??)

    випишемо значення імпульсної та перехідної характеристик:        

            

    g (t)         

    h (t)             

    0         

    0,125         

    0.125             

    1         

    -0,334         

    -0,209             

    2         

    0,415         

    0,206             

    3         

    -0,244         

    -0,0401             

    4         

    -0,0488         

    -0,0882             

    5         

    0,148         

    0.0588             

    6         

    -0,0236         

    0,0354             

    7         

    -0,0957         

    -0,0595             

    8         

    0,0678         

    0,00865             

    9         

    0,0302         

    0,0354             

    10         

    -0,0607         

    -0,0235     

    Таблиця 3

    Розробка і обгрунтування структурної схеми пристрої

    Фільтр-це основний блок для реалізації технічного завдання.

    Для роботи фільтр використовує додатковий код. За технічним завданням на вході маємо 8-розрядний паралельний прямий код. Тому перед фільтром доцільно поставити перетворювач прямого коду в додатковий код.

    Так як дані на вхід фільтра надходять з різними затримками, для безпомилкової роботи потрібно поставити 8-розрядний паралельний регістр. Також регістри потрібні для зниження логічної навантаження на логічні елементи, внаслідок чого звільняються ресурси ПЛІС для виконання інших функцій. Так як фільтр теж затримує сигнал, то на виході так само поставимо паралельний регістр (розрядність визначається технічним завданням, тобто вихідний паралельний регістр буде 16-розрядних).

    семисегментний індикатори (їх два) дозволяють контролювати роботу ПЛІС. Вони вказують молодші розряди вихідного сигналу в зручній для користувача формі. Антідребезговая система прибирає брязкіт в кнопці управління ПЛІС.

    Короткий опис блоків структурної схеми:

    1. btn - антідребезговая схема і перетворювач асинхронного сигналу в синхронний.

    2. reg_in і reg_out-паралельні параметризованих регістри

    3. preobr_cod - перетворювач коду, призначений для перетворення вхідного прямого коду в додатковий код;

    4. filter_gor - основний блок перетворення

    5. tffe-тригер

    6. l7segment і h7segment - семисегментний індикатори (?!), необхідні для перевірки роботи пристрою.

    Рис.14 Структурна схема пристрою

    Складання та опис принципової схеми пристрою.

    Розробка та налагодження програми мовою AHDL

    Для конфігурації ПЛІС сімейства FLEX10K існують наступні способи:

    Пассівная послідовна (послідовне ПЗУ, ByteBlaster, BiteBlaster, JTAG, мікроконтроллер);

    Пассівная паралельна синхронна (мікроконтроллер);

    Пасивна паралельна синхронна (мікроконтроллер);

    У проекті буде використано JTAG конфігурування. Для конфігурації за допомогою JTAG висновки MSEL0, MSEL1 необхідно підключити до землі.

    JTAG (Joint Test Action Group) - об'єднана група з питань тестування - розробила специфікації для периферійного сканування (BST - Boundary Scan Test). BST-технологія дозволяє виконати ефективне тестування компонентів на прецизійних друкованих платах. BST-технологія може тестувати висновки без використання щупів і пробників і виконує збір необхідних функціональних даних у нормальному режимі функціонування мікросхеми. Для роботи в JTAG-режимі використовуються чотири виділених виводу: TDI, TDO, TMS, і TCK, і допоміжний висновок TRST. Всі інші висновки під час JTAG-конфігурування знаходяться в третьому стані. JTAG-конфігурування не можна починати до завершення інших режимів конфігурування. Під час JTAG-конфігурування конфігураційні дані завантажуються в мікросхему на друкованій платі через роз'єми кабелів MasterBlaster або ByteBlasterMV.

    1) TDI - Вхід тестових даних. (Вхід послідовної завантаження інструкцій, що програмують і тестових даних. Дані синхронізуються фронтом імпульсів на виведення TCK.)

    2) TDO - Вихід тестових даних. (Послідовний вихід інструкцій, що програмують і тестових даних. Дані синхронізуються спадом імпульсів на виведення TCK. Якщо дані з мікросхеми не роблять - висновок знаходиться в третьому стані)

    3) TMS - Вибір режиму тестування (режим контролера BST) (Вхід управління режимом кінцевого автомата (контролера) TAP. Кінцевий автомат синхронізується фронтом сигналу на вході TCK. Тому стан виводу TMS повинно бути встановлено перед фронтом сигналу TCK.)

    4) TCK - Тактовий вхід контролера BST (Тактовий сінхровход схеми BST. Деякі операції синхронізуються фронтом, а деякі спадом сигналу на TCK.)

    5) TRST-Вхід припинення тестування (додатковий) (Вхід асинхронного скидання схеми периферійного сканування. "0" на виведення - скидає BST-схему периферійного сканування. Висновок TRST є додатковим відповідно до стандарту IEEE STD. 1149.1.) [2]

    (Яке відношення має виділений матеріал до розділу ??)

    При розробці програми треба було написати на мовою AHDL наступні модулі:

    1) Перетворювач коду з прямого в додатковий (Ім'я?):

    Якщо старший біт вхідних даних дорівнює нулю, то код не змінюється, якщо дорівнює одиниці, то всі розряди крім старшого інвертується, а потім до молодшого додається одиниця.

    2) Антідребезговая схема (Ім'я ?):

    На виході тригера схеми (Де він? Привести схему! Неясно, як утраняется брязкіт) з тактовою сигналу з'являється одиниця, при появі наступного тактового імпульсу на виході сигнал встановлюється в ноль.В результаті на виході одержуємо імпульс тривалістю в один такт, який надходить на входи РЄ блоків фільтра і який дозволяє спрацьовування тактового імпульсу. Кнопка антідребезга потрібна для налагодження на макеті.

    3) основний блок схеми-фільтр (Ім'я ?):

    Вхідна 8-ми розрядна послідовність множиться на задані коефіцієнти чисельника і складається з твором коефіцієнтів знаменника, взятих з протилежним знаком, і послідовності 16-ти розрядних змінних. (Як формується 16-розрядний код?? Як розроблявся фільтр?)

    Складання фільтру полягає в поєднанні окремих модулів, в даній роботі використовуються 3 модулі. Вони з'єднані один за одним.

    4) Паралельні параметризованих регістри (Ім'я?) призначені для зберігання інформації протягом періоду частоти дискретизації

    5) семисегментний індикатор (?!) (Ім'я?) відображає чотирирозрядний дані.

    (Зміст розділу не відповідає назві.)

    Визначити, яким чином (як) реалізувати операції (дії, блоки, модулі), представлені на структурній схемі. Це можна зробити у вигляді:

    Алгоритмів роботи та інформація про них. Привести опис алгоритму на мові AHDL з поясненнями;

    Структурних схем та інформація про них. Привести опис структурної схеми мовою AHDL з поясненнями;

    Фрагментів програм на мові AHDL та їх опис.

    При описі роботи бажано привести тимчасові діаграми роботи блоку (модуля, операції, дії)

    Визначення швидкодії, імпульсної та перехідної характеристик пристрою

    Проаналізувавши швидкодію (Яким чином??), отримані наступні дані:

    -період тактових імпульсів-115.8 нс

    -частота дискретизації-8.63 МГц

    За завданням:

    Частота дискретизації: 2,8 МГц

    Відповідно, отримуємо великий запас за частотою:

    8.63-2.8 = 5.83 МГц.

    Порівняємо значення відліків імпульсної та перехідної характеристик, отриманих за допомогою MAX + PLUS II, MATLAB і налагоджувальному модуля. Це необхідно для перевірки правильності роботи всього пристрою.        

            

    Matlab 6.5         

    MAX + plus II   

    (DEC)         

    MAX + plus II   

    (HEX)         

    MAX + plus II   

    (перекладені)         

    налагодження   

    модуль             

    1         

    0,125         

    800         

    0320         

    0.125         

    20             

    2         

    -0,334         

    63398         

    F7A6         

    -0.334         

    A6             

    3         

    0,415         

    2658         

    0A62         

    0.4153         

    62             

    4         

    -0,244         

    63964         

    F9DC         

    -0.246         

    DC             

    5         

    -0,0488         

    65219         

    FEC3         

    -0.0491         

    C3             

    6         

    0,148         

    994         

    03B0         

    0.1553         

    B0             

    7         

    -0,0236         

    65390         

    FF6E         

    -0.024         

    6E             

    8         

    -0,0957         

    64919         

    FD97         

    -0.0965         

    97             

    9         

    0,0678         

    433         

    01B1         

    0.0676         

    B1             

    10         

    0,0302         

    191         

    00BF         

    0.0298         

    BF             

    11         

    -0,0607         

    65147         

    FE7B         

    -0.0615         

    7B             

    12         

    0,00998         

    66         

    0042         

    0.01         

    42             

    13         

    0,0362         

    231         

    00E7         

    0.0361         

    E7             

    14         

    -0,0242         

    65373         

    FF5D         

    -0.0254         

    5D             

    15         

    -0,0108         

    65461         

    FFB5         

    -0.011         

    B5     

    Таблиця 4 Відлік імпульсної характеристики        

            

    Matlab 6.5         

    MAX + plus II   

    (DEC)         

    MAX + plus II   

    (HEX)         

    MAX + plus II   

    (перекладені)         

    налагодження   

    модуль             

    1         

    0,125         

    800         

    0320         

    0.125         

    20             

    2         

    -0,209         

    64198         

    FAC6         

    -0.20906         

    C6             

    3         

    0,206         

    1320         

    0528         

    0.20625         

    28             

    4         

    -0,0401         

    65285         

    FF05         

    -0.0397         

    05             

    5         

    -0,0882         

    64968         

    FDC8         

    -00875         

    C8             

    6         

    0,0588         

    375         

    0177         

    0.05859         

    77             

    7         

    0,0354         

    230         

    00E6         

    0.0359         

    E6             

    8         

    -0,0595         

    65149         

    FE7D         

    -0.0592         

    7D             

    9         

    0,00865         

    46         

    002E         

    0.0718         

    2E             

    10         

    0,0354         

    237         

    00ED         

    0.037         

    ED             

    11         

    -0,0235         

    65385         

    FF69         

    -0.02375         

    69             

    12         

    -0,0133         

    65451         

    FFAB         

    -0.0135         

    AB             

    13         

    0,0226         

    146         

    0092         

    0.0228         

    92             

    14         

    -0,00278         

    65519         

    FFEF         

    -0.00285         

    EF             

    15         

    -0,0141         

    65445         

    FFA5         

    -0.01425         

    A5     

    Таблиця 5 Відлік перехідної характеристики

    Перекладені відліки одержуємо шляхом ділення прямих десяткових значень (??), отриманих з додаткового коду) на 6400 (так як масштабуючі коефіціент 26 = 64 і амплітуда вхідного впливу прийнята рівною 100).

    (Як отримані негативні значення?)

    Висновок

    У даній роботі був спроектований цифровий фільтр високої частоти, що задовольняє всім вимогам технічного завдання. Проект зайняв на інтегральної схемою 60% ресурсів або 694 логічних комірок. Були отримані навички програмування ПЛІС. Похибка характеристик фільтра пов'язана з округленням його коефіцієнтів. (??)

    (Як виконані вимоги ТЗ?)

    Список літератури

    Угрюмов Є.П. Цифрова схемотехніка: Навчальний посібник. Санкт-Петербург (? Видавництво?) 2000  р.

    Конфігурування ПЛІС Altera із статичною пам'яттю конфігурації. Р.А. Мяльк. Санкт-Петербург (? Видавництво?) 2003 р.

    Стешенко В.Б. Плис фірми ALTERA: елементна база, система проектування і мови опису апаратури. М., ДОДЭКА-XXI, 2007 (2002).

    Антонов А.П. Мова опису цифрових пристроїв Altera AHDL. : Практичний курс. М., Радіо Софт, 2001 р.

    Додаток

    %

    Курсова робота з дисципліни:

    "Основи проектування цифрових пристроїв на ПЛІС "

    На тему: "Цифровий фільтр високої частоти"

    Виконав: студент групи 5110

    Горюнов Д.Ю.

    Перевірив: Соколов Ю.П.

    %

    include "filter.inc";

    include "button.inc";

    include "ppreg.inc";

    include "pk_dk.inc";

    include "7segment.inc";

    constant razx = 8; - Що означають наведені константи?

    constant razy = 16; - Звідки вони з'явилися?

    constant razb = 4;

    constant raza = 8,

    subdesign final

    (

    data [razx-1 .. 0], clk, knopka: input;

    reset: input = gnd;

    out [razy-1 .. 0]: output;

    synhr, h: output;

    la, lb, lc, ld, le, lf, lg: output;

    ha, hb, hc, hd, he, hf, hg: output;

    )

    variable

    preobr_cod: pk_dk with (width = razx);

    h7seg, l7seg: 7segment;

    reg_in: ppreg with (width = razx);

    reg_out: ppreg with (width = razy);

    btn: button with (delay = 1, clock = 3175); - 8000 25175

    filtr_gor: filter with

    (

    wx = 8, - розрядність шини xn

    wy = 16, - розрядність шини yn-Звідки з'явилися параметри??

    wc1 = 5, -- розрядність коефіцієнтів b

    wc2 = 7, -- розрядність коефіцієнтів a

    rs = 6, - розширення коефіцієнта b

    ws = 23, - розрядність шини sum

    wp = 23, - розрядність шини result

    b1 = 8, - коефіцієнт b1

    b2 = B "10010", - коефіцієнт b2

    b3 = 14, - коефіцієнт b3

    b4 = B "11000", - коефіцієнт b4

    a2 = B "1000101", - коефіцієнт a2

    a3 = B "1000111", - коефіцієнт a3

    a4 = B "1101110", - коефіцієнт a4

    wm = 6-зсув-Що означає параметр?

    ); - Значення параметрів не наведено в пояснювальній записці!!

    ce: node;

    begin

    reg_in. (clk, reset) = (clk,! reset);

    reg_out. (clk, reset) = (clk,! reset);

    btn.clk = clk;

    filtr_gor. (clk, reset) = (clk,! reset);

    preobr_cod.in [] = data [];

    reg_in.data [] = preobr_cod.out [];

    filtr_gor.vxod [] = reg_in.out [];

    reg_out.data [] = filtr_gor.vixod [];

    out [] = reg_out.out [];

    l7seg.i [] = out [3 .. 0];

    h7seg.i [] = out [7 .. 4];

    (la, lb, lc, ld, le, lf, lg) = l7seg. (a, b, c, d, e, f, g);

    (ha, hb, hc, hd, he, hf, hg) = h7seg. (a, b, c, d, e, f, g);

    btn.btn = knopka;

    ce = btn.out;

    filtr_gor.ce = ce;

    reg_in.ce = ce;

    reg_out.ce = ce;

    synhr = ce;

    h = tffe (VCC, clk,,, ce);

    end;

    %

    Фільтр

    Виконав ст.гр. № 5110

    Горюнов Д.Ю.

    %

    include "mult_a1.inc";

    include "mult_b.inc";

    include "mult_c.inc";

    PARAMETERS

    (

    wx = 8, - розрядність шини xn

    wy = 16, - розрядність шини yn

    wc1 = 5, -- розрядність коефіцієнтів b

    wc2 = 7, -- розрядність коефіцієнтів a

    rs = 6, - розширення коефіцієнта b

    ws = 23, - розрядність шини sum

    wp = 23, - розрядність шини result

    b1 = 8, - коефіцієнт b1

    b2 = B "10010", - коефіцієнт b2

    b3 = 14, - коефіцієнт b3

    b4 = B "11000", - коефіцієнт b4

    a2 = B "1000101", - коефіцієнт a2

    a3 = B "1000111", - коефіцієнт a3

    a4 = B "1101110", - коефіцієнт a4

    wm = 6 - зрушення

    );

    subdesign filter

    (

    vxod [wx-1 .. 0], clk: input;

    ce: input = vcc;

    reset: input = gnd;

    vixod [wy-1 .. 0]: output;

    )

    variable

    sec_up: mult_a1 with (widthx = wx, widthc = wc1 + rs, widths = ws, widthp = Wp, bn = b1 * (2 ^ rs ));

    sec_mid1: mult_b with (widthx = wx, widthy = wy, widthc1 = wc1 + rs, widthc2 = wc2, widthp = wp, an = a2, bn = b2 * (2 ^ rs ));

    sec_mid2: mult_b with (widthx = wx, widthy = wy, widthc1 = wc1 + rs, widthc2 = wc2, widthp = wp, an = a3, bn = b3 * (2 ^ rs ));

    sec_down: mult_c with (widthx = wx, widthy = wy, widthc1 = wc1 + rs, widthc2 = wc2, widthp = wp, an = a4, bn = b4 * (2 ^ rs ));

    V [wy-1 .. 0]: node;

    begin

    sec_mid1. (clock, clken, aclr) = (clk, ce, reset);

    sec_mid2. (clock, clken, aclr) = (clk, ce, reset);

    sec_down. (clock, clken, aclr) = (clk, ce, reset);

    sec_up.xn [] = vxod [];

    sec_mid1.xn [] = vxod [];

    sec_mid2.xn [] = vxod [];

    sec_down.xn [] = vxod [];

    V [] = sec_up.result [wm + wy-1 .. wm];

    sec_mid1.yn [] = V [];

    sec_mid2.yn [] = V [];

    sec_down.yn [] = V [];

    sec_up.sum [] = sec_mid1.result [];

    sec_mid1.sum [] = sec_mid2.result [];

    sec_mid2.sum [] = sec_down.result [];

    vixod [] = V [];

    end;

    %

    Перетворювач коду з прямого в додатковий

    Виконав ст.гр. № 5110

    Горюнов Д.Ю.

    %

    parameters

    (

    width = 8

    );

    subdesign pk_dk

    (

    in [width-1 .. 0]: input;

    out [width-1 .. 0]: output;

    )

    variable

    sign: node;

    begin

    sign = in [width-1];

    if sign then out [] = (sign,! in [width-2 .. 0]) +1;

    else out [] = in [];

    end if;

    end;

    %

    Паралельний параметризованих регістр

    Виконав ст.гр. № 5110

    Горюнов Д.Ю.

    %

    PARAMETERS

    (

    width = 8

    );

    SUBDESIGN ppreg

    (

    data [width-1 .. 0], clk: input;

    ce: input = vcc;

    reset: input = gnd;

    out [width-1 .. 0]: output;

    )

    variable

    out [width-1 .. 0]: dffe;

    begin

    out []. (clk, clrn, ena) = (clk,! reset, ce);

    out [] = data [];

    end;

    %

    Антідребезг

    Виконав ст.гр. № 5110

    Горюнов Д.Ю.

    %

    PARAMETERS

    (

    delay = 1 - величина задежкі в мікросекунда

    , clock = 5175 -- тактова частота в кілогерцах

    );

    CONSTANT modul = (delay * clock) DIV 1000; - модуль рахунки

    ASSERT (modul> 2)

    REPORT "Твір delay * clock має бути більше 2000 "

    SEVERITY ERROR;

    CONSTANT width = LOG2 (modul);

    CONSTANT end_state = modul-1;

    SUBDESIGN button

    (

    btn: INPUT;

    clk: INPUT;

    out: OUTPUT;

    )

    VARIABLE

    div_out: NODE;

    astart: NODE;

    tr [width-1 .. 0]: dffe;

    BEGIN

    tr []. (clk, ena) = (clk, astart);

    astart = dff (VCC,! btn, div_out,);

    IF tr []. q

    tr []. d = tr []. q + 1;

    ELSE

    tr []. d = 0;

    END IF;

    div_out =! dff ((tr []. q == end_state), clk,,); - формування імпульсу скидання тригера

    out = dff (dff (VCC, astart,! out,), clk,,); - формування імпульсу

    END;

    %

    Модуль перетворення даних для представлення на семисегментний індикаторі

    Взято з роздаткового матеріалу

    %

    %-a-%

    % f | | b%

    %-g-%

    % e | | c%

    %-d-%

    %%

    % 0 1 2 3 4 5 6 7 8 9 A b C d E F%

    %%

    SUBDESIGN 7segment

    (

    i [3 .. 0]: INPUT;

    a, b, c, d, e, f, g: OUTPUT;

    )

    BEGIN

    TABLE

    i [3 .. 0] => a, b, c, d, e, f, g;

    H "0" => 1, 1, 1, 1, 1, 1, 0;

    H "1" => 0, 1, 1, 0, 0, 0, 0;

    H "2" => 1, 1, 0, 1, 1, 0, 1;

    H "3" => 1, 1, 1, 1, 0, 0, 1;

    H "4" => 0, 1, 1, 0, 0, 1, 1;

    H "5" => 1, 0, 1, 1, 0, 1, 1;

    H "6" => 1, 0, 1, 1, 1, 1, 1;

    H "7" => 1, 1, 1, 0, 0, 0, 0;

    H "8" => 1, 1, 1, 1, 1, 1, 1;

    H "9" => 1, 1, 1, 1, 0, 1, 1;

    H "A" => 1, 1, 1, 0, 1, 1, 1;

    H "B" => 0, 0, 1, 1, 1, 1, 1;

    H "C" => 1, 0, 0, 1, 1, 1, 0;

    H "D" => 0, 1, 1, 1, 1, 0, 1;

    H "E" => 1, 0, 0, 1, 1, 1, 1;

    H "F" => 1, 0, 0, 0, 1, 1, 1;

    END TABLE;

    END;

    %

    модуль mult_a1

    Взято з роздаткового матеріалу

    %

    INCLUDE "lpm_mult.inc";

    PARAMETERS

    (widthx = 8, - число розрядів шини xn []

    widthc = 10, - число розрядів коефіцієнтів

    widths = 18, - число розрядів шини sum []

    widthp = 18, - число розрядів шини result []

    bn = 100 - коефіцієнт bn чисельника

    );

    SUBDESIGN mult_a1

    (xn [widthx-1 .. 0]: INPUT;

    sum [widths-1 .. 0]: INPUT;

    result [widthp-1 .. 0]: OUTPUT;

    )

    VARIABLE

    mult_x: lpm_mult WITH (

    LPM_WIDTHA = widthx,

    LPM_WIDTHB = widthc,

    LPM_WIDTHP = widthp,

    LPM_WIDTHS = widths,

    INPUT_B_IS_CONSTANT = "YES",

    LPM_REPRESENTATION = "SIGNED",

    USE_EAB = "OFF",

    - LPM_PIPELINE = 1,

    MAXIMIZE_SPEED = 6);

    BEGIN

    mult_x.dataa [] = xn [];

    mult_x.datab [] = bn;

    mult_x.sum [] = sum [];

    result [] = mult_x.result [];

    END;

    %

    Модуль mult_b

    Взято з роздаткового матеріалу

    %

    INCLUDE "lpm_mult.inc";

    PARAMETERS

    (

    widthx = 8, - число розрядів шини xn []

    widthy = 8, - число розрядів шини yn []

    widthc1 = 10, - число розрядів коефіцієнтів b

    widthc2 = 10, - число розрядів коефіцієнтів а

    widthp = 18, - число розрядів шини result []

    an = 100, - коефіцієнт -an знаменника (негативний - hex)

    bn = 100 - коефіцієнт bn чисельника

    );

    CONSTANT widths = widthp;

    SUBDESIGN mult_b

    (

    xn [widthx-1 .. 0]: INPUT;

    yn [widthy-1 .. 0]: INPUT;

    sum [widths-1 .. 0]: INPUT;

    clock: INPUT;

    clken: INPUT = VCC;

    aclr: INPUT = GND;

    result [widthp-1 .. 0]: OUTPUT;

    )

    VARIABLE

    mult_x: lpm_mult WITH (

    LPM_WIDTHA = widthx,

    LPM_WIDTHB = widthc1,

    LPM_WIDTHP = widthp,

    LPM_WIDTHS = widths,

    INPUT_B_IS_CONSTANT = "YES",

    LPM_REPRESENTATION = "SIGNED",

    USE_EAB = "OFF",

    LPM_PIPELINE = 1,

    MAXIMIZE_SPEED = 6

    );

    mult_y: lpm_mult WITH (

    LPM_WIDTHA = widthy,

    LPM_WIDTHB = widthc2,

    LPM_WIDTHP = widthp,

    LPM_WIDTHS = widths,

    INPUT_B_IS_CONSTANT = "YES",

    LPM_REPRESENTATION = "SIGNED",

    USE_EAB = "OFF",

    - LPM_PIPELINE = 1,

    MAXIMIZE_SPEED = 6

    );

    BEGIN

    mult_x. (clock, clken, aclr) = (clock, clken, aclr);

    mult_x.dataa [] = xn [];

    mult_x.datab [] = bn;

    mult_x.sum [] = mult_y.result [];

    result [] = mult_x.result [];

    mult_y.dataa [] = yn [];

    mult_y.datab [] = an;

    mult_y.sum [] = sum [];

    END;

    %

    Модуль mult_c

    Взято з роздаткового матеріалу

    %

    INCLUDE "lpm_mult.inc";

    PARAMETERS

    (

    widthx = 8, - число розрядів шини xn []

    widthy = 8, - число розрядів шини yn []

    widthc1 = 10, - число розрядів коефіцієнтів b

    widthc2 = 10, - число розрядів коефіцієнтів a

    widthp = 18, - число розрядів шини result []

    an = 100, - коефіцієнт an знаменника

    bn = 100 - коефіцієнт bn чисельника

    );

    CONSTANT widths = widthp;

    SUBDESIGN mult_c

    (

    xn [widthx-1 .. 0]: INPUT;

    yn [widthy-1 .. 0]: INPUT;

    - sum [widths-1 .. 0]: INPUT;

    result [widthp-1 .. 0]: OUTPUT;

    clock: INPUT;

    clken: INPUT = VCC;

    aclr: INPUT = GND;

    )

    VARIABLE

    mult_x: lpm_mult WITH (

    LPM_WIDTHA = widthx,

    LPM_WIDTHB = widthc1,

    LPM_WIDTHP = widthp,

    LPM_WIDTHS = widths,

    INPUT_B_IS_CONSTANT = "YES",

    LPM_REPRESENTATION = "SIGNED",

    USE_EAB = "OFF",

    LPM_PIPELINE = 1,

    MAXIMIZE_SPEED = 6

    );

    mult_y: lpm_mult WITH (

    LPM_WIDTHA = widthy,

    LPM_WIDTHB = widthc2,

    LPM_WIDTHP = widthp,

    LPM_WIDTHS = widths,

    INPUT_B_IS_CONSTANT = "YES",

    LPM_REPRESENTATION = "SIGNED",

    USE_EAB = "OFF",

    - LPM_PIPELINE = 1,

    MAXIMIZE_SPEED = 6

    );

    BEGIN

    mult_x. (clock, clken, aclr) = (clock, clken, aclr);

    mult_x.dataa [] = xn [];

    mult_x.datab [] = bn;

    mult_x.sum [] = mult_y.result [];

    result [] = mult_x.result [];

    mult_y.dataa [] = yn [];

    mult_y.datab [] = an;

    END;

    Для підготовки даної роботи були використані матеріали з сайту http://referat.ru/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status